modbus功能码定义
model_bus协议说明
Modbus通信协议摘要:工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。
Modbus就是工业控制器的网络协议中的一种。
关键词:Modbus协议;串行通信;RS-232C一、Modbus 协议简介Modbus 协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。
这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
1、在Modbus网络上转输标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。
控制器能直接或经由Modem组网。
控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。
其它设备(从设备)根据主设备查询提供的数据作出相应反应。
典型的主设备:主机和可编程仪表。
典型的从设备:可编程控制器。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。
如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。
Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。
从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。
AM400_800系列-通讯-MODBUS元件地址编码和功能码定义
AM400_800系列-通讯-MODBUS元件地址编码和功能码定义AM400_800系列PLC内置MODBUS从站通讯协议说明协议驱动名称建议按通信⽹络类型分别命名为:INOV ANCE_A400_800_ModbusRTUINOV ANCE_ A400_800_ModbusTCP⽬录AM400_800系列PLC内置MODBUS从站通讯协议说明 (1)⽬录 (2)概述 (3)可访问I/Q线圈数量 (4)可访问的M寄存器数量 (4)1. ModbusRTU通讯帧格式说明 (5)1.1功能码0x01:读Q线圈 (5)1.2功能码0x02:读I线圈 (6)1.3功能码0x03:读M寄存器 (7)1.4 功能码0x05:写Q单线圈 (8)1.5 功能码0x06:写M单寄存器 (9)1.6 功能码0x0f:写Q多线圈 (10)1.7 功能码0x10:写M多寄存器 (11)1.8 错误响应帧 (12)2. ModbusTCP通讯帧格式说明 (13)2.1功能码0x01:读Q线圈 (13)2.2功能码0x02:读I线圈 (14)2.3功能码0x03:读M寄存器 (15)2.4 功能码0x05:写Q单线圈 (16)2.5 功能码0x06:写M单寄存器 (17)2.6 功能码0x0f:写Q多线圈 (18)2.7 功能码0x10:写M多寄存器 (19)2.8 错误响应帧 (20)概述本⽂档旨在说明将AM400、AM400_800、AC800等(以下简称AM400_800)系列PLC 作为MODBUS 从站进⾏访问时,需采⽤的通讯格式进⾏说明,并对访问其中各种软元件的索引编址⽅式进⾏了说明,便于MODBUS 主站侧的编程。
AM400_800的元件有Q 区,I 区,M 区这三种,分别都可以按位,按字节,按字和按双字进⾏访问。
寄存器地址索引规则:按bit 寻址按Byte 寻址按Word 寻址按DWord 寻址按bit 寻址按Byte 寻址按Word 寻址按DWord 寻址AM400_800的Word 型寄存器的起始地址,遵循的是起始地址为偶数Byte 地址;DWord 型寄存器的起始地址,遵循的是起始地址为偶数Word 地址对齐,其索引号呈2倍关系的原则。
modbus协议报文功能码
modbus协议报文功能码介绍modbus协议是一种常用于工业控制系统的通信协议,用于在主控设备(如PLC)和从设备(如传感器、执行器)之间进行数据传输。
modbus协议报文是通信过程中的基本单位,其中功能码用于指示报文的目的和操作类型。
本文将深入探讨modbus协议报文中的功能码。
功能码的定义功能码是modbus协议报文的一个字段,用于指示报文的目的和操作类型。
在modbus协议中,功能码是一个8位的无符号整数,取值范围为1到255。
根据功能码的不同取值,报文可以分为读取数据、写入数据、控制设备等不同类型。
常见的功能码modbus协议定义了一些常见的功能码,用于满足各种不同的通信需求。
下面是一些常见的功能码及其对应的操作类型:读取操作1.读取线圈状态(功能码01):用于读取从设备的离散输出线圈的状态,返回线圈的状态值。
2.读取输入状态(功能码02):用于读取从设备的离散输入线圈的状态,返回线圈的状态值。
3.读取保持寄存器(功能码03):用于读取从设备的保持寄存器的值,返回寄存器的值。
4.读取输入寄存器(功能码04):用于读取从设备的输入寄存器的值,返回寄存器的值。
写入操作1.写单个线圈(功能码05):用于写入从设备的单个线圈的状态,将线圈的状态设置为指定的值。
2.写单个保持寄存器(功能码06):用于写入从设备的单个保持寄存器的值,将寄存器的值设置为指定的值。
3.写多个线圈(功能码15):用于写入从设备的多个线圈的状态,将多个线圈的状态设置为指定的值。
4.写多个保持寄存器(功能码16):用于写入从设备的多个保持寄存器的值,将多个寄存器的值设置为指定的值。
控制操作1.屏蔽写单个保持寄存器(功能码22):用于对从设备的保持寄存器进行位屏蔽写操作,根据指定的屏蔽值和数据值进行写入操作。
功能码的使用示例下面是一个使用modbus协议报文功能码的示例:1.首先,主控设备向从设备发送一个读取保持寄存器的报文,功能码为03。
Modbus功能码表
Modbus功能码一览________________________________________Modbus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。
其系统结构既包括硬件、亦包括软件。
它可应用于各种数据采集和过程监控。
下表1是ModBus的功能码定义。
表1 ModBus功能码功能码名称作用01 读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)02 读取输入状态取得一组开关输入的当前状态(ON/OFF)03 读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值04 读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值05 强置单线圈强置一个逻辑线圈的通断状态06 预置单寄存器把具体二进值装入一个保持寄存器07 读取异常状态取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定,用户逻辑可以将这些线圈定义,以说明从机状态,短报文适宜于迅速读取状态08 回送诊断校验把诊断校验报文送从机,以对通信处理进行评鉴09 编程(只用于484)使主机模拟编程器作用,修改PC从机逻辑10 控询(只用于484)可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送11 读取事件计数可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时12 读取通信事件记录可是主机检索每台从机的ModBus事务处理通信事件记录。
如果某项事务处理完成,记录会给出有关错误13 编程(184/384 484 584)可使主机模拟编程器功能修改PC从机逻辑14 探询(184/384 484 584)可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送15 强置多线圈强置一串连续逻辑线圈的通断16 预置多寄存器把具体的二进制值装入一串连续的保持寄存器17 报告从机标识可使主机判断编址从机的类型及该从机运行指示灯的状态18 (884和MICRO 84)可使主机模拟编程功能,修改PC状态逻辑19 重置通信链路发生非可修改错误后,是从机复位于已知状态,可重置顺序字节20 读取通用参数(584L)显示扩展存储器文件中的数据信息21 写入通用参数(584L)把通用参数写入扩展存储文件,或修改之22~64 保留作扩展功能备用65~72 保留以备用户功能所用留作用户功能的扩展编码73~119 非法功能120~127 保留留作内部作用128~255 保留用于异常应答Modbus网络只是一个主机,所有通信都由他发出。
Modbus功能码一览表(最全版)
Modbus功能码一览________________________________________Modbus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。
其系统结构既包括硬件、亦包括软件。
它可应用于各种数据采集和过程监控。
下表1是ModBus的功能码定义。
表1 ModBus功能码功能码名称作用01 读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)02 读取输入状态取得一组开关输入的当前状态(ON/OFF)03 读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值04 读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值05 强置单线圈强置一个逻辑线圈的通断状态06 预置单寄存器把具体二进值装入一个保持寄存器07 读取异常状态取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定,用户逻辑可以将这些线圈定义,以说明从机状态,短报文适宜于迅速读取状态08 回送诊断校验把诊断校验报文送从机,以对通信处理进行评鉴09 编程(只用于484)使主机模拟编程器作用,修改PC从机逻辑10 控询(只用于484)可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送11 读取事件计数可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时12 读取通信事件记录可是主机检索每台从机的ModBus事务处理通信事件记录。
如果某项事务处理完成,记录会给出有关错误13 编程(184/384 484 584)可使主机模拟编程器功能修改PC从机逻辑14 探询(184/384 484 584)可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送15 强置多线圈强置一串连续逻辑线圈的通断16 预置多寄存器把具体的二进制值装入一串连续的保持寄存器17 报告从机标识可使主机判断编址从机的类型及该从机运行指示灯的状态18 (884和MICRO 84)可使主机模拟编程功能,修改PC状态逻辑19 重置通信链路发生非可修改错误后,是从机复位于已知状态,可重置顺序字节20 读取通用参数(584L)显示扩展存储器文件中的数据信息21 写入通用参数(584L)把通用参数写入扩展存储文件,或修改之22~64 保留作扩展功能备用65~72 保留以备用户功能所用留作用户功能的扩展编码73~119 非法功能120~127 保留留作内部作用128~255 保留用于异常应答Modbus网络只是一个主机,所有通信都由他发出。
ModBus通信协议的【功能码】
ModBus通信协议的【功能码】
Modbus的功能码
ModBus 功能码与数据类型对应表:
RTU ⽅式读取整数据的例⼦:
解析⼀下:主机发送指令,访问从站地址为1,使⽤功能码03(读保持寄存器),起始地址⾼8位、低8位:表⽰想读取的模拟量的起始地址(起始地址为0)。
⽐如例⼦中的起始地址为38,⼗进制为:56。
寄存器数量⾼8位、低8位:表⽰从起始地址开始读多少个模拟量。
例⼦中为1个模拟量。
注意,在返回的信息中⼀个模拟量需要返回两个字节。
错误校验为CRC校验。
从站应答:设备地址和命令号和上⾯的相同。
返回的字节数:表⽰数据的字节个数,也就是数据1,2...n中的n的值。
例⼦中返回了1个模拟量的数据,因为⼀个模拟量需要2个字节所以共2个字节。
数据⾼低字节:41和24代表返回的1个模拟量的值,即⼗进制的16676。
错误校验为CRC校验。
Modbus常见功能码分析
Modbus 常见功能码分析
深圳神枪 1、 莫迪康中常见功能码描述:
寄存器 读取功能码
写入功能码功能码说明 输入继电器 02 —
02: 读取输入状态 输出继电器 01
05
15
01: 读取线圈状态 05: 强制单个线圈 15: 强制多个线圈 输入寄存器 04 —
04: 读输入寄存器 输出寄存器 03
06
16
03: 读保持寄存器 06: 预置单个寄存器 16: 预置多个寄存器
2、 国家标准中常见功能码描述:
3、分析:
读:功能码01为读内部比特量输出状态;如告警、变位、故障、异常等。
功能码02为读外部开关量输入状态;如光耦输入、继电器输入等。
功能码03为读内部输出量的寄存器;如一些配置参数、定值的读取等。
功能码04为读外部输入量的寄存器;如外部电压电流模拟量,温湿度等。
写:功能码05为写内部单个开关量状态;如光耦输出、继电器输出等。
功能码06为写内部单个寄存器的值;如更改配置参数、定值等。
功能码15为写内部多个开关量状态;如同05。
功能码16为写内部多个寄存器的值;如同06;对时是写多寄存器,用此功能码。
Modbus功能码一览表
________________________________________
Modbus网络是一个工业通信系统由带智能终端的可编程序控制器和计算机通过公用线路
或局部专用线路连接而成。其系统结构既包括硬件、亦包 括软件。它可应用于各种数据采
代码 功能 数据类型
01 读 位
02 读 位
03 读 整型、字符型、状态字、浮点型
04 读 整型、状态字、浮点型
05 写 位
06 写 整型、字符型、状态字、浮点型 08 N/A 重复“回 Nhomakorabea反馈”信息
15 写 位
16 写 整型、字符型、状态字、浮点型
集和过程监控。下表1是ModBus的功能码定义。
表1 ModBus功能码
功能码 名称 作用
01 读取线圈状态 取得一组逻辑线圈的当前状态ON/OFF)
02 读取输入状态 取得一组开关输入的当前状态ON/OFF)
03 读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值
但ASCII数据的译玛和处理更为容易一些 此外用RTU模式时报文字符必须以连续数据
流的形式传送用ASCII模式字符之间可产生长达1s的间隔以适应速度较快的机器。
表4给出了以RTU 方式读取整数据的例子
以RTU方式读取整数据的例子
主机请求
地址 功能码 第一个寄存器的高位地址 第一个寄存器的低位地址 寄存器的数量的
Modbus网络只是一个主机所有通信都由他发出。网络可支持247个之多的远程从
属控制器但实际所支持的从机数要由所用通信设备决定。采用这个系 统各PC可以和
中心主机交换信息而不影响各PC执行本身的控制任务。表2是ModBus各功能码对应的数
H5U-通讯-MODBUS元件地址编码和功能码定义
汇川H5U系列控制器内置Modbus协议说明协议驱动名称建议按通信网络类型分别命名为:INOVANCE_H5U_ModbusRTUINOVANCE_H5U_ModbusTCP目录目录 (2)概述: (3)1、MODBUS协议支持的功能码: (3)2、H5U控制器支持外部访问的软元件: (4)3、软元件和变量的地址定义: (4)3、MODBUSRTU通讯帧格式说明 (5)3.1命令码0X01(01)/0X02(02):读线圈 (6)3.2命令码0X03(03)/0X04(04):读寄存器 (7)3.3命令码0X05(05):写单线圈 (8)3.4命令码0X06(06):写单个寄存器 (9)3.5命令码0X0F(15):写多个线圈 (10)3.6命令码0X10(16):写多个寄存器 (11)3.7错误响应帧 (12)4、MODBUSTCP通讯帧格式说明 (13)4.1命令码0X01(01)/0X02(02):读线圈 (13)4.2命令码0X03(03)/0X04(04):读寄存器 (15)4.3命令码0X05(05):写单线圈 (16)4.4命令码0X06(06):写单个寄存器 (17)4.5命令码0X0F(15):写多个线圈 (18)4.6命令码0X10(16):写多个寄存器 (19)4.7错误响应帧 (20)概述:本文档旨在说明将H5U系列PLC作为MODBUS从站进行访问时,需采用的通讯格式进行说明,并对访问其中各种软元件和变量的索引编址方式进行了说明,便于MODBUS主站侧的编程。
本文介绍了基于RS485网络的ModbusRTU、基于以太网的ModbusTCP两种通信帧格式的说明。
用于HMI、SCADA等Host设备访问汇川公司H5U系列控制器的通讯驱动设计。
通信访问的主要有bit型和word型两种变量。
按照行业惯例,本文中将bit型变量有时称为“线圈”或“触点”,将word型变量则称为“寄存器”,以方便用户理解。
MODBUS协议(功能码及报文解析)
MODBUS协议Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。
事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。
M odbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求相对容易的工业网络部署对供应商来说,修改移动原生的位或字节没有很多限制Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。
在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和remote terminal unit (RTU)。
Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。
大多数Modbus设备通信通过串口EIA-485物理层进行[1]。
对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。
Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。
这两个变种都使用串行通讯(serial communication)方式。
RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。
被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。
对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP 变种,这种方式不需要校验和的计算。
对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。
Modbus 有一个扩展版本 Modbus Plus(Modbus+或者MB+),不过此协定是Modicon专有的,和 Modbus不同。
它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。
它使用1Mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。
modbus 功能码
modbus 功能码Modbus是一种常用于工业自动化领域的通信协议,它定义了设备之间通过串口、以太网等方式进行通信的格式和规则。
Modbus协议定义了多种功能码,用于实现不同的功能。
1. 读取线圈状态(Read Coil Status):功能码为01,用于读取设备中的线圈状态,返回的结果表示每个线圈是否被触发。
2. 读取离散输入状态(Read Discrete Inputs):功能码为02,用于读取设备中的离散输入状态,返回的结果表示每个输入是否处于高电平状态。
3. 读取保持寄存器(Read Holding Registers):功能码为03,用于读取设备中的保持寄存器的值,返回的结果表示每个寄存器的数值。
4. 读取输入寄存器(Read Input Registers):功能码为04,用于读取设备中的输入寄存器的值,返回的结果表示每个寄存器的数值。
5. 写单个线圈(Write Single Coil):功能码为05,用于设置设备中的单个线圈的状态,可以将线圈设为打开或关闭。
6. 写单个保持寄存器(Write Single Register):功能码为06,用于设置设备中的单个保持寄存器的值,可以将寄存器设定为一个指定的数值。
7. 写多个线圈(Write Multiple Coils):功能码为15,用于设置设备中多个线圈的状态,可以同时将多个线圈设为打开或关闭。
8. 写多个保持寄存器(Write Multiple Registers):功能码为16,用于设置设备中多个保持寄存器的值,可以同时将多个寄存器设定为多个指定的数值。
9. 屏蔽写寄存器(Mask Write Register):功能码为22,通过给定一个屏蔽和一个数据,在指定的保持寄存器上进行位操作。
以上仅是Modbus协议中部分常用的功能码,不同的设备可能支持不完全相同的功能码。
通过使用这些功能码,可以实现设备之间的数据读写、参数设置等功能。
modbus 两位功能码
modbus 两位功能码
Modbus协议中的功能码是用来指示Modbus从设备执行的操作类型的数字代码。
Modbus协议定义了许多不同的功能码,但在常见的Modbus RTU和Modbus TCP通信中,最常用的功能码是读取保持寄存器和写入单个寄存器。
下面我将从两个角度分别介绍这两个功能码。
首先,读取保持寄存器的功能码是03。
这个功能码用于从Modbus从设备中读取连续的保持寄存器的值。
保持寄存器是一种存储器件,用于存储数据。
通过使用功能码03,主站可以向从站发送请求,从而获取保持寄存器中的数据。
这个功能码是在Modbus协议中非常常见的,因为它允许主站实时监控和获取从站中的数据。
其次,写入单个寄存器的功能码是06。
这个功能码用于向Modbus从设备中写入单个寄存器的值。
通过使用功能码06,主站可以向从站发送请求,从而将特定数值写入从站的寄存器中。
这个功能码通常用于控制类的应用,主站可以通过写入单个寄存器来改变从站设备的状态或参数。
总的来说,这两个功能码是Modbus通信中非常常用的,它们分
别用于读取和写入寄存器的操作。
通过使用这两个功能码,Modbus 通信可以实现数据的采集和控制,非常适用于工业自动化等领域。
希望这样的回答能够满足你的需求。
Modbus RTU 标准通讯功能码定义
Modbus RTU通讯标准功能码定义与释义01读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)02读取输入状态取得一组开关输入的当前状态(ON/OFF)03读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值04读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值05强置单线圈强置一个逻辑线圈的通断状态06预置单寄存器把具体二进值装入一个保持寄存器07读取异常状态取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定,用户逻辑可以将这些线圈定义,以说明从机状态,短报文适宜于迅速读取状态08回送诊断校验把诊断校验报文送从机,以对通信处理进行评鉴09编程(只用于484)使主机模拟编程器作用,修改PC从机逻辑10控询(只用于484)可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送11读取事件计数可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时12读取通信事件记录可是主机检索每台从机的Modbus事务处理通信事件记录。
如果某项事务处理完成,记录会给出有关错误13编程(184/384484584)可使主机模拟编程器功能修改PC从机逻辑14探询(184/384484584)可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送15强置多线圈强置一串连续逻辑线圈的通断16预置多寄存器把具体的二进制值装入一串连续的保持寄存器17报告从机标识可使主机判断编址从机的类型及该从机运行指示灯的状态18(884和MICRO84)可使主机模拟编程功能,修改PC状态逻辑19重置通信链路发生非可修改错误后,是从机复位于已知状态,可重置顺序字节20读取通用参数(584L)显示扩展存储器文件中的数据信息21写入通用参数(584L)把通用参数写入扩展存储文件,或修改之22~64保留作扩展功能备用65~72保留以备用户功能所用留作用户功能的扩展编码73~119非法功能120~127保留留作内部作用128~255保留用于异常应答。
modbus功能码
modbus功能码Modbus是一种常用的工业通信协议,用于连接现代自动化系统中的设备和控制器。
Modbus功能码是对Modbus协议中不同数据访问请求的分类和标识,用于指示主站要求从站进行的特定操作。
本文将详细解释Modbus功能码的不同类型和用途。
Modbus协议定义了一种简单且经济有效的通信方式,支持在不同设备之间进行数据读写和控制操作。
Modbus功能码是在Modbus 通信过程中使用的一种标识符,用于确定通信的目的和操作类型。
在Modbus协议中,功能码用于请求或响应不同类型的操作。
常用的Modbus功能码包括读取操作、写入操作和控制操作。
1.读取操作功能码:1.1 读取线圈状态(功能码01): 用于读取从站的线圈状态,并将其返回给主站。
可以用于查询设备的开关状态等信息。
1.2 读取输入状态(功能码02): 用于读取从站的输入状态,如传感器的输入状态等信息。
1.3 读取保持寄存器(功能码03): 用于读取从站的保持寄存器中的数据。
1.4 读取输入寄存器(功能码04): 用于读取从站的输入寄存器中的数据。
2.写入操作功能码:2.1 写单个线圈(功能码05): 用于将从站的某个线圈设置为特定状态,例如打开或关闭。
2.2 写单个保持寄存器(功能码06): 用于将从站的某个保持寄存器设置为特定值。
2.3 写多个线圈(功能码15): 用于同时设置多个从站的线圈状态。
2.4 写多个保持寄存器(功能码16): 用于同时设置多个从站的保持寄存器中的数据。
3.控制操作功能码:3.1 强制单个线圈(功能码05): 用于将从站的某个线圈设置为特定状态,通常用于控制设备的开关状态。
3.2 屏蔽写保持寄存器(功能码22): 用于在特定的地址范围内写入从站的保持寄存器中的数据。
根据不同的功能码,主站可以向从站发送特定的请求,并从从站获得相应的响应。
这样,主站可以实现与从站之间的数据交换和控制操作。
需要注意的是,Modbus功能码是通信双方之间的约定,主站和从站必须按照相同的功能码进行通信,才能实现正确的数据交换和操作。
modbus协议中文手册
:
数据 1 ...
回车 换行
址码
量
n节
节
RTU 模式
地址 功 能 代 数 据 数 数据 1 ...
数据 n CRC 高字 CRC 低字
码
量
节
节
所选的 ASCII 或 RTU 方式仅适用于标准的 Modbus 网络,它定义了在这些网络上连续传输的消息段的每 一位,以及决定怎样将信息打包成消息域和如何解码。
例如,如果主设备需要从设备读取一组保持寄存器(功能代码 03),数据域指定了起始寄存器以及要 读的寄存器数量。如果主设备写一组从设备的寄存器(功能代码 10 十六进制),数据域则指明了要写的起 始寄存器以及要写的寄存器数量,数据域的数据字节数,要写入寄存器的数据。
如果没有错误发生,从从设备返回的数据域包含请求的数据。如果有错误发生,此域包含一异议代码, 主设备应用程序可以用来判断采取下一步行动。
1、在 Modbus 网络上转输
标准的 Modbus 口是使用一 RS-232C 兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特 率、奇偶校验。控制器能直接或经由 Modem 组网。
控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根 据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制 器。
当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为。例如去读取输入的开关 状态,读一组寄存器的数据内容,读从设备的诊断状态,允许调入、记录、校验在从设备中的程序等。
当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。 对正常回应,从设备仅回应相应的功能代码。对异议回应,从设备返回一等同于正常代码的代码,但最重 要的位置为逻辑 1。
modbus协议功能码及格式
1、“01”读取线圈状态发送:功能代码1字节0x01开端地点2字节0x0000~0xFFFF线圈数目2字节 1~2000(0x7D0 )接收:功能代码1字节0x01字节数1字节N线圈状态n 字节n = N/N+1N= 读取线圈个数 / 8,假如余数不为0 则 N=N+1犯错时的返回:功能代码1字节0x81错误代码1字节01/02/03/04例子:返送: 01 01 0000 00 19 FD C0即:读取 25 个线圈的状态返回: 01 01 040F 03 80 01 A8 C5FC BN N1 N2 N3 N4 CRC,N1为前 8 位的状态以此内推。
2、“02”读取输入状态发送:功能代码1字节0x02开端地点2字节0x0000~0xFFFF输入点数目2字节 1~2000(0x7D0 )接收:功能代码1字节0x02字节数1字节N输入点状态n 字节n = N/N+1N= 读取输入点个数 / 8,假如余数不为 0 则 N=N+1犯错时的返回:功能代码1字节0x82错误代码1字节01/02/03/04例子:发送:01 02 00 00 00 19 B9 C0读25 个输入线圈的状态返回:01 02 04 00 00 00 00 FB E2FC BN N1 N2 N3 N4CRC3、“03”保持型存放器读取发送:功能代码1字节 0x03开端地点2字节 0x0000~0xFFFF存放器数目2字节 1~125( 0x7D )接收:功能代码1字节 0x03字节数1字节 2*N存放器值 N*2字节N= 存放器数目犯错时的返回:功能代码1字节 0x83错误代码1字节 01/02/03/04例子:发送: 01 03 00 00 00 03 05 CB读3 个存放器里面的值返回: 01 03 06 01 2C 01 2C 01 2C 71 1A返回 3 个存放器的值,每个存放器的值有 2 个 BYTE 构成4、“05”写单调线圈发送:功能代码1字节 0x05线圈地点2字节 0x0000~0xFFFF写入值2字节 0x0000或 0xFF00接收:功能代码1字节 0x05线圈地点2字节 0x0000~0xFFFF写入值2字节 0x0000或 0xFF00犯错时的返回:功能代码1字节 0x85错误代码1字节 01/02/03/04例子:发送: 01 05 00 00 FF 00 8C 3A写单个线圈的值,把地点为0的线圈置一。
Modbus功能码一览
Modbus 功能码一览Modbus 网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。
其系统结构既包括硬件、亦包 括软件。
它可应用于各种数据采集和过程监控。
下表1是Mo d Bus 的功能码定义。
Modbus网络只是一个主机,所有通信都由他发出。
网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。
采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
表2是ModB us各功能码对应的数据类型。
(1)在ModBus系统中有2种传输模式可选择。
这2种传输模式与从机PC通信的能力是同等的。
选择时应视所用ModBus主机而定,每个ModBu s系统只能使用一种模式,不允许2种模式混用。
一种模式是AS CII(美国信息交换码),另一种模式是R TU(远程终端设备)这两种模式的定义见表3的主计算机及主PC很适宜。
RTU则适用于机器语言编程的计算机和P C主机。
用RTU模式传输的数据是8位二进制字符。
如欲转换为AS CII模式,则每个RTU字符首先应分为高位和低位两部分,这两部分各含4位,然后转换成十六进制等量值。
用以构成报文的ASCII字符都是十六进制字符。
ASCII模式使用的字符虽是RTU模式的两倍,但ASCII数据的译玛和处理更为容易一些,此外,用RTU模式时报文字符必须以连续数据流的形式传送,用ASCII模式,字符之间可产生长达1s的间隔,以适应速度较快的机器。
表4给出了以R TU 方式读取整数据的例子(CRC-16(循环冗余错误校验)CRC-16错误校验程序如下:报文(此处只涉及数据位,不指起始位、停止位和任选的奇偶校验位)被看作是一个连续的二进制,其最高有效位(MSB)首选发送。
MODBUS协议(功能码及报文解析)-485功能码
之袁州冬雪创作Modbus是一种串行通信协议,是于1979年,为使用可编程逻辑节制器(PLC)而发表的.事实上,它已经成为工业范畴通信协议,而且现在是工业电子设备之间相当常常使用的毗连方式.Modbus比其他通信协议使用的更广泛的主要原因有:公开辟表而且无版税要求相对容易的工业网络安排对供应商来讲,修改移动原生的位或字节没有很多限制Modbus允许多个设备毗连在同一个网络上停止通信,举个例子,一个由丈量温度和湿度的装置,而且将成果发送给计算机.在数据收集与监视节制系统(SCADA)中,Modbus通常常使用来毗连监控计算机和remote terminal unit (RTU).Modbus协议今朝存在用于串口、以太网以及其他支持互联网协议的网络的版本.大多数Modbus设备通信通过串口物理层停止.对于串行毗连,存在两个变种,它们在数值数据暗示分歧和协议细节上略有分歧.Modbus RTU是一种紧凑的,采取二进制暗示数据的方式,Modbus ASCII是一种人类可读的,冗长的暗示方式.这两个变种都使用串行通讯(serial communication)方式.RTU格式后续的饬令/数据带有的校验和,而ASCII格式采取纵向冗余校验的校验和.被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然.对于通过(例如)的毗连,存在多个Modbus/TCP变种,这种方式不需要校验和的计算.对于所有的这三种通信协议在数据模子和功能调用上都是相同的,只有封装方式是分歧的.Modbus 有一个扩大版本 Modbus Plus(Modbus+或者MB+),不过此协定是Modicon专有的,和 Modbus分歧.它需要一个专门的协处理器来处理近似的高速令牌旋转.它使用1Mbit/s的,而且每个节点都有转换隔离装置,是一种采取转换/边沿触发而不是电压/水平触发的装置.毗连Modbus Plus到计算机需要特此外接口,通常是支持ISA(SA85),PCI或者PCMCIA总线的板卡.Modbus协议是一个 master/slave 架构的协议.有一个节点是master 节点,其他使用Modbus协议参与通信的节点是 slave 节点.每个 slave 设备都有一个唯一的地址.在串行和MB+网络中,只有被指定为主节点的节点可以启动一个饬令(在以太网上,任何一个设备都能发送一个Modbus饬令,但是通常也只有一个主节点设备启动指令).。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
精心整理功能码名称作用
01读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)
02读取输入状态取得一组开关输入的当前状态(ON/OFF)
03读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值
04读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值
05强置单线圈强置一个逻辑线圈的通断状态
06预置单寄存器把具体二进值装入一个保持寄存器
07读取异常状态取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定,用户逻辑可以将这些线圈定义,以说明从机状态,短报文适宜于迅速读取状态
08回送诊断校验把诊断校验报文送从机,以对通信处理进行评鉴
09编程(只用于484)
使主机模拟编程器作用,修改PC从机逻辑
10控询(只用于484)
可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的
报文发送后,本功能码才发送
11读取事件计数
可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时
12读取通信事件记录
可是主机检索每台从机的ModBus事务处理通信事件记录。
如果某项事务处理完成,记录会给出有关错误
13编程(184/384484584)可使主机模拟编程器功能修改PC从机逻辑
14探询(184/384484584)可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送
15强置多线圈强置一串连续逻辑线圈的通断
16预置多寄存器把具体的二进制值装入一串连续的保持寄存器
17报告从机标识可使主机判断编址从机的类型及该从机运行指示灯的状态
18(884和MICRO84)可使主机模拟编程功能,修改PC状态逻辑
19重置通信链路发生非可修改错误后,是从机复位于已知状态,可重置顺序字节
20读取通用参数(584L)显示扩展存储器文件中的数据信息
21写入通用参数(584L)把通用参数写入扩展存储文件,或修改之22~64保留作扩展功能备用
65~72保留以备用户功能所用
留作用户功能的扩展编码
73~119非法功能
120~127保留留作内部作用
128~255保留用于异常应答。