modbus完整支持很多功能码,但是实际在应用的时候常用的也就那么几个。具体如下:

  • 0x01: 读线圈寄存器(DO)

  • 0x02: 读离散输入寄存器(DI)

  • 0x03: 读保持寄存器(AI)

  • 0x04: 读输入寄存器(AO)

  • 0x05: 写单个线圈寄存器

  • 0x06: 写单个保持寄存器

  • 0x0f: 写多个线圈寄存器

  • 0x10: 写多个保持寄存器

如上所示一共8种功能码。这其中有涉及到线圈、离散输入、保持、输入四种寄存器。下面分别解释一下:

线圈寄存器:实际上就可以类比为开关量,每个bit都对应一个信号的开关状态。所以一个byte就可以同时控制8路的信号。比如控制外部8路io的高低。 线圈寄存器支持读也支持写,写在功能码里面又分为写单个线圈寄存器和写多个线圈寄存器。对应上面的功能码也就是:0x01 0x05 0x0f

离散输入寄存器:如果线圈寄存器理解了这个自然也明白了。离散输入寄存器就相当于线圈寄存器的只读模式,他也是每个bit表示一个开关量,而他的开关量只能读取输入的开关信号,是不能够写的。比如我读取外部按键的按下还是松开。所以功能码也简单就一个读的 0x02

保持寄存器:这个寄存器的单位不再是bit而是两个byte,也就是可以存放具体的数据量的,并且是可读写的。比如我我设置时间年月日,不但可以写也可以读出来现在的时间。写也分为单个写和多个写,所以功能码有对应的三个:0x03 0x06 0x10

输入寄存器:只剩下这最后一个了,这个和保持寄存器类似,但是也是只支持读而不能写。一个寄存器也是占据两个byte的空间。类比我我通过读取输入寄存器获取现在的AD采集值。对应的功能码也就一个 0x04

对应的错误返回:
在对应功能码基础上加上0x80
1、“01”读取线圈状态发送

 0x01(01): 读线圈寄存器发→◇ 03 01 00 00 00 00 3D E8收←◆ 03 01 01 00 50 30

2、“02”读取输入状态

 0x02(02): 读离散输入寄存器发→◇ 03 02 00 00 00 40 78 18   收←◆ 03 02 08 01 00 30 00 0C C0 00 00 08 FA 去掉地址码(03)、功能码(02)、寄存器长度(08)、CRC(08 FA ),01 00 30 00 0C C0 00 00 转二进制  存在高低位

3、“03”保持型寄存器读取

Rx:1603-03 03 02 00 01 00 44        03(地址码) 03(功能码) 00 F0(起始地址) 00 01(输入数量) 85 DB(CRC)
Tx:1604-03 03 00 F0 00 01 85 DB

4、“05”写单个线圈寄存器

 0x05(05): 写单个线圈寄存器发→◇ 03 05 00 00 FF 008D D8                        03(地址) 05(功能码) 00 00(寄存器地址) FF 00(写入的值) 8D D8(CRC)      收←◆ 03 05 00 00 FF 00 8D D8发→◇ 03 05 00 00 00 00 CC 28收←◆ 03 05 00 00 00 00 CC 28 

5、“06”写单个保持寄存器

Tx:1605-03 06 00 F0 00 01 49 DB        03(从站地址) 06(功能码) 00 F0(起始地址) 00 01(寄存器值) 49 DB(CRC)
Rx:1606-03 06 00 F0 00 01 49 DB

6、“15”: 写多个线圈寄存器

 0x0f(15): 写多个线圈寄存器  发→◇ 03 0F 00 12 00 15 01 FF 17 09               03(地址) 0F(功能码) 00 12(起始地址) 00 15(写入线圈个数) 01(写入字节数) FF(写入值) 17 09(CRC)   收←◆ 03(地址) 0F(功能码) 00 12(起始地址) 00 15(写入线圈个数) 35 E3(CRC)出错时:功能码 0X8F      错误代码:01/02/03/04发→◇ 03 0F 00 12 00 15 01 00 57 49收←◆ 03 0F 00 12 00 15 35 E3 22U发→◇ 03 0F 00 00 00 08 01 FF 3F 0C收←◆ 03 0F 00 00 00 08 55 EF 发→◇ 03 0F 00 00 00 08 01 00 7F 4C收←◆ 03 0F 00 00 00 08 55 EF

7、0x10(16): 写多个保持寄存器

