Modbus通信协议是什么?Modbus通信协议详解
一、Modbus 协议简介
Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
(相关资料图)
当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
1、在Modbus网络上转输
标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。
控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。
从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。
2、在其它类型网络上转输
在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。提供的多个内部通道可允许同时发生的传输进程。
在消息位,Modbus协议仍提供了主—从原则,尽管网络通信方法是“对等”。如果一控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。
3、查询—回应周期
(1)查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。
(2)回应
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:象寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。
二、两种传输方式
控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。
ASCII模式
: | 地址 | 功能代码 | 数据数量 | 数据1 | ... | 数据n | LRC高字节 | LRC低字节 | 回车 | 换行 |
RTU模式
地址 | 功能代码 | 数据数量 | 数据1 | ... | 数据n | CRC低字节 | CRC高字节 |
所选的ASCII或RTU方式仅适用于标准的Modbus网络,它定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和如何解码。
在其它网络上(象MAP和Modbus Plus)Modbus消息被转成与串行传输无关的帧。
1、ASCII模式
当控制器设为在Modbus网络上以ASCII(美国标准信息交换代码)模式通信,在消息中的每个8Bit字节都作为两个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。
代码系统
十六进制,ASCII字符0...9,A...F消息中的每个ASCII字符都是一个十六进制字符组成每个字节的位
1个起始位7个数据位,最小的有效位先发送1个奇偶校验位,无校验则无1个停止位(有校验时),2个Bit(无校验时)错误检测域
LRC(纵向冗长检测)
2、RTU模式
当控制器设为在Modbus网络上以RTU(远程终端单元)模式通信,在消息中的每个8Bit字节包含两个4Bit的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。
代码系统
8位二进制,十六进制数0...9,A...F消息中的每个8位域都是一个两个十六进制字符组成每个字节的位1个起始位8个数据位,最小的有效位先发送1个奇偶校验位,无校验则无1个停止位(有校验时),2个Bit(无校验时)错误检测域
CRC(循环冗长检测)三、Modbus消息帧
两种传输模式中(ASCII或RTU),传输设备以将Modbus消息转为有起点和终点的帧,这就允许接收的设备在消息起始处开始工作,读地址分配信息,判断哪一个设备被选中(广播方式则传给所有设备),判知何时信息已完成。部分的消息也能侦测到并且错误能设置为返回结果。
1、ASCII帧
使用ASCII模式,消息以冒号(:)字符(ASCII码 3AH)开始,以回车换行符结束(ASCII码 0DH,0AH)。
其它域可以使用的传输字符是十六进制的0...9,A...F。网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域)来判断是否发给自己的。
消息中字符间发送的时间间隔最长不能超过1秒,否则接收的设备将认为传输错误。一个典型消息帧如下所示:
起始位 | 设备地址 | 功能代码 | 数据 | LRC校验 | 结束符 |
1个字符 | 2个字符 | 2个字符 | n个字符 | 2个字符 | 2个字符 |
图2 ASCII消息帧
2、RTU帧
使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始。在网络波特率下多样的字符时间,这是最容易实现的(如下图的T1-T2-T3-T4所示)。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0...9,A...F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。
整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的。一典型的消息帧如下所示:
起始位 | 设备地址 | 功能代码 | 数据 | CRC校验 | 结束符 |
T1-T2-T3-T4 | 8Bit | 8Bit | n个8Bit | 16Bit | T1-T2-T3-T4 |
图3 RTU消息帧
3、地址域
消息帧的地址域包含两个字符(ASCII)或8Bit(RTU)。可能的从设备地址是0...247 (十进制)。单个设备的地址范围是1...247。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出回应。
地址0是用作广播地址,以使所有的从设备都能认识。当Modbus协议用于更高水准的网络,广播可能不允许或以其它方式代替。
4、如何处理功能域
消息帧中的功能代码域包含了两个字符(ASCII)或8Bits(RTU)。可能的代码范围是十进制的1...255。当然,有些代码是适用于所有控制器,有此是应用于某种控制器,还有些保留以备后用。
当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为。例如去读取输入的开关状态,读一组寄存器的数据内容,读从设备的诊断状态,允许调入、记录、校验在从设备中的程序等。
当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。对正常回应,从设备仅回应相应的功能代码。对异议回应,从设备返回一等同于正常代码的代码,但最重要的位置为逻辑1。
例如:一从主设备发往从设备的消息要求读一组保持寄存器,将产生如下功能代码:0 0 0 0 0 0 1 1 (十六进制03H)
对正常回应,从设备仅回应同样的功能代码。对异议回应,它返回:1 0 0 0 0 0 1 1 (十六进制83H)
除功能代码因异议错误作了修改外,从设备将一独特的代码放到回应消息的数据域中,这能告诉主设备发生了什么错误。
主设备应用程序得到异议的回应后,典型的处理过程是重发消息,或者诊断发给从设备的消息并报告给操作员。
5、数据域
数据域是由两个十六进制数集合构成的,范围00...FF。根据网络传输模式,这可以是由一对ASCII字符组成或由一RTU字符组成。
从主设备发给从设备消息的数据域包含附加的信息:从设备必须用于进行执行由功能代码所定义的所为。这包括了象不连续的寄存器地址,要处理项的数目,域中实际数据字节数。
例如,如果主设备需要从设备读取一组保持寄存器(功能代码03),数据域指定了起始寄存器以及要读的寄存器数量。如果主设备写一组从设备的寄存器(功能代码10十六进制),数据域则指明了要写的起始寄存器以及要写的寄存器数量,数据域的数据字节数,要写入寄存器的数据。
如果没有错误发生,从从设备返回的数据域包含请求的数据。如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。
在某种消息中数据域可以是不存在的(0长度)。例如,主设备要求从设备回应通信事件记录(功能代码0B十六进制),从设备不需任何附加的信息。
6、错误检测域
标准的Modbus网络有两种错误检测方法。错误检测域的内容视所选的检测方法而定。
ASCII
当选用ASCII模式作字符帧,错误检测域包含两个ASCII字符。这是使用LRC(纵向冗长检测)方法对消息内容计算得出的,不包括开始的冒号符及回车换行符。LRC字符附加在回车换行符前面。
RTU
当选用RTU模式作字符帧,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。故CRC的高位字节是发送消息的最后一个字节。
7、字符的连续传输
当消息在标准的Modbus系列网络传输时,每个字符或字节以如下方式发送(从左到右):
最低有效位...最高有效位
使用ASCII字符帧时,位的序列是:
有奇偶校验
启始位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 奇偶位 | 停止位 |
无奇偶校验
启始位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 停止位 | 停止位 |
图4. 位顺序(ASCII)
使用RTU字符帧时,位的序列是:
有奇偶校验
启始位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 奇偶位 | 停止位 |
无奇偶校验
启始位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 停止位 | 停止位 |
图4. 位顺序(RTU)
四、错误检测方法
标准的Modbus串行网络采用两种错误检测方法。奇偶校验对每个字符都可用,帧检测(LRC或CRC)应用于整个消息。它们都是在消息发送前由主设备产生的,从设备在接收过程中检测每个字符和整个消息帧。
用户要给主设备配置一预先定义的超时时间间隔,这个时间间隔要足够长,以使任何从设备都能作为正常反应。如果从设备测到一传输错误,消息将不会接收,也不会向主设备作出回应。这样超时事件将触发主设备来处理错误。发往不存在的从设备的地址也会产生超时。
1、奇偶校验
用户可以配置控制器是奇或偶校验,或无校验。这将决定了每个字符中的奇偶校验位是如何设置的。
如果指定了奇或偶校验,“1”的位数将算到每个字符的位数中(ASCII模式7个数据位,RTU中8个数据位)。例如RTU字符帧中包含以下8个数据位:1 1 0 0 0 1 0 1
整个“1”的数目是4个。如果便用了偶校验,帧的奇偶校验位将是0,便得整个“1”的个数仍是4个。如果便用了奇校验,帧的奇偶校验位将是1,便得整个“1”的个数是5个。
如果没有指定奇偶校验位,传输时就没有校验位,也不进行校验检测。代替一附加的停止位填充至要传输的字符帧中。
2、LRC检测
使用ASCII模式,消息包括了一基于LRC方法的错误检测域。LRC域检测了消息域中除开始的冒号及结束的回车换行号外的内容。
LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。
LRC方法是将消息中的8Bit的字节连续累加,丢弃了进位。
LRC简单函数如下:
1 ///C代码 2 static unsigned char LRC(auchMsg,usDataLen) 3 4 unsigned char *auchMsg ; /* 要进行计算的消息 */ 5 unsigned short usDataLen ; /* LRC 要处理的字节的数量*/ 6 7 { 8 unsigned char uchLRC = 0 ; /* LRC 字节初始化 */ 9 while (usDataLen--) /* 传送消息 */10 uchLRC += *auchMsg++ ; /* 累加*/11 12 return ((unsigned char)(-((char_uchLRC))) ;13 }
3、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添加到消息中时,低字节先加入,然后高字节。
MODBUS通讯协议及编程【二】
ModBus通讯协议分为RTU协议和ASCII协议,我公司的多种仪表都采用ModBus RTU通讯协议,如:CH2000智能电力监测仪、CH2000M电力参数采集模块、巡检表、数显表、光柱数显表等。下面就ModBus RTU协议简要介绍如下:
一、通讯协议
(一)、通讯传送方式: 通讯传送分为独立的信息头,和发送的编码数据。以下的通讯传送方式定义也与MODBUS RTU通讯规约相兼容:
编 码 | 8位二进制 |
起始位 | 1位 |
数据位 | 8位 |
奇偶校验位 | 1位(偶校验位) |
停止位 | 1位 |
错误校检 | CRC(冗余循环码) |
地址码:地址码为通讯传送的第一个字节。这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通讯传送的第二个字节。ModBus通讯规约定义功能号为1到127。本仪表只利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。
数据区:数据区是根据不同的功能码而不同。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。
CRC码:二字节的错误检测码。
(二)、通讯规约:
当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。如果出错就不发送任何信息。
1.信息帧结构
地址码 | 功能码 | 数据区 | 错误校验码 |
8位 | 8位 | N × 8位 | 16位 |
地址码:地址码是信息帧的第一字节(8位),从0到255。这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送。当从机回送信息时,相当的地址码表明该信息来自于何处。
功能码:主机发送的功能码告诉从机执行什么任务。表1-1列出的功能码都有具体的含义及操作。
代码 | 含义 | 操作 |
03 | 读取数据 | 读取当前寄存器内一个或多个二进制值 |
06 | 重置单一寄存器 | 把设置的二进制值写入单一寄存器 |
数据区:数据区包含需要从机执行什么动作或由从机采集的返送信息。这些信息可以是数值、参考地址等等。例如,功能码告诉从机读取寄存器的值,则数据区必需包含要读取寄存器的起始地址及读取长度。对于不同的从机,地址和数据信息都不相同。
错误校验码:主机或从机可用校验码进行判别接收信息是否出错。有时,由于电子噪声或其它一些干扰,信息在传输过程中会发生细微的变化,错误校验码保证了主机或从机对在传送过程中出错的信息不起作用。这样增加了系统的安全和效率。错误校验采用CRC-16校验方法。
注:信息帧的格式都基本相同:地址码、功能码、数据区和错误校验码。
2.错误校验
冗余循环码(CRC)包含2个字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接收到信息的 CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。
CRC码的计算方法是,先预置16位寄存器全为1。再逐步把每8位数据信息进行处理。在进行CRC码计算时只用8位数据位,起始位及停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与CRC码计算。
在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位移一字节,用0填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数相异或,如果最低位为0,不进行异或运算。
这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相相异或,这个过程与以上一样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为CRC码值。CRC码中的数据发送、接收时低字节在前。
计算CRC码的步骤为:
预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器;把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器;把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位;如果最低位为0:重复第3步(再次移位); 如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;重复步骤2到步骤5,进行下一个8位数据的处理;最后得到的CRC寄存器即为CRC码。3.功能码03,读取点和返回值:
仪表采用Modbus RTU通讯规约,利用通讯命令,可以进行读取点(“保持寄存器”) 或返回值(“输入寄存器” )的操作。保持和输入寄存器都是16位(2字节)值,并且高位在前。这样用于仪表的读取点和返回值都是2字节。一次最多可读取寄存器数是60。由于一些可编程控制器不用功能码03,所以功能码03被用作读取点和返回值。从机响应的命令格式是从机地址、功能码、数据区及CRC码。数据区中的寄存器数据都是每两个字节高字节在前。
4.功能码06,单点保存
主机利用这条命令把单点数据保存到仪表的存储器。从机也用这个功能码向主机返送信息。
二、编程举例
下面是一个用VC编写的ModBus RTU通讯的例子
(一)、通讯口设置
1 DCB dcb; 2 3 hCom=CreateFile("COM1", 4 GENERIC_READ|GENERIC_WRITE, 5 0, 6 NULL, 7 OPEN_EXISTING, 8 0, 9 NULL);10 11 if(hCom==INVALID_HANDLE_VALUE)12 {13 MessageBox("createfile error,error");14 }15 16 BOOL error=SetupComm(hCom,1024,1024);17 18 if(!error)19 MessageBox("setupcomm error");20 21 error=GetCommState(hCom,&dcb);22 23 if(!error)24 MessageBox("getcommstate,error");25 26 dcb.BaudRate=2400;27 dcb.ByteSize=8;28 dcb.Parity=EVENPARITY;//NOPARITY;29 dcb.StopBits=ONESTOPBIT;30 error=SetCommState(hCom,&dcb);
(二)、CRC校验码计算
1 UINT crc 2 3 void calccrc(BYTE crcbuf) 4 { 5 BYTE i; 6 7 crc=crc ^ crcbuf; 8 for(i=0;i<8;i++) 9 {10 BYTE TT;11 TT=crc&1;12 crc=crc>>1;13 crc=crc&0x7fff;14 if (TT==1)15 crc=crc^0xa001;16 crc=crc&0xffff;17 }18 }
(三)、数据发送
1 zxaddr=11;//读取地址为11的巡检表数据 2 3 zxnum=10;//读取十个通道的数据 4 5 writebuf2[0]=zxaddr; 6 writebuf2[1]=3; 7 writebuf2[2]=0; 8 writebuf2[3]=0; 9 writebuf2[4]=0;10 writebuf2[5]=zxnum;11 crc=0xffff;12 calccrc(writebuf2[0]);13 calccrc(writebuf2[1]);14 calccrc(writebuf2[2]);15 calccrc(writebuf2[3]);16 calccrc(writebuf2[4]);17 calccrc(writebuf2[5]);18 19 writebuf2[6]=crc & 0xff;20 writebuf2[7]=crc/0x100;21 WriteFile(hCom,writebuf2,8,&comnum,NULL);
(四)、数据读取
1 ReadFile(hCom,writebuf,5+zxnum*2,&comnum,NULL);//读取zxnum个通道数据
可增加错误处理程序,如地址码错误、CRC码错误判断、通讯故障处理等。
(五)、CRC简单函数
1 unsigned short CRC16(puchMsg, usDataLen) 2 unsigned char *puchMsg ; /* 要进行CRC校验的消息 */ 3 unsigned short usDataLen ; /* 消息中字节数 */ 4 5 { 6 unsigned char uchCRCHi = 0xFF ; /* 高CRC字节初始化 */ 7 unsigned char uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */ 8 unsigned uIndex ; /* CRC循环中的索引 */ 9 10 while (usDataLen--) /* 传输消息缓冲区 */11 {12 uIndex = uchCRCHi ^ *puchMsgg++ ; /* 计算CRC */13 uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;14 uchCRCLo = auchCRCLo[uIndex] ;15 }16 17 return (uchCRCHi << 8 | uchCRCLo) ;18 }19 20 /* CRC 高位字节值表 */21 static unsigned char auchCRCHi[] = {22 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,23 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,24 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,25 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,26 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,27 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,28 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,29 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,30 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,31 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,32 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,33 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,34 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,35 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,36 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,37 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,38 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,39 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,40 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,41 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,42 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,43 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,44 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,45 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,46 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,47 0x80, 0x41, 0x00, 0xC1, 0x81, 0x4048 } ;49 50 /* CRC低位字节值表*/51 static char auchCRCLo[] = {52 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,53 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,54 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,55 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,56 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,57 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,58 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,59 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,60 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,61 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,62 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,63 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,64 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,65 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,66 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,67 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,68 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,69 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,70 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,71 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,72 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,73 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,74 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,75 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,76 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,77 0x43, 0x83, 0x41, 0x81, 0x80, 0x4078 } ;
文章转载来自:https://www.cnblogs.com/DreamRecorder/p/9081127.html
标签:
相关推荐:
精彩放送:
- []fm2015是什么?fm2010战术
- []Trans系列是啥?基于翻译模型(Trans系列)的知识表示学习
- []尼康d800与d810哪个好?尼康d800与d810有哪些区别?
- []【环球播资讯】12月8日天元股份涨停分析:可降解塑料,包装印刷概念热股
- []每日快播:12月8日焦点科技涨停分析:跨境电商,职业教育,教育概念热股
- []12月8日千红制药涨停分析:肝素,化学原料药,抗原自测概念热股
- []当前焦点!歉疚的意思是什么?歉疚一词详情介绍
- []西米是什么米?西米露和西米是一样的吗?
- []兴民智通:公司目前不触及 st 相关条款
- []世界顶级昂贵音响有哪些?世界顶级昂贵音响介绍
- []世界今日报丨如何正确使用系统清理bat程序?清理bat程序的方法技巧
- []【世界热闻】12月8日国光连锁涨停分析:新零售概念热股
- []头条焦点:文章目录是什么?选择排序怎么设置?
- []世界微资讯!网络的利与弊是什么?网络的利弊分析
- []天天快资讯丨吸血鬼狂刀技能搭配详情 吸血鬼狂刀攻略)
- []世界动态:磁条读写器多少钱?磁条读写器使用方法介绍
- []Modbus通信协议是什么?Modbus通信协议详解
- []世界关注:iPad Air(iPad5)什么时候上市?iPad Air(iPad5)的上市时间
- []安徽大专学校推荐!安徽大专院校排名前十详细介绍含分数线
- []环球快资讯:铅球世界纪录2019 女子男子铅球世界纪录分别是多少?
- []热门看点:分析宾得645d怎么样?宾得公司详情介绍
- []焦点播报:程子土包子来的时候歌厅的dj叫什么名字?海燕KTV
- []世界视讯!信号的基本概念是什么?信号的分类有哪些?
- []环球实时:电脑电源额定功率要多少才合适?电脑电源的额定功率
- []全球快消息!4399生死狙击万人号账号2021 4399生死狙击好号和密码免费永久2021
- []焦点讯息:OneNote是什么?OneNote的功能有哪些?
- []世界今头条!多普达手机都有哪些型号?多普达最新手机大全详情
- []挥着翅膀的女孩英文版叫什么?挥着翅膀的女孩英语版歌词翻译
- []lol怎么在游戏里回复好友?lol游戏回复技巧
- []今日精选:碧海青天的意思是什么?碧海青天一词出自哪里?
- []世界信息:图片或手写签名转电子签名怎么转?手写签名转电子签名教程
- []世界要闻:44岁贾静雯出席活动耳朵被烫伤 修杰楷很是心疼
- []当前视点!手机QQ接收电脑端好友发送的文件存储在什么地方?手机文件储存路径
- []天天速读:语义分割:基于openCV和深度学习(二)
- []支付宝网上银行如何付款?网上银行付款操作流程
- []天天微头条丨用VC6.0实现上位机串口通信
- []全球速看:宝宝毛衣怎么编织?宝宝毛衣编织图解
- []魂锁典狱长二技能怎么用?lol魂锁典狱长背景以及皮肤介绍
- []基础版本的基础版本 直方图均衡化系列
- []天天观速讯丨用身份证办的移动手机号码可以跨省改归属地吗?是不可以的
- []摄像头远程监控步骤是什么?手机远程监控摄像头设置方法
- []Android中LayoutParams是什么?Android中LayoutParams总结和用法
- []歌词里有我真的很不错是什么儿歌?歌词我真的很不错是什么儿歌?
- []全球新资讯:会议panel是什么意思?医学术语中的panel到底是指什么?
- []当前动态:颜料墨水和染料墨水的区别是什么?颜料墨水和染料墨水简介
- []支付宝阿里巴巴货到付款如何交易?货到付款交易流程
- []天天即时看!优麒麟社区懒人版本(含软件全家桶) 怎么一键安装?
- []ssm大学生兼职论坛是什么?大学生兼职有哪些?
- []看热讯:三星N8010如何设置屏幕锁定图案?三星N8010屏幕锁定图案
- []天天视讯!浪漫主义时期的音乐有哪些?浪漫主义乐派是什么?
- []环球今日报丨美国多灵门锁怎么安装?美国多灵门锁安装步骤
- []快资讯丨摄氏度和开氏度的换算 开氏度和摄氏度的换算公式
- []Photoshop中图层混合模式是什么?ps中图层混合模式包括哪些?
- []天天时讯:倒车雷达哪个品牌好?汽车倒车雷达品牌及价格介绍
- []天天时讯:用VC6.0怎么实现上位机串口通信?位机串口通信的设置方法
- []怎么设置交换机?计算机交换机连接设置方法
- []微特微电机怎么样?微特微电机怎么操作?
- []每日快报!粘胶短纤维市场现状是什么?粘胶短纤维的未来发展趋势
- []数据结构试题有哪些?数据结构试题及评分解析
- []当前速讯:mysql置疑原因是什么?数据库置疑的处理办法
- []java中flypaper怎么使用?Java 基础接口fly
- []热议:c语言餐桌游戏有哪些?教会你这十款酒桌游戏让你在朋友圈稳站“C”位!
- []全球视讯!专升本英语重要知识点补充 英语全部知识点详情介绍
- []每日消息!CSS:好玩的‘伪类’系列之——(:only-child与:only-of-type) 例子说明
- []招行信用卡荣获“2022年度金质信用卡天玑奖”
- []“快闪”成都,五粮浓香兔年生肖酒打响旺季攻势、抢跑“春节档”!
- []挑选运动耳机不踩雷!一篇文章告诉你想知道的所有
- []全球观点:【东海期货12月8日宏观金融日报】:国内疫情防控措施进一步优化
- []中信建投期货12月8日早间交易策略
- []视讯!苏州高新发行3亿元超短期融资券 利率2.48%
- []焦点信息:央行:支持房地产市场平稳健康发展 用好“保交楼”专项借款加大对房企贷款投放力度
- []锋龙股份:公司首发募集资金和可转债募集资金投资项目正按项目计划在紧锣密鼓地建设和筹备工作中
- []科恒股份:公司的主营业务为锂电智能装备及锂离子正极材料,没有涉足下游电芯制造
- []世界速看:普洛斯仓储物流封闭式基础设施公募REITs状态更新为“已反馈”
- []世界热文:ST爱迪尔:公司负债及现金流情况详见公司最新定期报告
- []【热闻】雅居乐集团与农行广东分行签约 后者在同等条件下优先为雅居乐提供必要综合融资服务
- []广州知识城携北京华瑞锦泰以3.07亿元竞得广州黄埔区一宗商地
- []骏成科技:此轮疫情对公司的生产以及业绩影响不大,从公司公布的三季报数据可见
- []成人补钙吃什么钙片好?金丐醋酸钙科学补钙更轻松
- []环球今亮点!深圳峰汇创投发展拟转让长兴中建投38.5%股权 底价1.62亿元
- []重庆轮船集团挂牌宜宾天港物流40%股权及债权 转让底价为199万元
- []侨银股份新增投资霸州侨银环保科技 持股比例100%
- []华发股份:公司已披露定增预案,具体内容详见公司于12月6日上海证券交易所网站披露的公告
- []一起教育科技发布2022年三季度财报:业绩稳中向好,连续四个季度实现盈利
- []全球观天下!安徽滁州超29亿元成交九宗地块 总出让面积848亩
- []长春3.86亿元挂牌5宗地 总出让面积37.28万平米
- []当前快讯:珍宝岛:公司的参股公司安徽九洲方圆制药有限公司有饮片业务,据了解,目前业务规模营收亿元左右
- []全球快消息!海航科技与天津信托和解
- []当前速讯:卖地发工资的逻辑
- []全球视讯!“三支箭”出弓地产度过“最难时光”?43只地产债大幅反弹近一月涨幅翻倍
- []互联网巨头也要跨界储能?
- []当前消息!1000000000元!环保龙头成立电池储能公司
- []机会?蔚蓝锂芯电池生产线改造投产
- []全球时讯:3分钟!电池储能安全问题解决了?
- []什么是分布式储能?分布式储能系统有哪些功能?
- []环球报道:自费社保一年需交多少 社保自费一年得交多少钱
- []微资讯!从上海离职了怎么把公积金取出来,可分为三个步骤
- []天天滚动:青竹画材科创板IPO进程终止:原计划募资4亿元,刘其通为控股股东
- []【全球新视野】中国电气装备集团12.84亿元上海静安拿地 将建总部大楼
- []当前报道:德国股市收低;截至收盘DAX 30下跌0.57%
- 场景化营销精准发力 钱小乐持续优化金融服务质效
- 环球热头条丨Excel函数之VLOOKUP()怎么使用?一文搞懂Excel函数之VLOOKUP()使用
- 天天微头条丨disable怎么运用?disable简单易理解用法
- 环球快报:格式化时间是什么?抽象类DateFormat是什么?
- 焦点消息!诛仙3新手卡怎么领取?诛仙3新手卡领取中心
- 天天要闻:主板测试卡代码a2是什么?主板测试卡代码 常见代码总结
- 环球百事通!国产搞笑电视剧排行榜你看过几个?爱情公寓只能排倒数第三
- 【世界快播报】工厂模式是什么?工厂模式的详解
- 世界通讯!黄淮学院最低录取分数线是多少?2022文理科最低分及位次
- 速看:歌名最长的网络歌曲是什么?歌名最长的中文歌
- 每日消息!保险公司的分类
- 养老保险能退吗
- 天天热点!公积金绑定哪个银行卡 公积金绑定的是哪个银行卡
- 央行营业管理部:加大对房地产企业和建筑企业的贷款投放力度
- 环球快消息!一笔关联交易 建发国际“低价”购入上海闵行两宗地
- 朗进科技:公司未参与沙特的“The Line”未来城市项目
- 简讯:中梁控股1月至11月合约销售额620亿元 销售面积594万平
- 朗进科技:12月6日公司高管张进、张永利减持公司股份合计1.2万股
- 环球新消息丨数码视讯:12月6日公司高管郑海涛减持公司股份合计8万股
- 世界今日讯!科华数据:12月6日公司高管林清民增持公司股份合计7300股
- 当前焦点!美瑞新材:12月6日公司高管任光雷减持公司股份合计10万股
- 每日看点!容知日新5名股东合计减持201.64万股 套现2.23亿 2022年前三季度公司净利4470.9万
- 每日热文:德信中国1-11月合约销售金额约336亿元
- 信息:海航投资将延期至12月21日前回复深交所半年报问询函
- 【世界新视野】福州1-9月累计住房公积金提取72亿 为23风险楼盘放款4.23亿
- 【环球时快讯】光大地产至11月底接近4000套房屋全部提前交付
- 宣泰医药提示风险 熊去氧胆酸胶囊产品不涉及新冠病毒防治
- 世界短讯!道通科技:12月2日詹金勇减持公司股份合计8750股
- 今日聚焦!珀莱雅:12月6日公司高管方玉友减持公司股份合计24万股
- 今日报丨ST宏达实控人被证监会拟罚1000万元 律师明确可索赔区间
- 远洋集团11月协议销售额108.6亿 前11月累计销售895亿元
- 财面儿|金地商置与金地集团续订两个服务协议 自明年1月1日起生效
- 快看点丨财面儿丨中国金茂1-11月累计取得签约销售金额共1374.8亿元
- 每日头条!粤水电:公司本次重组已取得中国证监会的核准批复,相关工作正在进行当中
- 每日动态!上坤地产:2022年前11个月合约销售额约79.2亿元
- 全球热讯:财面儿|金地“21金地MTN007”将于12月15日偿付利息6060万元
- 旭辉控股集团前11月合同销售1175.9亿元
- 天天消息!二手房周报 | 15城成交再降8%,京蓉等皆不及年内周均(11.28-12.4)
- 韦尔股份:公司会一如既往的努力加强经营管理,努力做好经营,提升公司竞争力,实现稳定的业绩增长回馈股东
- 今日播报!宜昌城发地产底价29.6亿竞得宜昌市伍家岗4宗地块
- 香港11月底官方外汇储备资产增加60亿美元
- 全球微资讯!中天金融:公司逾期债务对应的担保余额15.1亿元
- 新华都:北京重力久致科技有限公司将在经营范围内开展工作
- 武商集团:公司目前仅在南昌有酒店项目
- 天天热消息:江苏无锡支持“外摆位” 打造“夜市经济”
- 快看:印度股市年均回报率接近20%,IT、材料、工业等行业回报率高
- 国际航协:全球航空业今年亏损收窄,明年将回归盈利
- 头条:龙光集团境内债整体展期获得通过 累计展期规模超223亿元
- 环球今头条!上海中海物业因未履行二次供水水质检测等被处罚6000元
- 环球焦点!沃森生物:公司在研新冠疫苗项目均在努力推进上市进程,公司将根据临床进度和数据情况开展上市申报
- 全球快讯:英飞拓:公司暂未开展与卡塔尔世界杯足球赛相关业务
- 天天快资讯丨上坤地产:前11月合约销售金额约为79.2亿元
- 讯息:世茂股份:1-11月销售签约金额约86亿,销售签约面积约66万平方米
- 环球速看:2023年楼市怎么走,房价涨不涨?最早一份机构预测出炉
- 环球观速讯丨九丰能源:目前,公司境外主要货源地在马来西亚、印度尼西亚、澳大利亚、卡塔尔等地,气源供应优质、稳定
- 天天讯息:天虹股份:可以通过天虹APP及天虹小程序购买天优酱酒
- 环球微头条丨风能相关上市公司有哪些?风能上市公司龙头有哪些?
- 盐上市公司有哪些?相关上市公司龙头一览?
- 全球热门:安防概念股票有哪些?安防概念股龙头有哪些?
- 【环球新要闻】2021年地热概念股有哪些?相关地热概念股一览?
- 腾讯上市公司股票有哪些?相关腾讯上市公司有哪些?
- 龙光成第二家境内债整体展期房企 展期规模约220亿元
- 2021年超导概念股有哪些?超导概念龙头股一览?
- 全球视讯!安科生物股票今天多少钱一股?安科生物股票代码是多少?
- 讯息:2021年铜龙头概念股有哪些?铜概念股一览?
- 化纤行业板块上市公司有哪些?2021年化纤行业板块股票一览?
- 环球播报:雄安股票有哪些?相关雄安概念股票有哪些?
- 2021年新冠核酸上市公司龙头股票有哪些?2021年新冠核酸概念股有哪些?
- 2021年农林牧渔板块龙头股有哪些?股票代码是多少?
- 环球关注:万里扬: 公司在浙江省的独立储能电站项目都在正常推进中
- 人民币贬值受益股有哪些?人民币贬值板块股票2020一览?
- 【全球新要闻】煤炭股票有哪些?煤炭概念股一览?
- 哪些是智能手表概念股?智能手表概念股名单一览?
- 高新兴股票价格是多少?高新兴公司经营范围有哪些?
- 焦点热讯:橡胶V带概念股票有哪些?橡胶V带概念股一览?
- 微动态丨石墨烯上市公司股票有哪些?石墨烯上市公司龙头一览?
- 【天天报资讯】OLED概念股有哪些?相关OLED概念股一览?
- 【热闻】永太科技:公司以含氟技术为核心,在氟苯精细化学品领域发展多年,产品种类繁多
- 水泥概念龙头股有哪些?水泥概念股有哪些?
- 环球热消息:中国铁建拟发行22亿元中期票据用于偿还到期债务
- 世界聚焦:ST宏达:公司目前尚未达到撤销其他风险警示的条件,相关事项请关注公司后续披露
- 国际金价下方支撑仍看向1758美元
- 天天看热讯:美原油交易策略:供给过剩担忧升温,油价或剑指70关口
- 天天资讯:数据 | 我国国际航线旅客量创疫情3年新高,但航班量相比全球仍处较低水平
- 世界快资讯:现货黄金交易策略:逢低买盘支撑金价,但下行压力依然较大
- 天天观点:内部收益率54.56% 联泓新科碳酸酯锂电材料项目将于月底前中交
- 全球通讯!华富储能股东江苏华富股份被司法冻结 占公司总股本11.96%
- 今日讯!一张图:交易品种枢纽点+多空占比一览(2022/12/07周三)
- 今日精选:里程碑丨热烈庆祝阿诗特能源第十万台户用储能电池模组下线!
- 【世界快播报】南瑞继保助力国家电投西藏5站光伏增配储能保供任务
- 当前观察:元旦假期公布,旅游平台机票、酒店搜索应声上涨超6倍
- 世界观速讯丨中国机场数字化转型的现实难题
- 天天快报!贵州山东杭州等地取消落地检,热门景区酒店还查核酸吗?
- 德银称近期金价可能测试1750美元支撑,2023年料相对稳定!
- 每日热文:各地优化疫情防控措施带动出游热,旅游产业链全面恢复尚需时间
- 丰原药业:注射用尿促性素属于促性腺激素药物
- 环球快资讯:12月7日如意集团涨停分析:抗菌面料,纺织服装,防护服概念热股
- 世界热讯:12月7日民和股份涨停分析:养鸡,大农业概念热股
- 4700米!融和元储助力世界海拔最高的储能电站并网投运
- 每日速读!境内债整体展期获得通过,龙光将回归良性健康发展轨道
- 【当前热闻】12月7日力合科创涨停分析:新冠病毒防治,医疗器械,碳基材料概念热股
- 江山经开区发展1.13亿元竞得衢州江山1宗商住用地
- 实时焦点:安澜城建3.68亿元竞得舟山岱山县1宗商住用地
- 方远房地产7.62亿元竞得台州三门县1宗商住用地 溢价率12.06%
- 环球关注:首开股份50亿元公司债券已获上交所受理
- 郭广科院长医美科普为什么有些隆胸术后会很假?
- 环球精选!12月7日汉王科技涨停分析:基因测序,流感/口罩,医疗信息化概念热股
- 55%看好杭州楼市!贝壳研究院发布购房者置业信心报告
- 北京煤医田秋梅:想咨询“花蕊私密整形”又羞于启齿?
- 北京嘉佩乐医院靠谱吗 正规可靠、保护患者就医权益