10.2
初识Modbus
10.2.1 背景
Modbus诞生于1979年莫迪康(Modicon)公司,后来被施耐德电气公司收购。Modbus提供通用语言用于彼此通信的设备和设备,是全球第一个真正用于工业现场的总线协议。Modbus已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。Modbus作为目前工业领域应用最广泛的协议,之后为了更好地普及和推动Modbus基于以太网(TCP/IP)的分布式应用,施耐德公司已将Modbus协议的所有权移交给IDA (Interface for Distributed Automation,分布式自动化接口)组织,并成立了Modbus-IDA组织,此组织的成立和发展进一步推动了Modbus协议的广泛应用。
10.2.2 什么是Modbus?
1
Modbus简介
Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为ModbusMaster,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。有了它,不同厂商生产的控制设备就可以连接成工业网络,进行集中监控。Modbus协议定义了一个控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的;而且描述了控制器请求访问其他设备的过程,如何应答来自其他设备的请求,以及怎样侦测错误并记录,并制定了统一的消息域的结构和内容。当在Modbus网络上通信时,Modbus协议决定了每个控制器必须要知道它们的设备地址,识别按地址发来的消息决定要产生何种行为。如果需要回应,则控制器将生成反馈信息并通过Modbus协议发送。
Modbus通讯物理接口可以选用串口(包括RS232、RS485和RS422等),也可以选择以太网口。其通信遵循以下的过程:
①主设备向从设备发送请求。
②从设备分析并处理主设备的请求,然后向主设备发送结果。
③如果出现任何差错,从设备将返回一个异常功能码。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
当在Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
Modbus的工作方式是请求/应答,每次通讯都是主站先发送指令,可以是广播,或是向特定从站的单播;从站响应指令,并按要求应答,或者报告异常。当主站不发送请求时,从站不会自己发出数据,从站和从站之间不能直接通讯。
MODBUS是一种应用层消息传递协议,位于OSI模型的第7层。它提供连接在不同类型总线或网络上的设备之间的客户端/服务器通信。
Modbus通信栈如下:
2
Modbus特点
Modbus通信协议具有以下几个特点:
①Modbus协议标准开放、公开发表且无版税要求。用户可以免费获取并使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。
②Modbus协议支持多种电气接口,如RS232、RS485、TCP/IP等,还可以在各种介质上传输,如双绞线、光纤、红外、无线。
③Modbus协议消息帧格式简单、紧凑、通俗易懂。用户理解和使用简单,厂商容易开发和集成,方便形成工业控制网络。
④可靠性:Modbus是最古老的工业自动化通信协议。它使用和编程简单,因此学习曲线较低。
⑤遗留基础设施:许多制造商在早期自动化方面投入了大量资金。Modbus对于配置、DLR、节点、子站和其他基础设施非常友好,这些基础设施可能会被新的或更先进的协议所淘汰。
⑥快速部署:Modbus可以轻松、立即集成到SCADA和其他控制系统中。
⑦灵活性:Modbus已适应新兴技术。例如,Modbus TCP可以通过话配器进行转换,以与LAN和远程控制系统集成。它还可以利用基于网络和基于云的平台。
⑧简单性:由于通信简单,因此可以轻松扩展到新技术。例如,Modbus TCP/P由于指令集简单,部署速度很快。它还可以与以太网配合使用,无需添加芯片或板。
3
Modbus常用术语
名词 | 意义 |
Master | 主(站)设备 |
Slave | 从(站)设备 |
Client | 客户端 |
Server | 服务器端 |
ADU | 应用数据单元 (Application Data Unit) |
PDU | 协议数据单元 (Protocol Data Unit) |
MSB | 最高有效位 (Most Significant Bit) |
LSB | 最低有效位 (Least Significant Bit) |
名词 | 意义 |
MBAP | Modbus应用协议 (Modbus Application Protocol) |
PLC | 可编程逻辑控制器 (Programmable Logic Controller) |
4
Modbus事务处理
Modbus协议允许在各种网终体系结构内进行简单通信,每种设备(包括PLC、HMI、控制面板、驱动程序、动作控制、输入/输出设备)都能使用Modbus协议启动远程操作。在基于串行链路和以太网(TCP/IP)的Modbus上可以进行相互通信。一些网关允许在几种使用MODBUS协议的总线或网络之间进行通讯。
MOUBUS网络体系结构的实例:
Modbus是一个请求、应答协议,并且提供统一的功能码用于数据传输服务。Modbus功能码是Modbus请求/应答PDU(Protocol Data Unit,协议数据单元)的元素之一,所谓的PDU其实就是Modbus协议定义的一个与基础通信层无关的简单协议数据单元。特定总线或网络上的Modbus协议映射能够在ADU(Application Data UInit,应用数据单元)上引入一些附加域,从而实现完整而准确的数据传输。
为了寻求一种简洁的通信格式,Modbus协议定义了PDU模型,即功能码+数据的格式,而为了适应多种传输模式,又在PDU的基础上增加了必要的前缀(如地址域)和后缀(如差错校验),形成了ADU模型(见下图)。
通用MODBUS帧如下:
Modbus事务处理过程:
①主机设备(或客户端)创建Modbus应用数据单元形成查询报文,其中功能码标识了向从机设备(或服务器端)指示将要执行的操作。其中功能码占用1字节,有效的码字范围是十进制1~255(其中128~255为异常响应保留)。查询报文创建完毕,主机设备(或客户端)向从机设备(或服务器端)发送报文,从机设备(或服务器端)接收报文后根据功能码做出相应的动作,并将响应报文返回给主机设备(或客户端),如图下所示:
MouBus事务处理(无异常)
②如果在一个正确接收的Modbus ADU中不出现与请求Modbus功能有关的差错,那么从机设备(或服务器端)将返回正常的响应报文。如果出现与请求Modbus功能有关的差错,那么响应报文的功能码域将包括一个异常码,主机设备(或客户端)能够根据异常码确定下一步执行的操作;对于异常响应,服务器返回一个与原始功能码等同的码,设置该原始功能码的最高有效位为逻辑1,用于通知主设备(客户端)。如下图所示:
MouBus事务处理(异常响应)
如您在使用瑞萨MCU/MPU产品中有任何问题,可识别下方二维码或复制网址到浏览器中打开,进入瑞萨技术论坛寻找答案或获取在线技术支持。
https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/
未完待续
推荐阅读
TCP编程示例 - RZ MPU工业控制教程连载(18)
基于TCP实现文件传输与UDP编程示例 - RZ MPU工业控制教程连载(19)
WebServer移植 - RZ MPU工业控制教程连载(20)