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
|