所指的 TwinCAT 系统,特指运行 TwinCAT 的硬件控制器,比如 CX 系列控制器、安装了TwinCAT 的 IPC。实际应用中,TwinCAT 系统之间的通讯,往往指位于两个控制器上的PLC之间的通讯。TWinCAT 设备,是指同一个TWinCAT 系统上不同的 Device,以不同的Port 来区分。TwinCAT 系统之间的通讯,对实时性有不同的要求。针对不同的时间要求,TwinCAT 提供多种通讯方式:
TWinCAT ADS 通讯,用于控制器级的非实时通讯,事件触发式通讯 (Event Trigger)。
TWinCAT IO通讯用于IO级的实时通讯,固定通讯周期 (Cyclical),TWinCAT 支持两种通讯方式:Realtime Ethernet 或者 EtherCAT 通讯。
1、ADS 通讯协议
ADS 通讯是 Beckhof 公司定义的一种专门协议,用于 TwinCAT 设备之间的非周期性通讯,既可用于控制器内部的 TwinCAT 设备通讯,也可以用于控制器之间的 TwinCAT 设备通讯。
ADS 通讯是基于 TCP/IP 之上的应用协议,所以当它用于控制器之间的 TwinCAT 设备通讯时,需要保证控制器之间的 TCP/IP 通讯正常,支持有线连接和无线连接。采用无线以太网连接时,ADS 通讯需要的时间更长。
ADS 通讯的机制是 Server/client 机制。本章所讨论的 ADS 设备,都是指 ADS Server。 作为 ADS Server 不需要任何 ADS 通讯方面的编程。server 能够对协议约定的 ADS 请求作出响应。所有通讯方面的编程工作都在Client 端,且client 必须按照 Server 约定的规则,才能得到正确的响应。
1.1 ADS 设备的识别
支持 TWinCAT ADS 通讯的设备,称为ADS 设备。协议规定 ADS 设备的识别方式为:NetID+Port。NetID指它所在的 TwinCAT 控制系统的识别代号,这是一个 6段的字符串,比如“192.168.1.119.1.1”,前4 段可以自由定义,末两段必须为”1.1”。在此显示和编辑NetID:


1.2 ADS Router 路由表
每个 TwinCAT 控制系统,都有一个 ADS Router,这是一个路由表。TwinCAT 只接受来自其 ADS Router 列表中的 Remote Controller 的 ADS 请求。路由表中,各控制器的 NetID 和IP地址都不应重复。否则,ADS 设备将无法识别,导致通讯失败。有多种方法显示和编辑路由表,适用场合各不相同,但修改后的路由表需要目标系统的TWinCAT 重启后才能生效。
下面分别描述3种路由表的编辑方法:
第1种:开发 TwinCAT 开发环境的 PC 机上显示和编辑路由表。
安装了 TwinCAT 开发环境的 PC 机,也可视为 TwinCAT 控制系统,它的路由表可以按以下步骤显示:
第1步:先单击”1”处,PC 桌面右下角的 TwinCAT 图标,然后单击“2″处,选择”Property”。

第2步:在弹出的属性页面中,点击1处,进入 AMS Router 页面。“2“处显示的就是 TwinCAT开发环境的 PC 机本身的 NetID,“3”处显示 PC上的 ADS 路由表:

上图中的 PC 只能对 Remote Computers 列表中的控制器进行编程和调试。
点击”Add”可以增加项目,但仅限于XP 系统的 TwinCAT 控制器,不推荐使用这种方法。选中路由表项后,点古”Remove”,可以删除该项。
第2种:成加添加到路由表之后,从 System Manager 目标控制器的路由表。


此后的操作,就与在 PC上的步骤相同了。注意此时增加的是目标控制器的路由表项,区别于PC 的路由表项。
用这个方法”Add Router”是双向的,成功添加后,就同时在目标控制器和搜索到的远程TwinCAT 系统的路由表中,各增加了一项。以PC 和cx5020 为例,成功添加路由后,cx5020路由表中增加了一项是 PC 的信息,而PC路由表中增加了一项是 CX5020 的信息。
第3种:进入目标控制器的 window 桌面,打开注册表编辑器,查看和修改路由表。如图,在命令行输入”Regedit”:

这种方式适用于添加路由失败,但可以进入控制器的 Windows 桌面的时候。这种方法虽然可以显示和编辑路由表,但是都只是单方面操作,所以只用于显示和删除路由表项。而增加路由表项,还是用第2种方法。
ADS 通讯可以实现多种功能,比如设备状态,设备控制等等,但最常用的还是数据访向。为此,必须了解 ADS 设备的内部地址或者变量与 ADS 访问地址之间的对应关系。所有 ADS 设备都支持按地址访问,但有的同时还支持变量名访问。
第1种:接地址访问
ADS 设备的以”Group”来划分不同的数据区域,每个数据区域用”IndexGroup”来识别,区域内的数据就按 Offset 依次排列。不同的 ADS 设各,“IndexGroup”划分规则不同,而连续的”Offset”依次对应的数据出不同。
常用的ADS 设备有 TWinCAT PLC、 TWiNCAT NC、 TWInCAT IO,其中TWInCAT NC 虽然也支持按地址访问,但用户通常是调用标准的功能块来向NC 发指令,这出功能块会调用 ADS 指令,确定访问的数据的 IndextGroup和 offset,而无需用户直接面对这些数据。

第2种:按变量名访问
TWinCAT PLC 默认支持变量名访问,而TWinCAT NC 的轴变量如果要通过变量名访问,就需要启用“Create Symbol功能。如图所示:


1.3 从PLC程序实现ADS通讯

1.4 从高级语言实现ADS通讯
从高级语言实现 ADS 通讯,实际上这段应用程序就作为一个 ADS Client。 TWinCAT 提供了多种 ADS 通讯的接口文件,供高级语言调用,以建立一个 ADS Client 对象。比如,VC 需要调用 DLL动态链接库,而VB需要调用 OCX 控件。
注意:
1,通常应用程序所在的 PC上也应安装 TwinCAT,但是PC 上的TWinCAT 只需要运行在Config Mode下,所以安装TwinCAT CP 或者任何级别的 Demo 版均可。
2,PC和通讯的控制器之间也应互加 ADS Router。 如果应用程序和 PLC运行在同一个控制器上,就不需要 ADS Router 子。
3,高级语言通过 ADS 访问 PLC 时,PC 上的 TwinCAT 不能在 Stop 模式下,因为此时所有 ADS服务都停止。
在TwinCAT Information 中,包含了各种高级语言的接口文件及其使用方法的描述,也包含了使用这些接口文件编写 ADS 通讯的 Sample 程序。