1、个人收集整理 勿做商业用途广西电网公司 低压电力用户集中抄表系统基于北京福星晓程载波通讯技术的数据链路层 通信协议(送审稿)2007年 月 日发布 2007 年 月 日实施广西电网公司 发布目 录1 范围12 引用标准13 术语、定义和缩略语23.1 术语和定义23.2 缩略语24 概述34.1 LLC子层34.2介质访问层34。3规范方法35 逻辑链路子层45.1 LLC子层的作用45。2 LLC子层的服务规范46 LLC子层的协议规范77 MAC子层87.1 MAC子层的服务规范87.2 数据通讯87.3 MAC子层所用的物理层服务117。4 MAC子层协议规范12附录A17附录B19基于
2、北京福星晓程载波通讯技术的数据链路层 通信协议1 范围本部分应用范围是通过配电网进行电力线载波通信。为保证面向连接和无连接两种操作方式具有一致的数据链路层服务规范,将数据链路层分成两个子层:逻辑链路控制子层(LLC sub-layer)和介质访问控制子层(MAC sub-layer).本部分支持下面的通信环境: 非平衡点对多点或点对点链路结构; 支持无连接的确认响应操作模式; 半双工交替数据传输; 同步通讯方式传输,6个FFH为帧起始,09H AFH同步帧头,数据位为8bit。2 引用标准下列标准所包含的条文,通过在本标准中引用而构成本标准的条文。IEC 62056-46:2002电表抄表、费
3、率和负荷控制数据交换 第46部分:使用HDLC协议的数据链路层IEC 6205651: 2002 电表-抄表、费率和负荷控制数据交换第51 部分:应用层协议IEC 6205653: 2002 电表-抄表、费率和负荷控制数据交换第53 部分:COSEM 应用层IEC 6205661: 2002 电表-抄表、费率和负荷控制数据交换第61 部分:OBIS 对象识别系统DL/Z 790.432:2004采用配电线载波的配电自动化 第432部分:数据通信协议,数据链路层逻辑链路控制DL/Z 790。433:2005采用配电线载波的配电自动化 第433部分:数据通信协议,数据链路层面向连接协议DL/Z 7
4、90。41:2002采用配电线载波的配电自动化 第4部分:数据通信协议,第1篇:通信系统参考模型DL/Z 790。442:2004采用配电线载波的配电自动化 第442部分:数据通信协议,应用协议应用层DL/Z 790。4。51:2004采用配电线载波的配电自动化 第4部分:数据通信协议DL/Z 790.54:2004采用配电线载波的配电自动化 第5-4部分:低层协议集,多载波调制(MCM)协议GB/Z 20177.1: 2006 控制网络LONWORKS技术规范:第1部分:协议规范GB/Z 20177。2: 2006 控制网络LONWORKS技术规范:第2部分:电力线信道规范3 术语、定义和缩
5、略语3。1 术语和定义IEC 60350300和IEC/TR2 62051界定的术语适用于本部分.同步通讯:通讯时将帧训练字头、同步帧头、数据体等许多字符组成一个信息组,字符按顺序逐字节传输;在每组信息(称为帧或报文)的开始要加上同步字符,同步传输字符间不允许有间隙.3.2 缩略语APDU Application layer Protocol Data Unit 应用层协议数据单元COSEM COmpanion Specification for Energy Metering 能源计量配套规范DA Destination Address 目的地址DL Data Link 数据链DM Disc
6、onnect Mode 断开方式(HDLC帧的一种类型)DPDU Data link Protocol Data Unit 数据链路协议数据单元DSAP Data link Service Access Point 数据链路服务接入点DSDU Data link Service Data Unit 数据链路服务数据单元FCS Frame Check Sequence 帧校验序列HCS Header Check Sequence 头校验序列HDLCHighlevel Data Link Control 高级数据链路控制I Information 信息(HDLC帧的一种类型)IFC Informa
7、tion Field Control信息域控制LLC Logic Link Control 逻辑链路控制(子层)LSAP LLC sublayer Access Point LLC子层服务接入点LPDU LLC Protocol Data Unit LLC协议数据单元LSB Least Significant Bit 最低有效位LSDU LLC Service Data Unit LLC服务数据单元MAC Medium Access Control 介质访问控制(子层)MSB Most Significant Bit 最高有效位MSDU MAC Service Data Unit MAC服务数
8、据单元C/R Command/Response 命令/响应PDU Protocol Data Unit 协议数据单元PH PHsical layer 物理层PSDU Phisicl layer Service Data Unit 物理层服务数据单元RNR Receive Not Ready 接收未就绪(HDLC帧的一种类型)RPA Repeater Address 中继地址SA Source Address 源地址SAP Service Access Point 服务接入点SDU Service Data Unit 服务数据单元4 概述4。1 LLC子层在面向连接的协议集中,LLC子层唯一的作
9、用是保证一致的数据链路寻址。LLC子层通过面向连接的MAC子层提供标准的无连接数据服务。LLC子层向服务使用层提供数据链路的连接/断开服务,用MAC子层服务去实施这些服务。4.2介质访问层MAC子层,数据链路层规范的主要部分,以关于高级数据链路控制过程为基础.本部分和原来的数据链路控制相比,在寻址、差错保护方面进行了简化;以满足对电能测量应用的要求。4.3规范方法数据链路层子层用服务与协议规定。服务规范包含逻辑接口附近特定的子层与相邻的使用面向连接的程序的其他子层或层要求的服务。服务是规定协议层之间通信的标准途径。服务提供者利用四种处理,即服务原语(请求,指示,响应和确认),在用户间协调和管理
10、通信.服务原语是一种抽象的可独立执行处理协议层之间定义的方法。5 逻辑链路子层5。1 LLC子层的作用LLC子层用作一种协议选择器,真正的数据链路层连接是由MAC子层保证的。为了能够建立数据链路连接,LLC子层向服务用户协议层提供透明的MAC连接/断开服务。5。2 LLC子层的服务规范定义了使用面向连接程序的用于用户服务逻辑接口的LLC子层和MAC子层的服务请求。服务用户层把LLC子层服务看作数据链路层服务,本部分将这些服务称为数据链路层服务,并以前缀“DL”表示这些服务被使用。5。3 数据通信概述:图1 所示为数据链路层向服务用户层提供的交换数据的数据通信服务。图1 数据链路层向服务用户层提
11、供的交换数据的数据通信服务除两个标准的请求和指示服务外,服务器端还提供DL-DATA确认服务.5。3.1 DLDATA。request功能 当数据需要传送到对等层实体时,服务用户层就要调用该原语.服务参数原语的语义如下:DL-DATA.request(Destination_ LSAP, (目的) Source_LSAP, (源)Destination_ MSAP, (目的)Source_MSAP, (源)Frame_type, (帧类型)Data (数据))Source_ LSAP和Destination_ LSAP参数指定数据通信所涉及的本地和远程LSAP ;Source_MSAP 和De
12、stination_MSAP参数指定数据单元传输所涉及的本地和远程MSAP,远程MSAP可以是一个独立地址或广播地址.Frame_type参数向数据链路层指示应发送的Frame_type。客户机端的Frame_type变量是UI,服务器端有效的Frame_type变量是 I_COMPLETE、和 UI.Data参数包括被传送到对等层的服务用户层协议数据单元(MSDU)。使用服务用户层实体调用DL-DATA,请求原语来请求发送一个协议数据单元到一个对等应用实体;该原语的接收会给被接收到的LSDU,并传递给MAC子层(通过调用MADATA请求原语).5。3.2 DL-DATA。indication
13、功能这个原语用来将被接收到的数据从数据链路层输送到它的服务用户层。服务参数原语的语义如下:DL-DATA。indication( Destination_LSAP, (目的) Source_LSAP, (源)Destination_MSAP, (目的)Source_MSAP, (源)Frame_type, (帧类型)Data (数据)Destination_LSAP、Source_LSAP 、Destination_MSAP、Source_MSAP、Frame_type、Data参数见5。2.1.2。使用DL-DATA指示原语被用来向服务用户层实体指示从对等层实体接收到协议数据单元.接收到本地
14、MAC子层发放的MADATA.指示服务后,该原语就会生成。首先,LLC子层检查LLC地址,如果正确,它应从被接收的LPDU中移走LLC特殊域,并且在DLDATA指示服务原语的帮助下,将剩下的、适当格式化的LSDU传递给服务用户协议层,否则被接收的LPDU将被丢弃。5.3.3 DLDATA。confirm功能该服务原语仅由服务器端提供,当该请求服务被调用,数据链路层生成此原语来向服务用户层指示先前被接收的DL-DATA请求服务的结果。服务参数原语的语义如下:DLDATA。confirm( Destination_LSAP, (目的) Source_LSAP, (源) Destination_MS
15、AP, (目的)Source_MSAP, (源) Frame_type, (帧类型) Result (结果)地址参数跟DL-DATA请求服务原语中的一样.Frame_type参数指示所确认帧的类型。Result参数的值指示被接收的LSDU的传输结果,该值可能是OK 和 NOK.使用服务器端的LLC子层利用该原语来向服务用户层指示接收到MADATA确认原语。6 LLC子层的协议规范6.1 概述LLC子层规程是以LLC类1为基础的,由最低协议复杂度的数据链路提供数据链路无连接方式服务。LLC子层被用作一种协议选择器,而真正的数据链路层功能由MAC子层保证。标准LLC帧格式展示在图2中.目的(远端)
16、LSAP 源(本地)LSAP 控制 信息8 bits8 bits8 或 16 bitsN*8 bits图2 协议数据单元格式LLC子层应在服务用户层与MAC子层之间透明地传输信息域.当接收到来自服务用户协议层的DATA请求服务调用时,如果有必要,LLC子层会把LLC特殊域添加到LSDU。当来自MAC子层的MADATA指示服务调用被接收,它将检查并从被接收的LPDU去掉这些LLC特殊域。6.2 LLC协议数据单元(LPDU)结构LLC子层唯一的作用就是选择服务用户层协议,该选择是在Destination_LSAP地址基础上完成的。在COSEM模型中,由于LLC_Quality参数置为0,保留为扩
17、充目的,在此将其省略。LPDU格式见图3所示。LLC协议数据单元说明如下:目的(远端)LSAP LLC+1 层 PDU8 bitsN 8 bits图3 使用的LLC协议数据单元格式6。3 LLC子层的状态转换表由于LLC子层的角色仅限于协议选择,其状态转换图表十分简单:初始化之后,LLC子层进入自己唯一的稳定状态-IDLE状态,在经过任何可能发生的事件后应返回此状态。转换表略。7 MAC子层MAC子层,类似于LLC子层,提供了与LLC子层的接口。MAC子层的典型功能是将协议数据单元装配成帧,并提供同步和错误检查功能; MAC子层通过帧中继转发机制来解决电力线数据传输的问题。7。1 MAC子层的
18、服务规范规定了MAC子层在与服务用户和物理层接口处提供的服务或所需的服务(使用无连接的规程)。采用面向连接过程所要求的服务。由于客户机端和服务器端的MAC子层是不同的,所以两端都要对各自的服务进行说明。7.2 数据通讯7。2.1 概述图4所示为MAC子层用I 帧向服务用户层提供的与对等层进行数据交换的数据通信服务.基本上,对于数据交换服务,客户机端和服务器端提供相同的服务集。然而除了两个标准的请求和指示服务外,服务器端还提供一种MA-DATA确认服务。图4 MAC子层数据通信服务客户机和服务器MAC子层对MADATA请求原语的行为不同:在正常响应方式中,服务器只要从客户机站接收到一个可以这样做
19、的明确许可就可以开始传输。给出允许信号后,客户机还要等到服务器返回明确的许可信号才开始新的传输(有规定的超时,TO_WAIT_RES)。7.2。2 MA-DATA。request功能服务用户层调用这个原语来发起与对等层之间的数据传输。服务参数原语的语义如下:MADATA.request(Destination _MSAP, (目的)Source_MSAP,Frame_type(帧类型)Data(数据))Destination_MSAP和Source_MSAP参数规定数据单元传输所涉及的本地和远程MSAP.Destination_MSAP可以是一个独立的地址或广播地址。Frame_type参数向
20、MAC子层指示哪种HDLC Frame_type应被发送。客户机端和服务器端的有效Frame_type是不同的,客户机端的有效Frame_type有I_COMPLETE,服务器端的有效Frame_ type有I_COMPLETE和 UI。Data参数包括要被传输到对等层的协议数据单元。使用当有数据需要被传输到一个对等实体或多个对等实体时,MADATA请求服务原语都可以被服务用户层实体调用。7.2.3 MADATA。indication功能这个原语用来将接收到的数据从MAC子层传递给它的服务用户层。服务参数原语的语义如下:MA-DATA。indication(Destination_MSAP,
21、(目的)Source_MSAP,(源)Frame_type(帧类型)Data(数据)Destination_MSAP、Source_MSAP参数规定数据单元传输所涉及的本地远程MSAP。Frame_type参数向服务用户层指示接收到HDLC帧的类型,在客户机端和服务器端都有效的Frame_type有:I_COMPLETE 和 UI。Data参数包括接收自对等层的服务用户层协议数据单元(MSDU)。使用MADATA指示被从MAC子层实体传递到服务用户层实体。7.2。4 MADATA。confirm功能该服务原语仅在服务器端提供,服务器端MAC子层生成这个原语是为了指示用户服务层调用MA-DATA
22、.request 服务的结果;当先前请求的MSDU被成功发送给对等MAC子层,MA-DATA。confime 服务原语就会生成。服务参数原语的语义如下:MADATA.confirm(Destination_MSAP, (目的)Source_MSAP,(源)Frame_type(帧类型)Result(结果))Destination_MSAP和Source_MSAP参数规定数据单元传输所涉及的本地远程MSAP。Result参数的值指出被接收的MSDU的传输结果,该值可能是OK和NOK。使用当MA-DATA请求服务被调用,MAC子层指示先前被接收的MA-DATA请求服务的结果.7。3 MAC子层所用
23、的物理层服务7。3。1 概述图5所示为物理层向MAC子层提供的服务,客户机端和服务器端都使用相同的服务集。 图5 MAC子层使用的物理层服务7.3。2 数据通信MAC子层利用物理层PH-DATA。request和PH-DATA.indication服务原语与远端设备交换数据。7。4 MAC子层协议规范本条基于ISO/IEC 13239标准的MAC子层的协议。根据电力线载波通信的特点,进行了适当简化,如省略了控制和HCS。7。4.1协议数据单元 PDU 和 HDLC帧7.4。1。1概述MAC子层用HDLC帧格式类型3,内容与ISO/IEC 13239 H3条所述的类型2类似.帧结构如下:标志帧格
24、式目的地址源地址控制HCS信息FCS标志图6 MAC子层的帧格式(HDLC帧格式类型3)为适应在电力线上传输数据、并提高效率(采用单帧传输,修改了帧同步标志,不考虑“0”插入规则,采用1字节帧格式、1字节帧长度)、降低复杂度,对MAC子层的帧格式进行了简化。根据帧格式的控制位确定目的地址、源地址字段定义,并调整目的地址、源地址的顺序;根据电力线路通讯的需要扩充中继路由表;省略控制、HCS校验字段,形成了如下简化帧格式:前导域帧格式帧长度源地址中继路由表目的地址信息FCS图7 简化的帧格式7.4.1.2前导域前导域等效于标志域,为FFFFFFFFFFFF 09AFH。用于提供伪码捕获和帧同步信息
25、.7.4.1.3帧格式域帧格式域的长度为1个字节, Frame_type子域(2 bit),控制及中继子域(6bit),定义见图8。 MSB LSBB7B6B5B4B3B2B1B0IFC:0为DL/T 645帧,1为透明帧SA:0为省略源地址,1为具有源地址C/R:1为命令帧,0为响应帧帧类型中继级数图8 帧格式域定义其中:l 帧类型定义见图9:B7B6帧类型00保留01保留10HDLC11FXXC帧图9 帧类型定义l “信息域控制位B5:IFC=0表示“信息域为DL/T645帧,为适应载波信道,省略DL/T645内的第一个起始字符68H,同时省略“目的地址”,而采用DL/T645内的地址域等
26、效;IFC=1:表示“信息”为透明帧,目的地址存在;l “源地址”域控制位B4:SA=0为省略源地址,SA=1为具有源地址;l C/R控制位B3:C/R=1为命令帧,即下行帧;C/R=0为响应帧,即上行帧;l 命令帧/响应帧内中继级别编码R2R1R0:中继级别B2B1B0注释0000正常命令10011级中继20102级中继30113级中继41004级中继5101保留6110保留7111保留图10 中继级数定义7。4。1。4帧长度域帧长度域为1个字节,帧长度的值是帧长度后字节到校验FCS(不含)间的8位位组数.7.4.1。5 源地址域源地址域是否存在由帧格式域的SA编码定义,SA=0:源地址域不
27、存在;SA=1:本域存在,采用DL/T645的定义,为6字节地址,集中器地址为保留地址6字节的BBH (即 BB BB BB BB BB BBH)。7.4。1.6 中继路由表域中继路由表域是否存在由帧格式域的 R2R1R0 编码定义,R2R1R0=000B:中继路由表域不存在(即通讯为直接通讯);R2R1R0非零时:中继路由表域存在,中继路由级数见定义,每级路由的编码采用DL/T645的定义,为6字节地址.7。4.1。7 目的地址域目的址域是否存在由帧格式域的 IFC编码定义,IFC=0:目的地址域不存在(通讯时借用DL/T645的地址域);IFC=1:目的域存在,目的地址域采用DL/T645
28、的定义,为6字节地址。7。4.1。8信息域l 帧格式域的信息编码IFC=1:信息域可以是任意字节序列I.l 帧格式域的信息编码IFC=0:信息域为DL/T 645定义标准帧的简化形式I645;简化方式为省略DL/T 645帧格式定义的“第一个帧起始字符68H”、DL/T 645帧的“校验码CS”、“结束符16H”。具体定义见下图说明:说 明标准645帧定义简化I645帧起始符68H无地址域DAA0A0A1A1A2A2A3A3A4A4A5A5帧起始符68H68H控制码CC数据长度域LL数据域DATADATA校验码CS无结束符16H无图12:对DL/T645定义标准帧的简化I645信息域7.4.1
29、.9帧校验序列(FCS)域FCS域的长度是两个字节,用来计算除了前导符和FCS本身外的完整的帧长度,传输时低字节在前、高字节在后。FCS的计算方法参照附录B。7。4.2MAC寻址7.4。2.1 地址结构MAC地址采用DL/T 645定义,扩展为固定6字节地址;每个地址低字节在前。MAC地址的 6字节地址结构见图13:地址字节1地址字节2地址字节3地址字节4地址字节5地址字节6图13:MAC地址的 6字节地址结构7.4。2。2 保留特别HDLC地址地址 0XBBBBBBBBBBBB被保留为集中器地址。 7。4。3信息传送命令和响应信息帧的功能是用于信息交换的目的,每一帧都含有信息字段。按照实现的
30、功能划分,信息帧可分为:正常命令帧、中继转发帧、响应帧。7。4。3.1正常命令帧NCF与正常应答帧NRF正常命令帧是最基本的命令帧。l 主站主站向从站发送正常命令帧的目的是请求从站一个确认响应.当主站发送正常命令帧(NCF)完成时,并等待从站的应答帧。如果在定时时间(TO_WAIT_RESP)内: 接收到NRF正常应答帧,将结束本次传输过程; 超时未接收到正常应答帧,结束本次传输过程。l 从站如果从站正确接收到NCF正常命令帧后,向主站发送NRF正常应答帧作为其响应。当从站正确接收到NCF正常命令帧后,如果从站没有定义请求的响应帧,则从站丢弃。7。4。3。2中继转发命令帧中继转发机制是解决电力
31、线介质对信号传输特性影响的有效解决方案。l 主站主站发送中继转发命令帧的目的是通过路由节点向从站请求一个确认响应。当主站发送中继转发命令帧(RFCF)完成时,启动超时定时器(TimeOut_Timer),并等待第一级路由节点的应答帧。如果在定时时间(TO_WAIT_RESP)内:1) 接收到NRF正常应答帧,将结束本次传输过程;2) 超时未接收到正常应答帧,将结束本次传输过程。l 从站如果从站正确接收到NCF正常命令帧后,向主站发送NRF正常应答帧作为其响应.当从站正确接收到NCF正常命令帧后,如果从站没有定义请求的响应帧,则从站丢弃。l 中继转发路由节点行为中继转发路由节点行为有下行和上行帧
32、转发两个过程。a) 下行行为实现对主站或上一级路由节点发送的中继转发命令帧进行帧转发,并启动超时定时器(TimeOut_Timer),同时,等待从站或下一级路由节点的正常响应帧;b) 上行行为实现将接收到的从站或下一级路由节点的正常响应帧向主站或上一级路由节点进行帧转发、并恢复其中继级数。说明:附录A:当“信息域控制位B5:IFC=0时, 即信息域为DL/T 645定义标准帧的简化形式I645时,中继路由转发过程示例.18 附录A本附录为扩展中继后的命令帧、响应帧格式(即集中器与载波MODEM间的通讯数据格式)。当信息域使用DL/T 645规约,经过集中器内的“中继路由模块”处理后得到的“命令
33、帧”(集中器通过串口与载波MODEM通讯的)数据格式;“响应帧为载波MODEM通过串口上传“集中器”的数据格式。其中各域的详细定义见“7。4 MAC子层协议规范,FCS校验的详细计算方式见附录B. A。 1信息域为DL/T 645的简化形式I645时的中继路由转发流程(具有源地址的中继转发流程见如下图示)说明代码前导域09 AFH帧格式域1101 1001B帧长度21+L1源地址RPA10RPA15中继路由表RPA20RPA25信息域I645DA0DA568HC1L1DATA1校验域FCS2说明代码前导域09 AFH帧格式域1101 1010B帧长度27+L1源地址6 * BBH中继路由表RP
34、A10RPA15RPA20RPA25信息域I645DA0DA568HC1L1DATA1校验域FCS1说明代码前导域09 AFH帧格式域1101 1000B帧长度15+L1源地址RPA20RPA25信息域I645DA0DA568HC1L1DATA1校验域FCS3命令帧 下行目的站DA一级中继站RPA1主站(发起站)二级中继站RPA2响应帧 上行说明代码前导域09 AFH帧格式域1101 0010B帧长度15+L2源地址6 * BBH信息域I645DA0DA568HC2L2DATA2校验域FCS6说明代码前导域09 AFH帧格式域1101 0001B帧长度15+L2源地址RPA10RPA15信息域
35、I645DA0DA568HC2L2DATA2校验域FCS5说明代码前导域09 AFH帧格式域1101 0000B帧长度15+L2源地址RPA20RPA25信息域I645DA0DA568HC2L2DATA2校验域FCS4图A1 具有源地址、I645信息域的中继转发流程示意图A. 2信息域为DL/T 645的简化形式I645时的中继路由转发流程(省略源地址的中继转发流程见如下图示)说明代码前导域09 AFH帧格式域1100 1010B帧长度21+L1中继路由表RPA10RPA15RPA20RPA25信息域I645DA0DA568HC1L1DATA1校验域FCS1说明代码前导域09 AFH帧格式域1
36、100 1000B帧长度9+L1信息域I645DA0DA568HC1L1DATA1校验域FCS3说明代码前导域09 AFH帧格式域1100 1001B帧长度15+L1中继路由表RPA20RPA25信息域I645DA0DA568HC1L1DATA1校验域FCS2命令帧 下行目的站DA一级中继站RPA1主站(发起站)二级中继站RPA2响应帧 上行说明代码前导域09 AFH帧格式域1100 0000B帧长度9+L2信息域I645DA0DA568HC2L2DATA2校验域FCS4说明代码前导域09 AFH帧格式域1100 0010B帧长度9+L2信息域I645RPA10RPA1568HC2L2DATA
37、2校验域FCS6说明代码前导域09 AFH帧格式域1100 0001B帧长度9+L2信息域I645RPA20RPA2568HC2L2DATA2校验域FCS5图A2 省略源地址、I645信息域的中继转发流程示意图附录B(资料性附录)快速帧校验序列(FCS)计算,考虑设备实现的简单性,选择CRC16原型为用于MODBUS总线具体实现算法的方式:算法一:unsigned int calccrc(uchar crcbuf,uint crc) uchar i; crc=crc crcbuf; for(i=0;i8;i+) uchar chk; chk=crc1; crc=crc1; crc=crc&0x
38、7fff; if (chk=1) crc=crc0xa001; crc=crc0xffff; return crc; unsigned int chkcrc(uchar buf,uchar len) uchar hi,lo; uint i; uint crc; crc=0xFFFF; for (i=0;ilen;i+) crc=calccrc(buf,crc); buf+; hi=crc256; lo=crc/256; crc=(hi8)lo; return crc;文档为个人收集整理,来源于网络个人收集整理,勿做商业用途算法二:#define uchar unsigned char#defi
39、ne uint unsigned int/*/*;CRC16=X16+X15+X2+1;test:-0x01,0x04,0x04,0x42,0xC8,0x00,0x00;CRC16=0x6E02*/uintMODBUS_CRC(uchar*p,ucharn)/input:*p-FirstDataAddress,n-DataNumber/return:CRC16uchardatai;ucharR0=0xff;/SetCRC16HighucharR1=0xff;/SetCRC16Lowdoi=pR1;p+;R1=R0CRC_TABLE_Hi;R0=CRC_TABLE_Li;while(n!=0);
40、return(R0256+R1);/*ucharcodeCRC_TABLE_H256=/High0x00,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,0x