Kepware 连接Modbus TCP/IP
Modbus TCP
modbus tcp 是modbus协议的一个变种,基于TCP/IP协议栈在以太网上进行通信。Modbus TCP采用客户端-服务器(Master-Slave)的通信模型。客户端发起请求,服务器响应请求。一个网络中可以有多个客户端和服务器,服务器通常是PLC、传感器、仪表等工业设备。
Modbus TCP基于TCP协议,采用面向连接的通信方式。通信过程包括建立连接、数据传输和断开连接。数据传输过程中,客户端和服务器通过TCP端口(默认502)进行数据交换。
在Modbus网络中,设备可以分为两种角色:主站(Master)和从站(Slave)。
- 主站(Master):主站通常是控制系统的核心部分,负责发起通信请求,并管理与多个从站设备之间的通信。主站设备通常是高级控制器或者上位机,如个人计算机、PLC或SCADA系统的一部分。它能够发送命令给从站,读取从站的数据,以及对从站进行配置和控制。主站还负责协调网络上的通信流量,确保数据的准确无误传视。
- 从站(Slave):从站响应主站的请求,它的行为由主站指令决定。每个从站都有一个唯一的地址,以变主站能准确地定位到它。当从站接收到主站的请求时,它会执行相应的操作,如读取或写入数据,然后将结果返回主站。从站可以是智能仪表、逆变器、传感器模块、I/O模块等。
主站和从站的主要区别
- 地址:主站不需要唯一地址,因为它是通信的发起者。所有从站需要唯一地址,以便主站能够区分和通信。
- 角色:主站控制通信流程,发起请求,处理和分析数据。从站响应请求,执行操作,提供数据。
通信过程分析
假如在一个工厂里面有一个modbus通信系统,用于监控一台机器的多个传感器和执行器。系统中有一个PLC作为主站,几个传感器和执行器作为从站。
主站PLC功能
- 发起请求:主站(PLC)负责发起通信请求。例如,PLC可能需要读取所有传感器的温度数据。它会向各个传感器从站发送读取温度的请求。
- 控制通信流程:主站管理整个通信过程,包括确定通信的时序、处理错误、重试请求等。
- 处理数据:主站接收到从站的响应数据后,进行数据处理和分析。例如,PLC可能会计算平均温度、检查是否超出设定的温度范围,并做出相应的控制决策。
- 发出控制指令:根据需要,主站还可以向执行器从站发送控制指令,如开启或关闭某个设备。
从站PLC功能
- 响应请求:从站(如传感器)接收到主站的请求后,执行相应操作并返回数据。例如,传感器在接到读取温度的请求后,会测量当前温度并将结果返回给PLC。
- 执行指令:从站(如执行器)在接到主站发出的控制指令后,执行指定的操作。例如,执行器接到"开启"的指令后,会打开一个阀门。
- 提供数据:从站提供实时数据给主站。例如,温度传感器提供当前温度值,压力传感器提供当前压力值等。
代码实现
在实际编写 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,可查看到数据已经正确采集。