武汉新普惠科技有限公司自动气象站通信协议新普惠自动气象站通讯协议V20110831一、协议特性1、支持XPH通讯、标准MODBUS通讯两种格式。2、支持RS-232、RS-485通讯总线。3、支持19200波特率,特殊版本可达38400.4、支持最大设备数254个。5、数据帧最小间隔100ms以上。6、使用CRC16数据帧错误检查,多项式码0xA001。二、协议说明新普惠气象站支持两种格式的通讯协议工作,任一时刻只能使用一种通讯协议进行通讯。下面分别对两种通讯协议进行详细说明。1、XPH通讯协议通讯参数:波特率9600数据位8位无校验位XPH通讯协议是效仿标准MODBUS通讯的一个自定义版本,其并不兼容MODBUS通讯协议。其特点是召唤式工作,气象站仅作为服务器,使用上位机客户端进行通讯。气象站收到正确数据帧后,就回复相应的内容,无效数据帧则不回复任何内容。不回复是便于多台气象站进行485总线组网,避免数据通讯冲突。1)XPH通用帧格式序号内容字节数说明备注1地址域1气象站通讯地址唯一2读写域1读(0x03)/写(0x10)操作码2选13命令域2命令码,前1字节必须为000xx4数据长度域2数据域长度,不包括本域发送时可无5数据域N数据6校验域2CRC16检验码低前高后武汉新普惠科技有限公司自动气象站通信协议2)XPH协议通讯码序号命令码含义类型备注10x00实时环境参数数据通用类型仅读20x20系统参数配置通用类型读写30x37读历史数据通用类型仅读40x38历史数据重读通用类型仅读50x61配置登录GPRS服务器密码需支持读写60x80复位气象站通用类型仅写3)XPH通讯协议详细说明对于每条通讯命令码,进行收发过程的详细描述,假定气象站的地址为0x01。返回的通道数据都以有符号16进制数表示,如通道1的数据(包括实时数和历史数据)为0x120x34,表示为十进制数即4660(0x1234)。即数据字节的高位在前,低位在后,此顺序不能错,否则数据值将错误。另外,对不不同的传感器类型,某些通道数据值需要表示N位小数,此时,该通道16位有符号数扩大10的N次方倍。如通道1表示风速,带一位小数,其数据为0x000x7B(十进制123),则实际风速为12.3m/s,即读取的数据扩大了10倍,其他小数以此类推。传感器精度参数详见说明书。红色字:命令码绿色字:CRC16校验码(低字节在前,高字节在后)蓝色字:数据(高字节在前,低字节在后,0x7FFF表示无效数据)紫色字:数据长度(高字节在前,低字节在后)武汉新普惠科技有限公司自动气象站通信协议A、读取实时环境参数数据客户端发送:01030000F1D8气象站返回:(38字节)010300207FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF693F返回数据格式说明:序号含义偏移字节数说明备注1地址域01地址(0x01)0x012操作码11仅读(0x03)0x033数据长度域220x000x20高前低后4数据域42通道10x7FFF(无效/未接)62通道20x7FFF(无效/未接)82通道30x7FFF(无效/未接)102通道40x7FFF(无效/未接)122通道50x7FFF(无效/未接)142通道60x7FFF(无效/未接)162通道70x7FFF(无效/未接)182通道80x7FFF(无效/未接)202通道90x7FFF(无效/未接)222通道100x7FFF(无效/未接)242通道110x7FFF(无效/未接)262通道120x7FFF(无效/未接)282通道130x7FFF(无效/未接)302通道140x7FFF(无效/未接)322通道150x7FFF(无效/未接)342通道160x7FFF(无效/未接)5校验域362低前高后0x690x3F16通道对应的配置出厂时定义,根据需要而定。武汉新普惠科技有限公司自动气象站通信协议B、读取系统参数配置客户端发送:(6个字节)01030020F000气象站返回:(14字节)010300080B081F0B000A010198E0返回数据说明:序号含义偏移字节数说明备注1地址域01地址(0x01)0x012操作码11读(0x03)0x033数据长度域220x000x08高前低后4数据域31年0B(2011年)41月08(8月)51日1F(31日)61时0B(12点/24小时制)71分00(00分钟)81存储间隔10(分钟)91语言类型0/11-英语/0-中文101设备地址01(0x01-0xFE)5校验域112低前高后0x980xE0存储间隔:即历史数据保存的间隔,单位为:分钟设备地址:设置范围0-254,0为广播地址,一般不要随便使用,主要用于组网或多播;1-254为正常设备地址,同一总线上必须保证唯一;若无返回数据,则说明读取不成功。武汉新普惠科技有限公司自动气象站通信协议C、写入系统参数配置客户端发送:(17字节)011000200004080B081F0B0010000059DD气象站返回:(8个字节)011000200004C000发送数据说明:序号含义偏移字节数说明备注1地址域01地址(0x01)0x012操作码11写(0x10)0x103命令码220x000x20高前低后4寄存器数量420x000x04高前低后5数据长度610x088个数据字节6数据域710B0B(2011年)810808(8月)911F1F(31日)1010B0B(12点/24小时制)1110000(00分钟)12110存储间隔16(分钟)131001-英语/0-中文14100保留/地址5校验域152低前高后0x590xDD寄存器数量:该域无意义,保留该域为了向前兼容,请尽量使用说明的数值;数据域最后一个字节,目前为设备地址设置,之前的通讯版本选择为保留,故在20110831之后都要小心设置。最好是先读取系统参数,然后使用读取的设备地址填充该字节。若无返回数据,则说明写入不成功,否则写入成功。武汉新普惠科技有限公司自动气象站通信协议D、读取历史数据客户端发送:(6个字节)01030037B00E气象站返回:(1044个字节)0103040E001CD0~DNCRC16返回数据说明:序号含义偏移字节数说明备注1地址域01地址(0x01)0x012操作码11读(0x03)0x033数据长度220x040x0E高前低后4有效数据帧数420x000x1C高前低后5数据域61036历史数据包分成N帧6校验域10422低前高后CRC16低前高后数据长度域:为“有效数据帧数”和“数据域”两个域字节总和。数据域:固定大小为1036个字节,每帧37字节,故最大有效帧1036/37=28帧。有效数据帧数:由于历史数据包是等长的,该域指示数据域中包含的有效帧数,有效帧从数据域的0位置开始,顺序往后排列。最大有效帧为28帧。历史数据帧说明:(37字节)序号偏移字节数说明101年(2000年以后的偏移)211月321日431时(24小时制)541分钟16通道数据值52通道172通道292通道3112通道4132通道5武汉新普惠科技有限公司自动气象站通信协议152通道6172通道7192通道8212通道9232通道10252通道11272通道12292通道13312通道14332通道15352通道16E、重读历史数据客户端发送:01030038F00A气象站返回:返回数据与“[D]读取历史数据”返回数据格式相同。说明:由于远程数据读取时,且历史数据包比较大,可能会发生数据错误。就可能造成读取的历史数据在传输过程中出错,从而导致某些上位机接口程序误判读取历史数据错误。而气象站一旦读取了历史数据后不能重读的话,就会造成某包历史数据丢失的现象。重读历史数据命令用于重复读取上一次读取的历史数据,从而解决错误丢失历史问题。武汉新普惠科技有限公司自动气象站通信协议F、读取登录密码(该命令需额外支持,默认不支持)客户端发送:(8个字节)01030061000415d7气象站返回:(12个字节)010300610004YYYYYYYYCRC16返回数据说明:序号含义偏移字节数说明备注1地址域01地址(0x01)0x012操作码11读(0x03)0x033命令码220x000x61高前低后4数据长度域420x000x04高前低后5数据域644位密码数据从左到右6校验域102低前高后CRC16低前高后数据域:4位ASCII码表示的密码,每位的范围0-9,即0x30-0x39。数据域0-3字节对应界面输入的左-右顺序。G、写入登录密码(该命令需额外支持,默认不支持)客户端发送:(12字节)011000610004YYYYYYYYCRC16气象站返回:(8个字节)011000610004CRC16写入数据说明:数据域:4位ASCII码表示的密码,每位的范围0-9,即0x30-0x39。数据域0-3字节对应界面输入的左-右顺序。武汉新普惠科技有限公司自动气象站通信协议H、复位气象站客户端发送:(4字节)01800180气象站返回:无返回武汉新普惠科技有限公司自动气象站通信协议2、标准MODBUS通讯协议通讯参数:波特率9600数据位8位无校验位气象站标准MODBUS通讯协议使用RTU模式。消息帧发送至少要以3.5个字符时间的停顿间隔开始,即在传输完每帧的最后一个字节,至少需要3.5个字符时间的停顿来标定消息帧的结束。下一个新的消息帧可在此停顿后开始,整个消息帧必须作为一连续的流传输。气象站标准MODBUS通讯协议仅支持读功能,不支持配置气象站寄存器的功能,即不能写入任何数据。其特点有:①气象站共有16个通道寄存器,对应16个通道的传感器测量输出值;②寄存器最小编号固定于0,最大编号固定于15,不可更改;③支持一次读取单个、多个(寄存器编号必须连续)寄存器;④每一通道数据占2个字节,高字节在前,低字节在后,16位有符号整形值;⑤数据小数位定义,同XPH协议的小数定义,即N位小数,数据值扩大10的N次方倍。武汉新普惠科技有限公司自动气象站通信协议气象站标准MODBUS通讯协议帧外部设备发送帧:如0103000000104406序号含义偏移字节数说明1设备地址01设备唯一标识2操作码(读)11固定值0x033寄存器起始编号22读取的第一个寄存器编号4寄存器结束编号42读取的最后个寄存器编号-15CRC16检验62低前高后设备地址:假定为0x01,有效范围0-254,0为广播地址。操作码:固定为0x03,即读取操作,不支持其他操作。起始编号:范围0-15,表示要读取的第一个寄存器编号。结束编号:范围1-16,表示读取最后一个寄存器编号+1,读取的数据不包括本编号的寄存器内容,仅作为结束标记,其值必须保证大于等于“起始编号”。气象站返回数据帧:如0103207FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF8C45序号含义偏移字节数说明1设备地址01设备唯一标识2操作码(读)11固定值0x033数据长度21不含本字节4数据域3N最多32个字节5CRC16检验3+N2低前高后数据长度:不含本身,仅表示数据域的字节数量。最大32,最小0。根据读取指令序列的“起始编号”和“结束编号”来确定。数据长度=(结束编号–起始编号)*2武汉新普惠科技有限公司自动气象站通信协议三、附录1、CRC16校验码的计算(1).预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;(2).把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器;(3).把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位;(4).如果移出位为0:重复第3步(再次右移一位);如果移出位为1:CRC寄存器与多项式A001(1010000000000001)进行异或;(5).重复步骤3和4,直到右