Hunt--北京衡安特测控技术有限责任公司—Hunt测控仪表与上位机的Modbus(RTU)通讯协议1.上位机命令格式:地址功能代码寄存器地址寄存器数量CRC低字节CRC高字节a.地址:01H~F7H(1字节)b.功能代码:03H(1字节)c.寄存器地址:如3表所示(2字节,高地址在前)d.寄存器数量:0001或0002(2字节,高地址在前)2.下位机命令格式:地址功能代码数据字节数数据1…数据nCRC低字节CRC高字节a.地址:01H~F7H(1字节)b.功能代码:03H(1字节)c.数据字节数:0H~0FFH(1字节)3.上位机寄存器地址对应的仪表返回参数(表中所有数值均为16进制):寄存器地址寄存器数量功能(从站返回数据描述)下位机返回的数据(数据内容为各数据类型的机内编码)长度数据结构00000002瞬时流量4浮点数,单位:t/h00020002累积流量(高位)4浮点数(累积量高位),单位:参考表下说明00040002累积流量(低位)4浮点数(累积量低位),单位:参考表下说明00060002瞬时热量4浮点数,单位00080002累积累计热量(高位)4浮点数(累积量高位),单位:参考表下说明000A0002累积累计热量(低位)4浮点数(累积量低位),单位:参考表下说明000C0002供水温度4浮点数,单位:℃000E0002回水温度4浮点数,单位:℃00100002压力4浮点数,单位:KPa00120002差压4浮点数,单位:Pa00140002密度4浮点数,单位:Kg/m300160002流速4浮点数,单位:m/s00180002供水热焓4浮点数,单位:MJ/kg001A0002回水热焓4浮点数,单位:MJ/kg001C0002累积运行时间4无符号长整形数,单位:秒001E0002累积掉电时间4无符号长整形数,单位:秒“累积量“参数说明:累积量(包括累积流量和累积热量)和输出参数(流量满量程值range)的对应关系如下所示:流量范围对应range=100时:高位格式99999低位格式9999.999(即实际累积流量=高位得到的数*104+低位);流量范围对应100range=10时:高位格式99999低位格式999.999(即实际累积流量=高位得到的数*103+低位/10);流量范围对应10range=1高位格式99999低位格式99.999(即实际累积流量=高位得到的数*102+低位/100);流量范围对应range1高位99999低位9.999(即实际累积流量=高位得到的数*101+低位/1000);Hunt--北京衡安特测控技术有限责任公司—Hunt4.串口设置:波特率可选:1200,2400,4800,9600数据帧格式:1个起始位“0”,8位数据位(低位在先),1个停止位“1”,奇偶校验:偶校验5.数据结构仪表向上位机返回的数据类型共有二种:浮点数(float),长整形(long)。现以C语言说明各数据类型的定义及传送顺序。a.浮点数有效值范围:-999999.0~999999.0定义:Union{floatf;unsignedcharc[4];}u1;发送顺序:u1.c[0],u1.c[1],u1.c[2],u1.c[3]b.长整形数有效值范围:0~999999999定义:Union{longi;unsignedcharc[4];}u3;发送顺序:u3.c[3],u3.c[2],u3.c[1],u3.c[0](注意:先发送LSB)注:浮点数的字节顺序在组态王软件中swap寄存器选择“0”,长整形数为“2”.6.CRC校验使用RTU模式,消息包括了一基于CRC方法的错误检测域。CRC域检测了整个消息的内容。CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。CRC添加到消息中时,低字节先加入,然后高字节。CRC简单函数如下:unsignedshortCRC16(puchMsg,usDataLen)unsignedchar*puchMsg;/*要进行CRC校验的消息*/unsignedshortusDataLen;/*消息中字节数*/{unsignedcharuchCRCHi=0xFF;/*高CRC字节初始化*/unsignedcharuchCRCLo=0xFF;/*低CRC字节初始化*/unsigneduIndex;/*CRC循环中的索引*/while(usDataLen--)/*传输消息缓冲区*/{uIndex=uchCRCHi^*puchMsgg++;/*计算CRC*/uchCRCHi=uchCRCLo^auchCRCHi[uIndex};uchCRCLo=auchCRCLo[uIndex];}return(uchCRCHi8|uchCRCLo);Hunt--北京衡安特测控技术有限责任公司—Hunt}/*CRC高位字节值表*/staticunsignedcharauchCRCHi[]={0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40};/*CRC低位字节值表*/staticcharauchCRCLo[]={0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06,0x07,0xC7,0x05,0xC5,0xC4,0x04,0xCC,0x0C,0x0D,0xCD,0x0F,0xCF,0xCE,0x0E,0x0A,0xCA,0xCB,0x0B,0xC9,0x09,0x08,0xC8,0xD8,0x18,0x19,0xD9,0x1B,0xDB,0xDA,0x1A,0x1E,0xDE,0xDF,0x1F,0xDD,0x1D,0x1C,0xDC,0x14,0xD4,0xD5,0x15,0xD7,0x17,0x16,0xD6,0xD2,0x12,0x13,0xD3,0x11,0xD1,0xD0,0x10,0xF0,0x30,0x31,0xF1,0x33,0xF3,0xF2,0x32,0x36,0xF6,0xF7,0x37,0xF5,0x35,0x34,0xF4,0x3C,0xFC,0xFD,0x3D,0xFF,0x3F,0x3E,0xFE,0xFA,0x3A,0x3B,0xFB,0x39,0xF9,0xF8,0x38,0x28,0xE8,0xE9,0x29,0xEB,0x2B,0x2A,0xEA,0xEE,0x2E,0x2F,0xEF,0x2D,0xED,0xEC,0x2C,0xE4,0x24,0x25,0xE5,0x27,0xE7,0xE6,0x26,0x22,0xE2,0xE3,0x23,0xE1,0x21,0x20,0xE0,0xA0,0x60,Hunt--北京衡安特测控技术有限责任公司—Hunt0x61,0xA1,0x63,0xA3,0xA2,0x62,0x66,0xA6,0xA7,0x67,0xA5,0x65,0x64,0xA4,0x6C,0xAC,0xAD,0x6D,0xAF,0x6F,0x6E,0xAE,0xAA,0x6A,0x6B,0xAB,0x69,0xA9,0xA8,0x68,0x78,0xB8,0xB9,0x79,0xBB,0x7B,0x7A,0xBA,0xBE,0x7E,0x7F,0xBF,0x7D,0xBD,0xBC,0x7C,0xB4,0x74,0x75,0xB5,0x77,0xB7,0xB6,0x76,0x72,0xB2,0xB3,0x73,0xB1,0x71,0x70,0xB0,0x50,0x90,0x91,0x51,0x93,0x53,0x52,0x92,0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54,0x9C,0x5C,0x5D,0x9D,0x5F,0x9F,0x9E,0x5E,0x5A,0x9A,0x9B,0x5B,0x99,0x59,0x58,0x98,0x88,0x48,0x49,0x89,0x4B,0x8B,0x8A,0x4A,0x4E,0x8E,0x8F,0x4F,0x8D,0x4D,0x4C,0x8C,0x44,0x84,0x85,0x45,0x87,0x47,0x46,0x86,0x82,0x42,0x43,0x83,0x41,0x81,0x80,0x40};北京衡安