1、传感器数据采集串行通信协议版本 V6.0本协议采用Modbus RTU 通讯规约,可方便地进行读取基本变量、系统状态和修改系统时间操作。1物理接口1)串行通信口 RS-485。2)信息传输方式为:异步,1 位起始位,8 位数据位, 1 位停止位。3)数据传输速率(波特率bps):96004)字节间隔4ms。5)当传送2字节数据时,高8位在前,低8位在后;传送CRC16 校验码时,也是高8位在前,低8位在后。6)传输的数据采用二进制码。7)在系统中的地址为:1254 可设定,广播命令地址为0, 255保留。8) 为了提高总线利用率,本协议规定,如果主机在发送完一帧非广播命令后,200ms 内没有
2、收完从机的响应信息,则可认为从机响应超时。2软件协议:利用通讯命令,可以进行读取每个模块的类型、量程、单位、报警点设定状态以及实时数据和其它报警情况等系统参数。协议采用16 BIT CRC 校验方式,协议规定:CRC 校验码是从Address 到Data 区最后1 byte 数据的所有数据所产生的CRC 校验码,串行传送时高8 位在前,低8 位在后。3功能码03,读取点和返回值:利用该通讯命令,可以进行读取点(“保持寄存器”) 或返回值(“输入寄存器” )。保持和输入寄存器是16 位整型(2 字节),并且返回值高位在前。协议规定一次能读取单或多个寄存器地址(n 个整型数值,2n BYTE)。功
3、能码03 被用作读取点和返回值。 从机响应的命令格式是从机地址、功能码、字节数、数据区及CRC 码。数据区的数据都是以二个字节为一个读取单位,且如果两字节表示一个整型时,高位在前,低位在后。CRC16 校验码高8 位在前,低8 位在后。 信息帧格式举例:从机地址为01,起始地址0002 的2 个寄存器地址。此例中寄存器数据地址为:地址 数据01 0804H02 1103H主机发送 字节数 举例从机地址 1 01 发送至从机功能码 1 03 读取寄存器起始地址 2 00 起始地址为 000201读取寄存器点数 2 00 读取2 个寄存器(共4 字节)02CRC 码 2 High 由主机计算得到的
4、CRC16 码Low从机响应 字节数 举例从机地址 1 01 来自从机功能码 1 03 读取寄存器读取字节数 1 04 字节总数寄存器数据 4 08H 地址为01 内的内容04H 地址为01 内的内容11H 地址为02 内的内容03H 地址为02 内的内容CRC 码 2 High 由从机计算得到的CRC 码Low表1 功能码03 读取的数据及地址Address地址 Data Type数据类型 Explain说明High 00 Data High00 low 01 Data Low实时数据,采用正二进制编码格式bit15-符号,0-正,1- 负High 02 State1危险源状 态1 Bit0
5、3-报警bit0-1级, bit 1-2级, bit 2-3级, bit 3-4级,Bit4-报警类型1- 上报,0- 下报Bit5-故障0-正常,1- 故障,Bit6-设备状态0- 检测,1- 预热Bit7-有效性0- 有效, 1- 无效01low 03 State2危险源状 态2 备用High 04 Type类型 见附录102low 05 Unit单位 见附录2High 06 Decimal小数位数 小数位数(03)03low 07 Filter滤波系数 150High 08 Alarm Mode 报警模式1-上报 ,0-下报Bit03对应Alarm1404low 09 Alarm Val
6、id 报警有效0-无效 ,1-有效Bit03对应Alarm14High 10 F.S UP High05 low 11 F.S UP low量程上限,采用正二进制编码格式bit15-符号,0-正,1- 负High 12 F.S DOWN High06 low 13 F.S DOWN low量程下限,采用正二进制编码格式bit15-符号,0-正,1- 负High 14 Alarm1 point High07low 15 Alarm1 point Low第1报警点,采用正二进制编码格式,bit15-符号,0-正,1- 负High 16 Alarm2 point High08low 17 Alarm
7、2 point Low第2报警点,采用正二进制编码格式,bit15-符号,0-正,1- 负High 18 Alarm3 point High09low 19 Alarm3 point Low第3报警点,采用正二进制编码格式,bit15-符号,0-正,1- 负High 20 Alarm4 point High10low 21 Alarm4 point Low第4报警点,采用正二进制编码格式,bit15-符号,0-正,1- 负High 22 DeadZone High11low 23 DeadZone low死区,采用正二进制编码格式,bit15-符号,0-正,1- 负12 High 24 Bac
8、klash High 回差,采用正二进制编码格式,low 25 Backlash low bit15-符号,0-正,1- 负High 26 Zero Adj High13low 27 Zero Adj Low零点校正值, 采用正二进制编码格式,bit15-符号,0-正,1- 负High 28 Slope Adj High14low 29 Slope Adj Low满度校正值,默认1000,表示1.000注:Alarm1=Alarm2=Alarm3=Alarm4注意:1、上位机所发命令中“读取寄存器点数”是用一个整型(2 字节)数来通知从机,上位机要读取的寄存器数,在从机中每个寄存器由两个字节组
9、成。而从机发往上位机的“ 读取字 节数” 占响应报文一个字 节,表示响应报文的数据区中的数据字节数,在数值上, “读取字节数”=2“ 读取寄存器数” 。2、零点校正值和满度校正值对气体探测器无效3、滤波系数对气体探测器有效值为20504、零点自校正对气体探测器最大校正量为量程的5%4功能码06,设置单个寄存器:利用该通讯命令, 进行单个寄存器的设置信息帧格式举例:从机地址为01,寄存器地址0002,设置数据:0001H(Type=0,Unit=1) 。主机发送 字节数 举例从机地址 1 01 发送至从机功能码 1 06 设置单个寄存器寄存器地址 2 00 起始地址为 000202设置数据 2
10、00 Type类型01 Unit单位CRC 码 2 High 由主机计算得到的CRC16 码Low从机响应 字节数 举例从机地址 1 01 发送至从机功能码 1 06 设置单个寄存器寄存器地址 2 00 起始地址为 000202设置数据 2 00 Type类型01 Unit单位CRC 码 2 High 由主机计算得到的CRC16 码Low注意:如果从机返回数据与发送设置数据不一致,表示该寄存器数据不允许设置。附件:CRC16 校验算法const unsigned char auchCRCHi=0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0
11、x80,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,0
12、x81,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,0
13、x80,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,0
14、x80,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,0
15、x80,0x41,0x00,0xC1,0x81,0x40;/* Table of CRC values for low-order byte */const unsigned char auchCRCLo=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,0x
16、1A,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,0x
17、29,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,0x61,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,0x
18、68,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,0x
19、5B,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;unsigned int CRC16(unsigned char *puchMsg,unsigned char usDataLen)unsigned char uchCRCHi=0xFF ; /* 初始化高字节*/unsigned c
20、har uchCRCLo=0xFF ; /* 初始化低字节*/unsigned char uIndex ;unsigned int i;while (usDataLen-)uIndex=uchCRCHi*puchMsg+;uchCRCHi=uchCRCLoauchCRCHiuIndex;uchCRCLo=auchCRCLouIndex;i=uchCRCHi;i=8;i|=uchCRCLo;return (i);_附录 1 探测器类型类型号 类型名称 类型号 类型名称0 可燃气体 39 四氢呋喃1 一氧化碳 CO 40 醋酸乙酯2 硫化氢 H2S 41 氯代甲苯3 氨气 NH3 42 环氧乙烷4
21、 氯气 Cl2 43 臭氧5 氧气 O2 44 一氧化氮 NO6 甲烷 CH4 45 二氧化氮 NO27 氢气 H2 46 二氧化硫 SO28 乙烷 C2H6 47 二氧化氯 CLO29 乙烯 C2H4 48 二氧化碳 CO210 乙炔 C2H2 49 氯化氢 HCL11 丙烷 C3H8 50 氰化氢 HCN12 丙烯 C3H6 51 温度13 丁烷 C4H10 52 湿度14 丁烯 C4H8 53 压力15 丁二烯 C4H6 54 体积16 轻油 55 长度17 重油 56 质量18 汽油 57 重量19 柴油 58 力20 煤油 59 电压21 甲醇 CH3OH 60 电流22 乙醇 C2
22、H5OH 61 密度23 异丙醇(CH3)2CHOH 62 流量24 甲醛 HCHO 63 溴气 Br25 丁醛 C3H7CHO 64 红外26 丙酮 C3H6O 65 紫外27 丁酮 CH3COC2H5 66 手报28 苯29 甲苯30 二甲苯31 苯乙烯32 苯酚33 乙醚34 二甲醚35 石油醚36 二甲胺37 三甲胺38 甲酰胺附录 2 探测器单位单位号 单位名称 单位号 单位名称0 无 19 A1 %LEL 20 mbar2 ppm 21 bar3 %Vol 22 mmHg4 23 r/m5 %RH6 %7 Pa8 kPa9 MPa10 t/h11 m3/h12 l/m13 m14 mm15 kg16 t17 个18 V