编辑: kieth | 2014-07-16 |
1、Modbus通讯协议简介 Modbus通讯协议采用RTU传输模式 RTU模式中每个字节(11位)的格式为: 1个起始位 8个数据位 1个奇偶校验位 1个停止位 注: 帧校验采用循环冗余校验(CRC) 仪表的应答延迟不大于300ms 与通讯有关的参数说明 与通讯有关的参数位于仪表的第5组参数中 仪表通讯地址,参数地址40H,取值范围0~99,出厂设置为1 通讯速率选择,参数地址41H,取值范围
2400、
4800、
9600、19200(bps)可选,出厂设置为9600bps 校验方式选择,参数地址43H,取值范围0~2,出厂设置为2 选择为
0 时,通讯采用无校验方式 选择为
1 时,通讯采用奇校验方式 选择为
2 时,通讯采用偶校验方式 注:当选择为无校验时,使用1位停止位;
无校验切换为奇偶校验或者奇偶校验切换为无校验后仪表需要重新上电后才能执行新的校验方式
2、通讯命令简介 本系列仪表支持的Modbus命令集 命令名称 Modbus命令类型 功能码 (十六进制) 寻址范围 (十进制) 读测量值 读输入寄存器
04 0~11 读输出模拟量值 读多个保持 寄存器
03 0~1 读仪表参数值 256~433 读开关量输出状态 读线圈
01 0~1 输出模拟量命令 写多个保持 寄存器
10 0~1 设置仪表参数值 256~433 输出单个开关量 写单个线圈
05 0~1 输出多个开关量 写多个线圈 0F 0~1 指令中涉及到的测量值、参数值、模拟量值均采用32位浮点数(IEEE-754标准格式)表示,占用2个连续的寄存器.
每条指令的具体功能请参见 通讯命令详解
3、通讯命令详解 命令说明(所有命令中的数值均采用十六进制表示) 读测量值命令 将测量值定义为12个连续的输入寄存器,分为四组: 测量值 累积流量 温度 压力 补偿前瞬时流量 寻址范围 0x0000~ 0x0001 0x0002~ 0x0003 0x0004~ 0x0005 0x0006~ 0x0007 测量值 补偿后瞬时流量 密度 寻址范围 0x0008~ 0x0009 0x000A~ 0x000B 命令:AA
04 BBBB
0002 CCCC AA
04 BBBB
0002 CCCC 通讯地址 功能码 寄存器起始地址 寄存器 数CRC校验值 响应:AA
04 04 data CCCC AA
04 04 data CCCC 通讯地址 功能码 测量值字节数 测量值 CRC校验值 BBBB:如累积流量的寻址范围为0x0000~0x0001,那么BBBB =
0000 . 例: 命令:01040000000271CB 响应:010404435373F83AA3 本命令读取地址为01的仪表的累积流量值 响应表明读取的累积热能值为435373F8(十进制数为211.453) 读输出模拟量值命令 (变送输出) 将模拟量输出值定义为2个连续的保持寄存器,寻址范围0x0000~0x0001 命令:AA
03 0000
0002 CCCC AA
03 0000
0002 CCCC 通讯地址 功码寄存器起始地址 寄存器个数 CRC校验值 响应:AA
03 04 data CCCC AA
03 04 data CCCC 通讯地址 功能码 模拟量值字节数 模拟量值 CRC校验值 例: 命令:010300000002C40B 响应:01030441A8CCCDFB7A 本命令读取地址为01的仪表的模拟量输出值 响应表明读取的模拟量输出值为41A8CCCD(十进制数为21.1,表示 的是模拟量输出量程的21.1%) 读仪表参数值命令 将参数值定义为1~178个保持寄存器,寻址范围0x0100~0x01B1,每2个连续的保持寄存器表示一个参数值.寄存器起始地址与仪表参数地址的对应关系是:寄存器起始地址=0x0100+参数地址*2 例如,仪表第2组参数 的地址是10H,那么它对应的寄存器起始地址: BBBB = 0x0120(0x0100+0x10*2) 命令:AA
03 BBBB
0002 CCCC AA
03 BBBB
0002 CCCC 通讯地址 功能码 寄存器起始地址 寄存器个数 CRC校验值 响应:AA