与Modbus TCP的区别

        在一般工业场景使用modbus RTU的场景还是更多一些,modbus RTU基于串行协议进行收发数据,包括RS232/485等工业总线协议。

        与modbus TCP不同的是RTU没有报文头MBAP字段,但是在尾部增加了两个CRC检验字节(CRC16),因为网络协议中自带校验,所以在TCP协议中不需要使用CRC校验码。

        RTU和TCP的总体使用方法基本一致,只是在创建modbus对象时有所不同,TCP需要传入网络socket信息;而RTU需要传入串口相关信息。

Modbus RTU特点

ModbusRTU也是主从问答协议,由主机发起,一问一答

设置串口参数:

设置串口参数时要求:

波特率为9600

8位数据位

1位停止位

无流控

ModbusRTU协议格式:

ModbusRTU协议数据帧包含四部分:地址码、功能码、数据、校验码

地址码:从机ID 1-247

功能码:同ModbusTCP协议

数据:起始地址、数量、数据

校验码:2字节,对地址码、功能码、数据部分进行校验,调用函数自动生成

报文详解:

03功能码:

主机->从机: 01 03 00 00 00 01 84 0A

        01:从机ID

        03:功能码

        00 00:起始地址

        00 01:数量

        84 0A:校验码

从机->主机:01 03 02 00 14 b8 44

        01:从机ID

        03:功能码

        02: 字节计数

        00 14:数据

        b8 44 :校验码

参考示例:

值得收藏 Modbus RTU 协议详解-CSDN博客

模拟器的使用

        由于实际硬件产品成本较高,我们这里可以使用Modbus软件模拟器,进行数据模拟从而分析Modbus协议。

使用工具:

1. ModbusPoll(模拟主机)和ModbusSlave(模拟从机)

2. vspd虚拟串口

3. UartAssist串口调试工具

设置串口参数要求:波特率为9600 8位数据位 1位停止位 无流控 无校验

虚拟串口的使用:

虚拟串口的安装

  1. 将压缩包解压后,双击vspd.exe文件进行安装

  1. 安装完成后,找到安装目录,将Cracked下的文件复制到软件安装目录
  2. 打开软件,添加com1和com2端口(用完记得删除端口)
  3. 添加完端口后,打开设备管理器,这里出现如下图所示即可。

虚拟机绑定端口

  1.  将虚拟机在系统关机(必须是关机状态,挂起不行)状态下,点击虚拟机->设置->硬件->添加串行端口,添加COM1
  2. 添加完成后,第一次使用需要将电脑重启
  3. 重启之后,开启虚拟机,点击虚拟机->可移动设备->串行端口->连接
  4. 当连接上虚拟串口后,在终端输入dmesg | grep tty,可以查看到对应的设备文件,其中默认的会有ttyS0文件,剩下的就是虚拟串口对应的设备文件

测试通信

1.Windows打开串口调试工具,选择好串口COM2->COM1,设置对应的波特率

在虚拟机运行minicom

在虚拟机安装minicom软件

sudo apt-get install minicom

在终端执行sudo minicom -s

1)选择serial port setup,回车

2)设置设备文件,波特率,关闭流控,按如下图设置(文件改成自己的

3)修改完成后,回车,保存修改,选择save setup as dfl,敲回车,再次选择exit回车

4)退出后就可以和windows下的串口调试工具进行通信测试

5)也可以在这个界面输入字符,查看串口助手的显示情况。

6)退出:ctrl+AZ,在弹出的界面里输入X 回车,即可退出。

Modbus Slave模拟器作为RTU设备的从机

虚拟机绑定COM1端口,slave连接COM2端口,虚拟机通过编程测试串口通信

Modbus Slave端的配置如下:

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部