初出茅庐的小李第86篇博客之Modbus协议总结
Modbus协议来源
Modbus协议的由来
Mod,取自英文单词” Modicon”,Modicon 中文翻译为莫迪康,是美国一家自动化公司的名字,现在这家公司被法国的施耐德电气(Schneider Electric)收购。
Bus,作为名词有两个意思,一个是公共汽车;另一个是总线(计算机系统的),我们知道在自动化系统中有很多种现场总线,比如CAN Bus是CAN 总线、LIN Bus 总线、ProfiBus 总线等等,一个经常用到的词Field Bus 现场总线。
协议,英文叫做Protocol,是通信各方事前约定的通信规则,通信约定。协议有时候也叫规约,举例TCP/IP协议,HTTP协议等等。
我们把以上三部分联合起来,Modbus 协议就是Modicon公司发表的一种总线协议,发表于1979年,当时是用于可编程逻辑控制器(PLC)之间通信的。
————————————————
版权声明:本文为CSDN博主「xuxg2005」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuxg2005/article/details/104215147
如何理解协议
协议就是一种规约,所谓规约就是规定和约定,协议规定了电平信号传输介质和数据帧格式,这里可以类比人类交流是所用的语言,中文、英文、法文这些都是约定如果一个会说中文的人给一个能听懂中文的人说话 那么这个信息就能够传递,试想如果一个说中文的甲和一个只能听懂英文的乙那么二者就无法交流。
Modbus协议分类
就好比同样是中文一样 有好多种方言 Modbus协议有不止一种
Modbus-RTU
Modbus-ASCII
Modbus-TCP
Modbus-Plus
这些都是Modbus协议
Modbus中关于通信的几个概念
通信的本质是读写 读写的对象有
- 线圈
- 寄存器
线圈分类
输出线圈 用 0表示
输入线圈 用1表示
寄存器分类
输入寄存器 用3表示
输出寄存器 用4表示
如果把通信的过程比作写信 那么线圈 和寄存器 就好比信箱能够装信息
只不过这里线圈只能装一封信也就是一个bit,而寄存器能装的就比较多它能装16封信
这里就是常说的一个寄存器占两个字节一个字节是8位,既然是信箱那么信箱就不可能无限多一定有个范围这个范围就叫寄存器或者线圈的地址。
地址的范围描述
标准地址
0 0001- 0 9999 0表示输出线圈
1 0001- 1 9999 1表示输入线圈
3 0001- 3 9999 3表示输入寄存器
4 0001- 4 9999 4表示输出寄存器
扩展地址
0 00001 - 0 65536 0表示输出线圈
1 00001- 1 65536 1表示输入线圈
3 00001- 3 65536 3表示输入寄存器
4 00001- 4 65536 4表示输出寄存器
对线圈和寄存器的操作有
- 读
- 写
读写的对象有四种 :
输入线圈 0
输出线圈 1
输入寄存器 3
输出寄存器 4
输入能读 不能写 输出可读也可写
所以方法一共有6种:
读输出线圈 编号 01
读输入线圈 编号 02
读输出寄存器 编号 03
读输入寄存器 编号 04
写输出线圈 编号 05
写输出寄存器 编号 06
每个功能有个编号 或者称其为代号 这个代号的官方称呼就是:功能码
特别的对于写线圈和寄存器还有写入多个的情况就是
写多个线圈 编号 15 单个是05
写多个寄存器 编号 16 单个是06
Modbus报文格式
从站地址 又叫设备编号
功能码 又叫操作方法的编号
数据 内容 读的内容 或者写的内容 抽象的
校验 检查数据和功能码以及从站地址的信息
数据:写和读的数据是不一样的 但是都叫数据 方便写统一的公式进行了一次抽象。
Modbus读报文格式
地址:读谁
功能码:读线圈 还是读寄存器? 干什么
数据:具体干什么 读的细节信息
校验: 以上信息的检查是否合适
Modbus读报文格式
地址:写谁
功能码:写线圈 还是写寄存器 写一个 还是多个? 干什么?
数据:具体干什么 写的细节信息
校验: 以上信息的检查是否合适
Modbus校验方法
CRC-16
初出茅庐的小李第86篇博客之Modbus协议总结相关推荐
- 初出茅庐的小李第3篇博客《5G物联网及NB-IoT技术详解》读书笔记1
初出茅庐的小李第3篇博客 <5G物联网及NB-IoT技术详解>读书笔记1 在Mculover666那里白嫖了一本书,不要问我咋白嫖的,我也不知道- 为什么要写这样的笔记? 因为我白嫖的时候 ...
- 初出茅庐的小李第113篇博客项目笔记之机智云智能浇花器实战(2)-基础Demo实现
初出茅庐的小李第112篇博客项目笔记之机智云智能浇花器实战(1)-基础Demo实现 接(1) 继电器实现 继电器原理图 继电器采用的是5V继电器,控制端是RELAY-1 继电器代码实现 #includ ...
- 初出茅庐的小李第39篇博客之转载一篇有关unistd.h的介绍文章
转载一篇文章 mask一下好找 unistd.h在unix中类似于window中的windows.h! #ifdef WIN32 #include <windows.h> #else #i ...
- 初出茅庐的小李第19篇博客之广和通G510模块接入机智云平台
2020年5月1日劳动节 为什么要说一下这个日期,因为我上一次玩(学)G510模组是去年2019年5月1日,由于种种原因吧,一直也没有机会再次操作,而且不幸的一件事情就是,我还把上次搞的代码搞丢了,也 ...
- 初出茅庐的小李第73篇博客之offsetof(type, member-designator)使用
offsetof(type, member-designator) 这是一个宏定义包含在<stddef.h>里,它的作用是用来计算一个结构成员相对于结构开头的字节偏移量. 说到这里我先来补 ...
- 初出茅庐的小李第59篇博客之测试Modbus协议的继电器
1, Modbus RTU指令详解 发送: FF 05 00 00 FF 00 99 E4 字段 含义 注释 FF 设备地址 范围1-255,默认255 05 功能码 写单个线圈 00 00 继电器地 ...
- 初出茅庐的小李第114篇博客项目笔记之机智云智能浇花器实战(3)-基础Demo实现
机智云智能浇花器实战(3)-基础Demo实现 链接:机智云智能浇花器实战(2)-基础Demo实现 BH1750光照传感器原理图 BH1750传感器代码 #include "bh1750.h& ...
- 初出茅庐的小李第36篇博客之读取旋转编码器正反转状态(arduino uno 测试)
旋转编码器的引脚 CLK(A相) DATA(B相) SWITCH VCC GND 工作原理 旋转编码器的工作原理以及如何在Arduino中使用 https://www.yiboard.com/thre ...
- 初出茅庐的小李第115篇博客之智能浇花器实战分享(4)
机智云智能浇花器实战分享(下) 机智云平台如何创建数据点: 机智云官方网站:机智云|物联网云平台,AIoT开发云平台,Aiot软件开发平台.AIoT开发云平台.工业物联网解决方案 (gizwits.c ...
最新文章
- 上传文件到 Web 服务器
- SpringCloud之Feign源码分析
- 计算机网络早期结构图,第21讲 计算机网络应用基础(一).ppt
- 获取 子文件夹 后缀_CSDN学院第一个Ptython Homework-- 递归统计文件夹大小
- Oracle学习笔记--导航
- android学习笔记---39_采用Service实现电话监控器,刻录打电话者的声音后通过socket上传到服务端
- Qt之tcp的简单使用
- android so劫持,防劫持SDK
- 大学计算机aoa学什么,浙江省高校计算机二级AOA考试excel试题及解析.xls
- python实习内容过程_实习报告
- 磁环介绍与应用(转)
- 做php外包常用的框架
- 12306分流免费抢票工具
- iOS 应用崩溃日志分析
- RTI DDS windows环境下的下载和安装
- 自动调度属于计算机领域的,调度自动化
- python绘制函数曲线
- TS报错Error: xxx doesn‘t exist on type ‘xxx’
- vulfocus复现:Log4j2远程命令执行2
- java8 stream .skip() .limit() 实现分页功能
热门文章
- EPlan2.6版本解决卡顿未响应问题(安装防卡顿布丁)
- performSelector的原理以及用法
- 数学_有趣的有理数(绘制有理数)
- 《 线性代数及其应用 (原书第4版)》—— 2.6 列昂惕夫投入产出模型
- 将图片保存为.EPS格式
- 整样运用计算机考试,计算机等级考试真题的重要性及如何高效利用?
- 3DMark2005终于过4000了
- 自已写的“动易PowerEasy2006暴库工具”
- 长安大学C语言程序设计作业,2017春C语言程序设计 上(长安大学)
- 时间管理(Time Management)