1 驱动简介
网关支持标准的Modbus-TCP协议,支持Modbus-TCP协议的设备(例如智能仪表、电表等),都可以通过此协议直接通讯,实现远程采集、监控、控制设备的功能。
从站号:默认为1,需要查看设备说明书关于通讯这部分的说明。
硬件接线:采用标准的RJ45接口的网线,连接网关的LAN口和下位机设备的LAN口。也可通过交换机进行连接。
端口号:默认为502
通讯方式:一主一从,一主多从
注意:现场设备必须支持做Modbus-TCP从站。
例如:某触摸屏的通讯参数如图:
IP地址为192.168.1.5 子网掩码为255.255.255.0
2 网关通讯口配置
LAN口配置路径:【②:网关驱动管理】→【通讯口配置】→【LAN配置】。在弹出窗口中填写网关LAN口IP。
IP地址:需要与PLC同一网段(一般情况下即是要求点分四段IP表示法的前三段地址要相同)。如外接交换机,不能与交换机中其他设备IP相同。本文中,PLC的IP地址为192.168.1.5,此处LAN口IP填写192.168.1.200。
子网掩码:一般填写为255.255.255.0(与当前连接的网络结构相关。若网络结构较复杂,请咨询该网络的网络管理员)。
3 网关驱动配置
网关配置驱动路径:【②:网关驱动管理】→【+新增】。在弹出界面中填写驱动信息:
【通讯口】:选择LAN。此处可选LAN/RS232/RS485。
【驱动名称】:用于区分不同型号的驱动,例如“modbus仪表”。
【品牌】【型号】:分别选择通用Modbus设备,Modbus TCP。
【IP地址】:填写下位机设备的IP地址,本例中填写192.168.1.5。
【设备地址】:填写下位机的设备地址,默认为1。
【端口号】:以太网单元的数据帧接收/发送端口,默认为502。
【最小采集时间】:网关采集设备数据的时间间隔,单位为ms,默认是1000ms(1秒),根据采集数据量的大小,设置值可适当调整。
【通讯等待时间】:网关接收通讯数据等待时间,默认1000ms。设置太小可能导致通讯不上(建议大于1秒)。
【16位整形】【32/64位整形】【32/64位浮点型】:是指对应数据类型的解码顺序。如果厂家给的表格没有标明,建议不要进行修改,直接选择默认即可。具体解释见下表:
数据类型 |
解码方式 |
说明 |
举例 (0x0001,0x0000 0001) |
16位整形 |
0-12 |
表示字元件高低字节不颠倒(默认值) |
表示0x0001 |
1-21 |
表示字元件高低字节颠倒 |
表示0x0100 |
|
32/64位整形 |
0-1234 |
表示双字元件不做处理直接解码(默认值) |
表示0x0000 0001 |
1-2143 |
表示双字元件高低字不颠倒,但字内高低字节颠倒 |
表示0x0000 0010 |
|
2-3412 |
表示双字元件高低字颠倒,但字内高低字节不颠倒 |
表示0x0001 0000 |
|
3-4321 |
表示双字元件内4个字节全部颠倒 |
表示0x0100 0000 |
|
32/64浮点型 |
0-1234 |
表示双字元件不做处理直接解码(默认值) |
|
1-2143 |
表示双字元件高低字不颠倒,但字内高低字节颠倒 |
||
2-3412 |
表示双字元件高低字颠倒,但字内高低字节不颠倒 |
||
3-4321 |
表示双字元件内4个字节全部颠倒 |
【分块采集方式】:一般不用修改,默认即可。
0-按最大长度分块:采集分块按最大块长处理,对地址不连续但地址相近的多个连续地址合并一次性读取,而不是多次读取,提升采集的效率。
1-按连续地址分块:采集分块按地址连续性处理,对地址不连续的地址分多次读取。该项多用于仪表类通讯。
例如:有寄存器地址分别为1~5、7、9~12的数据需采集,如果选择“0-按最大长度分块”,则两块可优化为地址1~12的数据打包1次完成采集;如果选择“1-按连续地址分块”,则需要采集3次。
【4区16位写功能码】:一般不用修改,默认即可。0x06为写单个寄存器,0x10为写多个寄存器。在双字(32位)数据写操作或批量写入多个数据时,使用0x10功能码。
4 网关变量配置
变量设置路径:【③:变量管理】→【+添加变量】,填写变量信息:
变量介绍:
【变量图片】:在列表展示时显示的变量图片(一般不用)。
【仪表、PLC】:选择已创建的驱动名称(如上述创建的“modbus仪表”驱动)。
【标识(key)】:可用于脚本编程、中间变量计算等功能,详细说明点击【?】帮助(不常用)。
【变量名称】:自定义即可(如“温度1”),注意变量名称不允许重复。
【单位】:此单位会出现在历史数据、曲线的图例中,自定义填写。
【寄存器类型】:填写对应下位机设备的寄存器类型(线圈0x、离散输入1x、输入寄存器3x、输出寄存器4x)。
【寄存器地址】:地址填写时不带寄存区标志符,与实际寄存器地址一致。具体下图“平台地址填写举例”。
【数据类型】:根据实际需要选择即可。
【小数位数】:对于数值型的变量确定显示的小数位数,根据需求填写。
【死区设置】:默认即可。根据需要填写即可。详细说明点击【?】帮助。
【状态列表】:一般不用。可将数值直接与文本映射。如值为“10”,映射字段为“设备故障”,则当采集到变量的值为“10”时,会直接在设备监控和历史报表中显示“设备故障”。
【公式】:一般用于数据的工程换算和数据处理。详细说明点击【?】帮助。
【读写方式】:可选择 “只读”和“读写”两种方式。
注:“寄存器类型”、“寄存器地址”、“数据类型”、“读写方式”的设置规则见附录1(寄存器地址范围表)。
平台地址填写举例:
下位机地址表 |
EMCP平台变量填写指导 |
|||
寄存器地址 |
数据类型 |
寄存器类型 |
寄存器地址 |
数据类型 |
0x0001 |
开关量 |
线圈(0x) |
1 |
Bit位 |
4x0010 |
16位整形 |
保持寄存器(4x) |
10 |
16位整形 |
4x0019 |
浮点型 |
保持寄存器(4x) |
19 |
浮点型 |
对于部分寄存器起始地址为0的设备,填写的寄存器地址需要加1 |
5 数据调试
添加完成后,【变量管理】如下图所示,此时可以点击【数据测试】按钮,检查变量能否采集到数据,或者数据是否正确。
6 常见错误代码
点击【数据调试】按钮,如有异常,会上报数据异常代码,点击该异常码可直接查看解释说明。
下表为常见错误码说明及处理建议。
错误码 |
说明 |
处理建议 |
99901 |
下位设备通讯故障 |
1、检查网关和PLC的接线 2、检查通讯口参数配置 3、检查硬件本身存在的问题 |
1711 |
||
99902 |
响应超时 |
|
1715 |
||
99903 |
变量不存在 |
|
1714 |
||
99904 |
变量地址为空或格式错误,数据校验错误 |
1、检查通讯参数 2、检查变量地址 3、排查干扰 |
1713 |
||
99905 |
变量只读,不可以写入 |
|
2004 |
||
99907 |
读取的数据不完整 |
|
查看更多错误码信息请查看如下链接:
通用异常码列表:通用异常码列表 · 异常码查询
Modbus异常码列表:Modbus协议异常码列表 · 异常码查询
附录1 寄存器地址范围表
MODBUS寄存器地址表 |
||||||
寄存器 |
操作方式 |
读功能码 |
写功能码 |
寄存器类型 |
地址范围 |
数据范围 |
【1区】输入继电器 |
只读 |
02 |
无 |
Bit位 |
1x0001 - 1x9999 |
0、1 |
【0区】输出继电器 |
读写 |
01 |
05 |
Bit位 |
0x0001 - 0x9999 |
0、1 |
【3区】输入寄存器 |
只读 |
04 |
无 |
16位、32位 |
4x0001 - 4x9999 |
0-65535 |
【4区】输出寄存器 |
读写 |
03 |
06、10 |
16位、32位 |
3x0001 - 3x9999 |
0-65535 |
此表用于解释说明每个寄存器类型对应的参数。 06功能码为写单个寄存器,16功能码为写多个寄存器。 不同的设备的寄存器对应的modbus地址不同,需要查看设备说明书。 |