当前位置: 首页 > news >正文

通信协议_Modbus协议简介

概念介绍

  • Modbus协议:一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
  • 通信具象化解释:类似人的交流过程,需要有通信角色(主从,客户端服务器…),通信介质(串口,以太网,无线…),通信协议(modbus,S7,MC…)三个要素。
  • 网络协议三要素:语法(数据与控制信息的结构或格式),语义(发出何种控制信息),同步(事件实现顺序,匹配速度等的详细说明)。

modbusRTU协议介绍

语法结构:

  • 地址码:用于标识从站设备,范围是0到247,其中0为广播地址,所有从站设备都会接收该地址的数据。
  • 功能码:用于指示要执行的操作类型,例如读取寄存器值、写入单个寄存器等。
  • 数据:包括寄存器地址、数据值等信息,根据功能码的不同,数据的内容和长度也会不同。
  • CRC校验码:用于检测数据在传输过程中是否出现错误。在数据帧的最后添加两个字节CRC校验码,接收方收到数据后,重新计算CRC校验码,并与接收到的CRC校验码进行比较,如果不同,则说明数据在传输过程中出现了错误。

功能码:

  • 功能码01:读取线圈状态(Read Coils),用于从远程设备中连续读取1到2000个线圈的状态。
  • 功能码02:读取输入状态(Read Inputs),取得一组开关输入的当前状态ON/OFF。
  • 功能码03:读取保持寄存器(Read Holding Registers),在一个或多个保持寄存器中取得当前的二进制值。
  • 功能码04:读取输入寄存器(Read Input Registers),在一个或多个输入寄存器中取得当前的二进制值。
  • 功能码05:强置单线圈(Force Single Coil),强置一个逻辑线圈的通断状态。
  • 功能码06:预置单寄存器(Preset Single Register),把具体二进值装入一个保持寄存器。
  • 功能码15:强置多线圈(Force Multiple Coils),强置一串连续逻辑线圈的通断。
  • 功能码16:预置多寄存器(Preset Multiple Registers),把具体的二进制值装入一串连续的保持寄存器。

例:
读取(03)从站(01)中的窗帘打开程度(从第二个开始读:00 02 读一位 00 01 CRC校验 25 CA):
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/397611.html

相关文章:

  • LabVIEW优化氢燃料电池
  • SpringCloudGateway
  • Wireshark 对 https 请求抓包并展示为明文
  • 如何在Ubuntu环境下使用加速器配置Docker环境
  • 2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片
  • 算法简介:什么是算法?——定义、历史与应用详解
  • xss攻击
  • Android 性能优化之布局优化
  • TCP 握手数据流
  • MDA协议
  • always块敏感列表的相关报错,
  • STM32空闲中断处理串口接受数据
  • oak相机使用oak官网方式标定
  • 打造高效能“园区企业服务平台”,让企业更好更快发展!
  • 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)
  • 前端时间格式传入后端负载里面没有东西
  • BUCK电源芯片,电气参数,极限参数,工作特性,引脚功能
  • 学习小记-使用Redis的令牌桶算法实现分布式限流
  • electron + express 实现 vue 项目客户端部署
  • 千万慎投!自引率高达93%!这16本On hold正处于高危状态,无法检索,剔除岌岌可危中!近四年镇压期刊“出狱”情况一览
  • 【数据结构】排序——快速排序
  • Matlab 怎么查找矩阵中所有0的数据并赋值
  • 开发一个HTTP模块
  • vue2实现复制,粘贴功能,使用vue-clipboard2插件
  • 【软件测试】 1+X初级 功能测试试题
  • zynq启动和程序固化流程
  • CSS3实现彩色变形爱心动画【附源码】
  • 【JVM基础篇】Java的四种垃圾回收算法介绍
  • Kodcloud可道云安装与一键发布上线实现远程访问详细教程
  • python杨辉三角的两种书写方式