国家地表水自动监测系统通信协议技术要求.docx
国家地表水自动监测系统通信协议技术要求1 .适用范围本技术要求适用于国家地表水水质自动监测站数据采集端与总站中心服务器之间的数据传输,规定了传输的过程及数据命令的格式,给出了代码定义,本技术要求允许扩展,但扩展内容时不得与本技术要求中所使用或保留的控制命令相冲突。2 .技术要求引用文件本技术要求内容引用了下列文件中的条款。凡是不注日期的引用文件,其有效版本适用于本技术要求。HJ212-2017污染物在线监控(监测)系统数据传输标准GBfT19582-2008基于Modbus协议的工业自动化网络规范HJ525-2009水污染物名称代码3 .术语和定义下列术语和定义适用于本技术要求。3.1 地表水水质自动监测站指完成地表水水质自动监测的现场部分,一般由站房、采配水、控制、检测、数据传输等全部或者数个单元组成,简称水站。3.2 地表水水质自动监测数据平台指对水站进行远程监控、数据传输统计与应用的系统,简称数据平台。3.3 地表水水质自动监测系统由水站和数据平台组成的自动监测系统。3.4 上位机是安装在各级环保部门、通过传输网络与数采仪连接并对其发出查询和控制等指令的数据接收和数据处理系统,包括计算机及计算机软件等,本技术要求简称上位机。3.5 在线监测仪器是安装在地表水自动测站现场,用于监测地表水环境质量并完成与上位机通讯传输的设备,包括水质分析仪、流量(速)计、数据采集传输仪等,本技术要求简称监测仪表。3.6 现场机安装于水质自动监测站点的监测仪表和数采仪统称为现场机。3.7 数据采集传输仪是采集各种类型监控仪器仪表的数据、完成数据存储及与上位机数据传输通讯功能的单片机、工控机、嵌入式计算机、可编程自动化控制器等,本技术要求简称数采仪。3.8 监测周期是指水站定期采样进行所有项目分析的工作模式下,相邻两次采样所间隔的时间。如果水站连续不停监测,监测周期应根据水站所配置的监测项目里最长的分析周期来确定。瞬时监测的项目(如水温、pH、溶解氧、电导率和浊度等)可实时采集数据。流量的周期数据取监测周期内的监测值总和。3.9 周期数据指监测周期内采集的数据。3.10 质控数据指根据实际工作需要在采集周期数据基础上临时手工或自动添加采集的数据。4 .系统结构4.1 结构说明地表水在线监测系统从底层逐级向上可分为现场机、传输网络和上位机(平台)三个层次。上位机通过传输网络与现场机)进行通讯(包括发起、数据交换、应答等)。4.2 地表水在线监测系统构成方式现场有一套或多套监控仪器,监控仪器仪表具有数字输出接口,连接到独立的数据采集传输仪,上位机通过传输网络与现场机进行通讯(包括发起、数据交换、应答等),如图1所不O图1系统构成方式5 .协议层次现场机与上位机之间基于计算机网络传输数据,具体的组网方式不作限制。本技术要求规定的数据传输协议应用于TCP/IP的应用层,即现场机与上位机之间进行通信时,交换消息的内容和规范,在TCP/IP传输层,规定使用TCP协议。6 .协议内容6.1 应答模式完整的命令由请求方发起、响应方应答组成,具体步骤如下:请求方发送请求命令给响应方;响应方接到请求后,执行请求操作并发送执行结果给请求方。请求方在指定定时间内没有接收到执行结果,按执行超时处理。6.2 超时重发机制一个请求命令发出后在规定的时间内未收到回应,视为超时;超时后重发,重发超过规定次数后仍未收到回应视为通讯不可用,通讯结束;超时时间及重试次数可以根据具体的通讯方式和任务性质可自定义。6.3 通讯协议数据结构所有的通讯包都是由ASCII码(汉字除外,采用UTF-8码,8位,1字节)字符组成。通讯协议数据结构如图2所示。图2通讯协议数据结构通讯包结构如表1,所有的通讯包都是由ACSII码字符组成,标点符号为英文半角,且通讯包中不含空格。其中每部分具体组成见表2,其中长度为最大长度,不足位数按实际位数。表1通讯包结构包头数据段长度数据段(见6.5)CRC校验包尾6.4 通讯包通讯包结构组成见表2。表2通讯包组成名称类型长度描述包头字符2固定为#数据段长度十进制整数4数据段的ASCn字符数,如:长255,则写为“0255”数据段(见661)字符0<n<oo变长的数据,建议数据段长度在8192以内CRC校验十六进制整数4数据段的校验结果包尾字符2固定为<CR><LF>(回车,换行)6.5 数据段结构组成数据段结构见表3,其中长度为最大长度,不足位数按实际位数。表3数据段结构组成名称类型长度描述请求编码QN字符20精确到亳秒的时间戳:QN=YYYYMMDDhhmmSSZZZ,用来唯一标识一次命令交互系统编码ST字符5地表水ST=21系统编码,系统编码取值详见系统编码表命令编码CN字符7CN=命令编码,详见命令编码表访问密码PW字符9PW二访问密码站点唯一标识MN字符12MN=地表水用于站点编码唯一标识,编码规则:“A”+6位行政区域代码+“_”+4位序列编号,见附录E应答标志Flag整数3目前只用两个Bit;543210V5V0:标准版本号;Bit:OOOOOO表示标准HJZT212-2005,OOOOoI表示标准HJZT212-2017,OO(X)IO表示本次标准修订版本号A:数据是否应答;Bit:I-应答,0-不应答指令参数CP字符-CP=&&数据区&&,数据区定义见6.6章节6.6 数据区6.6.1 数据区结构定义字段与其值用'='连接;在数据区中,同一项目的不同分类值间用来分隔,不同项目之间用;来分隔。6.6.2 数据区数据类型C4:表示最多4位的字符型字符串,不足4位按实际位数;N5:表示最多5位的数字型字符串,不足5位按实际位数;N14.2:用可变长字符串形式表达的数字型,表示14位整数和2位小数,带小数点,带符号,最大长度为18;YYYY:日期年,如2016表示2016年;MM:日期月,如09表示9月;DD:日期日,如23表示23日;hh:时间小时;mm:时间分钟;SS:时间秒;ZZZ:时间毫秒。6.6.3 数据区字段定义字段名字段名要区分大小写,单词的首个字符为大写,其他部分为小写。字段名描述字符集宽度取值及描述字段名描述字符集宽度取值及描述SystemTime系统时间0-9N14YYYYMMDDhhmmssExeRtn执行结果回应代码0-9N3取值详见6.6.5执行结果定义表QnRtn请求应答结果0-9N3取值详见6.6.4请求命令返回表DataTime监测时间0-9N14YYYYMMDDhhmmssxxx-Rtd监测值0-9“XXX”是监测指标编码,污染监测因子编码取值详见附录Axxx-Flag监测数据标识A-Z/0-9Cl参见6.6.6章节数据标记表Xxx-WaterTime水样测试时间0-9N3.2加标回收:加标前水样测试数据时间平行样测试:第1次测量数据时间xxx-Water水样值0-9N3.2加标回收:加标前水样测试值,单位为mg/L平行样测试:第1次水样测试值,单位为mg/LBeginTime开始时间0-9N14YYYYMMDDhhmmssEndTime截止时间0-9N14YYYYMMDDhhmmssTime流程时间0-9N4单位为秒PolId监测因子编码O-9/a-z/A-ZC6Lng经度0-9-Lat纬度0-9Volt电压(伏)0-9N3.2Temp温度(摄氏度)0-9N3.2Hum湿度()0-9N3.2PumpX泵X0-1Nl0为关闭,1为打开ValveX阀X0-1Nl0为关闭,1为打开NewPW新密码O-9/a-z/A-ZC6RunMode系统运行模式0-9Nl0:手动模式;1:间歇模式(整点);2:连续模式;3:应急模式PumpState系统采水泵状态0-9Nl水泵状态(1:只用泵一2:只用泵二3:双泵交替)SystemTask系统当前任务:0-9N20:停机;1:待机;2:调试(手动)3:水样采集;4:沉砂;5:进样6:仪表测试分析;7:反吹;8:清洗;9:除藻;字段名描述字符集宽度取值及描述ValveCount系统控制阀数量0-9N2ValveStateList系统控制阀状态0-1Nl状态列表:VaIVeStateLiSt=Oll(依次标注每个控制阀的状态,0表示关,1表示开)SandCleanTime沉砂池清洗时间0-9N4单位为秒SandWaitTime水样静置时间0-9N4单位为秒MeasureWaitTime等待仪表测量时间0-9N4单位为秒CleanOutPipeTime清洗外管路时间0-9N4单位为秒CleanInPipeTime清洗内管路时间0-9N4单位为秒AirCleanTime反吹时间0-9N4单位为杪AirCleanInterval反吹间隔0-9N4单位为秒WcleanTime清洗时间0-9N4单位为秒WcleanInterval清洗间隔0-9N4单位为秒AlgClean除藻选择0-1Nl0为停止除藻;1为启动除藻SystemAlarm系统报警0-9N20为无报警;1为断电报警;2为采样管路欠压(源水泵故障)3为进样管路欠压(进样泵/增加泵故障)VaseNo留样瓶编号0-9N2取值范围为0<n<99User操作用户-操作设置反控命令用户名LocalIP本地IP地址操作设置反控命令电脑IPRtdlnterval实时数据间隔0-9N4单位为分钟RunInterval测试间隔0-9N4单位为小时,取值(Xn<24之间CycInterval周期标定间隔0-9N4单位为分钟SandTime沉沙时间0-9N4单位为秒Cmode采样模式0-9N20:维护模式1:间隔采样2:加密采样3:连续采样4:手工采样5:应急采样Ltime留样周期0-9N6hhmmssLmode留样模式0-9Nl0:手工留样1:超标留样2:周期留样Overtime超时时间,0-9N4单位为秒,默认为10秒字段名描述字符集宽度取值及描述ReCount重发次数0-9Nl默认为3次LRmode运行模式0-9Nl采样器运维模式(等比、等时、手动)xxx-Info现场端信息-“XXX”是现场端信息编码,详见附录BInfoId现场端信息编码0-9/a-zC6取值见附录B6.6.4请求命令返回请求命令返回表编号描述备注1准备执行请求2请求被拒绝3PW错误4MN错误5ST错误6Flag错误7QN错误8CN错误9系统繁忙不能执行100未知错误6.6.5执行结果定义执行结果定义表编号描述备注I执行成功2执行失败,但不知道原因3命令请求条件错误4通讯超时5系统繁忙不能执行6系统故障100没有数据6.6.6数据标记数据标记如下所示。标识标识定义说明N正常测量数据正常有效T超上限监测浓度超仪器测量上限L超下限监测浓度超仪器下限或小于检出限P电源故障系统电源故障,可由是否为UPS来供电进行判断D仪器故障仪器故障F仪器通信故障仪器数据采集失败B仪器离线仪器离线(数据通信正常)Z取水点无水样取水点没有水样或采水泵未正常上水S手工输入数据手工输入的补测值(补测数据)M维护调试数据在线监控(监测)仪器仪表处于维护(调试)期间产生的数据CZ标液一校准标液一校准CS标液二校准标液二校准ce标液三校准标液三校准bt空白测试空白测试,有手工与自动两种SC标样核查测试标样测试核查,有手工与自动两种ra加标回收测试加标回收测试,有手工与自动两种PS平行样测试自动监测数据的获取过程中曾进行平行样测试dz24小时零点漂移每隔24小时仪器内部自动测试零点漂移ds24小时量程漂移每隔24小时仪器内部自动测试量程漂移Iv线性核查仪器内部测试量程0%、10%、20%、40%、60%、80%六点ac实际水样比对仪器内部实际水样比对6.6.7命令编码命令名称命令编码命令类型描述上位向现场现场向上位弁数命令设置超时时间及重发次数1000请求命令用于上位机设置现场机的超时时间及重发次数,超时时间及重发次数参考取值参见示例表D.1取监测仪表时间1011请求命令用于提取监测仪表的系统时间上传监测仪表时间IOlI用于上传监测仪表时间设置监测仪表时间1012请求命令用于设置监测仪表的系统时间取数采仪时间1014请求命令用于提取数采仪的系统时间上传数采仪时间1014用于上传数采仪时间设置数采仪时间1015请求命令用于设置数采仪的系统时间提取实时数据间隔1061提取实时数据间隔命令名称命令编码命令类型描述上位向现场现场向上位上传实时数据间隔1061上传实时数据间隔设置实时数据间隔1062指定实时数据间隔设置监测仪表密码1072请求命令用于设置监测仪表的密码(运维服务密码)设置数采仪密码1073请求命令用于设置数采仪基站软件的密码预留参数命令预留命令范围1074.1999数据命令取监测指标实时数据2011请求命令用于启动数采仪上传实时数据上传监测指标实时数据2011上传命令用于数采仪上传监测指标实时数据提取测量数据2061请求命令用于上位机提取数采仪的地表水小时历史数据上传测量数据2061上传命令用于上传数采仪地表水小时历史数据提取核查数据2062请求命令用于上位机提取数采仪质控核查数据上传核查数据2062上传命令用于上传数采仪质控核查数据提取加标回收数据2063请求命令用于上位机提取数采仪质控加标回收测试数据上传加标回收数据2063上传命令用于上传数采仪质控加标回收测试数据提取平行样测试数据2064请求命令用于上位机提取数采仪质控平行样测试数据上传平行样测试数据2064上传命令用于上传数采仪质控平行样测试数据上传数采仪开机时间2081上传命令用于数采仪自动上报数采仪开机时间预留数据命令预留命令范围2082-2999控制命令手动远程留样3015请求命令用于上位机启动即时留样上传仪表信息(日志)3020上传命令提取仪表信息(日志)3020请求命令上传仪表信息(状态)3020上传命令提取仪表信息(状态)3020请求命令上传仪表信息(参数)3020上传命令提取仪表信息(参数)3020请求命令提取现场系统信息3040请求命令提取现场经纬度及环境信息30413041请求命令针对浮标、监测船、移动监测车、可移动多监测站点远程切换运行模式3042请求命令0:手动模式;1:间歇模式;2:连续模式;3:应急模式;远程重启现场数采仪3043请求命令远程启动系统单次测试3044请求命令用于上位机启动即时采样测试命令名称命令编码命令类型描述上位向现场现场向上位远程控制系统紧急停机命令3045请求命令远程控制系统进入待机命令3046请求命令系统报警确认3047请求命令远程启动系统全面清洗3048请求命令远程启动系统外管路清洗3049请求命令远程启动系统内管路清洗3050请求命令远程启动沉砂池清洗3051请求命令远程启动系统除藻操作3052请求命令远程启动五参数池清洗3053请求命令远程启动系统过滤器清洗3054请求命令远程设置系统沉淀时间3055请求命令远程设置系统运行测量时间间隔3056请求命令设置采样泵运行模式3057请求命令远程控制泵3058请求命令远程控制阀门3059请求命令设置采样时间3060设置源水泵从河口取水采样时长(单位为秒)设置进样时间3061从设置沉淀池向采样杯打水时长(单位为秒)设置清洗外管路时间3062(单位为秒)设置清洗内管路时间3063(单位为秒)设置清洗清预处理单元时间3064指清洗沉淀池和五参数池时长(单位为秒)设置测量分析时间3065(单位为秒)设置补水时间3066一次进样太短允许二次补水进样(单位为秒)启动单台仪表周期标定3081请求命令用于上位机启动仪表周期标定操作启动单台仪表平行样测试3082请求命令启动单台仪表标液核查3083请求命令启动单台仪表加标回收3084请求命令设置单台仪表周期标定间隔3085请求命令用于上位设置监测仪表周期标定的时间间隔(分钟)启动标液一校准3086请求命令用于上位机启动监测仪表做标液一校准操作启动标液二校准3087请求命令用于上位机启动监测仪表做标液二校准操作启动标液三校准3088请求命令用于上位机启动监测仪表做标液三校准操作命令名称命令编码命令类型描述上位向现场现场向上位预留数据命令预留命令范围3092-3999交互命令请求应答9011用于数采仪回应接收上位机请求命令是否有效执行结果9012用于数采仪回应接收上位机请求命令执行结果通知应答90139013回应通知命令数据应答90149014数据应答命令预留交互命令预留命令范围9015-9999附录A(规范性附录)1 .常用监测指标编码表表A-I水监测指标编码表(可扩充,遵循HJ525-2009)编码中文名称缺省计单位(浓度)缺省计单位(总)缺省数据类型(数据修约)WOlOOlPH值无量纲N2.2w1003浊度NTUN3.2w01006溶解性总固体亳克/升千克N4w01009溶解氧毫克/升N3.2w01010水温摄氏度N3.2w01014电导率微西门子/厘米N3.2w01018化学需氧量(COD)亳克/升千克N5.2w01019高钵酸盐指数毫克/升千克N3.2w01020总有机碳(TOC)毫克/升千克N3.2w01022蓝绿藻微克/升N3.2w01023叶绿素a细胞/亳升N9w01024藻密度个/升N9wO2OO3粪大肠菌群个/升N9w02004总大肠菌群个/升N9wO2OO5耐热大肠菌群个/升N9w02006细菌总数个/升N9w02007大肠埃希氏菌个/升N9w20111总汞微克/升克N3.2w20115总镉微克/升克N3.2w20116总格毫克/升千克N3.3w20117六价辂微克/升克N2.3w2OII9总碑微克/升克N2.3w20120总铅微克/升克N4w20122总铜毫克/升千克N3.2w20123总锌毫克/升千克N3.3w20124总锦毫克/升千克N3.3w20125总铁毫克/升千克N3.3w20138铜亳克/升千克N3.3w20139锌亳克/升千克N3.3w20140硒毫克/升千克N3.3w20141神亳克/升千克N3.3w20142汞微克/升克N3.3w20143镉微克/升克N3.3w20144铅亳克/升千克N3.3w21001总氮毫克/升千克N4.2w21003氨氮毫克/升千克N4.2w21006亚硝酸盐亳克/升千克N2.3w21007硝酸盐亳克/升千克N2.3编码中文名称缺省计单位(浓度)缺省计单位(总)缺省数据类型(数据修约)w210ll总磷毫克/升千克N3.3w21015(正)磷酸盐毫克/升千克N3.3w21016鼠化物毫克/升千克N3.3w21017氟化物毫克/升千克N4.2w21019硫化物毫克/升千克N3.3w21022氯化物毫克/升千克N3.2w21038硫酸盐亳克/升千克N6w22001石油类毫克/升千克N3.2w23002挥发酚毫克/升千克N3.4w23O39总酚亳克/升千克N3.3w22OO8水中油亳克/升千克N3.3注:所扩展的因子编码应符合HJ5252009标准要求;数据修约仅为平台软件显示各监测指标小数点位数提供参考依据。表A-2环境监测指标编码表编码中文名称原编码缺*计单位(浓度)缺省计量单位(总)缺省数据类型eO100l温度摄氏度N3.2eO1002湿度%N3.2eO1003电压(市电)VN3.2eO1004电压(系统)VN3.2eO1005水压1(源水压)PN3.3eOI006水压2PN3.3eO1007水压3PN3.3eO1008水压4PN3.3e01101经度度e01102纬度-度-eOI2Ol水位米N3.2eO1202流速米/秒N3.2eO1203瞬时流量立方米/秒N6.2eO1204累积流量立方米-N6.2e01301风速米/秒-N3.2eO1302风向-方位N3.2eO1303降雨量毫米N3.2表A-3现场端设备分类编码表序号类别代码1在线监控(监测)仪器仪表12数据采集传输仪23辅助设备34预留扩充4-5表A-4现场端信息分类编码表序号类别代码1日志12状态23参数34预留扩充4-5表A-5设备唯一标识编码表EPC-96编码结构名称标头厂商识别代码对象分类代码序列号长度(比特)8282436设备唯一标识,这个标识固化在设备中,用于唯一标识一个设备。设备序列号由EPC-96编码转化的字符串组成,即设备序列号由24个09,AF的字。2 .现场端信息编码表(可扩展)表A-6现场端信息编码表序号编码中文名称缺省计单位缺省数据类型描述备注1illOOI运行日志C890日志信息在“小之间,使用UTF-8编码在线监控(监测)仪器仪表(日志)2i12001工作状态无量纲N2离线(1)、待机(2)、测量(3)、维护(4)、清洗(5)、故障(6)、标液一(空白)校准(7)、标液二(标液)校准(8)、标液三(标液)校准(9)、标定(10)、标样核查(11)其它(99)在线监控(监测)仪器仪表设备(状态)3i12002工作模式无量纲Nl在线(0)、离线(1)、维护(2)、故障(3)4iI2003分析仪与数采仪通讯状态无量纲Nl正常(0)、异常(1)5i12004反应试剂余量%N3是百分比数值,低于10%将实现预警,需要更换试剂6i12005测量滴定值或吸光度无量纲7i12006PH电极电位8i12007溶解氧电极电位9i12008溶解氧荧光强度10i12009电导率电极电位11i!2010浊度散光量12i12030五参数分析仪报警状态无量纲N2PH电极电位(0)、电导率电极异常(1)、浊度光度异常(2)、溶解氧电极异常-电化学探头法独有(3)、溶解氧光强异常荧光法序号编码中文名称缺省计单位缺省数据类型描述备注独有(4)13il2031CODcr分析仪报警状态无量纲N2待定义14i12032CODmn分析仪报警状态无量纲N2缺试剂告警(0)、缺水样告警(1)、缺空白水告警(2)、仪表漏液告警(3)、标定异常告警(4)、超量程告警(5)、加热异常(6)、试剂余量不足预警(7)、超上限告警(8)、超下限告警(9)、仪表内部其它异常(10)、滴定异常告警(11)、电极异常告警-ORP电位滴定法独有(12)、量程切换告警(13)15i12033氨氮分析仪报警状态无量纲N2缺试剂告警(O)、缺水样告警(1)、缺空白水告警(2)、仪表漏液告警(3)、标定异常告警(4)、超量程告警(5)、加热异常(6)、仪表内部其它异常(7)、低试剂预警(8)、电极异常告警-电极法独有(9)、吸光度异常-光度法独有(10)、量程切换告警(11)16iI2034TP分析仪报警状态无量纲N2缺试剂告警(0)、缺水样告警(1)、缺空白水告警(2)、仪表漏液告警(3)、标定异常告警(4)、超量程告警(5)、吸光度告警(6)、仪表内部其它异常(7)、低试剂预警(8)、加热异常(9)、量程切换告警(10)17i12035TN分析仪报警状态无量纲N2缺试剂告警(0)、缺水样告警(1)、缺空白水告警(2)、仪表漏液告警(3)、标定异常告警(4)、超量程告警(5)、吸光度告警(6)、仪表内部其它异常(7)、低试剂预警(8)、加热异常(9)、量程切换告警(10)18i12036TOC分析仪报警状态无量纲N2待定义19i12037TOXic(发光菌)分析仪报警状态无量纲N2待定义20i12038Toxic(鱼法)分析仪报警状态无量纲N2待定义21iI2039Toxic(藻类)分析仪报警状态无量纲N2待定义序号编码中文名称缺省计单位缺省数据类型描述备注22i12040重金属分析仪报警状态无量纲N2待定义23i12041大肠杆菌分析仪报警状态无量纲N2待定义24i13001测量量程-单位、数据类型根据实际自定义,氨氮、总璘、化学需氧量均用在线监控(监测)仪器仪表设备(参数)25i13002测量精度-单位、数据类型根据实际自定义,氨氮、总磷、化学需氧量均用26i13003测量间隔分钟N4氨氮、总磷、化学需氧量均用27i13004消解温度摄氏度N3.128i13005消解时长分钟N229i13006校准时间年月口时分秒YYYYMMDDHHMMSS30i13007曲线截距-单位、数据类型根据实际自定义31i13008曲线斜率单位、数据类型根据实际自定义32i13009测量检出限单位、数据类型根据实际自定义33i!3010标定日期年月口时分秒YYYYMMDDHHMMSS34i13011标定间隔分钟35i!3012标液一浓度与测量单位一致36il3013标液一滴定(电位)值或吸光度37i13014标液二浓度与测量单位一致38i!3015标液二滴定(电位)值或吸光度39i!3016标液三浓度与测量单位一致40il3017标液三滴定(电位)值或吸光度41i!3018线性相关系数(R2)42il3019标样核查间隔分钟43i13020测量滴定值或吸光度44i2100l运行日志C890日志信息在“/之间,使用UTF-8编码数采仪(日志)45i22001工作状态无量纲Nl运行(0)、待机(D、停机(2)、故隙(3)、维护(4)数采仪(状态)46i22002用户状态无量纲Nl普通用户(0)、管理员(1)、维护人员(2)47i22OO3数采仪与上无量纲Nl正常(0)、异常(1)序号编码中文名称缺省计单位缺省数据类型描述备注位机通讯状态48i22101数采仪通道通讯状态无量纲Nl通道未接设备(2)49i23001本地大气压力千帕N3.3数采仪(参数)50i31001门禁日志C890日志信息在“俏之间,使用UTF-8编码辅助设备(日志)i32001门禁状态无量纲Nl关(0)、开(1)运行状态3.循环冗余校验(CRC)算法CRC校验(CyCIiCRedUndanCyCheCk)是一种数据传输错误检查方法。本协议采用ANSICRC16,简称CRCI6。CRC16码由传输设备计算后加入到数据包中。接收设备重新计算接收数据包的CRCI6码,并与接收到的CRCl6码比较,如果两值不同,则有误。CRC16校验字节的生成步骤如下:(1)CRC16校验寄存器赋值为OXFFFF;(2)取被校验串的第一个字节赋值给临时寄存器;(3)临时寄存器与CRCI6校验寄存器的高位字节进行“异或”运算,赋值给CRCI6校验寄存器;(4)<CRC16校验寄存器最后一位赋值给检测寄存器;(5)把CRCI6校验寄存器右移一位;(6)若检测寄存器值为1,CRC16校验寄存器与多项式OXAOol进行“异或”运算,赋值给CRCI6校验寄存器;(7)重复步骤46,直至移出8位;(8)取被校验串的下一个字节赋值给临时寄存器;(9)重复步骤38,直至被校验串的所有字节均被校验;(10)返回CRCl6校验寄存器的值。校验码按照先高字节后低字节的顺序存放。CRC校验算法示例:函数:CRC16_Checkout描述:CRCI6循环冗余校验算法。参数一:*PUChMSg:需要校验的字符串指针参数二:USDataLen:要校验的字符串长度返回值:返回CRC16校验码unsignedintCRC16_Checkout(unsignedchar*puchMsg,unsignedintUsDataLen)unsignedinti,j,crc_reg,check;crc_reg=OxFFFF;for(i=0;i<usDataLen;i+)(crc_reg=(crc_reg»8)puchMsgi;for(j=0;j<8;j+)(check=crc_reg&