理论教育 控制器与非EtherNet/IP设备的通信技巧

控制器与非EtherNet/IP设备的通信技巧

时间:2023-06-30 理论教育 版权反馈
【摘要】:对于每个跟控制器交换信息的设备,都需要了解它的通信协议,非EtherNet/IP的设备通常是不使用预定性连接来交换信息的。这样的运行方式与标准堆栈API是一致的。在CompactLogix 5370控制器程序中,用MSG指令的CIP Generic方式请求堆栈服务。在控制器区域数据库,创建数据结构为SockOpenParameters的新标签,如图3-157所示。选择刚才创建的SockOpenParameters标签作为数据源以及说明数据的字节长度。

控制器与非EtherNet/IP设备的通信技巧

对于每个跟控制器交换信息的设备,都需要了解它的通信协议,非EtherNet/IP的设备通常是不使用预定性连接来交换信息的。常遇到的如Modbus TCP/IP、条码扫描仪、RFID阅读器,则由一个执行堆栈服务的界面来实现信息交流,这就是控制器中的MSG指令来完成的。

指令的执行在控制器实施以下操作:

●打开连接。

●接收Incoming连接。

●送出数据。

●接收数据。

控制器支持最多32个堆栈,且必须是如下类型之一:

●UDP堆栈:送出或接收UDP数据块。

●TCP客户端堆栈:编程初始化连接。

●TCP服务器堆栈:其他设备初始化连接。

●TCP旁听堆栈:在指定端口上的旁听Incoming连接数目。

UDP和TCP的送出和接收服务见表3-1。

表3-1 UDP和TCP服务

978-7-111-46407-5-Chapter03-327.jpg

每一个TCP端口接收连接必须有一个旁听堆栈。如果在同一个端口有多个TCP服务堆栈连接,则能够共享一个旁听堆栈。

在UDP和TCP的堆栈之间,可以分隔可用的Socket Instances,有如下方法:

●为客户端TCP连接使用所有的Instance。

●为Incoming TCP连接使用一个Instance,且从其他设备接收保持的连接。

●完成TCP客户端和服务器的两种操作。

●完成TCP和UDP的两种操作。

可用的Instance见表3-2。

表3-2 可用的Instance

978-7-111-46407-5-Chapter03-328.jpg

(续)

978-7-111-46407-5-Chapter03-329.jpg

978-7-111-46407-5-Chapter03-330.jpg

图3-156 创建新的结构类型

一旦在客户端的Socket Instance上打开连接,则不能使用相同的Socket Instance接收In-coming连接,同样地,如果在Socket In-stance上接收连接,不能用Instance打开Outgoing连接。这样的运行方式与标准堆栈API是一致的。

在CompactLogix 5370控制器程序中,用MSG指令的CIP Generic方式请求堆栈服务。

下面用一个打开连接的实例,来说明堆栈的操作是如何通过MSG指令的执行来实现的。(www.daowen.com)

首先,在用户自定义数据结构,创建堆栈打开连接参数的结构数据,如图3-156所示。

结构说明如下:

●Timeout:双整字类型,指定超时

时间,单位毫秒

●DestAddr:字符串类型,指定字

数组(最大64),定义连接的

目标地址。指定如下之一:

—Hostname?port=xxxzaz

—IPAddr?port=xxx

例如,指定IP地址,键入10.88.81.10?port=2813。

●.LEN:双整字类型,目标地址的长度

●.DATA:短整数数组,包含目标地址的数组。

在控制器区域数据库,创建数据结构为SockOpenParameters的新标签,如图3-157所示。

单击978-7-111-46407-5-Chapter03-331.jpg创建标签完成。

978-7-111-46407-5-Chapter03-332.jpg

图3-157 创建新标签

梯形图的例程中编写MSG指令梯级逻辑,如图3-158所示。

978-7-111-46407-5-Chapter03-333.jpg

图3-158 编写MSG指令

单击978-7-111-46407-5-Chapter03-334.jpg进入MSG指令组态,组态信息如图3-159所示。

这是一条服务性指令,选定服务类型后,服务代码被指定,对应的In-stance,根据对应服务的类型来设定,一般要查证资料。选择刚才创建的SockOpenParameters标签作为数据源以及说明数据的字节长度。本操作没有目标数据。

单击Communication进入通信路径组态页面,如图3-160所示。

978-7-111-46407-5-Chapter03-335.jpg

图3-159 MSG组态

978-7-111-46407-5-Chapter03-336.jpg

图3-160 MSG指令通信路径组态

MSG指令的传送路径不同于其他的控制器,因为它是送给自己的,所以路径书写固定的为“1,0”,无论控制器位于哪一个槽。

MSG指令选择必须是非连接的,因为端口的Incoming的资源是十分有限的,一旦数据传送完毕,应该及时释放,留给其他的数据传送使用。所以此选项一定要清除勾选,如图3-160中所示。

最后,在例程运行的梯级逻辑中,执行这条MSG指令,完成堆栈连接的打开。这条指令的执行,打开了堆栈的连接,面对一台设备交换数据(读/写)的过程,需要执行多条MSG指令才能完成,MSG指令的编写都是类似的,这里就不再重复。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