资源描述:
《MODBUS串口通讯协议》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、MODBUS串口通讯协议1、协议概述•数据格式:1位起始位8位数据位,最小的有效位先发送1位停止位偶校验一一》温湿度、直流屏只能是无校验,•波特率:4800BPS、9600BPS、19200BPS、38400BPS可供选择•通讯地址:01〜247,默认地址为01》地址可设•Modbus协议支持RS232、RS485传输方式,默认为RS232传输形式,若用RS485传输方式,需要加232<->485转换器。•数据包组织说明:(1).木协议中涉及到的CRC校验皆是对木帧中所有数据的校验,且校验位在传输时低位在前,高位在后。(2).木协议屮的模拟量均
2、采用%M表示,数值用补码表示,所以必皿的取值范围:一32768〜+32767,模拟量在传输时高位在前,低位在后。(3).电压电流的放大系数为10。即将实际的电压电流量乘以10取整就是数据帧中的数据。2、CRC校验CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息屮连续的8位字节各当前寄存器屮的值进行处理。仅每个字符屮的8Bit数据对CRC有效,起始位和停止位以及奇偶校验
3、位均无效。CRC产生过程中,每个8位字符都单独和寄存器内容相或(0R),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出來检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节乂单独和寄存器的当前值相或。最终寄存器屮的值,是消息屮所有的字节都执行Z后的CRC值。CRC添加到消息中吋,低字节先加入,然后高字节。CRC简单函数如下:unsignodshortCRC16(puchMsg,usDataLcn)unsignedcharpuchMsg;/要进行C
4、RC校验的消息/unsignedshortusDataLen;/消息中字节数/unsignedcharuchCRCHi=OxFF;/高CRC字节初始化/unsignedcharuchCRCLo=OxFF;/低CRC字节初始化/unsigneduIndex;/CRC循环中的索弓I/whi1e(usDataken—)/传输消息缓冲区/{ulndcx=uchCRCHi'puchMsgg++;/计算CRC/uchCRCHi=uchCRCLo"auchCRCHi[uIndex};uchCRCLo=auchCRCLotulndex];}return(uch
5、CRCHi<<8uchCRCLo);)/CRC高位字节值表/staticunsignedcharauchCRCHi[]={0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81
6、,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,0x01,0x81,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl
7、,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01
8、,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41