文档详情

巡检仪RS485通讯协议一、波特率9600二、数据格式1个开始位、8.doc

发布:2017-04-17约2.12千字共3页下载文档
文本预览下载声明
巡检仪RS485通讯协议 波特率: 9600 数据格式:1个开始位、8个数据位、2个停止位、无奇偶校验位 通讯协议: Modbus-RTU协议 消息帧 地址域功能域数据域CRC校验1个字节1个字节n个字节2个字节 消息响应时间 消息发送至少要以3.5个字符时间的停顿间隔开始,在最后一个字符结束后,至少3.5个字符时间的停顿才表示消息结束; Modbus-RTU协议详解 设备地址 单个地址范围1~247; 地址0是广播地址,广播地址只写不读; 功能代码 03H:连续读取寄存器; 设备地址功能代码寄存器地址读取数据长度CRC校验1个字节1个字节2个字节2个字节2个字节读取指令 串 读取回复字符串 设备地址功能代码回复数据字节数回复数据内容CRC校验1个字节1个字节1个字节n个字节2???字节 06H:连续写入寄存器; 写入指令 设备地址功能代码寄存器地址写入数据内容CRC校验1个字节1个字节2个字节n个字节2个字节 写入回复字符串 设备地址功能代码寄存器地址写入数据内容CRC校验1个字节1个字节2个字节n个字节2个字节 寄存器地址 读取、写入寄存器的开始地址; 读取数据长度 连续读取寄存器的个数(每个寄存器包含2个字节数据); 数据内容 读取、写入的数据(字节) CRC校验(CRCH CRCL) 加载一个16位寄存器,所有位都为1(即FFFFH),称为CRC寄存器; 数据的一个字节(从第一个字节开始,依序处理)与CRC寄存器的低位进行异或运算,并将运算结果放回CRC寄存器中; 将CRC寄存器位右移,并将最高位填0,检查移出的最低位; 如果移出的最低位为0则重复步骤3),否则将CRC寄存器与A001H进行异或运算,并将运算结果放回CRC寄存器; 重复步骤3)、4),直到8位移完; 重复步骤2)、3)、4)、5),直到数据的所有字节都计算完毕,即可得出CRC校验码。 数据寄存器地址与内容 地址0000H0001H0002H0003H内容版本号测量值小数位数报警状态说明2字节2字节 / 通道1字节 / 通道1字节 / 8报警值属性只读只读只读只读 CRC校验参考程序 uint crcjy_(uchar *str_,uchar crc_cd) { uchar idata crc_gs; uchar idata crc_w; uint idata crc_sj; crc_sj=0xffff; for(crc_gs=0;crc_gscrc_cd;crc_gs++) { crc_sj=((crc_sj^str_[crc_gs])0x00ff)+(crc_sj0xff00); for(crc_w=0;crc_w8;crc_w++) { if((crc_sj0x0001)==0x0000) { crc_sj=1; } else { crc_sj=1; crc_sj^=0xa001; } } } crc_sj=((crc_sj0x00ff)8)+((crc_sj0xff00)8); return(crc_sj); } 举例 读取地址为01的仪表的版本号 读取指令:01 03 00 00 00 01 CRCH(84) CRCL(0A) 回复字符串:01 03 02 版本号H 版本号L CRCH CRCL 读取地址为01的仪表的1-2通道测量值 读取指令:01 03 00 01 00 02 CRCH(95) CRCL(CB) 回复字符串:01 03 04 第一通道测量值H 第一通道测量值L 第二通道测量值H 第二通道测量值L CRCH CRCL 读取地址为01的仪表的1-2通道测量值对应的小数位数 读取指令:01 03 00 02 00 01 CRCH(25) CRCL(CA) 回复字符串:01 03 02 第一通道测量值小数位数 第二通道测量值小数位数 CRCH CRCL 读地址为01的仪表的报警状态 读取指令:01 03 00 03 00 02 CRCH(34) CRCL(0B) 回复字符串:01 03 04 1~8报警值对应的报警状态 9~16报警值对应的报警状态 17~24报警值对应的报警状态 25~32报警值对应的报警状态CRCH CRCL
显示全部
相似文档