5. 通信协议使用说明 5.1 智能测控装置
5.1.1 Modbus命令格式
ADD 地址码 1字节 8位
5.1.1.1 地址码(ADD)
CS 功能码 1字节 8位 DATA 数据区 N字节 N×8位 CRC 错误校验 2字节 16位 地址码为每次通讯传送的信息帧中的第一个数据帧(8位),从1到255。这个字节表明由用户设定地址码的子机将接收由主机发送来的信息。并且每个子机都有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的子机地址,而子机发送的地址码表明回送的子机地址。
5.1.1.2 功能码(CS)
功能码是每次通讯传送的信息帧中的第二个数据帧。ModBus通讯规约定义功能码为1~127(01H~7FH)。温湿度传感器利用其中的一部分功能码。作为主机请求发送,通过功能码告诉子机执行什么动作。作为子机响应,子机发送的功能码与主机发送来的功能码一样,并表明子机已响应主机进行操作。如果子机发送的功能码的最高位是1(功能码>127),则表明子机没有响应或出错。
下表列出的功能码都具体的含义及操作。 MODBUS部分功能码 功能码 03H 10H 定义 读寄存器 写寄存器 操作 读取一个或多个寄存器的数据 把一个16位二进制数写入寄存器 03:读寄存器
温湿度传感器采用ModBus通讯规约,利用通讯命令,可以进行读取点寄存器)。功能码03H映射的数据区的保持和输入寄存器值都是16位(2字节)。这样从温湿度传感器读取的寄存器值都是2字节。一次最多可读取寄存器数根据后续寄存器表给出。子机响应的命
页 第 13
令格式是子机地址、功能码、数据区及CRC码。数据区的数据都是每2个字节为一组的双字节数,且高字节在前。
10:写寄存器:
主机利用这条命令把多点数据保存到温湿度传感器的存储器,Modbus通讯规约中的寄存器指的是16位(即2字节),并且高位在前。这样温湿度传感器用一条命令保存的最大寄存器数根据后续寄存器表给出。
5.1.1.3 数据区(DATA)
数据区随功能码不同而不同。由主机发送的读命令(03H)数据区与子机应答信息帧的数据区是不同的,由主机发送的写命令(10H)数据区与子机应答信息帧的数据区是完全相同。数据区包含需要子机执行什么动作或由子机采集的需要回送的信息。例如,功能码告诉子机读取寄存器的数值,则数据区必须包含要读取寄存器的起始地址及读取长度(寄存器个数)。
与功能码03对应的数据区格式: 主机发送
数据顺序 数据含义 字节数 子机应答
数据顺序 数据含义 字节数
与功能码10对应的数据区格式:
数据顺序 数据含义 字节数 5.1.1.4 校验码(CRC)
1 起始地址 2 2 读寄存器个数 2 1 回送字节数 1 2 N个寄存器的数据 2×N 1 起始地址 2 2 写入数据1 2 … … … N 写入数据N 2 主机或子机可用校验码进行判别接收信息是否出错。有时,由于电子噪声或其他一些
页 第 14
干扰,信息在传输过程中会发生细微的变化,校验码保证了主机或子机对在传送过程中出错的信息不起作用。这样增加了系统的安全和效率。校验码采用CRC-16校验方法。
二字节的校验码,低字节在前,高字节在后。
注意:命令的格式都是相同的:地址码、功能码、数据区和校验码。
冗余循环码(CRC)包含2个字节,即16位二进制。CRC码由发送端计算,放置于发送信息的尾部。接收端的设备再重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如果二者不相符,则表明出错。
CRC码的计算方法是,先预置16位寄存器全为。再逐渐把每8位数据信息进行处理。 在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位移一位,用0填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数相异或,如果最低位为0,不进行异或运算。
这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相异或,这个过程与上以上一样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为CRC码值。
CRC-16码的计算步骤
(1)置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器。 (2)把一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器。 (3)把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位(移出位)。 (4)如果最低位为0:复第3步(再次移位)。
如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或。 (5)重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理。 (6)重复步骤2到步骤5,进行下一个8位的处理。
(7)最后得到的CRC寄存器即为CRC码,低字节在前,高字节在后。
5.1.2 寄存器地址表
5.1.2.1 唯一编码寄存器地址及命令说明
设备唯一编码设置寄存器地址(MODBUS功能码03、10读、写寄存器) 序号 管理机寄存器 页 第 15
项目 说明 1 2 3 4 0x0100 0x0101 0x0102 0x0103 设备编码(48-63位) 设备编码(32-47位) 设备编码(16-31位) 设备编码(0-15位) 设备唯一编码ID号长度为64位HEX格式 设置设备编码设置命令唯一为:00 10 01 00 00 04 08 xx xx xx xx crc 设置设备编码设置命令唯一为:00 03 01 00 00 04 crc
5.1.2.2 主设备信息2参数读写寄存器地址(MODBUS功能码03、10读写寄存器)
每个寄存器存储2个字节数据。 序管理机寄存器 项目 说明 号 1 0xf200 设备地址(modbus地址)(读写) 取值1~255 2 0xf201 休眠时间 (读写) Unit16 休眠时间为64秒的倍数。最小的休眠时间为64秒,值范围:1~9999 实时时间:年、月(读写)掉电保存 时间为BCD码形式,24小时模式。例如:“0xf204寄存器”设置为实时时间:日、时(读写)掉电保存 0x1830,表示18:30。 实时时间:分、秒(读写)掉电保存 接入射频模块的类型(读写) 值0x0490表示490M模块 值0x0241表示2.4G模块 值0x0900表示GPRS模块 无小数位,接pt100传感器时使用 3 4 5 6 0xf202 0xf203 0xf204 0xf205 7 0xf206 设备软件版本号 5.1.2.3 设备实时采样数据寄存器地址(旋钮编码旋到0)
每个寄存器存储2个字节数据。 序号 1 2 3 4 5 6 7 8 管理机寄存器 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 项目 说明 Unit16 单位mV 单位:升 主设备电压值 累积流量 累计热量 单位:W.h 页 第 16