声明:文章摘自http://m.pcpop.com/article_4546662.html

常用功能码01和02

功能码01的作用是读取线圈状态。在数字量输出(Digital Output,DO)中,一个DO接点就能够控制一个线圈的通电和断电,所以读取线圈状态就是读取数字量输出点的状态,是1 bit的信息。例如,对于S7-200 PLC,Q0.0就是一个DO接点。对于单片机,若预置P0.0口用于DO,则P0.0就是一个DO接点,读取线圈状态就是读取P0.0端口的状态。

按Modbus协议,功能码01是读取输出点的状态,但在PLC、单片机方面可以对它有扩展性的解释。例如,在单片机程序设计时,可以把该功能码处理为读取一般意义的位,并不限于DO。

功能码02的作用是读取输入状态,也就是读取一个数字量输如(Digital Input,DI)接点的状态。例如,对于单片机,若预置P1.0口用于DI,则P1.0就是一个DI接点,读取输入状态就是读取P1.0端口的状态。同功能码01一样,功能码02在具体实现时,也可以扩展为读取一般意义的位,并不限于DI。

RTU模式下,主机发送功能码01、02命令的帧格式如下:

地址 功能码 读取线圈起始地址高字节 读取线圈起始地址低字节 读取线圈个数高字节 读取线圈个数低字节 CRC校验
1字节 01或02 1字节 1字节 1字节 1字节 2字节

从机应答主机命令的帧格式如下:

地址 功能码 返回数据字节个数 返回数据字节1 返回数据字节2 ...... 返回数据字节n CRC校验
1字节 01或02 1字节 1字节 1字节 ....... 1字节 2字节

下面对主机发送命令信息和从机应答信息进行实例解析。

主机发送:03 01 00 00 00 08 3C CC

命令解析:Modbus协议RTU模式的信息都以16进制数表示。03为从机地址:01为功能码01;00 00为线圈的起始地址;00 08为要读取的线圈数,共读取8个线圈;3C为CRC校验低字节,CC为CRC校验高字节。

从机应答:03 01 01 00 50 30

命令解析:03为从机地址;第一个01为功能码01;第二个01为返回数据字节个数;00为数据字节1,其最低位是起始地址线圈的状态;50为CRC校验低字节,30为CRC校验高字节。

03和04

功能码03的作用是读取保持寄存器的值。保持寄存器,就是其值不被外部输入信号改变的寄存器。例如,保存模拟量输出接点(Analog Output,AO)的数字量(即D/A转换的数字量)的寄存器,就是保持寄存器。功能码03也可以被扩展为读取控制器内部多种16位寄存器的值。

功能码04的作用是读取输入寄存器的值。输人寄存器,就是保存外部输入信号数字量的寄存器。例如,保存模拟量输入接点(Analog Iutput,AI)的数字量(即A/D转换的数字量)的寄存器,就是输入寄存器。功能码04也可以被扩展为读取控制器内部多种16位寄存器的值。

RTU模式下,主机发送功能码03、04命令的帧格式如下:

地址 功能码 读取线圈起始地址高字节 读取线圈起始地址低字节 读取线圈个数高字节 读取线圈个数低字节 CRC校验
1字节 03或04 1字节 1字节 1字节 1字节 2字节

从机应答主机命令的帧格式如下:

地址 功能码 返回数据字节个数 返回第一个寄存器数据高字节 返回第一个寄存器数据低字节 ...... CRC校验
1字节 03或04 1字节 1字节 1字节 ....... 2字节

下面对主机发送命令信息和从机应答信息进行实例解析。

主机发送:01 03 00 00 00 08 44 0C

命令解析:01为从机地址;03为功能码03;00 00为寄存器的起始地址;00 08为要读取的寄存器数,共读取8个寄存器;44为CRC校验低字节,OC为CRC校验高字节。

从机应答:01 03 10 BD AB 15 A5 8C D4 3E B8 8B CF 86 E1 5E 8F 67 83 26 1B

命令解析:01为从机地址;03为功能码03;10为返回数据字节个数,共16个(16进制的10等于16);BD AB……67 83为读得的各寄存器的数值,其中BDAB为第一个寄存器的值:26为CRC校验低字节,1B为CRC校验高字节。

05和15

