[Modbus] Modbus协议开发-工作流程(二)

5 篇文章 0 订阅

模型介绍

Modbos是OSI模型第七层(应用层)报文传输协议,主要是在不同类型的总线或网络设备间提供主站设备/从站设备(客服机/服务器)通信。
协议栈模型如下:
在这里插入图片描述

协议版本

Modbus通信协议一般用于串行链路、TCP/IP以太网以及其他支持互联玩协议的网络版本。

通信介质

大多数的Modbus设备通信时通过串口(RS232/RS485)或TCP/IP物理层进行连接(在上一节中有提到,含图),即RTU模式与ASCII模式。

两种串行网络结构图

在这里插入图片描述
在这里插入图片描述

通信场景

通常情况下,Modbus协议是一个主/从(Master/Slave)或客户端/服务器(Client/Server)架构协议。一般网络中有一个节点是Master节点,其他使用该协议参与网络通信的节点一般为Slave节点,每个Slave设备都有唯一的地址标识。
每一个Modbus报文均包含准备执行质量的设备的Modbus地址,线路上的所有设备都会收到指令(因为有PearToPear与广播的方式)。指定地址的设备会执行并回应主设备的指令,地址为0的除外,因为地址0表示的是广播指令(收到指令的设备都会执行指令,但无需回复指令)。

支持的设备

PLC、HMI、控制面板、驱动程序、动作控制、输入/输出设备等。

通信过程

正常通信过程

  • 主机设备(客户端)创建Modbus应用数据单元形成报文;
  • 将功能码(1byte,范围为十进制的:1-255(128-255保留异常使用))标识从机设备(服务端)执行那种指令;
  • 主机设备(客户端)→从机设备(服务端)发送报文;
  • 从机设备(服务端)接收报文并执行指令,依据功能码做相应动作;
  • 返回相应报文至主机设备(客户端)。
    整个过程与回答是非题的一应一答比较相似。
    在这里插入图片描述

异常通信过程

如果出现差错,在走完正常流程的过程后,从机设备(服务端)返回的响应报文中的功能码域将包含一个异常码,主机设备(客户端)依据异常码确定下一个执行的操作。
在这里插入图片描述

专业术语

  • Master:主(站)设备
  • Slave:从(站)设备
  • Client:客户端
  • Server:服务端
  • PLC(Programmable Logic Controller):可编程逻辑控制器
  • ADU(Application Data Unit):应用数据单元
  • PDU(Protocol Data Unit):协议数据单元
  • MSB(Most Significant Bit):最高有效位
  • LSB(Least Significant Bit):最低有效位
  • MBAP(Modbus Application Protocol):Modbus应用协议
MODBUS-RTU协议开发流程可以按照以下步骤进行: 1. 确定通信硬件:首先,确定使用的通信硬件,例如串口或者以太网接口。MODBUS-RTU协议可以在不同的硬件上实现,但需要根据硬件的特性进行相应的配置。 2. 实现物理层:根据MODBUS-RTU协议的要求,实现物理层的通信接口。对于串口通信,需要配置波特率、数据位、停止位和校验位等参数。对于以太网通信,需要配置IP地址和端口号等参数。 3. 编写MODBUS-RTU协议的通信代码:根据MODBUS-RTU协议的规范,编写相应的通信代码。这些代码可以用于发送和接收MODBUS-RTU报文,并解析报文中的数据。 4. 实现MODBUS功能码:根据需要实现MODBUS协议中的功能码。MODBUS-RTU协议定义了一系列功能码,用于读取和写入设备的寄存器、线圈等数据。根据具体的应用需求,选择相应的功能码进行实现。 5. 进行通信测试:在开发过程中,进行适当的通信测试以验证代码的正确性。可以使用模拟器或者实际的设备进行通信测试,确保通信正常并能够正确读取和写入数据。 需要注意的是,MODBUS-RTU协议开发流程可能会因具体的应用场景和硬件平台而有所不同。以上步骤仅为一般性的开发流程,具体的实现方式需要根据实际情况进行调整和优化。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Java使用Netty实现Modbus-RTU通信协议](https://blog.csdn.net/qq_40042416/article/details/128457288)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [精辟,16张图说透Modbus-RTU协议](https://blog.csdn.net/u010632165/article/details/120170678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值