ModbusRTU
1.1.驱动设置
该协议支持标准的modbus在串口链路上的采集
串口号:选择网关连接仪表的 com 口;
- 串口232/485为复用关系,同时只能用1个(485接线为A/B,232接线为GND/TX/RX)
串口参数:与被采集仪表保持一致;采集默认参数为:波特率:9600,8,N,1
- 校验位:NONE表示无效验,EVEN表示偶效验,ODD表示奇效验
轮询周期:对所有在节点下的采集点,如果实际采集时间超过预设值,则该周期设定将失效
1.2.设备属性设置
- 设备ID:modbus的设备ID,范围1-254
- 超时时间:默认999,单位毫秒,如果部分设备响应过慢,可设置为2000
- 读端组包:启用后,网关将自动对要采集的数据,做最优化的组包采集
- 数字量组包长度:针对DI/DO类型,在地址连续时,一次性至多读取的数量
- 模拟量组包长度:针对AI/AO类型,在地址连续时,一次性至多读取的数量
1.3.采集标签配置
- 寄存器类型:modbus寄存器类型
- 数值转换倍率:允许对原值进行浮点数的运算,默认值1不修改原值
- 数据类型:modbus默认数据类型为2BYTE,也支持int,float,double等数据类型的采集
- 寄存器地址:范围0-65535
- 当数据类型为2BYTE时,请保持地址间隔为1,如:1,2,3,4,5
- 当数据类型为4BYTE时,请保持地址间隔为2,如:1,3,5,7,9
- 当数据类型为8BYTE时,请保持地址间隔为4,如:1,5,9,13
- 字节顺序:允许颠倒大小端,需要和被采集的设备的字节顺序类型一致
取位功能:对字节顺序处理后的值,进行取位操作
- 取起始地址高字节的值:short类型字节序默认为AB连续空间,则勾选位:9,10,11,12,13,14,15
- 取起始地址低字节的值:short类型字节序默认为AB连续空间,则勾选位:0,1,2,3,4,5,6,7
以BCD码进行解值:默认不勾选,仅在协议文档明确说明值是BCD码时勾选
1.4.关于部分modbus使用的科普
1.下述是modbus数据格式:
其中"地址":代表modbus设备的"设备ID"
功能码:代表着"数据类型"
字节数:代表着"数据类型,此处是标准的2个字节的short或unsigned short"
2.功能码和数据类型,以及地址写法的对应关系:
功能码 | 网关中的寄存器类型 | 英文描述 | 网关中的地址范围 | 其他地址写法 |
---|---|---|---|---|
01 | DO(线圈型数据) | Read Coils(0x) | 0-65535 | 000001~065536 |
02 | DI(离散量输入) | Read Discrete Inputs(1x) | 0-65535 | 100001~165536 |
03 | AO(保持寄存器) | Read Holding Registers(4x) | 0-65535 | 400001~465536 |
04 | AI(输入寄存器) | Read Input Registers(3x) | 0-65535 | 300001~365536 |
3.关于写操作:
当前版本网关仅支持对单个标签的写操作,即对modbus协议而言,支持0x05写单个线圈(DO)和0x06写单个保持寄存器(AO)的操作
用户无需主动下发0x05、0x06、0x10功能码,用户在通过http_server、数据库、mqtt、云平台、API任意一种方式下发控制时,网关内部会自行调用0x05/0x06/0x10功能码来下发控制
- DO操作:0x05功能码
- AO操作:short/unsigned short类型,0x06功能码
- AO操作:int/unsigned int、long/unsigned long类型,0x10功能码
4.如何设置连续读一片区域,并对其中的值进行解值操作
比如需要读取起始地址0,数量4,对并其中位进行解析:
请验证下面的设置:
- 单独创建1个组(避免因为地址连续,而导致读取数量操作4)、如果可以保证后续采集标签的地址不会继续形成组包,也可以不单独配置在1个组中
- 保证读取范围内,数据类型的宽度是一致的,比如统一为short/int/long
ModbusTCP
1.1.驱动设置
该协议支持标准的modbus在网络链路上的采集
- IP地址:要采集设备的IP地址
- 端口号:要采集设备的端口号,默认502
- 轮询周期:对所有在节点下的采集点,如果实际采集时间超过预设值,则该周期设定将失效
- 连接超时:首次与采集设备建立TCP驱动链接时的连接超时,非采集超时
1.2.设备属性设置
- 设备ID:modbus的设备ID,范围1-254
- 超时时间:默认999,单位毫秒,如果部分设备响应过慢,可设置为2000
- 读端组包:启用后,网关将自动对要采集的数据,做最优化的组包采集
- 数字量组包长度:针对DI/DO类型,在地址连续时,一次性至多读取的数量
- 模拟量组包长度:针对AI/AO类型,在地址连续时,一次性至多读取的数量
1.3.采集标签配置
- 寄存器类型:modbus寄存器类型
- 数值转换倍率:允许对原值进行浮点数的运算,默认值1不修改原值
- 数据类型:modbus默认数据类型为2BYTE,也支持int,float,double等数据类型的采集
- 寄存器地址:范围0-65535
- 当数据类型为2BYTE时,请保持地址间隔为1,如:1,2,3,4,5
- 当数据类型为4BYTE时,请保持地址间隔为2,如:1,3,5,7,9
- 当数据类型为8BYTE时,请保持地址间隔为4,如:1,5,9,13
- 字节顺序:允许颠倒大小端,需要和被采集的设备的字节顺序类型一致
取位功能:对字节顺序处理后的值,进行取位操作
- 取起始地址高字节的值:short类型字节序默认为AB连续空间,则勾选位:9,10,11,12,13,14,15
- 取起始地址低字节的值:short类型字节序默认为AB连续空间,则勾选位:0,1,2,3,4,5,6,7
以BCD码进行解值:默认不勾选,仅在协议文档明确说明值是BCD码时勾选
1.4.关于部分modbus使用的科普
1.下述是modbus数据格式:
其中"地址":代表modbus设备的"设备ID"
功能码:代表着"数据类型"
字节数:代表着"数据类型,此处是标准的2个字节的short或unsigned short"
2.功能码和数据类型,以及地址写法的对应关系:
功能码 | 网关中的寄存器类型 | 英文描述 | 网关中的地址范围 | 其他地址写法 |
---|---|---|---|---|
01 | DO(线圈型数据) | Read Coils(0x) | 0-65535 | 000001~065536 |
02 | DI(离散量输入) | Read Discrete Inputs(1x) | 0-65535 | 100001~165536 |
03 | AO(保持寄存器) | Read Holding Registers(4x) | 0-65535 | 400001~465536 |
04 | AI(输入寄存器) | Read Input Registers(3x) | 0-65535 | 300001~365536 |
3.关于写操作:
当前版本网关仅支持对单个标签的写操作,即对modbus协议而言,支持0x05写单个线圈(DO)和0x06写单个保持寄存器(AO)的操作
用户无需主动下发0x05、0x06、0x10功能码,用户在通过http_server、数据库、mqtt、云平台、API任意一种方式下发控制时,网关内部会自行调用0x05/0x06/0x10功能码来下发控制
- DO操作:0x05功能码
- AO操作:short/unsigned short类型,0x06功能码
- AO操作:int/unsigned int、long/unsigned long类型,0x10功能码
4.如何设置连续读一片区域,并对其中的值进行解值操作
比如需要读取起始地址0,数量4,对并其中位进行解析:
请验证下面的设置:
- 单独创建1个组(避免因为地址连续,而导致读取数量操作4)、如果可以保证后续采集标签的地址不会继续形成组包,也可以不单独配置在1个组中
- 保证读取范围内,数据类型的宽度是一致的,比如统一为short/int/long