功能码05的作用是强置单线圈,也就是置某一DO接点为ON或OFF。例如,若预置单片机的P2.0为一个DO,则单片机在接收到主机强置该DO为ON的命令后。应执行使P2.0输出ON的程序代码。功能码05也可以扩展到强置控制器中其他有输出功能的位。

功能码05主机发送和从机接收的信息帧格式相同:

地址 功能码 写入线圈起始地址高字节 写入线圈起始地址低字节 写入值高字节 写入值低字节 CRC校验
1字节 05 1字节 1字节 1字节 1字节 2字节

写入值为FF00时为ON,写入值为0000时为OFF。

功能码15的作用是强置多个线圈。

RTU模式下,主机发送功能码15命令的帧格式如下:

地址 功能码 写入线圈起始地址高字节 写入线圈起个数低字节 写入线圈个数高字节 写入线圈个数低字节 写入值字节数 写入值字节1 ...... CRC校验
1字节 OF 1字节 1字节 1字节 1字节 1字节 1字节 ...... 2字节

从机应答主机命令的帧格式如下:

地址 功能码 写入线圈起始地址高字节 写入线圈起始地址低字节 已写入线圈个数高字节 写入线圈个数低字节 CRC校验
1字节 OF 1字节 1字节 1字节 1字节 2字节

下面对主机发送命令信息和从机应答信息进行实例解析。

主机发送:01 05 00 00 FF 00 8C 3A

从机应答:01 05 00 00 FF 00 8C 3A

命令解析:01为从机地址;05为功能码;00 00为写入线圈起始地址;FF00为写入值,即ON;8C为CRC校验低字节,3A为CRC校验高字节。

举例:15号命令请求格式(从设备地址为1、Modbus功能码15、Modbus寄存器开始地址0、写位变量个数16,即2个字节)
01 0F 00 00 00 10 02 01 00 E3 B0
字节0为从设备ID、字节1为功能码(十六进制)、字节2-3为Modbus寄存器开始地址、字节4-5为Modbus寄存器格式、字节6为发送字节个数、字节7-8为发送数据(2个字节即16个位)、字节9-10为CRC校验

06和16

功能码06的作用是预置单寄存器,也就是向一个保持寄存器写入数值。寄存器为16位,数值范围是0000~FFFF。

功能码06主机发送和从机接收的信息帧格式相同:

地址 功能码 写入寄存器地址高字节 写入寄存器地址低字节 写入值高字节 写入值低字节 CRC校验
1字节 06 1字节 1字节 1字节 1字节 2字节

功能码16的作用是预置多寄存器。

RTU模式下,主机发送功能码16命令的帧格式如下:

地址 功能码 写入寄存器起始地址高字节 写入寄存器起始地址低字节 写入寄存器个数高字节 写入寄存器个数低字节 写入值字节数 写入值字节1 ...... CRC校验
1字节 10 1字节 1字节 1字节 1字节 1字节 1字节 ...... 2字节

从机应答主机命令的帧格式如下:

地址 功能码 写入寄存器起始地址高字节 写入寄存器起始地址低字节 已 写入寄存器个数高字节 已写入寄存器个数低字节 CRC校验
1字节 10 1字节 1字节 1字节 1字节 2字节

下面对主机发送命令信息和从机应答信息进行实例解析。

主机发送:01 06 00 00 00 7D 49 EB

从机应答:01 06 00 00 00 7D 49 EB

命令解析:01为从机地址;06为功能码;00 00为写入寄存器起始地址;007D为写入值,即十进制125;49为CRC校验低字节,EB为CRC校验高字节。

主机发送:01 10 00 05 00 02 04 52 2B 44 9A E0 4B

从机应答:01 10 00 05 00 02 51 C9

命令解析:01为从机地址;10为功能码16;0005为写入寄存器起始地址:0002为写入寄存器个数;04为写入值字节数;522B、449A为写入值;E0为CRC校验低字节.4B为CRC校验高字节。从机应答中,0002为已写入寄存器个数。1

