与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软件模拟器,进行数据模拟从而分析Modbus协议。
使用工具:
1. ModbusPoll(模拟主机)和ModbusSlave(模拟从机)
2. vspd虚拟串口
3. UartAssist串口调试工具
设置串口参数要求:波特率为9600 8位数据位 1位停止位 无流控 无校验
虚拟串口的使用:
虚拟串口的安装
- 将压缩包解压后,双击vspd.exe文件进行安装
- 安装完成后,找到安装目录,将Cracked下的文件复制到软件安装目录
- 打开软件,添加com1和com2端口(用完记得删除端口)
- 添加完端口后,打开设备管理器,这里出现如下图所示即可。
或
虚拟机绑定端口
- 将虚拟机在系统关机(必须是关机状态,挂起不行)状态下,点击虚拟机->设置->硬件->添加串行端口,添加COM1
- 添加完成后,第一次使用需要将电脑重启
- 重启之后,开启虚拟机,点击虚拟机->可移动设备->串行端口->连接
- 当连接上虚拟串口后,在终端输入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+A、Z,在弹出的界面里输入X 回车,即可退出。
将Modbus Slave模拟器作为RTU设备的从机
虚拟机绑定COM1端口,slave连接COM2端口,虚拟机通过编程测试串口通信
Modbus Slave端的配置如下:
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Modbus RTU
发表评论 取消回复