ABPLC通过Modbus TCP读取设备压力值
ABPLC通过Modbus TCP读取设备压力值
使用罗克韦尔(AB)-PLC以客户端形式通过Modbus TCP于设备通讯,并读取压力值。
Modbus TCP客户端AOI程序导入
在罗克韦尔官网搜索Modbus TCP Add-On ,并下载例程,或者点击链接直接下载。
在Studio 5000中新建一个梯级例程,选中梯级右键导入例程。
选择raC_Opr_NetModbusTCPClient_Rung.L5X文件,并单击导入。
导入对话框打开后选择Tag,根据需要修改Tag名字。
单击确认按钮,完成导入。
配置本地运行参数
Modbus TCP客户端要求EtherNet/IP模块支持Logix套接字。详见链接
右键单击连接到Ref_Connection参数的Tag,然后选择监控。
打开参数Tag,设置相应参数。
Tag | 参数 |
---|---|
LocalSlot | 本地EtherNet/IP模块的插槽 |
LocalAddress | EtherNet/IP模块的.LocalAddress地址。仅对于双IP模式的CompactLogix 5380 和 5480,用于指定Modbus TCP通讯的本地以太网连接的IP地址。其他情况,此字段为空。 |
DestAddress | 指定Modbus服务端设备的以太网IP地址。该地址必须指定,不可为空。 |
DestinationPort | 指定ModbusTCP端口为502,该值为ModbusTCP协议标准值。 |
将连接到Inp_Enable参数的Tag值设置为1,启动ModbusTCP客户端。
如果在运行中修改了参数,请务必重置Inp_Enable参数。
确认数据位置
根据压力测量模块寄存器地址表格,确认压力值读取地址:40001/40002。
配置数据交换
监控Ref_Transactions参数连接的Tag。
在PollInterval标签中配置轮询间隔时间(单位:毫秒)。
默认值为1000(1秒),最小值为80毫秒,如何轮询低于80毫秒的任务都将以1000毫秒的速率进行轮询。
在TransType标签中设置Modbus功能代码。
功能代码 名称 说明 Modbus地址范围 01 读取线圈 用于读取线圈的状态,它可以读取一个或多个线圈的状态,返回结果为状态字节,每个字节可以表示8个线圈的状态。 本地地址:00001-01024;服务端地址:00001-065536 02 读取离散输入 用于读取离散输入的状态,它可以读取一个或多个离散输入的状态,返回结果为状态字节,每个字节可以表示8个离散输入的状态。 本地地址:10001-11024;服务端地址:10001-165536 03 读取保持寄存器 用于读取保持寄存器的值,它可以读取一个或多个保持寄存器的值,返回结果为寄存器值,每个寄存器可以表示一个16位二进制值。 本地地址:40001-41024;服务端地址:40001-465536 04 读取输入寄存器 用于读取输入寄存器的值,它可以读取一个或多个输入寄存器的值,返回结果为寄存器值,每个寄存器可以表示一个16位二进制值。 本地地址:30001-31024;服务端地址:30001-365536 05 写单个线圈 用于写入单个线圈的状态,它可以写入一个线圈的状态,返回结果为写入的状态字节,每个字节可以表示8个线圈的状态。 本地地址:00001-01024;服务端地址:00001-065536 06 写单个保持寄存器 用于写入单个寄存器的值,它可以写入一个寄存器的值,返回结果为写入的寄存器值,每个寄存器可以表示一个16位二进制值。 本地地址:40001-41024;服务端地址:40001-465536 15 写入多个线圈 用于写入多个线圈,它可以写入一个或多个线圈的状态。 本地地址:00001-01024;服务端地址:00001-065536 16 写入多个保持寄存器 用于写入多个保持寄存器,它可以写入一个或多个保持寄存器的状态。 本地地址:40001-41024;服务端地址:40001-465536 在对等服务器设备中需要设置StationID标签,大多数情况下ModbusTCP服务器会忽略该字段。
设置BeginAddress标签。该值表示要从TCP服务端读取或者写入的起始地址。
根据上面设置功能代码,该数值分别代表不同的Modbus地址。
设置Count标签。该值表示要从ModbusTCP服务端读取或写入的项目数。
设置LocalAddress标签。该值表示从ModbusTCP服务端读取或写入的数据放置到“Data”数组的起始地址。
前面配置的功能代码为读取保持寄存器,所以读取地址为4xxx。
将读取数据从数组的第0为开始存放。
将Enabled标签设置为1,启用第一组参数。
使用限制
- 必须使用Import Rung函数来实现,以保留Message指令配置。不要使用复制/粘贴,因为它不会带来完整的消息指令配置和标签。一旦rung实现,不要使用Search/Replace标签。所有的替换只能在梯级导入期间进行。
- 每个控制器支持多个客户机AOI实例。每个实例必须使用自己的一组backing和Message标记,但是“…_Data”标记结构可以在aoi之间共享。
- Modbus TCP Server和Modbus TCP Client aoi可以驻留在同一个程序中。但是,服务器应用程序可能会由于共享的Logix Sockets对象而导致客户端暂时断开连接。
- 当在ControlLogix Redundancy系统中实现时,用户应该期望在Modbus TCP Client AOI导致控制器切换后至少有5秒的Modbus通信丢失。由于正在使用的服务器设备的行为,可能会有额外的Modbus通信延迟。
监控Modbus TCP客户端
ModbusTCP数据标签位于Ref_ModbusData参数标签下。
该标签包含线圈(0xxxx),离散输入(1xxxx),输入寄存器(3xxxx)和保持寄存器(4xxxx)四个独立的数据区域。
用户应用程序可以不受任何限制地读取和填充这些标记值。Modbus TCP AOI 状态位
a. Sts_EN输出表示Modbus TCP Client功能已启用。
b. “Sts_Connected”输出表示客户端连接请求被服务器接受。它不指示活动数据流。
应该检查单个事务的状态以验证数据交换。c. Sts_Faulted输出表示消息指令有一条出错。
d. Sts_Overlap输出表示一个或多个事务在下一次触发之前没有完成
e. Sts_Overload输出表示在一个或多个事务中存在过多的重叠。
单个任务状态信息。这些TAg存在于5个内建任务中的每个任务中。
任务0 - 4)。当请求的任务完成时,TransComplete位被置位。当它被要求进行下一次任务时,被程序清除。
TransStatus值表示任务的当前状态。0=成功,1=正在处理中,2=重试,-1=异常。
任务诊断Tag表示任务在处于活动状态时提供的内部动态信息。请勿修改这些Tag