编辑: GXB156399820 | 2019-07-05 |
33 幢C座8层
电话:400-008-0923 F:010-51413442 Z:10111
网址:www.aoyipower.com 2.3.2 功能码域 MODBUS包裹中功能域长度为一个字节,用以通知从站应当执行何操作.从站响应包 裹中应当包含主站所请求操作的相同功能域字节.有关设备的功能码参照下表. 功能码 含义 功能 0x01 读取寄存器 获得逻辑线圈寄存器的值 0x03 读取寄存器 获得实时数据寄存器、设备参数寄存器、保护整定参数 寄存器、SOE记录寄存器、操作记录寄存器的值 0x04 读取寄存器 获得实时数据寄存器、设备参数寄存器、保护整定参数 寄存器、SOE记录寄存器、操作记录寄存器的值 0x05 设置寄存器 设置逻辑线圈寄存器的值 0x10 设置寄存器 设置实时数据寄存器中的时间寄存器的值,修改设备参 数寄存器和保护整定参数寄存器的值 2.3.3 数据域 MODBUS数据域长度不定,依据其具体功能而定.MODBUS数据域采用 BIG INDIAN 模式,即是高位字节在前,低位字节在后.举例如下: Example 2.1 1个16位寄存器包含数值为0x12AB,寄存器数值发送顺序: 高位字节 = 0x12 低位字节 = 0x0AB 2.3.4 校验域 MODBUS-RTU模式采用16位CRC校验.发送设备应当对包裹中的每一个资料都进行 CRC16计算,最后结果存放入检验域中.接收设备也应当对包裹中的每一个资料(除校验域 以外)进行CRC16计算,将结果域校验域进行比较.只有相同的包裹才可以被接受.具体的 CRC校验算法参照附录. 2.4 网络时间考虑 在RS485网络上传送包裹需要遵循以下有关时间的规定: 1) 主站请求包裹结束到从站响应包裹开始之间的时间最小为0毫秒,最大为250毫秒, 典型值为60毫秒;
2) 从站响应包裹结束到主站下一请求包裹开始之间的时间典型值为100毫秒;
3) 包裹中相邻两个字节之间的最大时间依据通讯波特率不同而不同,一般来说最大 字节时间为3倍的字节发送时间(例如9600波特率下,字节间隔为3毫秒;
4800波特率时,字 节间隔为6毫秒).
第三章 通讯包裹 MODBUS支持两种功能码,标准的MODBUS协议仅支持16位资料模式,也就说传输任 何测量值最大为65535. 3.1节将描述继电器控制的命令. 3.2节将说明设备的读数据包裹和响应包裹的格式. 3.3节将说明设备写资料包裹和响应包裹的格式. 3.1 读寄存器 由主站机发送的包裹请求设备响应所有有效的寄存器,保留寄存器内容为0. 读寄存器包裹格式(主机?设备) 响应格式(设备?主机) 第5页/共
11 页 北京奥一新源科技股份有限公司 研发部 地址:北京经济技术开发区科创十三街汇龙森
33 幢C座8层
电话:400-008-0923 F:010-51413442 Z:10111
网址:www.aoyipower.com 从站地址 1字节 从站地址 1字节 功能码 1字节 功能码 1字节 开始地址 2字节 字节数(2*寄存器数目)1字节 寄存器个数 2字节 第一个寄存器资料 2字节 CRC校验码 2字节 第二个寄存器资料 2字节 ???? CRC校验码 2字节 3.2 写寄存器 写寄存器包裹格式(主机?设备) 响应格式(设备?主机) 从站地址 1字节 从站地址 1字节 功能码 1字节 功能码 1字节 开始地址 2字节 开始地址 2字节 寄存器个数 2字节 寄存器个数 2字节 字节数(2*寄存器数目)1字节 CRC校验码 2字节 第一个寄存器资料 2字节 第二个寄存器资料 2字节 ???? CRC校验码 2字节 注意: 设备假定写入的寄存器从第一个寄存器开始是连续的;
第四章 计算CRC-16 该部分将描述计算CRC-16的过程. 在帧中的有关的字节被义为是一串2进制数据 (0,1).第16位校验和是这样得到的:该串数据流被216乘,然后除以发生器多项 式(X16 + X15 +X2 +1),该式以2进制表示为1100000000000101. 商被忽略,16位的余数就是CRC的值,在计算CRC-16值时,全部算术运算用 modulo two或者异或(X0R)算法. 按照下列步骤产生CRC-16的校验和: 1)省略发生器最有意义的位,并且把位的顺序颠倒过来.形成一个新的多项式,结 果是 1010000000000001或者16进制的A001. 2)将全部1或者16进制FFFF装入16位寄存器. 3)用16位寄存器中低阶字节对第一个资料字节进行XOR运算,把结果存入16位寄存 器. 4)把16位寄存器向右移一位.如果溢出位为........