• 认识Modbus通信协议(笔记)


    Modbus 莫迪康 1979年

    PLC 1969年

    什么是modbus?

    它是一个Bus,即总线协议。比如串口协议、IIC协议、SPI都是通信协议

    协议,顾名思义是一种规定和约束

    Modbus协议是一种引用层的报文传输协议,RTU、ASCLL、TCP,都属于Modbus协议。

    大部分的设备都是Modbus-RTU协议的。

    2.Modbus用来干什么?

    大佬概括:通信

    通信:其实就是读写

    modbus RTU通信协议为例:

    存储区:

    输出线圈 0

    00001-09999

    000001-065536

    输入线圈 1

    10001-19999

    100001-165536

    输出寄存器 4

    40001-49999

    400001-465536

    输入寄存器 3

    30001-39999

    300001-365536

    存储区范围:5位6位标准地址 扩展地址

    Modbus如何进行通信?

    通过读和写的功能,进行通信, 通过功能码进行操作。

    读和写            功能码
    读输出线圈       01

    读输入线圈        02

    读输出寄存器      03

    读输入寄存器        04

    写单个输出线圈              05

    写单个输出寄存器            06

    写多个输出线圈              15

    写多个输出寄存器            16

    Modbus-RTU协议

    协议就是要求和规定、约束,大家一起遵循这个要求通过这个规定的交流模式下进行交流!列如(中国人都说中文,通过中文交流,如果我们用中文和老外交流就无法进行交流)

    帧结构

    帧结构 = 地址 + 功能码+ 数据 + 校验

    • 地址: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。就是设备地址。

    • 功能码:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。列如:03就是读取单个寄存器、01是读出线圈。

    • 数据:根据功能码不同,有不同结构,在下面的实例中有说明。

    • 校验:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了

    报文格式:从站地址(设备编号)+功能码+数据+校验

    对于读取来说:

    从站地址(设备编号)          找谁?

    功能码                              干嘛

    数据                          具体干嘛的细节

    校验                              验证

    对于写入来说:

    从站地址(设备编号)            找谁?

    功能码                                   干嘛

    数据                        具体干嘛的细节((更多,多了个写入的具体数值)

    校验                                       验证


     

  • 相关阅读:
    多环境的axios配置和简易版配置
    【操作系统】文件管理(三)—— 文件的目录结构
    深度解析KubeEdge EdgeMesh 高可用架构
    SpringCloud Alibaba微服务第4章之Nacos
    QT QDoubleSpinBox 浮点计数器控件(使用详解)
    计算机组成原理习题课第四章-4(唐朔飞)
    算法 |【实验5.2】1-深度优先搜索暴力求解旅行商问题
    yolov5自动训练/预测-小白教程
    Redis 主从搭建简单教程
    MySQL innoDB 间隙锁产生的死锁问题
  • 原文地址:https://blog.csdn.net/dawfwafaew/article/details/134290096