AB-PLC之间通讯
AB-PLC之间进行通讯比较常用的方法有两种:
第一种:使用生产者/消费者,通过设置数据类型方式进行通信
第二种:使用MSG指令,进行通信
两种通讯方式有什么区别?
在生产者/消费者通信中,生产者数据所在的plc必须在消费者plc网络组态中,而使用MSG指令进行数据交换则没有此项要求。
使用生产者-消费者数据通讯:
所谓消费者就是需要接收的数据、主动读取数据的那一方,生产者就是被读取数据、发送数据那一方。下面定义plc-a为生产者plc,plc-b为消费者plc,通讯步骤如下:
(1) plc-a控制器标签中定义需要发送的数据区,数据类型为生产型;plc-b控制器标签中定义接收数据区,数据类型为消费
(2) 设置plc-b中消费者标签的连接属性,在remote data属性中填写对应于plc-a中生产者变量名称即可
PS:这里需要注意,标签必须创建在控制器区域,全局数据区;传送数据的标签不能超过500个字节,如果是通过ControlNet网络数据交换,数据标签则不能超过480 个字节,这是受限于ControNet 网络的数据包的尺寸;如果Produce几个数据到同一个控制器,将几个数据合并在一个用户自定义结构的数据标签中,这样可以减少连接数,合并后的数据会用相同的RPI;标签只能使用DINT和REAL,或它们的数组,或者用户自定义结构数据,因为对外操作数据必须是32位的;如果有SINT和INT的数据需要传送,将它们组合在用户自定义结构中传送;Produce的标签和Consume的标签数据格式必须一致,才能确保数据的准确。
使用MSG指令通讯:
(1)建立数据类型为MESSSAGE结构的标签,每一条MSG指令调用之前都要分配一个标签,这个标签将记录本条指令的通讯组态和执行情况
只有为指令分配了标签后,点击 方可进入组态界面:
说明:
• 对控制器以外的各种设备传送信息,它的信息类型如下所列:
-CIP Data Table Read/Write 对ControlLogix控制器进行读写
-PLC5 Typed Read/Write 对PLC5处理器进行读写
-PLC5 Word Range Read/Write 对类似PLC5处理器地址进行读写
-Block Transfer Read/Write 对块传送模块进行读写
-PLC2 Unprotected Read/Write 对PLC2处理器及类似PLC2地址(寄存器地址)的设备进行读写。
-PLC3 Typed Read/Write对PLC3处理器进行读写
-PLC3 Word Range Read/Write,对类似PLC3处理器地址进行读写。
-SLC Typed Read/Write对SLC处理器进行读写
-Module Reconfigure 在模块仍然连接时,对模块进行重新组态 。
-CIP Generic 对任何设备的服务性操作。
• 本指令执行的状态
-Enable 指令级条件成立,指令被使能,开始工作。
-Enable Waiting 信息传送请求被送到缓冲区,等待传送。
-Start 缓冲区排队轮到,开始传送数据。
-Done 数据传送完毕,指令置位完成。
-Done Length 实际完成的数据块长度
-Error Code 如指令执行失败,此处给出16进制的错误代码00XX。
-Extended Error Code 给出16进制的扩展错误代码XXXX。
-Tined Out 设置超时请求,此项选择,当发生超时,终止MSG传送过程。
(2)以 ControlLogix 控制器与ControlLogix 控制器的通讯为例
源或目标的标签地址不是引用Tag名,而是Tag的第一个元素,否则认为是语法错误,梯级不能接受。
元素个数最多可有65335个,尽管ControlNet 的数据包最多只有500个字节,MSG指令可将数据块拆开,分成一个以上的数据包送走。
Communication 页面要求输入两个控制器之间的通讯路径,如果在I/O组态中有该控制器,亦可通过Browse获得路径,倘若仅仅是为了建立MSG路径而在I/O组态中加入控制器,则没有必要,那样将占用内存空间,建议书写路径,路径书写规则:
路径是段和段的连接,段由x,y组成,段和段之间用逗号分离。
• X 背板为1;网络为2。
• Y 槽号;站号,ControlNet网络1-99号,EtherNet网络为IP地址。
上面书写的路径是:背板(1)—CNB(位于5槽)—ControlNet网络(2)—对方CNB(站号3号)— 背板(1) — 控制器(位于0槽)。
路径还可以是动态的,在信息块的结构数据中,有Path一项,这是个字符串结构,更换字符串数据即更换了路径,字符串的长度最大82个,足够表达路径了。
,此项建立了MSG指令的连接,缺省是选择的,也就是说MSG指令占用一个固定的连接;如果释放此项,只有在MSG指令执行的时候才占用连接,是一个活动的连接,可编制程序,令多条MSG指令共同使用一个连接,这对缓和资源的运用是有好处的。