汇川CodeSysPLC教程03-2-6 ModBus TCP
什么是ModBus TCP?
ModBus TCP是一种基于TCP/IP协议的工业网络通信协议,常用于工业自动化和控制系统。它是ModBus协议的一个变种,ModBus协议最初由Modicon(现在是施耐德电气的一部分)在1979年开发。
以下是ModBus TCP的一些主要特征:
-
基于TCP/IP:ModBus TCP使用以太网和TCP/IP协议进行通信,这使得它能够在现有的以太网络基础设施上运行,具有高传输速度和广泛的兼容性。
-
客户端-服务器模型:ModBus TCP采用客户端-服务器模型。客户端发送请求,服务器处理请求并返回响应。客户端和服务器之间的通信通过TCP端口502进行,这是ModBus TCP的默认端口。
-
数据表示:ModBus协议使用简单的数据表示方法,支持多种数据类型,如位(线圈和离散输入)、16位寄存器(保持寄存器和输入寄存器)。这些数据类型被映射到以太网帧中进行传输。
-
应用层协议:ModBus TCP位于OSI模型的应用层,其消息结构与传统的ModBus RTU(基于串行通信)类似,只是在以太网上传输。
-
无缝集成:由于ModBus TCP与ModBus RTU共享相同的功能码和数据格式,它们可以在一个混合网络中无缝集成,使得现有的ModBus设备可以轻松过渡到以太网络。
TCP/IP协议
TCP/IP(传输控制协议/互联网协议,Transmission Control Protocol/Internet Protocol)是一组网络通信协议,用于在计算机网络中实现数据传输和通信。TCP/IP协议族是互联网和大多数局域网(LAN)所使用的基础协议。以下是TCP/IP协议的一些关键概念和组成部分:
1. TCP/IP 协议模型
TCP/IP协议模型分为四个层次,每一层都有其特定的功能:
-
应用层(Application Layer):
- 提供用户直接使用的网络服务,如HTTP(用于网页浏览)、FTP(文件传输)、SMTP(电子邮件传输)、DNS(域名解析)等。
-
传输层(Transport Layer):
- 负责端到端的数据传输和流量控制。
- TCP(Transmission Control Protocol):提供可靠的、面向连接的数据传输,确保数据按顺序到达且无错误。
- UDP(User Datagram Protocol):提供无连接的、尽力而为的数据传输,适用于需要快速传输且容忍丢包的应用,如视频流和在线游戏。
-
网络层(Internet Layer):
- 负责数据包在网络中的路由选择和转发。
- IP(Internet Protocol):是核心协议,负责将数据包从源地址传送到目标地址。IP地址标识网络上的设备。
- ICMP(Internet Control Message Protocol):用于发送错误消息和网络诊断信息,如ping工具。
-
链路层(Link Layer):
- 负责在物理网络媒介上传输数据帧。
- 包括以太网、Wi-Fi等具体的物理和数据链路层协议。
2. TCP/IP 协议的工作原理
TCP(传输控制协议)
- 连接建立:TCP使用三次握手建立连接,确保双方都准备好发送和接收数据。
- 数据传输:数据被分割成小的数据包(段),每个段都有一个序列号。TCP确保所有段按序到达,重传丢失的段,并通过校验和检查数据完整性。
- 连接终止:通过四次握手终止连接,确保所有数据都被成功传输。
IP(互联网协议)
- 路由选择:IP负责根据目标IP地址选择最佳路径,将数据包从源地址传送到目标地址。
- 分片和重组:当数据包超过网络MTU(最大传输单元)时,IP会将其分片传输,并在目标处重新组装。
3. TCP/IP 协议的优势
- 互操作性:TCP/IP是一个开放的标准协议,广泛支持多种硬件和操作系统,确保不同设备间的互操作性。
- 可伸缩性:TCP/IP可以支持从小型局域网到全球互联网的各种规模的网络。
- 可靠性:TCP协议提供了可靠的数据传输机制,确保数据在不丢失、不重复的情况下传输。
- 灵活性:通过分层设计,TCP/IP协议可以适应各种不同的网络技术和应用需求。
总之,TCP/IP协议是现代计算机网络和互联网的基础,它提供了一个标准化的框架,使得不同设备和系统之间能够高效、可靠地进行通信。
客户端-服务器模型
客户端-服务器模型(Client-Server Model)是一种网络架构模型,其中任务或工作量在服务提供者(服务器)和服务请求者(客户端)之间分配。该模型广泛应用于网络和分布式计算中。以下是该模型的基本概念和工作原理:
基本概念
-
客户端(Client):
- 客户端是发起请求的实体,可以是计算机、应用程序或设备。客户端向服务器请求资源或服务,并处理服务器返回的响应。
- 客户端通常具有用户界面,允许用户与系统进行交互。
-
服务器(Server):
- 服务器是响应请求的实体,通常是高性能计算机或专门的软件程序。服务器处理客户端的请求,执行必要的计算或操作,并将结果返回给客户端。
- 服务器可以提供多种服务,如文件存储、数据库访问、网页服务等。
工作原理
-
请求和响应:
- 客户端通过网络向服务器发送请求。请求包含所需服务的详细信息,如资源地址、参数等。
- 服务器接收到请求后,处理请求并生成响应。响应包含所需的数据或操作结果,然后通过网络发送回客户端。
-
连接管理:
- 客户端和服务器之间可以通过多种方式建立连接,常见的有短连接和长连接。
- 短连接:每次请求响应完成后,连接即关闭。如HTTP/1.0协议。
- 长连接:连接在多个请求响应之间保持打开状态,提高效率。如HTTP/1.1及其后的版本。
优势和应用
优势
-
分工明确:
- 服务器专注于提供和管理资源或服务,客户端专注于用户交互和请求发起。
- 资源集中管理,便于维护和更新。
-
可扩展性:
- 服务器可以集中处理大量请求,通过添加更多服务器实现系统的水平扩展。
- 客户端数量增加时,不需要修改服务器端的设计,只需增加硬件资源即可。
-
安全性:
- 服务器可以集中管理安全策略和数据保护措施,提高系统的整体安全性。
应用
-
Web应用:
- 浏览器(客户端)向Web服务器发送请求,服务器返回网页内容。
- 例如,用户访问网站时,浏览器发送HTTP请求,Web服务器处理请求并返回HTML页面。
-
电子邮件:
- 邮件客户端(如Outlook、Gmail)向邮件服务器(如SMTP、IMAP服务器)发送和接收电子邮件。
- 服务器存储和管理邮件,客户端提供用户界面进行邮件操作。
-
文件共享:
- 客户端通过文件传输协议(如FTP)向文件服务器请求下载或上传文件。
- 服务器管理文件存储和访问权限。
-
数据库访问:
- 应用程序(客户端)向数据库服务器发送SQL查询请求,服务器处理查询并返回结果。
- 例如,企业内部系统查询客户数据。
图示
Client Server
+----------------+ +----------------------+
| User Interface| <---> | Application Services |
| | <--- | |
| | ---> | |
+----------------+ +----------------------+
在客户端-服务器模型中,客户端和服务器通过网络进行通信,完成任务的分配和协作。这个模型在现代计算中广泛应用,支持从简单的网页浏览到复杂的企业级应用系统。
OSI(开放系统互连,Open Systems Interconnection)模型是一个标准化的网络通信框架,旨在使不同系统之间的互连和通信更加顺畅。OSI模型由国际标准化组织(ISO)在1984年制定,并分为七个层次,每个层次都有特定的功能和协议。以下是OSI模型的七层结构及其功能:
OSI 模型的七层结构
-
物理层(Physical Layer):
- 功能:负责在物理媒体上发送和接收原始的比特流(0和1)。包括物理连接、信号传输、比特同步等。
- 协议和设备:网线、光纤、电缆、集线器、网络接口卡(NIC)。
-
数据链路层(Data Link Layer):
- 功能:负责在物理层上提供可靠的数据传输,包括帧的组装、地址命名、错误检测和纠正。
- 子层:逻辑链路控制(LLC)和媒体访问控制(MAC)。
- 协议和设备:以太网、Wi-Fi、交换机、桥接器。
-
网络层(Network Layer):
- 功能:负责路由选择和逻辑地址的管理,将数据包从源节点传送到目的节点。
- 协议和设备:IP(互联网协议)、路由器。
-
传输层(Transport Layer):
- 功能:提供端到端的通信服务,包括数据分段、传输控制、错误检测和纠正、流量控制等。
- 协议:TCP(传输控制协议)、UDP(用户数据报协议)。
-
会话层(Session Layer):
- 功能:管理会话和连接,提供建立、维护和终止通信会话的机制。
- 功能:会话管理、同步、对话控制。
-
表示层(Presentation Layer):
- 功能:负责数据的格式化、编码和解码,确保不同系统之间的数据兼容性。
- 功能:数据压缩、加密/解密、格式转换。
-
应用层(Application Layer):
- 功能:提供直接为用户或应用程序使用的网络服务和接口。
- 协议和应用:HTTP、FTP、SMTP、DNS、Telnet。
OSI 模型的功能和意义
1. 标准化
OSI模型提供了一个标准化的框架,使不同制造商和开发者可以创建互操作的硬件和软件。
2. 模块化
通过分层设计,OSI模型使得网络通信可以模块化。每一层独立工作且与上下层通信,使得开发和故障排除更加简便。
3. 可互换性
协议和技术可以在特定层进行替换或升级,而不会影响整个系统的其余部分。
4. 教育和理解
OSI模型提供了一个清晰的网络通信结构,使学生和工程师能够更好地理解和学习网络概念和协议。
5. 故障排除
分层模型使网络故障排除更为系统化,可以逐层检查和解决问题,定位具体的故障位置。
OSI模型与TCP/IP模型
尽管OSI模型是一个理论模型,但在实际应用中,TCP/IP协议族更为广泛使用。TCP/IP模型有四层(有时分为五层),如下所示:
- 网络接口层(Network Interface Layer)(对应OSI的物理层和数据链路层)
- 互联网层(Internet Layer)(对应OSI的网络层)
- 传输层(Transport Layer)(与OSI的传输层相对应)
- 应用层(Application Layer)(对应OSI的会话层、表示层和应用层)
尽管TCP/IP模型更为实际,但OSI模型的分层思想和结构化方法仍然是理解和设计网络系统的重要基础。
OSI模型七层图示
+---------------------------+
| 7. 应用层 (Application) |
+---------------------------+
| 6. 表示层 (Presentation) |
+---------------------------+
| 5. 会话层 (Session) |
+---------------------------+
| 4. 传输层 (Transport) |
+---------------------------+
| 3. 网络层 (Network) |
+---------------------------+
| 2. 数据链路层 (Data Link)|
+---------------------------+
| 1. 物理层 (Physical) |
+---------------------------+
通过理解和应用OSI模型,我们可以更好地设计、实现和维护复杂的网络系统,提高网络通信的效率和可靠性。
Modbus TCP设备编辑器
单击网络组态中的PLC设备,会显示PLC内部所支持的主/从站的使能窗口,如下图所示,单击窗口中的复选框按钮来使能CPU所支持的主/从站功能(如下图),再从视图右侧的“网络设备列表”中双击“MODBUS_TCP”将从站添加到网络中。
Modbus TCP组态配置示例
此时,在界面左侧视图中将出现ModbusTCP组态配置对应设备树。如下:
主站设定
帧间隔指主站接收上一个响应数据帧到下一个请求数据帧之间等待的时间间隔。这个参数可用于调节数据交换率。
主站中添加从站
添加从站的设定
注意:从站使能变量,若要启用图示中的从站,需要对SM3001变量置True。
其中,端口、从站地址、超时时间一般不用特别设置,IP根据从站的实际地址设置即可。
从站的通讯设定
这个部分的设定方式和RTU中设定时一样的,这里不重复说明。
本地从站的设定
与前面主站中的从站设定不同,本地从站的设定的意思是将PLC作为从站使用。我们在与HMI通信当中提到过,与HMI通讯是一种典型的PLC作为从站使用的实例。
本地从站设定的部分很少,按图示所示:
Modbus TCP常见故障
Modbus TCP主站连接Modbus TCP从站时发生的主要故障如下:
1:Modbus TCP主站连接Modbus TCP从站配置IP不正确,导致主站与从站通信无法建立。
2:Modbus TCP主站访问Modbus TCP从站非法地址,返回错误应答。
3:Modbus TCP主站操作Modbus TCP从站写寄存器,但是Modbus TCP从站该寄存器只支持读不支持写操作,Modbus TCP主站会收到Modbus TCP从站返回的出错应答。
要判定通讯故障是哪些原因造成的,可以通过返回的错误帧进行判定。
通讯帧格式说明
如果要特别读取SM、SD等区的话,可以参考帮助手册,其他的通讯方式同RTU,这里不展开说明了。
相关文章:

