首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

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

工程监测无线中继采集仪

MODBUS 协议

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

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

例:读取地址为 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协议

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

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230522A02U5000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券