jbo竞博

欢迎光临~广州jbo竞博电子科技有限公司
联系电话 手机/微信:

18925103846

您的位置: 网站首页 > 资料知识

资料知识

关于 Modbus 总结学习

Modbus 总结学习


   Modbus 是一个基于 RS485 的工业标准通讯协议 ,广泛的应用在工业控制中 ,主要的 应用还是在 PLC 等等设备中 。详细的概念这里就不做说明 ,只对使用进行详细说明

1、modbus 的一些特点

(1)、在同一个 modbus 网络中 ,只能有 1 台主机 ,多台从机 。

(2)、modbus 从机才需要地址 ,主机没有地址 ,不需要初始化地址

(3)、modbus 有的通讯都是由主机发起的 ,也就是说从机不可能主动发数据给从机 。modbus 是主从的 ,只能主问从答 ,从机不能主动上送 。

2、modbus 有两种通信方式:

(1)、RTU 的方式 --- 这个是jbo竞博使用的方式 ,下面说有的介绍都是基于 RTU 这种方式 (2)、ASCLL 码的方式 --- 他的数据字节是 7bit 位 ,我们普通的 mcu 不太好实现 。另外市场上 用的比较少 。所以这种方式 ,这里不做研究

 

二、RTU 模式

1、RTU 模式的数据帧格式说明

image002

(1)、起始位和结束符是一样的

(2)、T1-T2-T3-T4 代表的意思?

这个问题是针对于 modbus rtu 协议的 ,这是 modbus rtu 协议的数据格式 。其中 T1-T2-T3-T4 表示 4 个字节的通讯间隔 。在 modbus rtu 协议中要求每个数据包的前后有至少传输 3.5 个字 节的时间间隔 ,用来间隔多条数据

(3)、CRC16 校验参照别人现成的就可以了 ,不详细深究

(4)、设备地址:这个好理解 。Modbus 主机的地址不需要设定 ,从机的地址可设定为 1~247 。

(5)、功能代码:参见下面的详细说明

(6)、数据:参见下面详细说明

2、RTU模式下如何判断数据的开始

image004

三、功能代码说明

image006

1、常用功能代码

(1)、03 功能代码 。这个功能代码就是读取指定的寄存器的数据 。

==>其实说白了 ,这里面的寄存器是自己所定义的 。

==>应用到jbo竞博产品中 ,其实就是读取系统的状态、以及文件总数等等数据.

==>也就是我们所说的查询功能 。

(2)、06 功能代码 。这个功能代码就是写入数据到寄存器中 。

==>其实说白了 ,这个就是主机发送数据 ,而从机接受到之后 ,写入到自己设定的寄存器中 。

==>应用到jbo竞博产品中 ,其实就是主机发送一个指令给我们芯片 ,而jbo竞博芯片将这个指令存储到所建立的寄存器 buffer 中 ,再对这个指令进行相应的动作

==>也就是我们常说的“控制功能”

四、举例说明

1、06 功能码

image008

如图:jbo竞博 USB 转 485 ?樾槟獬龅氖 COM5 ,波特率 9600 ,无校验位 ,数据位是 8 位 ,

1 位停止位 ,设备地址假设为 1 。

(1)、写寄存器的时候 ,如果我们要把 01 写到一个地址是 0000 的寄存器地址里 ,点一下“写

入” ,就会出现发送指令:01 06 00 00 00 01 48 0A 。 (2)、我们来分析一下这帧数据 ,其中 01 是设备地址 ,06 是功能码 ,代表写寄存器这个功 能 ,后边跟 00 00 表示的是要写入的寄存器的地址 ,00 01 就是要写入的数据 ,48 0A 就是 CRC 校验码 ,这是软件自动算出来了 。

(3)、而根据 Modbus 协议 ,当写寄存器的时候 ,从机成功完成该指令的操作后 ,会把主机 发送的指令直接返回 ,jbo竞博调试精灵会接收到这样一帧数据:01 06 00 00 00 01 48 0A 。

 

2、03 功能码

假如我们现在要从寄存器地址 0002 开始读取寄存器 ,并且读取的数量是 2 个 。如上图

(1)、点一下“读出” ,就会出现发送指令:01 03 00 02 00 02 65 CB 。

(2)、其中 01 是设备地址 ,03 是功能码 ,代表写寄存器这个功能 ,00 02 就是读寄存器的起 始地址 ,后一个 00 02 就是要读取 2 个寄存器的数值 ,65 CB 就是 CRC 校验 。 (3)、而接收到的数据是:01 03 04 00 00 00 00 FA 33 。其中 01 是设备地址 ,03 是功能码 ,

04 代表的是后边读到的数据字节数是 4 个 ,00 00 00 00 分别是地址为 00 02 和 00 03 的寄存 器内部的数据 ,而 FA 33 就是 CRC 校验了 。751697315

五、配置文件的说明

image010

1、如上图 ,我们新建的一个 read.cfg 文件 ,里面填入的数字是“030010” ,代表含义如下

(1)、第1位 0 ,代表的意思是按键模式配置为 0 ,详细的功能请查找表格

(2)、第二位 3 和第三位 0 ,共同组成了音量为 30 级 ,如果这里为 21 的话 ,是 21 级音量

(3)、第四位 0 和第五位 1 ,共同组成了 modbus 的设备地址 ,这里地址设定为 01 地址 如果要设定为 10 地址的话 ,这里两位填入 10 即可

(4)、后一位代表的是 busy 脚输出信号 ,

01 06 00 01 00 00 D8 0A --- 代表下一曲的命令

01 06 00 03 00 02 F8 0B --- 指定播放第二曲

6、测试说明

image012  

我们有的 modbus 的指令测试 ,都是通过电脑端的工具测试的 ,使用的是“MODBUS 调试助手.exe” ,这个软件可以问我们索取

测试说明如下:

我们只需要用到 03 和 06 这两个功能码

测试我们所设定的地址为 02

完全支持 modbus 的标准协议

1、测试 06 功能码

Modbus 对于 06 功能码要求:从机收到数据之后 ,将主机发送的数据再次发给主机 ,作 为从机收到主机的指令的应答

(1)、0x01 指令测试

image013

这里 modbus 主机发送的数据是“02 06 00 01 00 00 D8 39 ” 代表的含义是:指定下一曲播放

(2)、0x03 指令测试

image014

这里 modbus 主机发送的数据是“02 06 00 03 00 02 F8 38 ” 代表的含义是:按照物理顺序指定第二段语音播放

(3)、0x08 指令测试

image015

这里 modbus 主机发送的数据是“02 06 00 08 00 02 89 FA” 代表的含义是:按照物理顺序指定第二段语音循环播放

(4)、0x0F 指令测试

image016

这里 modbus 主机发送的数据是“02 06 00 0F 01 01 79 AA ” 代表的含义是:指定 01 文件夹下面的 001xxx.mp3 文件播放

用手机扫描二维码关闭
二维码
【网站地图】