Modbus协议学习(四)

来源:互联网 发布:服务器 定时关机 软件 编辑:程序博客网 时间:2024/06/06 01:39

Modbus在TCP/IP上的实现

一、客户机/服务器模型

客户机/服务器模式是基于4 种类型报文:
1. MODBUS 请求 —— 客户机在网络上发送用来启动事务处理的报文
2. MODBUS 证实 —— 在客户端接收的响应信息
3. MODBUS 指示 —— 服务端接收的请求报文
4. MODBUS 响应 —— 服务器发送的响应信息

二、通讯结构
Part-1
TCP/IP网络上设备连接的示意图

MODBUS 协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的MODBUS 协议映射能够在应用数据单元(ADU)上引入一些附加域。

—————————————————
ADU
| 地址域 || 功能码 || 数据 || 差错校验 |
————–PDU——PDU—————-
—————————————————
启动MODBUS 事务处理的客户机建立MODBUS应用数据单元。这个功能码向务器指示执行执行哪种操作。

Part-2
???什么是MBAP???
在TCP/IP上使用一种专用报文头识别MODBUS应用数据单元。将这种报文头称为MBAP报文头(MODBUS 协议报文头)。
????????????

MBAP报头包括四个域(报文头为7个字节长):
1. 事务处理标识符(2字节):用于事务处理配对。在响应中,MODBUS服务器复制请求的事务处理标识符。
2. 协议标识符(2字节):用于系统内的多路复用。通过值0识别MODBUS 协议。
3. 长度(2字节):长度域是下一个域的字节数,包括单元标识符和数据域。
4. 单元标识符(1字节):为了系统内路由,使用这个域。专门用于通过以太网TCP-IP网络和MODBUS串行链路之间的网关对MODBUS或MODBUS+串行链路从站的通信。MODBUS客户机在请求中设置这个域,在响应中服务器必须利用相同的值返回这个域。

在注册的502 端口上利用TCP 发送所有MODBUS/TCP ADU。
也就是说,502端口控制着MODBUSi协议在TCP上的传输,保护MODBUS/TCP正常传输不受攻击,就应该注意502端口的防护。

Modbus组件介绍

组件模型
组件有四个层面:
1. 通信应用层:提供各种客户机/服务器的接口
2. TCP管理层:管理通信的建立和结束
3. TCP/IP栈层:进行参数配置,使数据流控制、地址管理和连接管理适应于特定的产品或系统的不同约束。
4. 资源管理和数据流控制层:平衡和控制数据流

TCP连接管理

实现规则:
1)如果没有明确的用户需求,建议采用自动的TCP连接管理
2)建议:打开并保持与远端设备的连接,而不要在每次MODBUS/TCP事务处理时打开和关闭连接。
注:然而,MODBUS客户必须能够接收来自服务器的关闭请求,并关闭连接。当需要时,连接可以被重新打开。
3)建议:每一个MODBUS客户至少要打开与远端MODBUS服务器的TCP 连接(同一IP 地址)。一个应用建立一个连接是好的选择。
4)几个MODBUS事务处理可以在同一个TCP连接上被同时激活
注:如果以此方式,MODBUS事务处理标识必须被用来唯一地识别请求与响应的匹配。
5)在两个远端MODBUS设备(一个客户机和一个服务器)之间双向通信的情况下,有必要为客户机数据流和服务器数据流分别建立连接。
6)一个TCP帧只能传送一个MODBUS ADU。建议:不要在同一个TCP PDU中发送多个请求或应答。

连接的建立可以由用户应用模块直接完成,也可以由TCP连接模块自动完成。

连接示意

一、连接的建立
MODBUS 报文传输服务必须在502口上提供一个侦听套接字,允许接收新的连接和与其他设备交换数据。
当报文传输服务需要与远端服务器交换数据时,它必须与远端502 口建立一个新的客户连接,以便与远距离交换数据。本地口必须高于1024,并且每个客户连接各不相同。
如果客户机与服务器的连接数量大于授权的连接数量,则最早建立的无用的连接被关闭。激活访问控制机制检查远端客户机的IP地址是否是经过授权的?如果未经授权,将拒绝新的连接。

二、Modbus数据交换
基于已经打开的正确的TCP连接发送Modbus连接数量。远程设备IP地址用于寻找所建立的TCP连接。在与同一个连接设备建立多个连接时,必须选择其中一个连接用于发送MODBUS报文,可以采取多种不同的策略。

三、连接关闭
当客户机与服务器的Modbus通信结束时,客户机必须关闭用于通信的连接。

四、TCP/IP栈的使用
TCP/IP栈提供一个接口,用来管理连接、发送和接收数据,还可以进行参数配置,使栈的特性适应于设备或系统的限制。

这里写图片描述
ICMP:控制报文协议

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。

ARP:地址解析协议

ARP的作用:主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

五、IP层的参数配置

下列参数必须在MODBUS实现的IP 层进行配置:
1. 本地IP地址:IP地址可以是A、B 或C 类的一种。
2. 子网掩码:可基于各种原因,将IP 网络划分成子网:使用不同的物理介
(例如:以太网、广域网等)更有效的使用网络地址、以及控制网络流量的能力。子网掩码必须与本地IP地址的类型相一致。
3. 缺省网关:缺省网关的IP地址必须与本地IP地址在同一子网内。禁止使用0.0.0.0的值。

(如果没有定义网关,那么此值可设为127.0.0.1或本地IP地址)
注:MODBUS报文传输服务在IP层上不要求段功能。
应该利用本地IP地址、子网掩码和省缺网关(不同于0.0.0.0)配置本地IP 端。

Modbus客户端设计

参看:
http://www.docin.com/p-719650505.html ( 基于VC的Modbus从站测试软件的设计与开发)
http://www.eepw.com.cn/article/201706/352942.htm (基于ModbusTCP的OPC服务器设计)
对象分析:
这里写图片描述

① 配置层,它配置和管理其它程序包组件的操作模式
② TCP 管理,它使TCP/IP 栈和管理TCP
③ 通信应用层,它由在一侧的MODBUS 客户机和在另一侧的MODBUS服务器组成。该程序包和用户应用链接。
④ 用户应用,它和设备应用相对应,它完全与设备有关,因此在本文件中不予讨论。


尾声PS:笔记写到这里我的MODBUS协议基础学习也快结束了,以上协议学习笔记内容整理于http://www.plcworld.cn/提供的《详解modbus通讯协议》一书,也有我自己添加的理解和专有名词注释,非常感谢这些丰富的网络资源给我带来的无价知识。

原创粉丝点击