工程监测无线中继采集仪的参数读写MODBUS协议
工程监测无线中继采集仪的参数读写MODBUS协议
无线中继采集仪支持基于地址的 MODBUS 协议、自定义的 AAB/B 协议以及字符串指令集协议,使用这些通讯协议可对寄存器(参数)进行访问。
MODBUS 协议
无线中继采集仪支持 MODBUS 的 03、 04、 06 指令码。(1) 03(0x03) /03(0x04) 指令码: 读取多个连续的寄存器数据,指令格式如下
例:读取地址为 129 的无线中继采集仪寄存器值,寄存器开始地址为 0,连续读取 10 个寄存器主机发送指令: 0x81 0x03 0x00 0x00 0x00 0x0A 0xDA 0x0D
从机返回应答: 81 03 14 00 81 00 01 00 02 00 01 00 01 00 0A 00 0A 00 01 09 60 00 07 A1 EF(下划线为读取到的 10 个寄存器值)读取多个连续寄存器时, 单次读取不要超过 32 个寄存器, 不要试图读取不存在的寄存器。
(2) 06(0x06) 指令码: 修改单个寄存器的值, 指令格式如下
例:将地址为 129 的无线中继采集仪中的寄存器 8 的值修改为 100 主机发送指令: 0x81 0x06 0x00 0x08 0x09 0x60 0x11 0xB0 从机返回应答: 0x81 0x06 0x00 0x08 0x09 0x60 0x11 0xB0
(3)校验码算法
CRC16-MODBUS 算法:
unsigned int crc16(unsigned char *dat, unsigned int len)
{
unsigned int crc=0xffff;
unsigned char i;
while(len!=0)
{
crc^=*dat;
for(i=0;i<8;i++)
{
if((crc&0x0001)==0)
crc=crc>>1;
else
{
crc=crc>>1;
crc^=0xa001;
}
}
len-=1;
dat++;
}
return crc;
}