当前位置: 首页 > news >正文

Kepware 连接Modbus TCP/IP

Modbus TCP

modbus tcp 是modbus协议的一个变种,基于TCP/IP协议栈在以太网上进行通信。Modbus TCP采用客户端-服务器(Master-Slave)的通信模型。客户端发起请求,服务器响应请求。一个网络中可以有多个客户端和服务器,服务器通常是PLC、传感器、仪表等工业设备。

Modbus TCP基于TCP协议,采用面向连接的通信方式。通信过程包括建立连接、数据传输和断开连接。数据传输过程中,客户端和服务器通过TCP端口(默认502)进行数据交换。

在Modbus网络中,设备可以分为两种角色:主站(Master)和从站(Slave)。

  1. 主站(Master):主站通常是控制系统的核心部分,负责发起通信请求,并管理与多个从站设备之间的通信。主站设备通常是高级控制器或者上位机,如个人计算机、PLC或SCADA系统的一部分。它能够发送命令给从站,读取从站的数据,以及对从站进行配置和控制。主站还负责协调网络上的通信流量,确保数据的准确无误传视。
  2. 从站(Slave):从站响应主站的请求,它的行为由主站指令决定。每个从站都有一个唯一的地址,以变主站能准确地定位到它。当从站接收到主站的请求时,它会执行相应的操作,如读取或写入数据,然后将结果返回主站。从站可以是智能仪表、逆变器、传感器模块、I/O模块等。

主站和从站的主要区别

  • 地址:主站不需要唯一地址,因为它是通信的发起者。所有从站需要唯一地址,以便主站能够区分和通信。
  • 角色:主站控制通信流程,发起请求,处理和分析数据。从站响应请求,执行操作,提供数据。

通信过程分析

假如在一个工厂里面有一个modbus通信系统,用于监控一台机器的多个传感器和执行器。系统中有一个PLC作为主站,几个传感器和执行器作为从站。

主站PLC功能

  1. 发起请求:主站(PLC)负责发起通信请求。例如,PLC可能需要读取所有传感器的温度数据。它会向各个传感器从站发送读取温度的请求。
  2. 控制通信流程:主站管理整个通信过程,包括确定通信的时序、处理错误、重试请求等。
  3. 处理数据:主站接收到从站的响应数据后,进行数据处理和分析。例如,PLC可能会计算平均温度、检查是否超出设定的温度范围,并做出相应的控制决策。
  4. 发出控制指令:根据需要,主站还可以向执行器从站发送控制指令,如开启或关闭某个设备。

从站PLC功能

  1. 响应请求:从站(如传感器)接收到主站的请求后,执行相应操作并返回数据。例如,传感器在接到读取温度的请求后,会测量当前温度并将结果返回给PLC。
  2. 执行指令:从站(如执行器)在接到主站发出的控制指令后,执行指定的操作。例如,执行器接到"开启"的指令后,会打开一个阀门。
  3. 提供数据:从站提供实时数据给主站。例如,温度传感器提供当前温度值,压力传感器提供当前压力值等。                     

代码实现

在实际编写 Modbus TCP 通信程序时,主站和从站的角色决定了它们分别是开启 Socket Client 还是 Socket Server。具体来说:

  •     Modbus TCP 主站(Master)

              主站负责发起通信请求,因此在 Modbus TCP 协议中,主站通常是一个 Socket Client。

             这意味着主站会建立一个 socket 客户端连接,主动连接到从站的 socket 服务器。

             主站通过这个客户端连接,向从站发送读/写请求,并等待从站的响应。

  •     Modbus TCP 从站(Slave):

            从站被动接收请求,因此在 Modbus TCP 协议中,从站是一个 Socket Server。

            从站需要开启一个 socket 服务器,并监听某个端口(通常是 502 端口,标准的 Modbus TCP 端口)。

              当主站(客户端)发起连接时,从站(服务器)接收连接,并处理请求。

Modbus 模拟工具

  ModSim32

       ModSim32 是一个运行在windows下,用来模拟从设备,它可以接收主设备发送的指令报文。启动ModSim32后,在菜单栏中选择Connection(连接)->Connect(连接)>Modbus/Tcp Svr即可,弹出对话框端口默认502。

在菜单栏中选择 文件-->新建。

可以设置开始地址、地址长度 和 设备ID

点击下方例如寄存器,可以设置该地址的值。

ModScan

Modscan32是一个运行在windows下,作为Modbus协议主设备的应用程序。用来模拟主设备。它可以发送指令报文到从机设备中,从机响应后,就可以在界面上返回相应寄存器的数据。

在菜单栏中选择Connection(连接设置)-->Connect(连接),弹出对话框在connect下边选择Remote TCP/IP Server 连接方式,填写从设备的IP地址和端口,点击OK。

在窗口中配置设备ID,开始地址和长度。需要和从设备中保持一致。

Kepware 连接配置

添加通道

右键点击【连接性】,选择通道类型【Modbus TCP/IP Ethernet】,其余按照默认配置,点击【下一步】,直到完成。

添加设备

点击【添加设备】,型号选择【Modbus】

在ID中<>中输入从设备IP,<>.X 后面的X为设备ID。

点击下一步,其余配置按照默认配置,端口配置为从设备端口。

添加标记

在设备中点击添加标记。

在名称中输入采集量的变量名。地址填写从设备的地址,类型为对应的数据类型。

配置完毕后,点击

测试

配置完毕后,点击【Quick Client】.点击对应设备,即可以查看标记的值。

右键点击标记,选择【synchronous write】,可以设置从设备的值。

不同类型值配置说明

对于、短整型、BCD、浮点型、双字型、长整型、LBCD、双精度,在地址中输入开始地址、类型选择对应类型即可。数值存放保持寄存器中,地址4开头。如下图所示。

对于布尔值,数值存放在输出线圈中。地址0开头。如下图所示。

对于字符串,数值存在在保持寄存器中,地址格式示例如下400001.4H  或 400001.4L。

其中400001 为开始地址。4 为所占字节长度。H/L为数据存放方式为高位存储还是低位存储。

例如:字符串abcd,转换为二进制 01100001 01100010 01100011 01100100。

将二进制转换为以16个字节为一组,转换为整型为24930、25444.将其设置到Modbus从设备中。

在kepware中如下配置标注。

用Qucik Client,可查看到数据已经正确采集。

相关文章:

  • C语言初阶--数组
  • 005 权限的理解
  • leetcode刷题日记——随机链表的复制
  • Prompt(提示词)工程师,“跟AI聊天”
  • 约瑟夫josephu问题
  • 2025-05-07 Unity 网络基础8——UDP同步异步通信
  • 【EasyPan】saveShare代码分析
  • 企业智能化第一步:用「Deepseek+自动化」打造企业资源管理的智能中枢
  • DSENT (Design Space Exploration of Networks Tool) 配合gem5
  • day 14 SHAP可视化
  • C++:买房子
  • Vue——前端vue3项目使用汉字转拼音
  • #黑马点评#(一)登录功能
  • LangChain第三讲:大模型的输出如何格式化成字符串?
  • 阿里云服务器-宝塔面板安装【保姆级教程】
  • HarmonyOS NEXT深度解析:自研框架ArkUI-X的技术革命与跨平台实践
  • 本地部署 MySQL + Qwen3-1.5B + Flask + Dify 工作流
  • 动态规划-91.解码方法-力扣(LeetCode)
  • SPSS系统发育分析中的聚类相关part
  • 端口安全讲解
  • 巴基斯坦对印度发起网络攻击,致其约70%电网瘫痪
  • 中方是否认同俄方关于新纳粹主义观点?外交部:联大曾多次通过相关决议
  • 重温经典|《南郭先生》:不模仿别人,不重复自己
  • 江苏省人社厅党组书记、厅长王斌接受审查调查
  • 国家卫健委:有条件的二级及以上综合医院要开设老年医学科
  • 大四本科生已发14篇SCI论文?学校工作人员:已记录汇报