汇川CodeSysPLC教程03-2-6 ModBus TCP
什么是ModBus TCP? ModBus TCP是一种基于TCP/IP协议的工业网络通信协议,常用于工业自动化和控制系统。它是ModBus协议的一个变种,ModBus协议最初由Modicon(现在是施耐德电气的一部分)在1979年开发。 以下是ModBus TC…...

【Python机器学习】决策树的构造——划分数据集
分类算法除了需要测量信息熵,还需要划分数据集,度量划分数据集的熵,以便判断当前是否正确划分了数据集。 我们将对每个特征划分数据集的结果计算一次信息熵,然后判断按照哪个特征划分数据集是最好的划分方式。 想象一个分部在二…...

Pip换源使用帮助
PyPI 镜像使用帮助 PyPI 镜像帮助提高包安装的速度,特别是当默认源访问较慢时。镜像每次同步成功后,每隔 5 分钟进行更新,确保镜像内容尽量与官方源保持一致。 pip 临时使用 如果您只想在一次安装中使用镜像,可以使用以下命令&…...
力扣1089复写0
1089. 复写零 - 力扣(LeetCode) 我们的思路是利用类似双指针的方式去解答,来看下代码 class Solution { public:void duplicateZeros(vector<int>& arr){int cur 0, dest -1, n arr.size();while (cur < n){if (arr[cur])d…...

10 VUE Element
文章目录 VUE1、概述2、快速入门3、Vue 指令4、生命周期5、案例 Elemant1、快速入门2、Element 布局3、常用组件-案例 VUE 1、概述 Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写基于MVVM(Model-View-ViewModel)思想,实现数据…...

独立游戏《星尘异变》UE5 C++程序开发日志8——实现敏感词过滤功能(AC自动机)
在游戏中经常会有需要玩家输入一些内容的功能,例如聊天,命名等,这款游戏只有在存档时辉用到命名功能,所以这个过滤也只是一个实验性的功能,我们将使用AC自动机来实现,这是在我们把“csdn”这个词设置为屏蔽…...
使用 Swagger 在 Golang 中进行 API 文档生成
Swagger 是一款强大的 API 文档生成工具,可以帮助开发者轻松创建、管理和展示 RESTful API 文档。在本文中,我们将介绍如何在 Golang 项目中使用 Swagger 来生成 API 文档。 官网地址 : gin-swagger 前提条件 Golang 开发环境(…...

Pip换源实战指南:加速你的Python开发
1. Pip换源的重要性 在使用Python进行软件开发或数据分析时,pip 是Python的包管理工具,用于安装和管理第三方库。然而,由于网络环境的差异,特别是在某些国家,访问默认的PyPI(Python Package Indexÿ…...
【数据结构】常用数据结构的介绍:理解与应用
文章目录 前言一、介绍二、使用场景三、总结 前言 在计算机科学中,数据结构是我们组织和存储数据的方式,它可以帮助我们高效地执行各种操作,如搜索、插入和删除。从数组和链表,到树和图,不同的数据结构有着不同的优点…...

【优秀python系统毕设】基于Python flask的气象数据可视化系统设计与实现,有LSTM算法预测气温
第一章 绪论 1.1 研究背景 在当今信息爆炸的时代,气象数据作为重要的环境信息资源,扮演着关键的角色。然而,传统的气象数据呈现方式存在信息量庞大、难以理解的问题,限制了用户对气象信息的深入理解和利用。因此,基…...
【康复学习--LeetCode每日一题】2951. 找出峰值
题目: 给你一个下标从 0 开始的数组 mountain 。你的任务是找出数组 mountain 中的所有 峰值。 以数组形式返回给定数组中 峰值 的下标,顺序不限 。 注意: 峰值 是指一个严格大于其相邻元素的元素。 数组的第一个和最后一个元素 不 是峰值。…...

PYTHON学习笔记(八、字符串及的使用)
目录 1、字符串 1.1、字符串的常用操作 1.2、格式化字符串 1.2.1、占位符格式化字符串 1.2.2、f-string格式化字符串 1.2.3、str.format( )格式化字符串 1.3、数据的验证 1.4、正则表达式 1.5.1元字符 1.5.2限定符 1.5.3其他字符 1.5.4re模块 1、字符串 1.1、字符…...

文件共享功能无法使用提示错误代码0x80004005【笔记】
环境情况: 其他电脑可以正常访问共享端,但有一台电脑访问提示错误代码0x80004005。 处理检查: 搜索里输入“启用或关闭Windows功能”按回车键,在“启用或关闭Windows功能”里将“SMB 1.0/CIFS文件共享支持”勾选后(故…...

FTP(File Transfer Protocal,文件传输协议)
文章目录 引言FTP管理工具FTP客户端FTP连接模式控制连接数据连接FTP命令/响应FTP命令FTP响应FTPSSFTP引言 FTP(File Transfer Protocal,文件传输协议)用于建立两台主机间的数据文件传输下载。使用客户/服务器(Client/Server)架构,基于TCP协议,服务端口为21。 FTP链接…...

DevEco Studio中使用Qt,编写HarmonyOS程序
文章目录 1.操作2.注意事项2.1.adapter_ts2.1.手机插到电脑后,DevEco无法识别 1.操作 最近需要尝试把之前在Windwos下用Qt实现的程序移植到鸿蒙(HarmonyOS)系统上。 我使用的DevEco版本是5.03.501 找了一下资料,官方࿰…...

基于单文档的MFC图像增强
目录 function.h ColorEnhanceDib.h ColorEnhanceDib.cpp Dib.h Dib.cpp FrequencyFilterDib.h FrequencyFilterDib.cpp GrayTransformDib.h GrayTransformDib.cpp HistogramDib.h HistogramDib.cpp SharpenProcessDib.h SharpenProcessDib.cpp SmoothProcessDib.h Sm…...

云计算实训13——DNS域名解析、ntp时间服务器配置、主从DNS配置、多区域DNS搭建
一、DNS域名解析 1.正向解析 将域名解析为IP地址 DNS正向解析核心配置 (1)安装bind [rootdns ~]# yum -y install bind (2)编辑配置文件 编辑named.conf文件,限定访问权限 [rootdns ~]# vim /etc/named.conf 编辑named.rfc文件,指定要访问的域名 [ro…...

【C#】Visual Studio2022打包依赖第三方库的winForm程序为exe
0.简介 IDE:VS2022 平台:C# .NetFramework4.7.2 WinForm界面 有GDAL、EEplus第三方库的依赖,所以在其他未安装环境的电脑中功能无法使用。 1. 安装 1.1 运行文件输出 在VS扩展中选择管理扩展,安装:Microsoft Visua…...

《算法笔记》总结No.11——数字处理(上)欧拉筛选
机试中存在部分涉及到较复杂数字的问题,这是编码的基本功,各位一定要得心应手。 目录 一.最大公约数和最小公倍数 1.最大公约数 2.最小公倍数 二.素数 1.判断指定数 2.输出所有素数 3.精进不休——埃拉托斯特尼筛法 4.达到更优!——…...
DP学习——享元模式
学而时习之,温故而知新。 享元模式 名词解析 有必要解释下“享元”两字,英文原文是flyweight pattern——轻量级模式,但是翻译过来的“享元”两字太牛逼了——褒贬不一,翻译的他妈都不认识。 享元的高雅在于: 享:共享/共用 元:…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...