CDP-M22-MODBUS通信协议
内容简要
本通信协议详细地描述了CDP-M22在MODBUS通讯模式下的输入和输出命令、信息和数据,以便第三方使用和开发。
1.1 串行通讯协议的目的
通信协议的作用使信息和数据在上位机(主站)
CDP-M22-MODBUS支持两个功能码,16位数据模式,也就说传输任何测量值最大为65535。
3.1 读寄存器(功能码03)
由主站机发送的报文请求CDP-M22响应所有有效的寄存器。
读寄存器报文格式(主机→CDP-M22)
响应格式(CDP-M22→主机)
从站地址
1字节
从站地址
1字节
功能码03H
1字节
功能码03H
1字节
开始地址
2字节
字节数(2*寄存器数目)
1字节
寄存器个数
2字节
第一个寄存器数据
2字节
CRC校验码
2字节
第二个寄存器数据
2字节
…………
CRC校验码
2字节
3.2 写寄存器(功能码16)
该命令允许主站配置CDP-M22工作参数,以下为数据格式:
写寄存器报文格式(主机→CDP-M22)
响应格式(CDP-M22→主机)
从站地址
1字节
从站地址
1字节
功能码10H
1字节
功能码10H
1字节
开始地址
2字节
开始地址
2字节
寄存器个数
2字节
寄存器个数
2字节
字节个数(2*寄存器个数)
1字节
CRC校验码
2字节
第一个寄存器数据
第二个寄存器数据
……….
CRC校验码
2字节
4.提供的数据及操作
分为只读部分、只写部分和读写部分,见第四章。
注:任何报文中最多只含有100个寄存器的数据,所以一次最多读取10个保护事件或16个SOE事件。
第三章 计算CRC-16
4.1 算法
该部分将描述计算CRC-16的过程。在帧中的有关的字节被义为是一串2进制数据(0,1)。第16位校验和是这样得到的:该串数据流被216乘,然后除以发生器多项式(X16+X15+X2+1),该式以2进制表示为1100000000000101。商被忽略,16位的余数就是CRC的值,在计算CRC-16值时,全部算术运算用modulo two或者异或(X0R)算法。
按照下列步骤产生CRC-16的校验和:
省略发生器最有意义的位,并且把位的顺序颠倒过来。形成一个新的多项式,结果是1010000000000001或者16进制的A001。
将全部1或者16进制FFFF装入16位寄存器。
用16位寄存器中低阶字节对第一个数据字节进行XOR运算,把结果存入16位寄存器。
把16位寄存器向右移一位。如果溢出位为1,则转向第5步骤,否则转向第6步骤。
用新的发生器多项式对16位寄存器执行MOR运算,并且把结果存入16步骤。
重复步骤4,直到移位8次为止。
用16位寄存器的第阶字节对下一个数据字节进行XOR运算,将结果存入16位寄存器。
重复步骤4-7,直到小包的所有字节都已经用16位寄存器执行了XOR运算为止。
16位寄存器的内容就是CRC-16
下面的例子是对16进制的6390BE这个字节进行CRC计算。
步骤
字节
动作
寄存器
位#
移位
2
初值
1111 1111 1111 1111
1
装入第一字节
0000 0000 0110 0011
3
异或
1111 1111 0110 1100
4
右移一位
0111 1111 1100 1110
1
0
4
错误!链接无效。
0011 1111 1110 0111
2
0
4
错误!链接无效。
0001 1111 1111 0011
3
1
多项式
1010 0000 0000 0011
5
异或
1011 1111 1111 0010
4
右移一位
0101 1111 1111 1000
4
0
4
错误!链接无效。
0010 1111 1111 1100
5
1
错误!链接无效。
1010 0000 0000 0001
5
异或
1000 1111 1111 1101
4
错误!链接无效。
0100 0111 1111 1110
6
1
多项式
1010 0000 0000 0001
5
错误!链接无效。
1110 0011 1111 1111
CDP-M22通信协议 来自淘豆网m.daumloan.com转载请标明出处.