文章目录
- 一. TwinCAT控制器之间的几种通讯方式
- 1.添加EAP设备
- 2.添加变量刷新的Task周期
- 3. 测试
一. TwinCAT控制器之间的几种通讯方式
协议 | 硬件要求 | 实时性 | 说明 |
---|---|---|---|
ADS通讯 | 普通网卡,支持无线 | 典型值:< 100ms | Server/Client,要写 PLC 程序,不用配置 IO |
EAP通讯 | 支持 Y-Driver 的有线网卡 ,最好独占或EL660x交换机模块 | 典型值:< 10ms | Publisher/Subscriber,不用写 PLC 程序,要配置 IO |
EtherCAT主从通讯 | 从站控制器应有 Slave接口,e.g CX8090、-B110、FC11xx 等 | 最小值:< 1ms | Master/Slave,不用写 PLC 程序,要配置 IO |
目前上位机-控制器的控制模式很普遍,属于上位机与控制器的通讯而非传统的控制器之间的通讯,在实时性要求不高的场合,可以仅通过远程ADS,以变量名读取的方式进行变量之间的传递,一般可以达到100ms以内;
而实时性要求高的场合,由于不是控制器之间的通讯,因此无法直接通过EAP进行通讯,但是可以转变思路,通过在上位机上建立一个本地中间Twincat程序,上位机C++程序通过本地ADS与本地中间Twincat程序进行信息传递,而在控制器上运行的Twincat程序与本地中间Twincat程序进行EAP通讯,从而将原本是远程ADS通讯变为了本地ADS通讯和EAP通讯的组合,这种方式一般可以达到10ms以内的实时性。
1.添加EAP设备
-
新建工程,在I/O中的DEVICE中添加EAP,如下图:
-
选择Network Variables类型
-
有时需要设置网络适配器来激活EAP,在Adapter中选择search,选择网络适配器后确定,之后激活配置方可进行下一步。
2.添加变量刷新的Task周期
-
在Task上右键添加 task with image类型。
EAP通讯是通过设置task周期性刷新通讯的变量,因此也可以自行设置task周期循环时间以及task优先级,在此不具体叙述。
-
在task子目录Inputs和Outputs分别新建需要通讯的变量名称和类型,在此我们设置类型为BOOL的变量outputTest和inputTest。
-
添加收发器(subscriber和publisher)
-
同理在subscriber和publisher中添加变量,设置变量名和类型
-
添加完我们可以看到,收发器下拉列表出现了VarData,我们将分别其链接到task中已经设置好的变量outputTest和inputTest中,然后重新激活配置。
3. 测试
对于本项目(上位机-控制器),其中Inputs对应控制器程序通过EAP传递来的变量,即subscriber;Outputs对应控制器程序通过上位机ADS通讯传递来的变量,即publisher。因此对于Outputs,我们只需要在task变量中写入值便可以模拟ADS通讯传递过来变量的工况(上位机ADS通讯的方式与此前文章方法同理,都是以变量名读取的方式,例如“Tasks.Outputs.outputTest”);对于Inputs,需要在IO的subscriber中写入来模拟控制器EAP传递过来的变量