博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Modbus协议
阅读量:4591 次
发布时间:2019-06-09

本文共 932 字,大约阅读时间需要 3 分钟。

一、Modbus协议简介

Modbus一个工业上常用的通讯协议、一种通讯约定。

协议包括了:RTU、ASCII、TCP。其中RTU最常用,较简单,在单片机上很容易实现
通讯方式:主从-双向读写
常用接口形式:RS232C、RS485、RS422
常用波特率:1200、1800、2400、4800、9600、12500 等等
常见设备默认波特率:9600
自动化领域中RTU模式每个字节格式:
编码系统:八位二进制,16进制0-9 A-F
数据位:1起始位
8位数据低位先送
奇偶校验1位,无校验0位
停止位:带校验1位,无校验两停止位
1226829-20190522213346531-73035630.png

1.2 报文格式及解析
  • 如图为协议格式:

1226829-20190522210303761-580884731.png

分析一条实际报文:01 06 00 01 00 17 98 04

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

这串命令会把数据 0x0017(十进制23) 写入 1号从机地址 0x0001数据地址。

1.2.2 从机地址
  • 00 为广播地址
  • 01-FF(255) 从机地址(从机有效设备地址范围:01-247)
  • 01 就位一号机,会往指定从机发送命令
1.2.3 功能号

1226829-20190522212306378-612711650.png

  • 常用功能号:
    01 (0x01) 读线圈
    02 (0x02) 读离散量输入
    03 (0x03) 读保持寄存器
    04(0x04) 读输入寄存器
    05 (0x05) 写单个线圈
    06 (0x06) 写单个寄存器
    15 (0x0F) 写多个线圈
    16 (0x10) 写多个寄存器
  1. 主机对从机 01 写数据操作:功能号06

    如果单片机接收到一个报文那么就对报文进行解析执行相应的处理,如报文:
    01 06 00 01 00 17 98 04

  2. 主机对从机 01 读数据操作:功能号03

    主机进行读HoldDataReg[1] 操作,如报文:
    01 03 00 01 00 01 D5 CA
    从机返回格式为:

从机地址 功能号 数据字节个数 两个字节数据 CRC校验
01 03 02 0017 F8 4A

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

1226829-20190522214335294-826734922.png

1226829-20190522214420398-182859268.png

1226829-20190522214442128-657007081.png

转载于:https://www.cnblogs.com/shiqi17/p/10908528.html

你可能感兴趣的文章
android新手关于左右滑动的问题,布局把<android.support.v4.view.ViewPager/><ImageView/> 放在上面就不行了。...
查看>>
深入理解DIP、IoC、DI以及IoC容器
查看>>
赋值文件
查看>>
Vue 数组 字典 template v-for 的使用
查看>>
蓝牙模块选择经验谈
查看>>
java中==和equals
查看>>
CCActionPageTurn3D
查看>>
python random
查看>>
esp32-智能语音-cli(调试交互命令)
查看>>
netty与MQ使用心得
查看>>
关于dl dt dd 文字过长换行在移动端显示对齐的探讨总结
查看>>
组合设计模式
查看>>
第十五部分_Struts2.1拦截器深度剖析、异常处理
查看>>
Python匿名函数详解
查看>>
python面向对象(六)之元类
查看>>
quartz.net插件类库封装(含源码)
查看>>
package.json中 npm依赖包版本前的符号的意义
查看>>
Cygwin下获取Android源代码
查看>>
C 自删除技术---批处理方式
查看>>
maven学习(下)利用Profile构建不同环境的部署包
查看>>