1 适用范围
S-CGQM以及S-CGXO系列(系统版本7.03以后)监控主机ModBus从站接口。
(1)主机按键设置:改主机的ModBus从规约为“RS-ModBus规约”
操作步骤:按确认键,在主机界面找到“2基础参数设置”,按确认键进入,密码默认0000长按确认键进入子菜单,找到“ModBus从规约”或者“485口通信规约”,按确认键修改为“RS-ModBus规约”,长按确认键保存。
(2)主机按键设置ModBus从地址;
如果同时与多台主机通讯,则需修改主机的ModBus从地址保证从地址不冲突,ModBus从地址对应主机32个通道的第1个通道(ModBus从地址1表明主机通道1地址为1,通道2地址为2,依次类推),因此在与多台主机同时通讯时,可将主机的ModBus从地址依次设置为1,33,65,97,32N+1,......
操作步骤:按确认键,在主机界面找到“2基础参数设置”,按确认键进入,密码默认0000长按确认键进入子菜单,找到“3ModBus从地址”,修改地址,默认地址为1。
2 通讯基本参数
编 码 |
8位二进制 |
数据位 |
8位 |
奇偶校验位 |
无 |
停止位 |
1位 |
错误校验 |
CRC(冗余循环码) |
波特率 |
4800bit/s |
3数据帧格式定义
采用Modbus RTU 通讯规约,格式如下:
初始结构 ≥4 字节的时间
地址码 = 1 字节
功能码 = 1 字节
数据区 = N 字节
错误校验 = 16 位CRC 码
结束结构 ≥4 字节的时间
地址码:主机的通道地址,在通讯网络中是唯一的(出厂默认0x01)。
功能码:主机所发指令功能指示,本变送器只用到功能码0x03(读取寄存器数据)。
数据区:数据区是具体通讯数据,注意16bits数据高字节在前!
CRC码:二字节的校验码。
主机问询帧结构:
地址码 |
功能码 |
寄存器起始地址 |
寄存器长度 |
校验码低位 |
校验码高位 |
1字节 |
1字节 |
2字节 |
2字节 |
1字节 |
1字节 |
从机应答帧结构:
地址码 |
功能码 |
有效字节数 |
数据一区 |
第二数据区 |
第N数据区 |
校验码 |
1字节 |
1字节 |
N*2字节 |
2字节 |
2字节 |
2字节 |
2字节 |
4寄存器地址
寄存器地址 |
PLC或者组态地址 |
内容 |
操作 |
0000 |
40001 |
模拟量2原始值(16位无符号整形) |
只读 |
0001 |
40002 |
模拟量1原始值(16位有符号整形) |
只读 |
5通讯协议示例以及解释
举例1:读取通道01的模拟量1/2(以温湿度为例),ModBus从地址设置为2
问询帧:
地址码 |
功能码 |
起始地址 |
数据长度 |
校验码低位 |
校验码高位 |
0x02 |
0x03 |
0x00 0x00 |
0x00 0x02 |
0xC4 |
0x38 |
应答帧: (例如读到温度为-10.1℃,湿度为65.8%RH)
地址码 |
功能码 |
返回有效字节数 |
模拟量2原始值 |
模拟量1原始值 |
校验码低位 |
校验码高位 |
0x02 |
0x03 |
0x04 |
0x02 0x92 |
0xff 0x9b |
0x69 |
0x3D |
模拟量2表示湿度,模拟量1表示温度;
温度计算:
当温度低于 0 ℃ 时温度数据以补码的形式上传。
温度:FF9B H(十六进制)= -101 => 温度 = -10.1℃
湿度计算:
湿度:0292 (十六进制)代表10进制数658,则代表湿度值为65.8%
=> 湿度 = 65.8%RH
举例2:读取通道03的模拟量1/2(以温湿度为例),ModBus从地址设置为10
问询帧:
地址码 |
功能码 |
起始地址 |
数据长度 |
校验码低位 |
校验码高位 |
0x0C |
0x03 |
0x00 0x00 |
0x00 0x02 |
0xC5 |
0x16 |
应答帧: (例如读到温度为-10.1℃,湿度为65.8%RH)
地址码 |
功能码 |
返回有效字节数 |
模拟量2原始值 |
模拟量1原始值 |
校验码低位 |
校验码高位 |
0x0C |
0x03 |
0x04 |
0x02 0x92 |
0xff 0x9b |
0x86 |
0xFD |
模拟量2表示湿度,模拟量1表示温度;
温度计算:
当温度低于 0 ℃ 时温度数据以补码的形式上传。
温度:FF9B H(十六进制)= -101 => 温度 = -10.1℃
湿度计算:
湿度:0292 (十六进制)代表10进制数658,则代表湿度值为65.8%
=> 湿度 = 65.8%RH