90.6
Tx:1378-03 10 00 00 00 02 04 42 B5 33 33 A9 6C            03(地址) 10(功能码) 00 00(起始地址) 00 02(寄存器数量 N) 04(字节数 2*N) 42 B5 33 33(寄存器值) A9 6C(CRC)
Rx:1379-03 10 00 00 00 02 40 2A        03(地址) 10(功能码) 00 00(起始地址) 00 02(寄存器数量 N) 40 2A(CRC)0.0
Tx:1408-03 10 00 00 00 02 04 00 00 00 00 F8 17
Rx:1409-03 10 00 00 00 02 40 2A

modbus功能码定义和样例相关推荐

  1. python 函数定义的样例

    函数定义的样例 一. 定义一个函数,且有一个参数 函数功能: 取得传入字符串的第一个字符和最后一个字符,并返回 def func(arg):return arg[0] + "-" ...

  2. sql语句变量定义和样例

    变量和与常量 1.定义和使用局部变量 说明:局部变量是用户可自定义的变量,它的作用范围仅在程序内部.局部变量的名称是用户自定义的,命名的局部变量名要符合SQL Server 2000标识符命名规则,必 ...

  3. 2021年大数据常用语言Scala(三十二):scala高级用法 样例类

    目录 样例类 定义样例类 样例类方法 样例对象 样例类 样例类是一种特殊类,它可以用来快速定义一个用于保存数据的类(类似于Java POJO类),而且它会自动生成apply方法,允许我们快速地创建样例 ...

  4. Scala _09样例类(case classes)隐式转换

    样例类(case classes) 概念理解 使用了case关键字的类定义就是样例类(case classes),样例类是种特殊的类.实现了类构造参数的getter方法(构造参数默认被声明为val), ...

  5. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁)...

    你完全不必耐心看完所有内容:简要安装说明如下 安装 http://sourceforge.net/projects/awstats/ 下载安装包后: GNU/Linux:tar zxf awstats ...

  6. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁)

    你完全不必耐心看完所有内容:简要安装说明如下 安装 http://sourceforge.net/projects/awstats/ 下载安装包后: GNU/Linux:tar zxf awstats ...

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

    FreeModbus从站设计(10)-Modbus功能码的回调函数如何编写 关键词:FreeModbus CubeMX HAL库 串口 功能码 此系列的前面几篇文章,主要是阐述了用HAL库生成keil ...

  8. ACMNO.19 C语言-对角求和 求一个3×3矩阵对角线元素之和。 输入 矩阵 输出 主对角线 副对角线 元素和 样例输入 1 2 3 1 1 1 3 2 1 样例输出 3 7

    这个我做了改进,可以实现NXN的矩阵.求出对角线之和! 只需要修改定义的define z的值就好! 接下来,进入正题! 题目描述: 求一个3×3矩阵对角线元素之和. 输入 矩阵 输出 主对角线 副对角 ...

  9. Swift - 委托(delegate)的介绍,及使用样例

    1,委托的说明 委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象. 比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象B的引用存为一个实例变量 ...

最新文章

  1. mysql dump gtid_mysqldump导出数据备份 --set-gtid-purged=OFF
  2. ubuntu之使用sublime text3搭建Python IDE
  3. python xlsx 图片_实例11:用Python给Excel所有工作表添加图片
  4. Swift之深入解析内存管理的底层原理
  5. Pixhawk的传感器数据(陀螺、加计等)流程
  6. MAC Android Studio SDK 无法更新问题
  7. python非阻塞输入_Python 命令行非阻塞输入的小例子
  8. 【2016年第1期】农业大数据给商品交易所带来的机遇和挑战
  9. scp 覆盖_SCP-002 - “生活”室
  10. 华侨大学计算机应用技术章亮,华侨大学学生综合素质测评成绩汇总表
  11. 基于STM32的PWM电机驱动TB6612、A4950
  12. vba 输出文本 m linux,VBA使用FileSystemObject将读取或写入文本文件(一)
  13. 共享黑名单是行业潜规则
  14. python的seek用法
  15. 最全CSS基础知识图片形式整理
  16. 【Educoder作业】绘制炸弹轨迹 I——绘制一个坐标点
  17. badboy简介和回放
  18. tcp连接之半连接攻击和全连接攻击总结
  19. GG平面图和RNG平面图的matlab实现
  20. templateRef.createEmbeddedView is not a function

热门文章

  1. 东莞计算机信息高新技术考试站,东莞高新技术企业认定申报备案系统
  2. NFS与IOS-Android
  3. Nginx 图片上传 FastDFS
  4. 中国古代四大神兽传说
  5. java写字板_基于JAVA模拟写字板程序的设计与实现
  6. 用爬虫来爬取csdn大神的文章的url
  7. 隐私政策 appstore_隐私政策促进购买
  8. HTML5前端如何实现日期选择(日历)
  9. mysql幂函数_MySQL 数学函数
  10. sql复制表结构及内容