Modbus RTU与TCP调试
调试体会:
用于编程的网关有485、以太网、Can等通信口,网关的485做主站,电机控制器的485作为从站,设置为(19200,E81)。井下网关作为服务器(连接有电机控制器、无线接收机等),井上网关作为客户端(连接有集控面板的CAN和计算机)
(0)485模拟
网关做485主站或者调试上位机软件来查询读写,PC模拟485从站或下位机(Modbus Slave)代替电机控制器,计算机从站保存数据,PC用Modbus Slave来模拟。
485从站保存数据,计算机模拟485主站(Modbus Master)来轮询获取数据。
上位机软件作为主站监控485从站,那么PC模拟下位机做从机,使用从机(Modbus Slave)模拟,设置如图0-1所示。如图0-2所示,当3200偏移地址是43201,不要勾选下面的PLC底子(基址1),否则就是43200,这个是错误的。 用VSPD虚拟两个串口,COM1为上位机组态王软件,COM2为Modbus Slave软件端口,如图0-2所示。主要不要选中PLC地址(基址1)否则PLC地址会少1。这也是Modbus软件和Modscan的区别。
图0-1 PC上Modbus Slave设置 图0-2 PC上Modbus Slave设置
(一)井下网关的485作为485主站,用计算机(Modbus Slave)仿真485从站(电机控制器)进行调试。
网关作为主站用来查询电机控制器的读写,用计算机(Modbus Slave)来模拟代替电机控制器从站。设置好485的波特率和E81后,选择03 保持寄存器(4x),在3455处填入3,则可以在TCP_AI[59]=3,3400开始地址为4,因此55个后为59。
因为从站Modbus地址太大,本身并不真实,是一种模拟出来的地址范围,没有必要太大,太大超过范围就无法写入,当程序多次有读有写时就容易出问题,一般容易卡在出问题的那个站点或者命令那了,有部分命令无法执行。比如只执行图1的程序没有问题,要是完整执行所有的就有问题了。
图1 实际程序的一段读 图2 配置485从站的地址和个数
图3 填入数值3后程序读到的值
(二)井下网关网口作为Tcp服务器,用计算机做井上客户端(用Modbus Poll)来调试服务器;井上网关作为Client客户端要用计算机做服务器(用Modbus Slave软件)来调试客户端。
(1)井下网关作为服务器时,计算机来模拟时作为客户端,用Modbus Poll,计算机ip设置为与服务器不同的同网段IP即可。
连接选择Modbus TCP,服务器地址填写要连接的地址,填入后要先ping下服务器看是否能ping通,计算机应设置为同一个网段,端口和程序中一致。连接后设置读写定义。
(2)井上网关做客户端时,计算机来模拟时作为服务器,用Modbus Slave,计算机ip设置为服务器的地址。
(3)以下为井下网关做服务器的调试截图:
(三)以下汇总一些初学的帖子
modbus仿真工具的使用学习笔记 针对tcp modbus调试学习笔记(入门)
Modbus调试软件--ModbusPoll、ModbusSlave使用详解
MODBUS TCP/IP通信协议及测试方法(格西烽火-TCP调试端 )
实验项目名称 Modbus TCP实验(C程序)
1、概念:
Slave: 工业自动化用语;响应请求;
Master:工业自动化用语;发送请求;
Server:IT用语;响应请求;
Client:IT用语;发送请求;
(Slave == Server :测试从机运行Modbus Poll仿真来发送请求, Master == Client:测试主机运行Modbus Slave仿真来响应请求)
Modbus协议是一个master/slave架构的协议,有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点.
2、工业使用习惯和TCP Modbus习惯的区别:
(主要的区别是在主动请求的角度不一样,工业上是“节点少的”(master)向“节点多的”(slave)发出请求,tcp modbus是“节点多的”(client )向 “节点少的”(server)发出请求)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构