>最近,有朋友在问是否有类似BECKHOFF的ADS通讯方式,特别是订阅功能,答案是:没有跟ADS一样的通讯方式,但是可以根据自己的实际需求选择不同的通讯方式来实现。例如,OPC DA/UA ,Share Memory共享内存,Ethernet TCP/IP ,Modbus TCP,PLC Handler等等来实现。
那么近期关于CODESYS的各种通讯,会在公众号里持续进行专题探讨,希望能给大家工作和学习中提供一些思路和帮助。
当然,里面有些通讯协议是需要付费才能支持的,这里不做重点讨论, 我们主要介绍一些实用免费的通讯方式。
BECKHOFF ADS通讯
首先,我们先来了解下ADS通讯方式:
在Beckhoff TwinCAT (TwinCAT为德国倍福系列PLC、IPC产品的软件名称,详细可以自行到官网查询)系统中,各个软件模块(如TwinCAT PLC、TwinCAT NC、Windows 应用程序等)的工作模式类似于硬件设备,它们能够独立工作。各个软件模块之间的信息交换通过TwinCAT ADS 而完成。ADS(Automation Device Specification)即自动化设备规范,它为设备之间的通讯提供路由。 在TwinCAT PC 和Beckhoff 的CX、BX、BC 系列控制器中都包含TwinCAT 信息路由器。因此各个ADS 设备之间都能够交换数据和信息。 基于ADS 的TwinCAT 系统构架如下图所示: 可以简单说,ADS协议属于网络通讯协议,且在其应用层。
通过ADS通讯,可以非常灵活地实现: 关于ADS通讯的详细介绍,可以参考本文最后的附件资料。这里不做展开说明。
PLC Handler和共享内存
在CODESYS平台中,能使用多种语言来进行数据通讯的方式之一就是PLCHandler。它为第三方的客户端和基于CODESYS开发的PLC之间建立通讯,PLCHandler封装了完整的底层通信协议,并提供了API接口。该API接口提供对所有可用功能和服务的访问。
具体的介绍已经在前期推文中详细说明了,请参考下方的链接:【例程L9】C/C++/C#开发上位机和CODESYS通讯(免费)
Network Variable List(网络变量列表)
从ADS的本质,即网络通讯协议,那么我们可以添加NVL (Network Variable List的简称),来实现同一控制器或者不同控制器之间的数据交互。
这里可查看上一期文章链接:
【1-16】Network Variable List网络变量列表
OPC 通讯
另外,我们也可以使用控制器自带的OPC服务功能来实现数据的交互,可在Application应用程序中添加Symbol Configuration对象来订阅相关的变量:
当然,OPC 功能需要付费使用。后续会专题来介绍这一部分。
相比较ADS而言,便利性肯定没法和他相比,但是我们仍然可以参考ADS协议的具体规范,结合上面介绍的所有通讯方式,选择合适的方案或者进行二次封装,最终达到我们自身想要的效果。
附件资料 本地下载 以上内容可以根据需要,进行测试;如有更多的通讯方式和建议,欢迎大家加微信mengman45进行分享。 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |