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

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,可查看到数据已经正确采集。

http://www.xdnf.cn/news/4365.html

相关文章:

  • 上海雏鸟科技再赴越南,助力10518架无人机刷新吉尼斯记录
  • MySQL优化-MySQL常见的锁机制
  • 报表的那些事:四部演进史——架构视角下的技术跃迁与实战思考
  • 高防ip是怎么做到分布式防御的
  • 如何用命令行判断一个exe是不是c#wpf开发的
  • win11指定Microsoft Print To PDF的输出路径(电子书djvu转pdf输出路径)
  • dify 部署后docker 配置文件修改
  • docker host模式问题
  • 使用Milvus向量数据库构建具有长期记忆的对话机器人
  • Flowchart 流程图的基本用法
  • 基于OpenTelemetry的分布式链路追踪Trace‌实现(PHP篇)
  • androidStudio里gradle过滤冲突资源文件
  • 【解决方案】CloudFront VPC Origins 实践流程深入解析 —— 安全高效架构的实战之道
  • Android 如何理解 Java JNI 中的引用与 Java 对象的区别
  • Kafka Controller的作用是什么?故障时如何恢复? (管理分区和副本状态;通过ZooKeeper选举新Controller)
  • Linux系统Shell脚本之shell函数
  • Kafka的核心组件有哪些?简要说明其作用。 (Producer、Consumer、Broker、Topic、Partition、ZooKeeper)
  • java多线程------synchronized
  • CVE体系若消亡将如何影响网络安全防御格局
  • git合并分支后回滚,再次合并导致更改没有合并的问题
  • CentOS 7 基础环境安装脚本
  • Milvus(16):索引解释
  • 【前端基础】6、CSS的文本属性(text相关)
  • 嵌入式通信协议总览篇:万物互联的基石
  • 记一次SSE数据被缓存导致实时性失效问题
  • 链表——C语言
  • 常见的卷积神经网络列举
  • 用go从零构建写一个RPC(仿gRPC,tRPC)--- 版本1(Client端)
  • Umi+React+Xrender+Hsf项目开发总结
  • 基于Django汽车数据分析大屏可视化系统项目