MODBUS-RTU功能码2相关推荐

  1. 三菱Fx3u MODBUS RTU 从站程序 支持H03和H10功能码

    三菱Fx3u MODBUS RTU 从站程序 支持H03和H10功能码 下载到FX3U(配fx3u-485-BD通讯板)中可直接做从站,任意modbus主站可通信. D1000-D1499是读取区域( ...

  2. Modbus RTU 通信工具设计

    Modbus 是一个工业上常用的通讯协议.一种通讯约定. ModBus 协议是应用层报文传输协议(OSI 模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域. M ...

  3. 树莓派 rfid_树莓派工控机做Modbus RTU主站读取RFID数据

    KUNBUS Revpi Core 3是工业级的树莓派,可作为小型的工业PC用,外观十分小巧,操作简单,DIN导轨模块化安装,RevPi core 3能与RevPi IO连接,能实时对这些IO的控制. ...

  4. json qbytearray 串 转_JSON数据采集网关,json转Modbus RTU串IO口RS485转4~20mA边缘计算智能终端...

    JSON数据采集网关边缘计算智能终端是一种能够将各种传感器仪表仪器设备的数据采集后按照JSON格式上传服务器的网关,可以实现云边协同. JSON(JavaScript Object Notation) ...

  5. Modbus协议栈应用实例之二:Modbus RTU从站应用

    自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例.所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,这一篇中我们将使用协议栈实现一个Modbu ...

  6. Modbus协议栈应用实例之一:Modbus RTU主站应用

    自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例.所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,在这一篇中我们先来使用协议栈实现Modbu ...

  7. Modbus协议栈实现Modbus RTU多主站支持

    前面我们已经详细讲解过Modbus协议栈的开发过程,并且利用协议栈封装了Modbus RTU主站和从站,Modbus TCP服务器与客户端,Modbus ASCII主站与从站应用.但在使用过程中,我们 ...

  8. Modbus协议栈开发笔记之六:Modbus RTU Master开发

    这一节我们来封装最后一种应用(Modbus RTU Master应用),RTU主站的开发与TCP客户端的开发是一致的.同样的我们也不是做具体的应用,而是实现RTU主站的基本功能.我们将RTU主站的功能 ...

  9. Modbus协议栈开发笔记之五:Modbus RTU Slave开发

    Modbus在串行链路上分为Slave和Master,这一节我们就来开发Slave.对于Modbus RTU从站来说,需要实现的功能其实与Modbus TCP的服务器端是一样的.其操作过程也是一样的. ...

  10. 【Reproduced】C language program of MODBUS RTU MASTER

    [Reproduced]C language program of MODBUS RTU MASTER From:http://blog.csdn.net/wangshunli/article/det ...

最新文章

  1. mysql常用linux命令大全_Linux-MySQL常用命令(示例代码)
  2. 云炬随笔20190701
  3. 设置linearlayout最大高度_技术案例 | 排烟口个数与挡烟垂壁高度的关系探讨
  4. php下载数据表,javascript – 如何使用php下载表数据作为excel表..?
  5. css线条伸缩_CSS3弹性伸缩布局之box布局
  6. Summarize to the Power of Two(CF-1005C)
  7. Linux中的进程调度(六)
  8. 为SSD加速 实战4KB对齐技巧2/3
  9. 5月2日下午学习日志
  10. ANSYS18.2/HFSS18.2安装步骤
  11. 成为一名初级游戏策划
  12. 编解码格式 -- H264
  13. 兼容android 11 唤起系统相机拍照并显示
  14. C6中休假申请与人事软件的跨服务器数据库整合,已处理。
  15. 用turtle画各种各样的数学图形
  16. NBMiner_42.2内核震撼发布下载,nvidia30LHR版本显卡全系解锁100%
  17. 人大金仓数据库-表的定义
  18. mysql udp提权_SQL Server数据库1433端口解封提权
  19. docker-compose:快速搭建didi开源测试平台AgileTC
  20. 科大讯飞考试系统怎么监考_科大讯飞的考试平台后台能检测出哪些内容?

热门文章

  1. c语言学习(常见关键字)
  2. 浅谈工厂和建造者模式
  3. PAD情感模型、情感空间的表达与计算
  4. 腾讯后台面试经历(转)
  5. 微信小程序日历日期选择(单/多)
  6. Linux 常用命令缩写由来
  7. 2020,新的一年的flag立起来
  8. IIC通信协议学习笔记
  9. 混合整数线性规划——分支限界法
  10. Katalon Studio Enterprise 8.5 Crack-New