modebus协议教程无数次

上传人:枫** 文档编号:459464113 上传时间:2022-08-23 格式:DOCX 页数:13 大小:32.57KB
返回 下载 相关 举报
modebus协议教程无数次_第1页
第1页 / 共13页
modebus协议教程无数次_第2页
第2页 / 共13页
modebus协议教程无数次_第3页
第3页 / 共13页
modebus协议教程无数次_第4页
第4页 / 共13页
modebus协议教程无数次_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《modebus协议教程无数次》由会员分享,可在线阅读,更多相关《modebus协议教程无数次(13页珍藏版)》请在金锄头文库上搜索。

1、在本章主要讲述如何利用软件通过通讯口来操控该系列仪表。本章内容的掌握需 要您具有 MODBUS 协议的知识储备并且通读了本册其它章节所有内容,对本产 品功能和应用概念有较全面了解。本章内容包括:MODBUS协议简述,通讯应用格式详解,本机的应用细节及参 量地址表。1.1 MODBUS 协议简述ACRXXXE系列仪表使用的是MODBUS-RTU通讯协议,MODBUS协议详细定 义了校验码、数据序列等,这些都是特定数据交换的必要内容。MODBUS协议 在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线 上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端 设备

2、(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。MODBUS协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许 独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯 线路,而仅限于响应到达本机的查询信号。1.2 查询回应周期1.2.1 查询 查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设 备要执行功能的任何附加信息。例如功能代码 03 是要求从设备读保持寄存器并 返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要 读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。1.2.2 回应如果从

3、设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能 代码的回应。数据段包括了从设备收集的数据:如寄存器值或状态。如果有错误 发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述 此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。1.3 传输方式 传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规 则,下面定义了与MODBUS协议- RTU方式相兼容的传输方式。 每个字节的位: 1个起始位 8个数据位,最小的有效位先发送 无奇偶校验位 1 个停止位错误检测(Error check in g): CRC (循环冗余校验)1.4 协议当数据

4、帧到达终端设备时,它通过一个简单的端口”进入被寻址到的设备,该设 备去掉数据帧的信封”(数据头),读取数据,如果没有错误,就执行数据所请 求的任务,然后,它将自己生成的数据加入到取得的信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行 了的命令(Fu nctio n)、执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功的响应,或者返回一个错误指示帧。1.4.1数据帧格式Address Function Data Check8-Bits 8-Bits N x 8-Bits16-Bits1.4.2 地址(Ad

5、dress )域地址域在帧的开始部分,由一个字节(8位二进制码)组成,十进制为0255, 在我们的系统中只使用1247,其它地址保留。这些位标明了用户指定的终端设 备的地址,该设备将接收来自与之相连的主机数据。每个终端设备的地址必须是 唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。当终端发送回一个响 应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。1.4.3 功能(Function)域功能域代码告诉了被寻址到的终端执行何种功能。下表列出了该系列仪表用到的功能码,以及它们的意义和功能。代码意义行为03读数据寄存器获得一个或多个寄存器的当前二进制值16预置多寄存器设定二进制值到一

6、系列多寄存器中(不对ACRXXXE 开放)1.4.4数据(Data)域数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数 据。这些数据的内容可能是数值、参考地址或者设置值。例如:功能域码告诉终 端读取一个寄存器,数据域则需要指明从哪个寄存器开始及读取多少个数据,内 嵌的地址和数据依照类型和从机之间的不同内容而有所不同。1.4.5 错误校验(Check )域该域允许主机和终端检查传输过程中的错误。有时,由于电噪声和其它干扰,一 组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校 验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高 了系统的

7、安全性和效率,错误校验使用了 16位循环冗余的方法(CRC16)。1.5 错误检测的方法错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算 CR C 值,然后与接收到的 CRC 域中的值进行比较,如果这两个值不相等,就发生 了错误。CRC运算时,首先将一个16位的寄存器预置为全1,然后连续把数据帧中的每 个字节中的 8 位与该寄存器的当前值进行运算,仅仅每个字节的 8 个数据位参 与生成CRC,起始位和终止位以及可能使用的奇偶位都不影响CRC。在生成CRC 时,每个字节的 8 位与寄存器中的内容进行异或,然

8、后将结果向低位移位, 高位则用-(补充,最低位(LSB)移出并检测,如果是1该寄存器就与一个预 设的固定值(0A001H)进行一次异或运算,如果最低位为0,不作任何处理。 上述处理重复进行,直到执行完了 8次移位操作,当最后一位(第 8位)移完 以后,下一个 8 位字节与寄存器的当前值进行异或运算,同样进行上述的另一个 8次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是 CR C 值。生成一个 CRC 的流程为:1 预置一个16位寄存器为0FFFFH (全1),称之为CRC寄存器。2 把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运 算,结果存回CRC寄存器。3

9、将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。4 如果最低位为0:重复第三步(下一次移位);如果最低位为1:将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。5 重复第三步和第四步直到8次移位。这样处理完了一个完整的八位。6 重复第 2 步到第 5 步来处理下一个八位,直到所有的字节处理结束。7 最终CRC寄存器的值就是CRC的值。此外还有一种利用预设的表格计算CRC的方法,它的主要特点是计算速度快, 但是表格需要较大的存储空间,该方法此处不再赘述,请参阅相关资料。1.6 通讯应用格式祥解本节所举实例将尽可能的使用如图所示的格式,(数字为 16进制)。AddrFunDa

10、ta start regData start regData #of regs hiData #of regs loCRC16 loCRC16hihilo01H03H00H00H00H03H05HCBHAddr :从机地址Fun:功能码Data start reg hi:数据起始地址寄存器高字节Data start reg Io:数据起始地址寄存器低字节Data #of reg hi:数据读取个数寄存器高字节Data #of reg Io:数据读取个数寄存器低字节CRC16 Hi: 循环冗余校验 高字节CRC16 L 循环冗余校验 低字节1.6.1读数据(功能码 03)I 查询数据帧此功能允许

11、用户获得设备采集与记录的数据及系统参数。主机一次请求的数据个 数没有限制,但不能超出定义的地址范围。下面的例子是从01号从机读3个采集到的基本数据(数据帧中每个地址占用2个字节)UA、UB、UC,其中UA的地址为0025H, UB的地址为0026H, UC 的地址为 0027H。Addr Fun Data startDatastartData#of Data #of CRC16 IoCRC16 hi Addr hi Addr Io regs hi Regs Io01H03H00H25H00H03H14H00HI 响应数据帧 响应包含从机地址、功能码、数据的数量和CRC错误校验。F面的例子是读取

12、 UA、UB、UC (UA=082CH, UB=082AH, UC=082CH 的响应。AddrFunByteData1Data1Data2Data2Data3Data3CRC16CRC16counthilohilohilolohi01H03H06H08H2CH08H2AH08H2CH94H 4EHl错误指示码如果主机请求的地址不存在则返回错误指示码:FFH。1.6.2预置多寄存器(功能码16,不对ACRXXXE开放)l 查询数据帧功能码 16 允许用户改变多个寄存器的内容,该仪表中系统参数、开关量 输出状态等可用此功能号写入。主机一次最多可以写入 16 个(32 字节)数据。下面的例子是预置

13、ACR220EK、ACR320EFK及ACR420EK地址都为1时同时输出开关量Do1和Do2。DataDataDataDataAddr Fun Start regstart#of#ofhireg loregs hiregs lo01H 10H00H22H00H01HACR420EK:DataDataDataDataAddr Fun Start regstart#of#ofhireg loregs hiregs lo01H 10H00H22H00H01HACR220EK:ACR320EFK:Bytecount02 HValue Value CRCCRChiD2Hhi30Hlo00HloB4HB

14、ytecountValue ValueCRCCRChilolohi02 HC0H00HF0HD2HAddrFunData Startreg hiDatastart regloData #ofData #ofregs hi regs loValuehiValue CRC loCRC hilo01H 10H00H05H00H01H00H C0H 0DH 96H响应数据帧对于预置单寄存器请求的正常响应是在寄存器值改变以后回应机器地址、功能 号、数据起始地址、数据个数(ACR320EFK为数据字节数)、CRC校验码。如图。ACR220EK 和 ACR420EK:Data DataAddr Fun01H 10HData start Data start reg Data Data CRC16 CRC16 #of regs#of regsreg hi lo lo hihi lo00H22H00H01H A1H C3HACR320EFK:Addr01HData start reg Data start regCRC16 CRC16FunBytecounthi lo lo hi 10H00H05H02H 9FH 91Hl 错误指示码如果主机请求的地址不存在或数据个数不正确则返回错误指示码

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号