[CodeSys] CODESYS有类似BECKHOFF的ADS通讯协议吗?

[复制链接]
查看156 | 回复0 | 2025-3-25 08:03:12 | 显示全部楼层 |阅读模式
>

最近,有朋友在问是否有类似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通讯,可以非常灵活地实现:

  • BECKHOFF 系列PLC内部通讯;

  • BECKHOFF系列所有PLC产品之间通讯;

  • 支持多种语言开发的上位机之间的通讯,实现对多家Scada软件的支持,如:VB、C#、C++、第三方Explorer等。


关于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协议的具体规范,结合上面介绍的所有通讯方式,选择合适的方案或者进行二次封装,最终达到我们自身想要的效果。


附件资料


附件主要包含:

链接:https://pan.baidu.com/s/1IEugaJq0p7xeNOwTP_WSyA
提取码:
游客,如果您要查看本帖隐藏内容请回复

本地下载

以上内容可以根据需要,进行测试;如有更多的通讯方式和建议,欢迎大家加微信mengman45进行分享。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则