倍福Twincat 3.0软件与C++通讯问题(EAP通讯)

之前文章介绍了ADS(Automation Device Specification)通讯问题,这是基于TCP/IP的应用协议,实时性一般,实时性要求较高时,可以应用 Realtime Ethernet 方式,即EAP(EtherCAT Automation Protocal)通讯协议。下表简单对三种通讯方式进行比较:

表1 TwinCAT控制器之间的几种通讯方式 1

协议 硬件要求 实时性 说明
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以内的实时性。
由于ADS与C++通讯的方法之前文章有讲到,因此本文只介绍EAP通讯的配置部分,本地中间Twincat程序的具体步骤如下:

1. 添加EAP设备

新建工程,DEVICE中添加EAP,如下图。
倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第1张图片
选择Network Variables类型。
倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第2张图片
有时需要设置网络适配器来激活EAP,在Adapter中选择search,选择网络适配器后确定,之后激活配置方可进行下一步。
倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第3张图片

2. 添加变量刷新的Task周期

在Task上右键添加 task with image类型。
倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第4张图片
EAP通讯是通过设置task周期性刷新通讯的变量,因此也可以自行设置task周期循环时间以及task优先级,在此不具体叙述。
在task子目录Inputs和Outputs分别新建需要通讯的变量名称和类型,在此我们设置类型为BOOL的变量outputTest和inputTest。
倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第5张图片

3. 添加收发器(subscriber和publisher)

最后还要在IO中的EAP中添加subscriber和publisher。
倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第6张图片
同理在subscriber和publisher中添加变量,设置变量名和类型。倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第7张图片
添加完我们可以看到,收发器下拉列表出现了VarData,我们将分别其链接到task中已经设置好的变量outputTest和inputTest中,然后重新激活配置。

倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第8张图片
倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第9张图片

4. 测试

对于本项目(上位机-控制器),其中Inputs对应控制器程序通过EAP传递来的变量,即subscriber;Outputs对应控制器程序通过上位机ADS通讯传递来的变量,即publisher。因此对于Outputs,我们只需要在task变量中写入值便可以模拟ADS通讯传递过来变量的工况(上位机ADS通讯的方式与此前文章方法同理,都是以变量名读取的方式,例如“Tasks.Outputs.outputTest”);对于Inputs,需要在IO的subscriber中写入来模拟控制器EAP传递过来的变量(为了方便,本文就不再介绍控制器程序部分EAP的配置,其配置与本文IO的配置同理,此处有误,参照另一篇文章. )。
以模拟ADS通讯传递过来变量的工况为例:
outputTest中写入值为1,
倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第10张图片
观察IO下对应VarData的数值,也变为1,说明IO配置成功。
倍福Twincat 3.0软件与C++通讯问题(EAP通讯)_第11张图片


  1. Lizzy Chen,《TwinCAT 2.0从入门到精通》,2019. ↩︎

你可能感兴趣的:(#Twincat与C++通讯)