Modbus--->使用ModbusPoll、ModbusSlave、虚拟串口分析MODBUS-RTU数据帧格式、报文实例帧结构,和Modbus协议格式

使用Modbus poll&Modbus slave模拟Modbus主从通信

 下载和破解搜一下都很方便,使用的时候Modbus Poll作为Master,Modbus slave作为从机,设置相同的Setup和Connection就可以进行通信了。
 详细教程见博客园的一篇不错的的文章

虚拟串口

 虚拟串口,模仿串口,可以最大程度的模拟Slave与Master的通信情况,下载链接如下
链接:https://pan.baidu.com/s/1-kz_vqt8RIEo-rVQ8aA7Qw
提取码:abvx

基础知识积累

MODBUS-RTU报文模型

设备地址功能代码数据CRC校验LCRC校验H
8bit8bitN*8bit8bit8bit
1字节1字节0~252字节1字节1字节

 一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。
设备地址:指的是从机地址,用于通信,为0时表示的是广播通信,如果单独通信,从设备返回消息作为回应,如果是以广播方式查询的,则不作任何回应。
功能码:主机有8个功能码,从机有4个功能码,多出来的4个功能码是主机对从机的写操作
数据格式:N个数据就有N*8bit长度,N最大值252
CRC校验位:分为高低两个字节
ADU:是这一帧所有数据,0~256字节
PDU:是功能代码+数据,0~253字节

主机对从机写数据操作

 如果单片机接收到一个报文那么就对报文进行解析执行相应的处理

 	0x01	 06	    00 01 	   00 17   98 04
    从机地址	 功能号	数据地址	   数据	   CRC校验

主机对从机写数据操作后,从机的返回内容

 接收到主机的消息后,从机会在判断是自己的消息(并且不是广播消息后)原封不动的返回接收到的消息

 	0x01	 06	    00 01 	   00 17   98 04
    从机地址	 功能号	数据地址	   数据	   CRC校验

主机对从机读数据操作

	0x01	 03	    00 01 	 00 01 	      D5 CA
	从机地址	 功能号	数据地址	 读取数据个数	  CRC校验

 单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:返回信息给主机,返回的信息也是有格式的:

主机对从机读数据操作后,从机对主机返回内容

	0x01	  03	  02 	        00 17 	     F8 4A
	从机地址	  功能号	  数据字节个数 	两个字节数据	 CRC校验

 这样Modbus主机就完成了一次对从机数据的读操作,实现了通讯。

Modbus-RTU常用功能码

根据下表,可以设定对应的功能码(Function)
在这里插入图片描述

功能码英文名中文名解释
01Read Coils读线圈
02Read Discrete Inputs读离散寄存器
03Read Hoiding Registers读保持寄存器
04Read Input Registers读取输入寄存器
05Write Sinqle Coil写线圈
06Write Sinqle Register写单个寄存器
15Write Multiple Coils写多个线圈
16Write Multiple Registers写多个寄存器

关于这几个线圈/保持寄存器/离散寄存器的解释见连接https://blog.csdn.net/lingshi75/article/details/105991450

寄存器起始地址(起始数据地址)

在这里插入图片描述

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值