modbus协议的分析与研究.docxVIP

  • 1
  • 0
  • 约2.97千字
  • 约 4页
  • 2023-09-10 发布于广东
  • 举报
modbus协议的分析与研究 0 基于转变的必要性通信 《洛马条约》是工业控制领域最普遍、最公开的通信协议之一,得到了许多制造商的支持。通过Modbus协议,不同厂商的设备可以方便地连成工业网络,进行相互通信。目前,Modbus协议已经成为我国工业自动化网络协议规范的国家标准之一,国内许多厂商的产品或系统均支持该协议。 Modbus协议采用主从应答式通信,详细规定了主、从设备的通信行为,定义了设备能够识别和使用的报文结构。该协议规定网络中只能有一个通信主设备(主站),其他设备均为通信从设备(从站)。通信必须由主站发起,各从站通过地址来识别属于自己的查询信息并进行响应。 Modbus协议有2种传输模式,即ASCII和RTU模式。两者相比,RTU模式要求数据连续传输,且字节传输效率高,更适用于测控系统中数据的实时传输。本文即以RTU从站模式为例,介绍Modbus协议的软件设计方法。 1 基本功能码的作用 RTU模式下,主站查询报文和从站响应报文遵循的报文结构如图1所示。需要说明的是,RTU模式通过通信空闲时间来区分报文,这一时间长度为传输3.5B所需要的时间。而在报文传输期间,内部空闲间隔则不允许超过1.5B的静止时间,否则将导致报文错误。 在Modbus协议中,从站通过地址码来识别属于自己的查询报文,并通过功能码来确定应执行的动作。Modbus协议定义了20多个功能码,例如,功能码03定义为主站读取从站中的数据,当从站收到这一报文后,就要把主站所要求的寄存器内容发送给主站,如表1、表2所示。再比如功能码16,其定义为主站向从站写数据,当从站收到这一报文后,就要用主站发来的数据替换掉对应寄存器中原有的数据。具体是哪些寄存器进行响应、寄存器的数量、更新的数据等附加信息都在查询报文的数据域中予以说明。报文检错采用循环冗余校验码CRC-16。 2 硬件配置 2.1 记录读取设备设置 首先应设定通信口的数据传输格式。MSP430单片机中相关的寄存器包括UxCTL控制寄存器、UxTCTL发送控制寄存器、UxRCTL接收控制寄存器、UxBR0、UxBR1波特率选择寄存器、UxMCTL波特率调整控制寄存器、ME1通信使能寄存器。按照下述要求分别设置:异步通信模式;线路空闲多机协议;8个数据位、无奇偶校验、2个停止位;通信波特率为9 600bit/s;开通信口发送、接收功能;开接收中断、禁止发送中断。其他如时钟信号的选择等可根据具体硬件系统自行设定。 2.2 时钟的控制和运行 定时器用于空闲间隔定时,以便区分报文。根据使用的字符结构和波特率,可以很容易计算出传输3.5 B的时间长度。如果定时器的时钟源为1.843 2MHz,波特率为9 600bit/s,数据格式为8N2,那么空闲间隔Tidle=1843200 Hz÷9600bit/s×11×3.5B-1=7391s。 通过MSP430单片机内部集成的定时器Timer A可方便地实现定时任务。将定时器设定为连续计数模式,通过定时计数器TAR和比较器TACCR0来实现定时。 3 通信流程 RTU从站的通信流程按先后顺序分为4个过程:接收、收转发、发送、发转收。 3.1 国家报文接收 RTU从站不能主动发起通信,从站的通信流程必须从接收报文开始。在接收过程中,从站接收所有报文,直到收到查询自己的报文为止,然后转向下一个通信过程(收转发过程)。 接收包括字节接收和报文接收。两者都是以中断方式进行。 字节接收的处理过程如图2所示。每收到一个字节就重新启动空闲间隔定时,以确定该字节是否是报文的最后一个字节。定时方法:允许CCR0中断,把TAR的当前值加上Tidle赋给TACCR0。 报文接收过程如图3所示。当确定接收完一个报文后(接收完最后一个字节并经过了3.5B的延时)才启动该过程。该过程负责判断从站是否应该接收该报文。判断项目包括地址码、功能码、校验字节等。判断的目的是确定是否是查询自己的报文(并且报文正确)。如果是,则在该过程最后置标志位,提示CPU转向下一个通信过程;否则仍然保持接收状态,继续接收随后的报文。 3.2 主站对比文的解析和提取 在收转发过程中,从站需要完成的任务是按照协议对报文进行解包、打包。为了减少中断对CPU的占用,将收转发的切换过程编制为一个子程序,由“收转发”标志来决定是否调用。其处理过程如图4所示。 首先对接收到的主站查询报文进行解析,也就是从站需要确定自己应该执行哪些动作。主站查询报文的存放位置是由用户程序指定的,参照表1就可以知道每个字节的含义。这样用户程序便可以提取出功能码、主站要查询的寄存器序号和数量等动作信息,由此从站就能知道该把哪些寄存器的数据发送给主站,这就是解包的过程。 之后,从站按照动作要求提取主站需要的寄存器数据,按照表2的格式组织响应报文,也就是报文打

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档