倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)

文章目录

  • 一. 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设备

  1. 新建工程,在I/O中的DEVICE中添加EAP,如下图:

    倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)_第1张图片

  2. 选择Network Variables类型

    倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)_第2张图片

  3. 有时需要设置网络适配器来激活EAP,在Adapter中选择search,选择网络适配器后确定,之后激活配置方可进行下一步。

    倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)_第3张图片

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

  1. 在Task上右键添加 task with image类型。

    倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)_第4张图片
    倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)_第5张图片

    EAP通讯是通过设置task周期性刷新通讯的变量,因此也可以自行设置task周期循环时间以及task优先级,在此不具体叙述。

  2. 在task子目录Inputs和Outputs分别新建需要通讯的变量名称和类型,在此我们设置类型为BOOL的变量outputTest和inputTest。

    倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)_第6张图片
    倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)_第7张图片

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

    倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)_第8张图片

  4. 同理在subscriber和publisher中添加变量,设置变量名和类型

    倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)_第9张图片

  5. 添加完我们可以看到,收发器下拉列表出现了VarData,我们将分别其链接到task中已经设置好的变量outputTest和inputTest中,然后重新激活配置。

    倍福TwinCAT3.0软件与C++通讯问题(EAP通讯)_第10张图片

3. 测试

对于本项目(上位机-控制器),其中Inputs对应控制器程序通过EAP传递来的变量,即subscriber;Outputs对应控制器程序通过上位机ADS通讯传递来的变量,即publisher。因此对于Outputs,我们只需要在task变量中写入值便可以模拟ADS通讯传递过来变量的工况(上位机ADS通讯的方式与此前文章方法同理,都是以变量名读取的方式,例如“Tasks.Outputs.outputTest”);对于Inputs,需要在IO的subscriber中写入来模拟控制器EAP传递过来的变量

你可能感兴趣的:(倍福,倍福)