欣仰邦S-SC采集主机ModBus从站接口通信详解(标准ModBus规约)
发表时间:2021-12-17作者:xmsiyb
1 适用范围
S-SCQXZ以及S-SCXZ系列(系统版本7.03以后)监控主机ModBus从站接口。
(1)主机按键设置:改主机的ModBus从规约为“标准ModBus规约”
操作步骤:按确认键,在主机界面找到“2基础参数设置”,按确认键进入,密码默认0000长按确认键进入子菜单,找到“ModBus从规约”或者“485口通信规约”,按确认键修改为“标准ModBus规约”,长按确认键保存。
操作步骤:按确认键,在主机界面找到“2基础参数设置”,按确认键进入,密码默认0000长按确认键进入子菜单,找到“3ModBus从地址”,修改地址,默认地址为1
初始结构 ≥4 字节的时间
地址码 = 1 字节
功能码 = 1 字节
数据区 = N 字节
错误校验 = 16 位CRC 码
结束结构 ≥4 字节的时间
地址码:为主机的ModBus从地址,在通讯网络中是唯一的(出厂默认0x01)。
功能码:主机所发指令功能指示。
数据区:数据区是具体通讯数据,注意16bits数据高字节在前!
CRC码:二字节的校验码。
和16(10进制);
但对于浮点型数据或32位整形数据建议使用16功能码。
S-SCQXZ以及S-SCXZ系列(系统版本7.03以后)监控主机ModBus从站接口。
(1)主机按键设置:改主机的ModBus从规约为“标准ModBus规约”
操作步骤:按确认键,在主机界面找到“2基础参数设置”,按确认键进入,密码默认0000长按确认键进入子菜单,找到“ModBus从规约”或者“485口通信规约”,按确认键修改为“标准ModBus规约”,长按确认键保存。
- 主机按键设置ModBus从地址;
操作步骤:按确认键,在主机界面找到“2基础参数设置”,按确认键进入,密码默认0000长按确认键进入子菜单,找到“3ModBus从地址”,修改地址,默认地址为1
2 通讯基本参数
编 码 | 8位二进制 |
数据位 | 8位 |
奇偶校验位 | 无 |
停止位 | 1位 |
错误校验 | CRC(冗余循环码) |
波特率 | 4800bit/s |
3数据帧格式定义
采用Modbus RTU 通讯规约,格式如下:初始结构 ≥4 字节的时间
地址码 = 1 字节
功能码 = 1 字节
数据区 = N 字节
错误校验 = 16 位CRC 码
结束结构 ≥4 字节的时间
地址码:为主机的ModBus从地址,在通讯网络中是唯一的(出厂默认0x01)。
功能码:主机所发指令功能指示。
数据区:数据区是具体通讯数据,注意16bits数据高字节在前!
CRC码:二字节的校验码。
4通信寄存器单元
对于只读寄存器 使用功能码03(10进制)或04(10进制);对于读写寄存器 使用功能码06(10进制)和16(10进制);
但对于浮点型数据或32位整形数据建议使用16功能码。
寄存器单元(10进制) | 内容 | 数据格式 | 属性 | ||
0 | 1号通道模拟量1原始值 | 16位有符号整形 | 只读 | ||
1 | 1号通道模拟量2原始值 | 16位无符号整形 | |||
。。。 。。。 。。。 | |||||
62 | 32号通道模拟量1原始值 | 16位有符号整形 | |||
63 | 32号通道模拟量2原始值 | 16位无符号整形 | |||
64 | 1号通道模拟量1处理值高16位 | 32位有符号浮点型 | 只读 | ||
65 | 1号通道模拟量1处理值低16位 | ||||
66 | 1号通道模拟量2处理值高16位 | 32位有符号浮点型 | |||
67 | 1号通道模拟量2处理值低16位 | ||||
。。。 。。。 。。。 | |||||
188 | 32号通道模拟量1处理值高16位 | 32位有符号浮点型 | |||
189 | 32号通道模拟量1处理值低16位 | ||||
190 | 32号通道模拟量2处理值高16位 | 32位有符号浮点型 | |||
191 | 32号通道模拟量2处理值低16位 | ||||
300 | 1号通道模拟量1上限值高16位 | 32位有符号浮点型 |
读/写 |
||
301 | 1号通道模拟量1上限值低16位 | ||||
302 | 1号通道模拟量1下限值高16位 | 32位有符号浮点型 | |||
303 | 1号通道模拟量1下限值低16位 | ||||
304 | 1号通道模拟量2上限值高16位 | 32位有符号浮点型 | |||
305 | 1号通道模拟量2上限值低16位 | ||||
306 | 1号通道模拟量2下限值高16位 | 32位有符号浮点型 | |||
307 | 1号通道模拟量2下限值低16位 | ||||
。。。 。。。 。。。 | |||||
548 | 32号通道模拟量1上限值高16位 | 32位有符号浮点型 | |||
549 | 32号通道模拟量1上限值低16位 | ||||
550 | 32号通道模拟量1下限值高16位 | 32位有符号浮点型 | |||
551 | 32号通道模拟量1下限值低16位 | ||||
552 | 32号通道模拟量2上限值高16位 | 32位有符号浮点型 | |||
553 | 32号通道模拟量2上限值低16位 | ||||
554 | 32号通道模拟量2下限值高16位 | 32位有符号浮点型 | |||
555 | 32号通道模拟量2下限值低16位 | ||||
556 | 1号通道模拟量1偏差值高16位 | 32位有符号浮点型 |
读/写 |
||
557 | 1号通道模拟量1偏差值低16位 | ||||
558 | 1号通道模拟量2偏差值高16位 | 32位有符号浮点型 | |||
559 | 1号通道模拟量2偏差值低16位 | ||||
。。。 。。。 。。。 | |||||
680 | 32号通道模拟量1偏差值高16位 | 32位有符号浮点型 | |||
681 | 32号通道模拟量1偏差值低16位 | ||||
682 | 32号通道模拟量2偏差值高16位 | 32位有符号浮点型 | |||
683 | 32号通道模拟量2偏差值低16位 | ||||
684 | 时间年 | 16位无符号数据 | 读/写范围2000-3000 | ||
685 | 时间月 | 16位无符号数据 | 读/写范围1-12 | ||
686 | 时间日 | 16位无符号数据 | 读/写范围1-31 | ||
687 | 时间时 | 16位无符号数据 | 读/写范围0-23 | ||
688 | 时间分 | 16位无符号数据 | 读/写范围0-59 | ||
689 | 时间秒 | 16位无符号数据 | 读/写范围0-59 | ||
690 | 数据存储模式 | 16位无符号数据 |
读/写 0:关闭 1:开启 2:自动 |
||
691 | 正常数据记录间隔(分钟) | 16位无符号数据 | 读/写范围1-65535 | ||
692 | 报警数据记录间隔(分钟) | 16位无符号数据 | 读/写范围1-65535 | ||
693 | 清除已存储数据 | 16位无符号数据 | 只写 写入01 代表清除已存储数据 | ||
694 | 设备中已存储数据高16位 | 32位无符号数据 | 读/写范围0-530000 | ||
695 | 设备中已存储数据低16位 | ||||
696 | 1号继电器控制及状态 | 16位无符号数据 |
读/写 0:继电器断开 1:继电器吸合 |
||
697 | 2号继电器控制及状态 | 16位无符号数据 |
读/写 0:继电器断开 1:继电器吸合 |
||
698 | 3号继电器控制及状态 | 16位无符号数据 |
读/写 0:继电器断开 1:继电器吸合 |
||
699 | 4号继电器控制及状态 | 16位无符号数据 |
读/写 0:继电器断开 1:继电器吸合 |
||
700 | 5号继电器控制及状态 | 16位无符号数据 |
读/写 0:继电器断开 1:继电器吸合 |
||
701 | 6号继电器控制及状态 | 16位无符号数据 |
读/写 0:继电器断开 1:继电器吸合 |
||
702 | 7号继电器控制及状态 | 16位无符号数据 |
读/写 0:继电器断开 1:继电器吸合 |
||
703 | 8号继电器控制及状态 | 16位无符号数据 |
读/写 0:继电器断开 1:继电器吸合 |
||
5通信实例
主机ModBus从站接口地址为5(可设置,参考第一部分)1)读取2号、3号通道模拟量1、模拟量2原始值
问询 | |
问询命令 | 05 03 00 02 00 04 E4 4D |
详解 | |
05 | 通信的从站地址为05 |
03 | 采用功能码03 |
00 02 | 从0002号寄存器开始读取 |
00 04 | 连续读取4个寄存器的值 |
E4 4D | CRC校验码 |
应答 | |
应答内容 | 05 03 08 00 ED 02 7B 00 E0 00 F9 99 B5 |
详解 | |
05 | 通信的从站地址为05 |
03 | 采用功能码03 |
08 | 返回有效字节数 |
00 ED | 2号寄存器数据(2号寄存器模拟量1原始值)数值为237 |
02 7B | 3号寄存器数据(2号寄存器模拟量2原始值)数值为635 |
00 E0 | 4号寄存器数据(3号寄存器模拟量1原始值)数值为224 |
00 F9 | 5号寄存器数据(3号寄存器模拟量2原始值)数值为249 |
99 B5 | CRC校验码 |
2)读取32通道模拟量1处理值和模拟量2处理值
问询 | |
问询命令 | 05 03 00 BC 00 04 84 69 |
详解 | |
05 | 通信的从站地址为05 |
03 | 采用功能码03 |
00 BC | 从188号寄存器开始读取 |
00 04 | 连续读取4个寄存器的值 |
84 69 | CRC校验码 |
应答 | |
应答内容 | 05 03 08 41 E3 A5 E3 42 82 B1 AA 0A 89 |
详解 | |
05 | 通信的从站地址为05 |
03 | 采用功能码03 |
08 | 返回有效字节数 |
41 E3 A5 E3 | 188号、189号寄存器数据(32号寄存器模拟量1处理值)数值为28.456 |
42 82 B1 AA | 190号、191号寄存器数据(2号寄存器模拟量2原始值)数值为65.347 |
0A 89 | CRC校验码 |
3)将监控主机时间设置为2017年3月28日9时59分32秒
设置 | |
设置命令 | 05 10 02 6C 00 06 0C 07 E1 00 03 00 1C 00 09 00 3B 00 20 B4 7B |
详解 | |
05 | 通信的从站地址为05 |
10 | 采用功能码16 |
02 6C | 从620号寄存器开始写入 |
00 06 | 连续写入6个寄存器的数值 |
0C | 后续有效字节数为12个字节 |
07 E1 | 要写入620号寄存器的数值07E1(代表2017年) |
00 03 | 要写入621号寄存器的数值0003(代表3月) |
00 1C | 要写入622号寄存器的数值001C(代表28日) |
00 09 | 要写入623号寄存器的数值0009(代表9时) |
00 3B | 要写入624号寄存器的数值003B(代表59分) |
00 20 | 要写入625号寄存器的数值0020(代表32秒) |
B4 7B | CRC校验码 |
应答 | |
应答内容 | 05 10 02 6C 00 06 80 2A |
详解 | |
05 | 通信的从站地址为05 |
10 | 采用功能码16 |
02 6C | 从620号寄存器开始写入 |
00 06 | 连续写入6个寄存器的数值 |
80 2A | CRC校验码 |
4)操作继电器
设置 | |
设置命令 | 05 06 02 BA 00 01 69 D3 |
详解 | |
05 | 通信的从站地址为05 |
06 | 采用功能码06 |
02 BA | 写入698号寄存器(第三路继电器)数值 |
00 01 | 写入内容为 1(闭合本路继电器) |
69 EF | CRC校验码 |
应答 | |
应答内容 | 05 06 02 BA 00 01 69 D3 |
应答内容与发送内容一致 |
相关资讯
17850532774