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通讯协议详解

 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)发出请求)

 

posted on 2022-11-26 00:55  飘一点红  阅读(1355)  评论(0编辑  收藏  举报