设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
排行榜
积分充值
帖子
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
【例程L9】C/C++/C#开发上位机和CODESYS通讯(免费) ...
返回列表
发新帖
[CodeSys]
【例程L9】C/C++/C#开发上位机和CODESYS通讯(免费)
[复制链接]
162
|
0
|
2025-3-26 09:18:31
|
显示全部楼层
|
阅读模式
我们在Windows平台开发CODESYS控制器时,常常会遇到与视觉相关的项目,那么,我们完全可以在一个控制器上,集成视觉和PLC及运控等为一体,性价比非常高,也倍受国内厂商和客户青睐。
如何把视觉和运控集成到一体呢?实际上核心问题是如何解决CODESYS和视觉软件系统间的通讯。
下面我们和大家详细来讨论一下。
PLChandler
PLCHandler——轻松访问来自外部系统的CODESYS控制器中的PLC变量
PLCHandler为第三方的客户端和基于CODESYS开发的PLC之间建立通讯,PLCHandler封装了完整的底层通信协议,并提供了API接口。该API接口提供对所有可用功能和服务的访问。
由上图可以看到,PLChandler 可以轻松的实现CODESYS控制之间以及第三方上位机等进行通讯,完全可以满足我们开发的要求。
但是,PLCHandler是需要进行收费的。我们在这里不进行讨论。
共享内存ShareMemory
如果仅仅是从通讯的角度,那么CODESYS层可以通过多种方式进行数据传输,例如:TCP/IP、OPC、串口等等。
在这里,与大家重点分享下共享内存(免费)这种方式。其他的通讯方式,后期会陆续与大家进行分享。
原理:开辟一块物理内存,将这块物理内存映射连接到进程的虚拟地址空间进行操作,若多个进程映射连接同一块物理内存,则通过这块物理内存实现进程间通信。
优缺点:共享内存的方式,优点是IPC控制器内部通讯的最快的方式,缺点是对开发人员要求高,需避免内存的误操作引起的系统故障。
那么具体在CODESYS层里,如何实现呢?
实际上,CODESYS提供SysShm的基本函数库,包含创建、读取、写入、关闭等函数,如下图所示:
例程中的通讯变量主要是放在结构体DataExchange中,包含两个DINT类型的变量,大家有兴趣,可以把这个结构体加入BOOL、INT、REAL、LREAL等类型的变量,进行测试。
当然,我们也可以参考PLCHandler的产品思路,基于共享内存去开发类似它的API函数接口,供C、C++或C#进行调用。
Share Memory例程链接
下载后,文件夹主要包含以下内容:
主要包含:CODESYS应用程序、C/C++/C#三个版本的通讯例子;由于对C语言这方面缺乏系统知识,这里不展开说明,欢迎有兴趣的朋友来做补充。
网盘链接:
https://pan.baidu.com/s/1bXjqvyeHtVANtL1HPAvmDg
提取码:
游客,如果您要查看本帖隐藏内容请
回复
本地下载:
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
Hello工控
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』