新闻  |   论坛  |   博客  |   在线研讨会
工程监测无线中继采集仪的参数读写MODBUS协议
河北稳控科技 | 2023-05-22 13:02:55    阅读:89   发布文章

工程监测无线中继采集仪的参数读写MODBUS协议

511.png

无线中继采集仪支持基于地址的 MODBUS 协议、自定义的 AAB/B 协议以及字符串指令集协议,使用这些通讯协议可对寄存器(参数)进行访问。


MODBUS 协议

无线中继采集仪支持 MODBUS 的 03、 04、 06 指令码。(1) 03(0x03) /03(0x04) 指令码: 读取多个连续的寄存器数据,指令格式如下

MODBUS 协议.png


例:读取地址为 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) 指令码: 修改单个寄存器的值, 指令格式如下

MODBUS 协议2.png


例:将地址为 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;

}





*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客