0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Modbus功能码/异常功能码/错误代码

nmgdmdz 来源:nmgdmdz 作者:nmgdmdz 2023-06-25 09:20 次阅读

在大家通读Modbus协议时,总是会碰到一些容易混淆的名词,从而导致对于协议的解读出现问题,在本文中,我们对于Modbus协议中可能会给大家造成困惑的名词作相关的解释。

1.功能码:功能码在modbus协议用于表示信息帧的功能,常用的功能码有03,04,06,16等,其中03功能码的作用是读保持寄存器内容,04功能码的作用是读输入寄存器内容(输入寄存器和保持寄存器的区别看下文),06功能码的内容是预置单个保持寄存器,16功能码的内容则是预置多个保持寄存器。

2.输入寄存器和保持寄存器:04功能码的作用就是读输入寄存器,而03功能码的作用则是读保持寄存器,很多人在看到这两个功能码的时候总是希望找到这两个功能码的区别,保持寄存器和输入寄存器到底是什么区别,modbus协议最开始是用来解决PLC通信协议问题的,主要用于输入输出数字量信号以及模拟量信号,所谓的输入寄存器就是从模拟量信号输入引申出来的,即输入寄存器只能从模拟量信号输入端改变寄存器,而主机则不能通过下发指令改变输入寄存器的数据,而保持寄存器则是用于输出模拟量信号的,主机是可以改变寄存器数据,也就是说对于主机而言,输入寄存器是只读的,而保持寄存器是可以读写的,当主机用06,16功能码的指令去预置输入寄存器的时候,设备会返回一个代码为0x81的错误代码,即企图写只读寄存器。

3.Modbus中的数据地址格式:在Modbus协议中,经常会出现类似于3xxxx,4xxxx寄存器,这个表示的是寄存器支持的数据类型。我们用列表来说明,还有Modbus数据地址格式是从0开始,比如以下一个寄存器40009,即表示保持寄存器,寄存器地址为00 08,类似的数据地址格式经常在组态软件以及PLC系统中用到。

映射地址 使用的功能码 地址类型 存取方式 描述
0XXXX 01,05,15 离散输出 读写 每个卷表示单个开关位
1XXXX 02 离散输入 只读 每个卷表示单个开关位
2XXXX 03,04,06,16 浮点寄存器 只读/读写 两个连续16位寄存器表示一个浮点数
3XXXX 04 输入寄存器 只读 每个寄存器表示一个16位无符号整数
4XXXX 03,06,16 保持寄存器 读写 每个寄存器表示一个16位无符号整数
5XXXX 03,04,06,16 ASCII字符 读写 每个寄存器表示两个ASCII码


4.Modbus RTU/ASCII/TCP:Modbus协议最开始是用于可编程逻辑控制器(PLC)之间的通讯,由于其具有的开放性,大量的用于现场智能仪表。Modbus协议有多个变种,其中最著名的是Modbus RTU/Modbus ASCII和Modbus TCP通信协议。其中RTU/ASCII协议是基于串行口通信,而TCP协议则是基于以太网通信。他们之间的区别和联系请参考本站其他页面内容:Modbus RTU/TCP协议解析以及Modbus RTU/ASCII通信协议异同点。

5.Modbus错误代码表,modbus有功能码,校验码,异常功能码和错误代码,其中异常功能码和错误代码非常容易混淆,一般来说异常功能码指的是某个功能码执行的时候出现的相应异常功能码,一般都是在功能码的基础上加上0x80,比如03功能码出现的异常码是0x83异常功能码,16功能码对应出现的异常功能码则是0x90,而错误代码则是表示出现错误的具体情况,比如寄存器地址不存在,不管是读还是写,如果该寄存器地址不存在的话,错误代码为02。具体情况请参阅本站其他页面文章。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    5013

    文章

    13331

    浏览量

    464174
  • MODBUS
    +关注

    关注

    28

    文章

    1812

    浏览量

    77107
收藏 人收藏

    评论

    相关推荐

    Modbus功能的回调函数如何编写呢

    FreeModbus从站设计(10)-Modbus功能的回调函数如何编写关键词:FreeModbus CubeMX HAL库 串口 功能
    发表于 02-16 07:31

    modbus功能错误会返回什么错误信息?

    modbus在通信的过程中功能错误会返回什么错误
    发表于 10-13 07:48

    modbus功能怎么用?

    modbus功能怎么用
    发表于 11-06 06:37

    MSN错误代码大全

    MSN错误代码大全  80004005   这是一个泛泛的错误代码,它意味着,“我知道出错了,但我不知道错误是什么”。   第一步,我们可以试着重新注册MSN所需的dll
    发表于 07-20 22:50 2881次阅读

    IBM笔记本错误代码解释及解决

    IBM笔记本错误代码解释及解决     IBM的ThinkPad系列笔记本电脑在国内有不少用户,笔者收集到关于ThinkPad的错误代码解释以及解决方
    发表于 01-23 14:12 888次阅读

    2013LabVIEW错误代码

    2013LabVIEW错误代码介绍,通过查看错误代码可知错误原因。
    发表于 02-25 15:00 9次下载

    LabVIEW错误代码

    labview__错误代码,感兴趣的小伙伴们可以看一看。
    发表于 09-06 18:07 0次下载

    modbus协议功能及格式

    modbus协议功能及格式
    发表于 10-28 15:56 43次下载

    ABB的DCS功能中文说明

    第一章 功能概述 一、专用术语 功能(Function Code): Symphony 系统提供了一系列完成不同功能的软件模块,并对每个
    发表于 11-23 17:26 0次下载
    ABB的DCS<b class='flag-5'>功能</b><b class='flag-5'>码</b>中文说明

    基于Modbus功能细粒度过滤算法的研究

    针对防火墙粗粒度过滤Modbus/TCP导致工控系统存在安全威胁的问题,研究基于Modbus功能的细粒度过滤算法。基于Modbus TCP
    发表于 01-16 15:32 0次下载
    基于<b class='flag-5'>Modbus</b><b class='flag-5'>功能</b><b class='flag-5'>码</b>细粒度过滤算法的研究

    单片机程序中,Modbus功能的回调函数如何编写--FreeModbus从站设计(10)

    FreeModbus从站设计(10)-Modbus功能的回调函数如何编写关键词:FreeModbus CubeMX HAL库 串口 功能
    发表于 12-20 18:49 9次下载
    单片机程序中,<b class='flag-5'>Modbus</b><b class='flag-5'>功能</b><b class='flag-5'>码</b>的回调函数如何编写--FreeModbus从站设计(10)

    modbus协议功能分类 modbus协议功能是什么,有什么作用

    Modbus协议是一种用于工业领域常见的通信协议,它基于主从结构,用于在不同设备之间实现数据交换。Modbus协议的功能是决定数据交换类型和操作的重要部分。下面将详细介绍
    的头像 发表于 01-31 14:47 7377次阅读

    介绍一些常见的Modbus IO通信错误代码及其含义

    Modbus IO通信协议中的错误代码通常用于标识通信过程中出现的错误异常情况。
    的头像 发表于 03-06 09:03 2720次阅读

    Modbus功能详解

    Modbus标准在协议中规定了以下3类Modbus功能
    的头像 发表于 10-29 14:35 1371次阅读

    SQL错误代码及解决方案

    中存在语法错误,如拼写错误、缺少必要的关键字等。 解决方案 : 仔细检查SQL语句,确保语法正确。 使用SQL编辑工具或集成开发环境(IDE)的语法高亮和自动完成功能来帮助检测语法错误
    的头像 发表于 11-19 10:21 2182次阅读