1、Modbus通信协议简介
Modbus是一种串行通信协议,由Modicon公司(现為施耐德电气)于1979年发布,用于使用可编程逻辑控制器(PLC)进行通信。Modbus已经成為工业领域(事实上)通信协议的行业标准,现在是工业电子设备之间的一种常见连接方式。通过该协议,控制器可以通过网络(如以太网)相互通信以及与其他设备通信。它已成為通用的工业标准。通过它,不同制造商生产的控制设备可以连接到工业网络中进行集中监控。
该协议定义了控制器可以识别的消息结构,無论控制器通过什么网络进行通信。它描述了控制器请求访问其他设备的过程,如何响应来自其他设备的请求,以及如何检测和记录错误。它建立了消息域模式和内容的通用格式。
当在MODBUS网络上通信时,该协议确定每个控制器必须知道其设备地址,识别该地址发送的消息,并决定要生成的操作。如果需要响应,控制器将生成反馈消息,并使用Modbus协议发送。在其他网络上,包含Modbus协议的消息被转换為该网络上使用的帧或数据包结构。该转换还扩展了根据特定网络求解节点地址、路由路径和错误检测的方法。
Modbus协议是一种应用层消息传输协议,包括ASCII、RTU和TCP。
标准Modbus协议物理层接口包括RS232、RS422、RS485和以太网接口,它们以主/從模式进行通信。
该协议在通信线路上使用应答连接(半双工),这意味着信号在单独的通信线路上以两个相反的方向传输。首先,主机的信号被发送到终端设备(從机),然后终端设备向相反方向发送的响应信号被发送到主机。该协议只允许主机与终端设备之间进行数据交换,不允许独立设备之间进行数据交换,在初始化时不占用通信线路,只响应到达本地机器的查询信号。
1.1Modbus网络上的传输
标准MODBUS端口使用RS-232C兼容串行接口,该接口定义连接端口的引脚、电缆、信号位、传输波特率和奇偶校验。控制器可以直接或通过调制解调器联网。
控制器通信采用主從技术,即只有一个设备(主设备)可以初始化传输(查询),其他设备(從设备)根据主设备提供的数据做出相应的响应。典型主要设备:主机和可编程仪表。典型的從设备:可编程控制器
主设备可以单独与從设备通信,也可以通过广播与所有從设备通信。如果单独通信,则從设备返回消息作為响应;如果查询是广播的,则不会做出响应。Modbus协议建立主设备查询的格式:
设备(或广播)地址、功能代码、要发送的所有数据、错误检测字段
從设备响应消息也由Modbus协议组成,包括确认要操作的域、要返回的任何数据和错误检测域。如果在消息接收期间发生错误,或者從设备無法执行其命令,则從设备将建立错误消息并将其作為响应发送。
1.2其他类型网络上的传输
在其他网络中,控制器使用对等技术进行通信,因此任何控件最初都可以与其他控制器通信。这样,在单独的通信过程中,控制器可以用作主设备或從设备。提供多个内部通道以允许同时传输过程。
在消息位中,Modbus协议仍然提供主從原则,尽管网络通信方式為“对等”。如果控制器发送一条消息,它将充当主控制器,并期望從控制器得到响应。类似地,当控制器接收到消息时,它将建立從设备响应格式并将其返回给发送控制器。
1.3查询响应周期
1-200519120U2301。巴布亚新几内亚
1.3.1查询
查询消息中的功能代码通知所选從属设备要执行的功能。数据段包含关于從设备要执行的功能的任何附加信息。例如,功能代码03要求從设备读取保持寄存器并返回其内容。数据段必须包含告知從设备的信息:從哪个寄存器读取以及要读取的寄存器数量。错误检查代码為從属设备提供了验证消息内容是否正确的方法。
1.3.2答复
如果设备生成正常响应,则响应消息中的功能代码是查询消息中功能代码的响应。数据段包含從设备收集的数据,如寄存器值或状态。如果发生错误,将修改功能代码以指示响应消息為错误,并且数据段包含描述错误消息的代码。错误检查代码允许主机确认消息内容是否可用。
2、两种传输模式
控制器可设置為两种传输模式(ASCII或RTU)中的任何一种,以便在标准MODBUS网络上进行通信。用户选择所需模式,包括串行端口通信参数(波特率、验证模式等)。配置每个控制器时,MODBUS网络上的所有设备必须选择相同的传输模式和串行端口参数。
文字模式
RTU模式
所选ASCII或RTU模式仅适用于标准MODBUS网络。它定义在这些网络上连续传输的消息段的每一位,并确定如何将信息打包到消息域中以及如何解码。在其他网络(如map和ModbusPlus)上,Modbus消息被转换為独立于串行传输的帧。
2.1ASCII模式
当控制器设置為在Modbus网络上以ASCII(美国标准信息交换代码)模式通信时,消息中的每个8位字节将作為两个ASCII字符发送。这种方法的主要优点是字符传输的时间间隔可以达到1秒而没有错误。
2.1.1编码系统
十六进制,ASCII字符09,A。。F
消息中的每个ASCII字符由一个十六进制字符组成
2.1.2位/字节
起始位1
7个数据位,首先发送最小有效位
1奇偶校验位,無奇偶校验
1位停止位(带验证),2位停止位(不带验证)
2.1.3错误检测域
LRC(纵向检测)
2.2RTU模式
当控制器设置為在Modbus网络上以RTU(远程终端装置)模式通信时,消息中的每个8位字节包含两个4位十六进制字符。这种方法的主要优点是,在相同的波特率下,它可以传输比ASCII模式更多的数据。
2.2.1编码系统
8位二进制,十六进制数字0.9,A。。F
消息中的每个8位字段由两个十六进制字符组成
2.2.2位/字节
起始位1
8个数据位,首先发送最小有效位
1奇偶校验位,無奇偶校验
1位停止位(带验证),2位停止位(不带验证)
2.2.3错误检测域
循环冗余检测(CRC)