MODBUS常用功能码及对应地址
MODBUS常用功能码备查
表1 ModBus功能码
功能码名
称作用
01 读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)
02 读取输入状态取得一组开关输入的当前状态(ON/OFF)
03 读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值
04 读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值
05 强置单线圈强置一个逻辑线圈的通断状态
06 预置单寄存器把具体二进值装入一个保持寄存器
15 强置多线圈强置一串连续逻辑线圈的通断
16 预置多寄存器把具体的二进制值装入一串连续的保持寄存器
表2 ModBus功能码与数据类型对应表
代码功能数据类
型
对应地址
01 读位
0000X
02 读位
1000X
03 读整型、字符型、状态字、浮点型4000X
04 读整型、状态字、浮点
型3000X
05 写位
0000X
06 写整型、字符型、状态字、浮点型4000X
15 写位
0000X
16 写整型、字符型、状态字、浮点型4000X
(学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)
modbus功能码及格式
1、“01”读取线圈状态 发送: 功能代码1字节0x01 起始地址2字节0x0000~0xFFFF 线圈数量2字节1~2000(0x7D0)接收: 功能代码1字节0x01 字节数1字节N 线圈状态n字节n = N/N+1 N=读取线圈个数/ 8 ,如果余数不为0则N=N+1 出错时的返回: 功能代码1字节0x81 错误代码1字节01/02/03/04 例子: 2、“02”读取输入状态 功能代码1字节0x02 起始地址2字节0x0000~0xFFFF 输入点数量2字节1~2000(0x7D0) 功能代码1字节0x02 字节数1字节N 输入点状态n字节n = N/N+1 出错时的返回: 功能代码1字节0x82 错误代码1字节01/02/03/04 例子:
3、“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 例子: 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 例子:
5、“06”写单一寄存器 功能代码1字节0x06 寄存器地址2字节0x0000~0xFFFF 写入值2字节0x0000~0xFFFF 功能代码1字节0x06 寄存器地址2字节0x0000~0xFFFF 写入值2字节0x0000~0xFFFF 功能代码1字节0x86 错误代码1字节01/02/03/04 例子: 6、“15(0x0F)”写多线圈 发送: 功能代码1字节0x0F 起始地址2字节0x0000~0xFFFF 写入线圈个数2字节0x0001~0x07B0写入字节数1字节N 写入值N字节 功能代码1字节0x0F 起始地址2字节0x0000~0xFFFF 写入线圈个数2字节0x0001或0x07B0 功能代码1字节0x8F 错误代码1字节01/02/03/04 例子:
Modbus功能码示例
Modbus功能码示例: 分类功能说明: 1、读位:一次读512 位(64BYTE)最多,最少16 位(但会读入2 个BYTE) 2、写位:一次只能写1 位(针对具体地址写) 3、读字:一次最多可读32 个字(64BYTE) 4、写字:一次最多可写32 个字(64BYTE) 支持的功能码(16 进制表示): 01——读位COIL,对应PLC 的DO 状态 02——读位INPUT,对应PLC 的DI 状态 03——读字,对应PLC 的AO 状态 04——读字,对应PLC 的AI 状态 05——写位,只写一位COIL,对应PLC 的DO 输出10——写字,写多字,对应PLC 的AO 输出 范例: 01 功能码:例读DO,2#0X/88(二号站,88 号0X 线圈,此处88 位十进制) 发出:02 01 00 50 00 10 3D E4 意思:站号02,功能玛01,起始地址0050(十六进制,相当于十进制80),读位长度(0010,相当于十进制16),3DE4 为CRC 校验(先低字节后高字节) 回答:02 01 02 80 00 9C 3C 意思:站号02,功能玛01,后面数据(字节)长度02,数据字节1(低字节)80,数据字节2(高字节)00,数据字节先低后高,最后CRC 校验9C3C 02 功能玛,读DI 位,例:读1#1X/2, 发出:01 02 00 00 00 10 3D C6 意思:起始地址0000,一次读入一个字(16 位)长度0010 回:01 02 02 FF FF B8 08 03 功能玛:例读2#4X/88 发出:02 03 00 57 00 01 35 E9 回答:02 03 02 00 01 3D 84 注意:此功能玛下读入的数据字节排列为先高后低,表明4X/88 的数值为0001 04 功能玛:读字AI,例1#3X/3 发出:01 04 00 02 00 01 90 0A 表示:读入的字长度为0001(1 个字) 回:01 04 02 10 00 B4 F0 表示3X/3 的值为HEX1000 即十进制4096,先高字节后低字节 05 功能玛:例写2#0X/88 发出:02 05 00 57 FF 00 3D 9D,“FF 00”表示写“1”,“00 00”表示写“0” 回应:02 05 00 57 FF 00 3D 9D,表明写“1”成功
MODBUS协议(功能码及报文解析)
MODBUS协议 Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 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的高速令牌旋转。它使用1Mb it/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA 总线的板卡。 Modbus协议是一个master/slave 架构的协议。有一个节点是master 节点,其他使用Modbus协议参与通信的节点是slave 节点。每一个slave 设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。 一个ModBus命令包含了打算执行的设备的Modbus地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址0例外,指定地址0 的指令是广播指令,所有收到指令的设备都会执行,不过不回应指令)。所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。基本的ModBus命令能指令一个R
Modbus功能表
Modbus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。下表1是ModBus的功能码定义。 表1 ModBus功能码
Modbus网络只是一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。表2是ModBus各功能码对应的数据类型。 表2 ModBus功能码与数据类型对应表
(1)ModBus的传输方式 在ModBus系统中有2种传输模式可选择。这2种传输模式与从机PC通信的能力是同等的。选择时应视所用ModBus主机而定,每个ModBus系统只能使用一种模式,不允许2种模式混用。一种模式是ASCII(美国信息交换码),另一种模式是RT U(远程终端设备)这两种模式的定义见表3 表3 ASCII和RTU传输模式的特性
ASCII可打印字符便于故障检测,而且对于用高级语言(如Fortan)编程的主计算机及主PC很适宜。RTU则适用于机器语言编程的计算机和PC主机。 用RTU模式传输的数据是8位二进制字符。如欲转换为ASCII模式,则每个RTU字符首先应分为高位和低位两部分,这两部分各含4位,然后转换成十六进制等量值。用以构成报文的ASCII字符都是十六进制字符。ASCII模式使用的字符虽是RTU模式的两倍,但ASCII数据的译玛和处理更为容易一些,此外,用RTU模式时报文字符必须以连续数据流的形式传送,用ASCII模式,字符之间可产生长达1s的间隔,以适应速度较快的机器。表4给出了以RTU 方式读取整数据的例子 以RTU方式读取整数据的例子
modbus地址对应表
modbus地址对应表 Modbus是一种串行通信协议,由Modicon公司(现在的施耐德电气Schneider Electric)于1979年发布,用于可编程逻辑控制器(Programmable logic controllers,PLCs)。Modbus事实上已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。在工业应用场景中使用Modbus的主要原因是: 考虑到Modbus本就为了工业应用而开发, 公开发布,并且无版权要求, 易于部署和维护, 未对供应商修改移动本地比特或字节施加限制。 Modbus支持多个设备连接到同一网络上进行通信,例如,一个能测量温度和湿度并将结果传送给计算机的装置。在数据采集与监视控制(Supervisory control and data acquisition, SCADA)系统中,Modbus常用于连接监控计算机与远程终端设备(Remote terminal unit,RTU)。许多数据类型是根据梯形逻辑及其驱动继电器在工业上的使用而得名的:单比特物理输出称为线圈,单比特物理输入称为离散输入或触点。 自2004年4月施耐德电气将权利转让给Modbus组织以来,该组织一直管理着Modbus协议的开发和更新。Modbus组织是一个倡
导持续使用该技术的协会,其由兼容Modbus设备的用户和供应商组成。 Modbus协议目前存在多个用于串行端口、以太网和其他支持互联网协议套件的网络版本。Modbus协议有许多变体: Modbus RTU —这用于串行通信,并采用数据的紧凑二进制表示进行协议通信。RTU格式使用带有循环冗余校验的校验和的命令/数据作为错误校验机制,以确保数据的可靠性。Modbus RTU是Modbus 最常见的实现方式。Modbus RTU消息必须连续传输,不能有字符间的延迟。Modbus消息由空闲(静默)时段构成(分隔)。 Modbus ASCII —用于串行通信,并利用ASCII字符进行协议通信。ASCII格式使用纵向冗余校验的校验和。Modbus ASCII消息由前导冒号(":")和尾随换行符(CR/LF)组成。 Modbus TCP/IP或Modbus TCP —这是一种通过连接502端口,基于TCP/IP网络通信的Modbus变体。它不需要计算校验和,因为底层已经提供校验和保护。 基于TCP/IP的Modbus或基于TCP的Modbus 或Modbus RTU/IP—这是一个与Modbus TCP不同的Modbus变体,其在有效载荷中和Modbus RTU一样包含校验和。 基于UDP的Modbus—一些人已经尝试在IP网络上使用基于UDP 的Modbus,这消除了TCP所需的开销。 Modbus Plus (Modbus+、MB+或MBP)-Modbus Plus是施耐德
MODBUS协议(功能码及报文解析)要点
Modbus是一种串行通信协议,是于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和remoteterminalunit(RTU)。 Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口物理层进行。 对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。ModbusRTU是一种紧凑的,采用二进制表示数据的方式,ModbusASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯(serialcommunication)方式。RTU格式后续的命令/数据带有的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。 对于通过(例如)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和的计算。 对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。 Modbus有一个扩展版本ModbusPlus(Modbus+或者MB+),不过此协定是Modicon 专有的,和Modbus不同。它需要一个专门的协处理器来处理类似的高速令牌旋转。
modbus地址对应表
modbus地址对应表 曾经做过单片机和以下20种PLC的Modbus RTU串口通信,现将这20种PLC输入、输出和寄存器元件与Modbus编号地址对应表分享出来。 三菱FX3G-40MR/ES-A、西门子S7-200 CPU226 AC/DC/RLY、欧姆龙CP1H-X40DR-A、松下AFPX-C40R、台达DVP-12SA2、信捷XC5-48、永宏FBs-40MC、产电XBC-DR40S、汇川H2u-2416MT-XP、英威腾IVC2H-1616MAT6、基恩士KV-N40AR、施耐德电气TM218LDAE40DRPHN、海为H40S2R系列、维控LX3V1212MT系列、和利时LE5109、台安AP-340BR-A、罗克韦尔1766-L32BWA、合信CTH200系列CPU H226L、富士SPE NW0P40R-31、步科K508-40AR。, 三菱 X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 西门子
I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。 欧姆龙 CIO0元件支持Modbus之02功能码; CIO100元件支持Modbus之01、05、15功能码;D元件支持Modbus之03、06、16功能码。 松下 X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; DT元件支持Modbus之03、06、16功能码。 台达 X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。
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的报文发送后,本功能码才得发送
modbus地址对应表
modbus地址对应表 协议版本 Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口EIA-485物理层进行。 对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。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 Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PMCIA总线的板卡。 通信和设备 Modbus协议是一个master/slave架构的协议。有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点。每一个slave设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。 一个ModBus命令包含了打算执行的设备的Modbus地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址0例外,指定地址0的指令是广播指令,所有收到指令的设备都会运行,不过不回应指令)。所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。基本的ModBus命令能指令一个RTU改变它的寄存器的某个值,控制或者读取一个I/O端口,以及指挥设备回送一个或者多个其寄存器中的数据。
MODBUS协议(功能码及报文的详细解析)
M O D B U S协议(功能码 及报文的详细解析) -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN
MODBUS协议 Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 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 Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA总线的板卡。 Modbus协议是一个 master/slave 架构的协议。有一个节点是 m aster 节点,其他使用Modbus协议参与通信的节点是 slave 节点。每一个 slave 设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。 一个ModBus命令包含了打算执行的设备的Modbus地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址 0例外,指定地址 0 的指令是广播指令,所有收到指令的设备都会执行,不过不回应指令)。所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。基本的ModBus命令能指令一
MODBUS协议功能码及报文解析
MODBUS协议功能码及报文解析
MODBUS协议 Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 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 Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA总线的板卡。 Modbus协议是一个 master/slave 架构的协议。有一个节点是 master 节点,其他使用Modbus协议参与通信的节点是 slave 节点。每一个 slave 设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。 一个ModBus命令包含了打算执行的设备的Modbus地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址 0例外,指定地址 0 的指令是广播指令,所有收到指令的设备都会执行,不过不回应指令)。所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。基本的ModBus命令能指令一个RTU
[WEINVIEW] MODBUS地址类型与功能码对应关系
MODBUS地址类型与功能码对应关系 当触摸屏作为一个MODBUS SERVER主站时,是要对所连接的MODBUS RTU从站进行读写控制。WEINVIEW的触摸屏支持01—05和16号功能码。每个设备地址类型所使用的功能码如下: 对MODBUS RTU设备进行读写,触摸屏上的元件中使用什么样的地址类型,取决于RTU设备所支持的功能码、目标对象是位地址还是字地址控制、以及是否要进行写入; EB8000软件中MODBUS协议的设备类型为0x、1x、3x、4x、5x、6x,还有3x_bit,4x_bit,6x_bit,0x_multi_coils等,下面分别说明这些设备类型在MODBUS协议中支持哪些功能码。 0x:是一个可读可写的设备类型,相当于操作PLC的输出点。该设备类型读取位状态的时候,发出的功能码是01H,写位状态的时候发出的功能码是05H。写多个寄存器时发出的功能码是0fH。 1x:是一个只读的设备类型,相当于读取PLC的输入点。读取位状态的时候发出的功能码为 02H。 3x:是一个只读的设备类型,相当于读取PLC的模拟量。读数据的时候,发出的功能码是04H。 4x:是一个可读可写的设备类型,相当于操作PLC的数据寄存器。当读取数据的时候,发出的功能码是03H,当写数据的时候发出的功能码时10H,可写多个寄存器的数据。 5x:该设备类型与4x的设备类型属性是一样的。即发出读写的功能码完全一样,不同之处在于:当为双字时,例如32_bit unsigned格式的数据,使用5x和4x两种设备类型分别读取数据时,高字和低 字的位置是颠倒的。例如,使用4x设备类型读到的数据是0x12345678,那么使用5x设备类型读到的
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/384484584)可使主机模拟编程器功能修改PC从机逻辑 14探询(184/384484584)可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送 15强置多线圈强置一串连续逻辑线圈的通断 16预置多寄存器把具体的二进制值装入一串连续的保持寄存器 17报告从机标识可使主机判断编址从机的类型及该从机运行指示灯的状态 18(884和MICRO84)可使主机模拟编程功能,修改PC状态逻辑 19重置通信链路发生非可修改错误后,是从机复位于已知状态,可重置顺序字节
Modbus通讯格式详解教程
Modbus通讯协议格式 Modbus通讯协议格式为 主机发送:[开始] [从机地址] [功能代码] [起始寄存器地址高8 位] [低8位] [写单寄存器数高8 位] [低8 位] [LRC 校验码] [CR] [LF] 所以本文依据格式逐个介绍解疑: [开始] 为: [从机地址] 为已知; [功能代码] 的名称、作用将在下面介绍; [寄存器地址]分配及寄存器中值的含义将在下面介绍; [LRC 校验码] 可以用Commix软件算出来,详细请参考Commix相关资料; 最后是实例加以说明验证。 功能码名称作用 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 通讯协议: 半双工RS485 口,传输距离≤1200 米。 波特率:9600bt; 1 个起始位;8 个数据位,1 位停止位,无奇偶校验位。 选用ASCII 模式,LRC 检测。 保持寄存器分配:
PLC寄存器地址与Modbus地址对应的问题
Modbus 地址 通常Modbus 地址由 5 位数字组成,包括起始的数据类型代号,以及后面的偏移地址。Modbus Master 协议库把标准的Modbus 地址映射为所谓Modbus 功能号,读写从站的数据。Modbus Master 协议库支持如下地址: ?00001 - 09999:数字量输出(线圈) ?10001 - 19999:数字量输入(触点) ?30001 - 39999:输入数据寄存器(通常为模拟量输入) ?40001 - 49999:数据保持寄存器 Modbus Master 协议库支持的功能 为了支持上述Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能: 表 1. 需要从站支持的功能 Modbus 地址读/ 写 Modbus 从站须支持 的功能 00001 - 09999 数字量输 出读功能 1 写 功能5:写单输出点 功能15:写多输出点 10001 - 19999 读功能 2 写-
数字量输 入 30001 - 39999 输入寄存 器读功能 4 写- 40001 - 49999 保持寄存 器读功能 3 写 功能6:写单寄存器 单元 功能16:写多寄存器 单元 如何理解Modbus 地址与功能码的区别? Modbus 地址与Modbus 的功能码是两个层次的概念。 根据Modbus 通信协议,Modbus 数据的地址使用0xxxx、1xxxx、3xxxx 和4xxxx 的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。在使用S7-200 的指令库时,Modbus 数据地址与S7-200 的I/O 和数据存储区地址间有特定的对应关系。 有些设备表明它支持Modbus RTU 通信协议,但也详细提供了读写数据的详细通信帧格式,其中包括如何指定Modbus 站的地址,需要读写数据类型、长度等等。数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容即所谓“功能码”,如功能 1 指定读取单个/多个数字量输出点的值。
modbus协议对应地址
CPU 上的通信口(Port0)支持 Modbus RTU 从站通信协议 S7-200 CPU上的通信口Port0可以支持Modbus RTU协议,成为Modbus RTU从站。此功能是通过S7-200的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。 如果想在S7-200 CPU之间、或者其他支持Modbus RTU的设备使用Modbus RTU 协议通信,需要由有S7-200 CPU做Modbus主站。S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。 详情请参考《S7-200系统手册》之相关章节。 要实现Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。 Modbus RTU从站指令库只支持CPU上的通信0口(Port0)。 参考:Modbus RTU 主站指令库 基本步骤: 1.检查Micro/WIN的软件版本,应当是STEP 7-Micro/WIN V3.2以上版本。 2.检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包 括MBUS_INIT和MBUS_SLA VE两个子程序。如果没有,须安装Micro/WIN32 V3.2的Instruction Library(指令库)软件包;
图1. 指令树中的库指令 3.编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用 MBUS_SLA VE,并指定相应参数。关于参数的详细说明,可在子程序的局部变量表中找到;
Modbus标准通讯协议格式【最新】
Modbus通讯协议 下表是Modbus的功能格式: 1、读可读写数字量寄存器(线圈状态): 计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][01][00][13][00][25][CRC低][CRC高] 意义如下: <1>设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。例子中为想和17号(十进制的17是十六进制的11)通讯。 <2>命令号01:读取数字量的命令号固定为01。 <3>起始地址高8位、低8位:表示想读取的开关量的起始地址(起始地址为0)。比如例子中的起始地址为19。 <4>寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。例子中为37个开关量。
<5>CRC校验:是从开头一直校验到此之前。在此协议的最后再作介绍。此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。 设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC 校验的低8位] [CRC校验的高8位] 例:[11][01][05][CD][6B][B2][0E][1B][CRC低][CRC高] 意义如下: <1>设备地址和命令号和上面的相同。 <2>返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。 <3>数据1...n:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。比如例子中,表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合...如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。 <4>CRC校验同上。 2、读只可读数字量寄存器(输入状态): 和读取线圈状态类似,只是第二个字节的命令号不再是1而是2。 3、写数字量(线圈状态):
MODEBUS 地址说明
MODEBUS 地址说明 在帮助目录的库栏目。 通常以 5 个字符值的形式写入Modbus 地址,其中包含数据类型和偏移量。第一个字符决定数据类型,后四个字符包含值。 Modbus 主站寻址 Modbus 主站指令将地址映射至正确功能,以发送到从站设备。Modbus 主站指令支持下列Modbus 地址: 00001 至09999 是离散量输出(线圈) 10001 至19999 是离散量输入(触点) 30001 至39999 是输入寄存器(通常是模拟量输入) (40001 至49999)和(400001 至465535)是保持寄存器 所有Modbus 地址均从 1 开始,也就是说第一个数据值从地址1 开始。实际有效地址范围取决于从站设备。不同的从站设备支持不同的数据类型和地址范围。 Modbus 从站寻址 Modbus 主站设备将地址映射至正确的功能。Modbus 从站指令支持下列地址: 00001 至00256 是映射到- 的离散量输出 10001 至10256 是映射到- 的离散量输入
30001 至30056 是映射到AIW0 - AIW110 的模拟量输入寄存器 40001 至49999 和400001 至465535 是映射到V 存储器的保持寄存器。将Modbus 地址映射到CPU 地址 所有Modbus 地址均从 1 开始。 将Modbus 地址映射到CPU 地址 所有Modbus 地址均从 1 开始。 将Modbus 地址映射到CPU 地址 Modbus 地址CPU 地址 00001 00002 00003 ...... 00255 00256 10001 10002 10003 10255
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保留用于异常应答