电力-ModBus_RTU通讯规约2

本文详细介绍了ModBus-RTU协议的报文交互、功能码、寄存器地址以及报文模型。通过具体的报文例子展示了主站与从站之间的数据读写过程。同时,讲解了如何使用VSPD9.0虚拟串口工具和ModbusPoll、ModbusSlave软件进行调试,包括配置、连接和通信过程。此外,还提供了COM端口被占用问题的解决方案。
摘要由CSDN通过智能技术生成

目录:

一、报文交互举例

二、ModBus-RTU报文模型

三、ModBus-RTU常用功能码

四、寄存器起始数据地址

五、ModBus-RTU报文

六、VSPD9.0调试ModBus

1、使用环境

2、项目说明

3、Modbus Poll和Modbus Slave软件介绍

4、软件使用

5、目标连接

6、通讯开始

7、安装包获取

8、注意事项

9、解决COM端口被占用


下续:电力-RTU终端ModBus规约(C代码)

一、报文交互举例

主站发送报文

地址

功能码

寄存器起始地址

读取数据长度

CRC校验码

 

01

03

01

00

00

02

C5

F7

说明
(读取01地址设备03功能码
遥信状态)

设备地址

设备的规约或点表查看(遥信、遥测、遥控)

从设备的:0x0100H 寄存器读取遥信状态,可以在规约或寄存器点表中查看。
0100说明:其中00为低位(1-8个遥信),01为高位(9-16个遥信)

读取:0x0100H、0x0101H 两个寄存器数据,一共读取32个遥信位置。

可通过串口软件自动计算出

主站接受报文

地址

功能码

数据长度

寄存器1状态0100H

寄存器2状态0101H

CRC校验码

 

01

03

04

03

43

00

00

0B

A3

说明
(读取01地址设备03功能码
遥信状态)

设备地址

设备的规约或点表查看
(
遥信、遥测、遥控)

表示收到4个数据
(03、03、00、00)

高位状态
(9~16号遥信状态,需转换成二进制)
000000
11
第9、10个遥信为合位

低位状态
(1~8号遥信状态,需转换成二进制)

01000011
第1、2、7个遥信为合位

高位
(17~24号遥信状态,需转换成二进制)

低位
(25~32号遥信状态,需转换成二进制)

设备自动计算出

二、ModBus-RTU报文模型

功能码与数据分类

设备地址

功能代码

数据格式

CRC校验L

CRC校验H

8bit

8bit

N*8bit

8bit

8bit

一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。

主机对从机写数据操作

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

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常用功能码

数据类型读功能码写功能码对象类型
离散量输入02单个位
线圈状态0105,15单个位
输入寄存器0416位字
保持寄存器0306,1616位字

四、寄存器起始数据地址

数据类型参数地址,寄存器编号
离散量输入00001~0FFFF
线圈状态10001~1FFFF
输入寄存器30001~3FFFF
保持寄存器40001~4FFFF

五、ModBus-RTU报文

Modbus协议中寄存器地址从1开始,而实际存储中地址从0开始。假如要读取寄存器编号为40005(4为块编号,5为modbus中寄存器地址)的寄存器的数据,则应把00 04放入报文的地址域。寄存器定义,又名码表或者信息点表,应由厂家提供的。CD 是随便写的,没任何意义。

寄存器编号

属性

定义

系数

备注

40001

RO

A相电压

 

从40048中读取电压系数

40002

RO

B相电压

 

 如要读A相电压,则应将0x00 0x00放入寄存器起始地址域中。

报文实例

1)读40005、40006两个寄存器,假设从机地址为1

下行报文:01 03 00 04 00 02 85 CA 

从机地址

功能码

寄存器起始地址

读取寄存器个数

CRC校验

01

03

00 04

00 02

85 CA

上行报文:01 03 04 00 00 00 00 21 33

从机地址

功能码

返回字节个数

寄存器40005数据

寄存器40006数据

CRC校验

01

03

04

00 00

00 00

21 33

---------------------------

2)向40005寄存器中写入0x12,0x34,假设从机地址为1

下行报文:01 06 00 04 00 01 12 34 4A B0

从机地址

功能码

寄存器起始地址

读取寄存器个数

要写入的数据

CRC校验

01

06

00 04

00 01

12 34

4A B0

上行报文:01 06 00 04 00 01 12 34 4A B0

从机地址

功能码

寄存器起始地址

读取寄存器个数

写入的数据

CRC校验

01

06

00 04

00 01

12 34

4A B0

较详细的参考代码移步:Modbus通信C代码

六、VSPD9.0调试ModBus

1、使用环境

Win7/Win10  32/64位系统 ,Virtual Serial Port Driver 9.0 虚拟com端口工具,推荐使用Modscan32,下文有述。

2、项目说明

最近项目开发使用到了Modbus协议,由于刚接触这个协议,在使用第三方工具进行调试的时候使用到了Modbus poll和Modbus slave工具,以下是简单的使用记录,希望以后对需要者有所帮助。

3、Modbus Poll和Modbus Slave软件介绍

它是一款实用的Modbus开发和调试工具,可以非常方便的进行Modbus调试,是非常有用的Modbus主机/从机模拟程序。我使用前安装了VSPD9.0虚拟com端口,因为有的电脑没有com端口工具或需要两台电脑联机调试。有了这个工具后就可以在一个电脑上虚拟出两个com端口,在一台电脑上进行调试。

下面是VSPD9.0工具虚拟界面:  

一次可以添加两个端口,我添加了com1和com2两个端口。在电脑设备管理器->端口中查看是否新加了两个端口:

4、软件使用

接下来打开已经安装的Modbus poll和Modbus slave软件,分别按“F8”或者点击Setup->Read/Write(主机)/Slave(从机) Definition配置主从端的相关配置,如图:

以上配置的是10个寄存器从机设备ID为1但只读取前4个寄存器的数据,可根据自己的需要设置。

5、目标连接

接下来按分别按“F3”或者点击“Connection”进行连接,注意修改连接界面的端口,主从机分别选择我们虚拟出来的com1和com2端口,因为只用到了RTU模式,所以其他选项如波特率9600、比特位8、校验位1等可以保持不变,然后点击确定进行连接,未连接成功窗口第二行会给出提示信息。

6、通讯开始

主机端显示:TX=11,Err=0,ID=1,F=03,SR=1000ms。意思是,发送11次命令,错误次数0,从机ID,功能号03,轮询间隔1000ms。

使用工具栏的”Communication Traffic”按钮,可以显示出当前发送命令和接受的数据,如下图:

7、安装包获取

Modbus slave、Modbus poll和Virtual Serial Port Driver 9.0 虚拟端口工具安装包获取:Modbus协议的调试工具

8、注意事项

使用完记得一定要删除,不然就算关闭了VSPD,虚拟串口也会一直存在,正常使用电脑倒是没什么影响。但是你要是插上外部设备,想用外部设备向里面通信,就会没有响应。我找了半天原因,以为我电脑出问题了,最后发现是虚拟接口没断开,相当于两个接口连了一条直连线,对外不响应。

Modscan32用来模拟主设备操作更为简单。它可以发送指令到从机设备(使用Modbus协议的终端设备)中,从机响应之后,就可以在界面上返回相应寄存器的数据。使用方法移步:Modscan32软件的使用

9、解决COM端口被占用

有关内容移步:通信-RS232、RS485、RS422串口(接口)2、解决COM串口被占用


首先要有一个具体目标,那些所有你认为必须前置的知识,都可以在完成目标的过程中学到。觉得不错,动动发财的小手点个赞哦!

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱上电路设计

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值