第一篇 串行链路上MODBUS协议应用简介
Modbus 是由Modicon(现在的施耐德电气公司)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。Modbus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、也包括软件。Modbus 协议是应用于电子控制器上的一种通信语言。通过此协议,控制器互相之间、控制器经由网络和其它设备之间可以通信。它已经成为一通用工业标准。不同厂商生产的控制设备可以连成工业网络,进行集中监控。
Modbus可以在基于串行链路和以太TCP/IP网络上进行通信。串行链路和 TCP/IP 上的 Modbus 是根据相应 ISO 层模型说明的两个通信规程。
下图强调指出了该标准的主要部分。绿色方框表示规范。灰色方框表示已有的国际标准。
01 传输模式
本文主要介绍在基于串行链路上常用的两种传输模式(ASCII和RTU),Modbus 串行链路协议是一个主-从协议,在同一时刻,只有一个主节点,一个或多个子节点连接于同一串行总线。子节点不会主动发送数据,只有在收到来自主节点的请求时才会发送,主节点在同一时刻只会发起一个Modbus事务处理。
为了方便理解,我们将主节点以及子节点分别称为主设备和从设备。
主设备可单独与从设备通信,也能以广播方式和所有从设备通信。如果是单独通信,从设备返回消息作为回应;如果是广播方式查询的,则不作任何回应。
当数据帧到达终端设备(从设备)时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址、被执行了的命令、执行命令生成的被请求数据和一个校验码。发生任何错误都不会有成功的响应,或者返回一个错误指示帧。
Modbus总线拓扑结构
02 MODBUS消息帧
Modbus 协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的 Modbus 协议映射能够在应用数据单元(ADU)上引入一些附加域。
通用MODBUS帧
用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个 Modbus 网络上所有设备都必须选择相同的传输模式和串口参数。
两种模式分类
ASCII消息帧结构
RTU消息帧结构
所选的 ASCII 或 RTU 方式仅适用于标准的 Modbus 网络,它定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和如何解码。
地址域在帧的开始部分,由一个字节(8 位二进制)组成,十进制位 0255,在我们系统中只使用 1147,其它地址保留。这些位标明了用户指定的从设备的地址,该设备将接受来自与之相连主设备数据。每个从设备的地址必须是唯一的,仅仅被寻址到的从设备会响应包含了该地址的查询。当从设备发送回一个响应,响应中的从设备地址数据便告诉了主设备是哪台设备与之进行通信。
功能码的作用是指明从设备要执行的动作。
数据域包括附加信息,从设备使用这个信息执行功能码定义的操作。这个域还包括离散项目和寄存器地址、处理的项目数量以及域中的实际数据字节数。在某种请求中,数据域可以是不存在的(0 长度),在此情况下服务器不需要任何附加信息,功能码仅说明操作。
错误校验域是对报文内容执行“冗余校验”的计算结果。根据不同的传输模式(RTU 或 ASCII)使用两种不同的计算方法。
-
控制器
+关注
关注
112文章
16191浏览量
177348 -
计算机
+关注
关注
19文章
7413浏览量
87694 -
MODBUS
+关注
关注
28文章
1760浏览量
76824 -
RTU
+关注
关注
0文章
404浏览量
28618 -
总线协议
+关注
关注
0文章
115浏览量
14838
发布评论请先 登录
相关推荐
评论