ModbusRTU命令格式


00 00 置状态为OFF 寄存器起始地址 AC AC 寄存器起始地址 AC AC
示例:将0x00AD单元状态置为ON/OFF 置为ON/OFF FF 00 00 00 CRC校验 crcl crcl crch crch
置为ON/OFF FF 00 00 00
CRC校验 crcl crcl crch crch
寄存器起始地址 00 寄存器起始地址 00
0x10
写多个寄存器 示例:将数据0x000A和0x0102写入从0x0002开始的两个寄存器单 请求: 设备号 id 响应: 设备号 id 功能码 10 功能码 10 寄存器起始地址 00 寄存器起始地址 00
0x04 Input Register (30001 - 3ffff) 16位 只读
寄存器单元
功能码
0xБайду номын сангаас1
作用
读线圈 指示状态1 = ON,0 = OFF 请求: 设备号 id 响应: 设备号 id 功能码 01 功能码 01
示例:读取0x0001到0x000A单 寄存器起始地址 00 字节数 02
0x05
写单个线圈 十六进制FF 00置状态为ON,十六进制00 00 置状态为OFF 请求: 设备号 id 功能码 05 05 功能码 05 05 寄存器起始地址 00 00 寄存器起始地址 00 00
读离散输入 示例:读取197—218的开关状态,204-197内容为0xAC(即二进 请求: 设备号 id 响应: 设备号 id 功能码 02 功能码 02 寄存器起始地址 00 字节数 03
InputStatus(10001 - 1ffff) 1位 只读
0x03
读保持寄存器 示例:读取寄存器108—110的值,108的内容为0x022B(即555) 请求: 设备号 id 响应: 设备号 id 功能码 03 功能码 03 寄存器起始地址 00 字节数 06
0x06 Holding Register (40001 - 4ffff) 16位 读写
写单个寄存器 示例:将数据0x0003写入寄存器单元0x0002
请求: Holding Register (40001 - 4ffff) 16位 读写 响应:
设备号 id 设备号 id
功能码 06 功能码 06
CRC校验 crcl crch
8的内容为0x022B(即555),109的内容为0x0000(即0),110的内容为0x0064(即100) 寄存器起始地址 6B 寄存器单元长度 00 03 数据 02 2B 00 00 00 64 CRC校验 crcl crch CRC校验 crcl crch
0x0002
读输入寄存器 示例:读取输入寄存器0x0009单元的值,现场数据为0x000A 请求: 设备号 id 响应: 设备号 id 功能码 04 功能码 04 寄存器起始地址 00 字节数 02
请求及响应格式
例:读取0x0001到0x000A单元的开关状态,现场状态为全开(即全1) 寄存器起始地址 00 数据 FF 03 寄存器单元长度 00 0A CRC校验 crcl CRC校验 crcl crch crch
,数据内容为2个字节:十六进制CD 01(二进制 1100 1101 0000 0001) 寄存器起始地址 13 寄存器起始地址 13 寄存器单元长度 00 0A 字节数 02 CRC校验 crcl crch CD 数据 01 CRC校验 crcl crch
寄存器单元长度 00 0A
4-197内容为0xAC(即二进制1010 1100),212-205内容为0xDB(即二进制1101 1011),218-213内容为0x35(即二进制0011 寄存器起始地址 C4 寄存器单元长度 00 数据 AC DB 35 16 CRC校验 crcl crch
CoilStatus (00001 - 0ffff) 1位 读写 响应:
id 设备号 id id 0x0F
写多个线圈 示例:从0x0014开始写入10个状态值,数据内容为2个字节:十 请求: 设备号 id 响应: 设备号 id 功能码 0F 功能码 0F 寄存器起始地址 00 寄存器起始地址 00
0x02
寄存器单元长度 00 02
值,现场数据为0x000A 寄存器起始地址 08 数据 00 0A 寄存器单元长度 00 01 CRC校验 crcl CRC校验 crcl crch crch
内容为0x35(即二进制0011 0101)
CRC校验 crcl crch
寄存器起始地址 01 寄存器起始地址 01 00 00
数据 03 数据 03
CRC校验 crcl crch
CRC校验 crcl crch
0x0002开始的两个寄存器单元 寄存器起始地址 01 寄存器起始地址 01 寄存器单元长度 00 02 字节数 04 CRC校验 crcl crch 00 0A 数据 01 02
合集下载

MODBUSRTU通讯规约

MODBUSRTU通讯规约

MODBUS_RTU通讯规约一、通讯数据的类型及格式信息传输为异步方式,并以字节为单位,在主机和从机之间传递的通讯信息是11位的字格式,包含1个起始位(0),8个数据位,2个停止位(1)。

信息帧格式:二、通讯信息传输过程通讯命令由主机发送至从机时,与主机发送的地址码相符的从机接收通讯命令,如果CRC校验无误,则执行相应的操作,然后把执行结果(数据)返送给主机。

返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。

如果CRC校验出错就不返回任何信息。

2.1 地址码地址码是每个通讯信息帧的第个1字节,从0到100。

每个从机必须有总线内唯一的地址码,只有与主机发送的地址码相符的从机才能响应回送信息。

当从机回送信息时,回送数据均以各自的地址码开始。

主机发送的地址码表明将发送到的从机地址,从机返回的地址码表明回送的从机地址,相应的地址码表明该信息来自于何处。

2.2 功能码每个通讯信息帧的第个2字节。

主机发送,通过功能码告诉从机应执行什么动作。

从机响应,从机返回的功能码与从主机发送来的功能码一样,表明从机已响应主机并已执行了相关的操作。

仪表支持以下2个功能码:2.3 数据区数据区随功能码不同而不同。

这些数据可以是数值、参考地址等。

对于不同的从机,地址和数据信息都不相同(应给出通讯信息表)。

主机利用通讯命令(功能码03H和10H),可以任意读取和修改从机数据寄存器,一次读取或写入的数据长度应不超过数据寄存器地址有效范围。

三、功能码简介3.1 功能码03H:读寄存器例如:主机要读取从机地址为01H,起始寄存器地址为0CH的2个寄存器数据。

主机发送:如果从机寄存器0CH、0DH的数据为0000H、1388H,从机返回:3.2功能码10H:写多路寄存器例如:主寄存器地址为00H的3个寄存器中。

主机发送:从机返回:四、16位CRC校验码主机或从机可用校验码判别接收信息是否正确。

由于电子噪声或一些其它干扰,信息在传输过程中可能会发生错误,校验码可以检验主机或从机通讯信息是否有误。

modbus rtu 通讯参数

modbus rtu 通讯参数

modbus rtu 通讯参数摘要:1.modbus rtu通讯参数简介2.modbus rtu通讯参数的详细说明2.1 数据帧格式2.2 数据传输速率2.3 通讯距离2.4 通讯线缆类型2.5 流量控制和错误检测3.modbus rtu通讯参数的应用3.1 工业自动化3.2 智能建筑3.3 交通运输4.modbus rtu通讯参数的发展趋势4.1 高速通信4.2 远程控制4.3 物联网应用正文:Modbus RTU通讯参数是在modbus通讯协议的基础上,针对串行通信的一种具体实现。

它广泛应用于工业自动化、智能建筑和交通运输等领域,为设备之间的通讯提供了标准和规范。

Modbus RTU(Remote Terminal Unit)通讯参数是modbus协议在串行通信中的实施,它规定了数据帧格式、数据传输速率、通讯距离、通讯线缆类型以及流量控制和错误检测等方面的参数。

这些参数为不同厂商生产的设备之间的通讯提供了基础,使得设备可以方便地进行连接和通信。

2.Modbus RTU通讯参数的详细说明2.1 数据帧格式Modbus RTU通讯参数规定,数据帧由一个起始符、一个长度域、一个地址域、一个命令域、数据域、一个校验域和一个结束符组成。

这种格式可以确保数据在传输过程中的完整性和准确性。

2.2 数据传输速率Modbus RTU通讯参数支持多种数据传输速率,如9600bps、19200bps、38400bps等。

用户可以根据实际需求选择合适的传输速率。

2.3 通讯距离Modbus RTU通讯参数支持长距离通讯,通讯距离可达1200米。

在实际应用中,可以通过选择合适的通讯线缆和设备来达到更远的通讯距离。

2.4 通讯线缆类型Modbus RTU通讯参数支持多种通讯线缆类型,如双绞线、同轴电缆和光纤等。

用户可以根据实际环境和需求选择合适的线缆类型。

2.5 流量控制和错误检测Modbus RTU通讯参数支持硬件和软件流量控制,以及奇偶校验和CRC 校验等错误检测机制,以确保数据在传输过程中的可靠性和稳定性。

MODBUS-RTU协议

MODBUS-RTU协议

MODBUS-RTU协议1.数据格式说明1、1通讯模式本仪表采用MODBUS RTU格式。

协议用于主从查询模式,进行数据通讯。

通讯流程如下图。

在RTU模式下,数据格式说明如下。

1、2数据格式数据格式为n,8,1(1个起始位、8个数据位、无校验、1个停止位)波特率可选五种,1200、2400、4800、9600、19200其中:T1、T2、T3、T4为每帧之间的时间间隔,两帧之间的传输必须大于间隔时间。

1、3地址协议中规定仪表的地址为“01-99”,“0”地址用于广播,本协议不支持广播,其余地址保留。

2.命令说明命令03(HEX)读单个或多个寄存器命令06(HEX)写单个寄存器此命令包含在“命令10”中命令10(HEX)写多个寄存器此命令包含“命令6”2.2 数据格式协议中的数据包括:16进制数、整数、BCD码、浮点数寄存器地址下列表中的属性指数据的读写属性,R-只读;W-写;R/W-既可读,也可写入。

单精度浮点数SINGLE格式为IEEE754,数据由低到高。

32位浮点数共计32位,折合4字节。

由最高到最低位分别是第31、30、29、……、0位。

31 30-23 22-0S 阶码尾数31位是符号位(S),1表示该数为负,0反之;30-23位,一共8位是阶码;22-0位,一共23位是尾数。

●BCD码格式有两种:格式2: (内部应用)6字节BCD编码,表示固定小数点的数据,数据低→高,如小数点默认为第9位数的后面。

●无符号整数Uint为0-65536。

各指令的格式及示例见下面的说明。

错误响应举例3.数据项定义记录信息表4.版本5.参考Modicon-Modbus Protocol Reference Guide (PI-MBUS-300);REV J;June,1996 6.自定义RS485通讯协议通讯线路:采用RS485数据通讯线路,半双工通讯通讯协议:(1200 2400 4800 9600 19200),NONE/0DD/EVEN,8位数据,1停止位读瞬时流量、累积流量1.主机命令格式2.设备回应格式注:流量计返回数据格式定义:瞬时流量: xxxxxxx 7字节累积流量: xxxxxxxxxxx 11字节读流量数据举例(以下数据均为十六进制):指令包: 5a 包头32 34 流量计485地址返回包: 3d 包头32 34 流量计485地址31 32 33 2e 34 35 36 瞬时流量=123.456 m3/h 20 20 20 20 20 31 32 33 34 2e 35 累积流量=1234.5 m303 d3 累加和高位、累加和低位ff 结束符。

Modbus RTU通信指令说明

Modbus RTU通信指令说明

一主站初始化EN:使能位,必须用SM0.0一直接通Mode:为1=Modbus,0=PPI(stop Modbus),用SM0.0一直接通Baud:波特率(1200、2400、4800、9600、19200、38400、57600或115200)一般为9600Parity:效验方式,0=无效验,1=奇效验,2=偶效验Port:0=CPU集成的端口,1=通过扩展SB信号板的端口Timeout:从站响应时间,超时时间,单位:ms毫秒Done:完成标志位Error:错误代码二读或写从站数据指令EN:使能位,必须用SM0.0一直接通First:读写请求,必须使用脉冲触发,加沿指令Slave:从站地址(0-247)RW:读写命令,1=写,0=读Addr:从站通信数据起始地址,要写Modbus地址(0001,10001,30001,40001)Count:通信数据区地址的数量,单位取决于Addr处Modbus 地址对应的PLC类型DataPtr:主站通信数据区地址(指针格式)Done:完成标志位Error:错误代码一初始化从站Mode:1=启用Modbus,0=禁用ModbusAddr:从站地址(1-247)Baud:波特率Parity:效验方式,0=无效验,1=奇效验,2=偶效验Port:通讯端口,0=CPU集成的端口,1=通过扩展SB信号板的端口Delay:通讯超时时间(默认为0)MaxIQ:从站允许主战读写的最大I/Q点数MaxAI:从站允许主战读写的最大AI点数MaxHold:从站允许主战读写的最大V区字数HoldStart:保持寄存器起始地址,(指针)Done:完成标志Error:错误信息存储区(BYTE)二MBUS_SLAVE指令用于处理来自Modbus主站的请求,并且必须在每次扫描时执行,以便检查和响应Modbus请求。

Done:完成标志Error:错误信息存储区(BYTE)。

modbusrtu报文格式详细介绍

modbusrtu报文格式详细介绍

modbusrtu报文格式详细介绍Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。

事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。

Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。

大多数Modbus设备通信通过串口EIA-485物理层进行。

对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。

Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。

这两个变种都使用串行通讯(serial communicaTIon)方式。

RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。

被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。

modbusrtu的一个报文分析先声明下我们的目的,我们是要两个设备通讯,用的是MODBUS协议。

上面简单介绍了:报文CRC校验功能号。

在单片机中拿出一部分内存(RAM)进行两个设备通讯,例如:数组后面的注释,说明OX[20]代表是输出线圈,用功能码0x01,0x05,0x0F 访问,开头地址是0 (这个后续说明)IX[20]代表是输入线圈,用功能码0x02 访问,开头地址是1 (这个后续说明)另外两个一样的道理。

注意:所谓的线圈寄存器就是位变量16位变量,不要被迷惑。

之所以称线圈我觉得应该是对于应用的设备,MODBUS协议是专门针对485总线设备(例PLC)开发的。

1、主机对从机写数据操作如果单片机接收到一个报文那么就对报文进行解析执行相应的处理,如上面报文:01 06 00 01 00 17 98 04从机地址功能号数据地址数据CRC校验。

MODBUS_RTU 通讯协议(计数器)

MODBUS_RTU 通讯协议(计数器)

MODBUS_RTU 通讯协议
1、数据传输格式:1位起始位、8位数据位、1位停止位、无奇偶校验位。

2、仪表数据格式:2字节寄存器值=寄存器数高8位二进制数+寄存器低8位二进制数
3、仪表通讯帧格式:
读寄存器命令格式:
1 2 3 4 5 6 7~8 DE 3 起始寄存器高位起始寄存器低位寄存器数高位寄存器数低位CRC 应答:
1 2 3 4~5 6~7 …M*2+2~M*2+3 M*2+4~M*2+5 DE 3 字节计数M*2 寄存器数据1 寄存器数据2…寄存器数据M CRC DE: 设备地址 (1~200)单字节
CRC: 校验字节 采用CRC-16循环冗余错误校验
举例对比说明:(LED计数器)以实际通讯数据内容为准
发送:\01\03\00\00\00\10\44\06
回收:01 03 20 01 00 08 00 8F 02 00 00 00 00 00 00 00 00 00 00 E8 00 00 00 03 55
00 00 00 00 00 00 00 00 00 00 5C 55
仪表动态数据格式
编号参数名称数据格式地址备注
1 E2PROM参数修改标志单字节定点数 0000
2 仪表类型单字节定点数 0001
3 实时测量值三字节定点数 0002
4 第一报警状态(AL1)单字节定点数 0004
5 第二报警状态(AL2)单字节定点数 0005。

modbusRTU协议通讯格式的参考说明


关于修改地址的指令: 使用 10 指令 可修改板子的默认地址 谨慎使用(不要设定会与同一通讯线路上其他设备地 址冲突的新地址), 请一定记住要设定的目标地址。 假设要设定目标地址为 02. 下发指令如下:01 10 00 00 00 01 02 00 02 27 91 解析如下:01 地址,10 指令码,00 00 表示起始寄存器地址,00 01 表示要设定的寄存器个 数,02 表示数据区字节数, 00 02 表示数据区数据(目标地址为 02),27 91 校验字节。 新地址即刻生效,数据返回一次。以后再发数据必须使用新地址。 返回如下:02 10 00 00 00 01 01 FA 解析如下:02 地址,10 指令码,00 00 起始寄存器地址,00 01 设定完成的数据个数,01 FA 校验字节。
关于修改通讯波特率的指令:(此指令慎用!!!)本板子通讯波特率可从 1200bps 到 19200bps 进行设定。 设定方法如下:首先以默认波特率进行连接后,使用 10 指令修改波特率。 假设要设定的目标波特率为 19200bps。 下发指令如下:01 10 00 01 00 01 02 00 05 67 82 解析如下:01 地址,10 指令码,00 01 起始寄存器地址,00 01 设定寄存器的个数,02 数据 区字节数,00 05 数据区数据 ( 00 05 表 示 目 标 波 特 率 为 19200 , 其 中 00 01~00 05 分 别 代 表 1200bps,2400bps,4800bps,9600bps,19200bps),67 82 校验。 返回如下:01 10 00 01 00 01 50 09 解析如下:01 地址,10 指令码,00 01 设定完成起始的寄存器地址,00 01 设定完成的寄存 器个数,50 09 校验。 波特率修改完成之后一定记住,不是即刻生效,要重新上电或者按复位按键后才生效。

常用modbus 通信命令格式

常用modbus 通信命令格式Modbus通信是一种基于串行通信协议的工业自动化和控制系统的通信标准。

它被广泛应用于工业自动化、楼宇自控和电力系统等领域。

Modbus通信协议有三种主要类型:Modbus RTU、Modbus ASCII和Modbus TCP/IP。

其中,Modbus RTU是一种基于串行二进制编码的通信协议,常用于串行通信线路。

Modbus RTU通信命令格式如下:1. 设备地址:1字节,表示主站与从站之间的设备地址。

范围从0到255。

2. 功能码:1字节,表示通信操作的类型。

例如,读取保持寄存器、读取输入寄存器、写入多个寄存器等。

3. 数据长度:1字节,表示接下来要传输的数据长度。

4. 数据:根据功能码的不同,数据字段包含相应的数据。

例如,在读操作中,数据字段包含寄存器的起始地址和寄存器数量;在写操作中,数据字段包含要写入的寄存器的值。

5. 校验码:1字节,用于检测传输过程中的错误。

常用的校验方法有奇偶校验、CRC校验等。

以下是一个Modbus RTU通信命令的示例:0x01 0x03 0x00 0x00 0x00 0x0A 0x01 0x00 0x01 0x00 0x00 0x01 0x00 0x00 0x01 0x00 0x01其中,0x01表示设备地址;0x03表示功能码(读取保持寄存器);0x00表示数据长度;0x00 0x01 0x00 0x01表示寄存器的起始地址和数量;0x01表示CRC校验码。

需要注意的是,Modbus RTU通信命令的具体格式可能因厂商和设备类型而有所不同。

在实际应用中,需要根据设备说明书和通信协议来确定正确的通信命令格式。

ModbusRTU主站通讯

EIA/TIA-232-F: 采用 串行二进制数据交换方式的数据 终端设备和 数据 回路-终端设备 之间的接口 (ANSI/TIA/EIA-232-F-1997)
这个 标准 通常称作 “RS-232” 或 “RS-232C” 因为更早的修订版命名为“RS-232-C”。 RS-232 端口使用非平衡回路传送和接收数据并且控制信号 。 所以, 所有数据和控 制回路需要一根 信号地 (Signal Ground)电线以构成 回路 。
时间限制
串行通讯上运行 Modbus 规范及实现指南 V1.01包含若干重要的时间限制要求。
串行连接
™ Series 90 和 VersaMax 都是 GE Fanuc Automation公司的商标. 1 最新的Modbus RTU 规范在文档 Modbus Application应用协议规范 V1.1 与串行线路上的 Modbus 规范及实现指南 V1.0 中提供,后者两个规范可以在 /找到. 按照Modbus 标
注意:
1. 连接电缆的连接器使用 终端电阻 (RT) 针连接. 其他连接器不能连接 RT
2. 在 SD 信号线两端要用终端电阻 在连接器外壳内接有一个 120 欧姆, ¼ 瓦 的电阻.
3. 在两个端点设备之间的连接器。如图所示 其他的连接器最多
可以使用 31 个.
4. 所有连接器都接到 GE Fanuc CPU 模块的 15-针 RS-485 端口上 . Modbus RTU 主站设备必须 接到左侧的连接器. 其他设备都是从站
有些 RS-422 端口 支持多支路 (多点) 操作。 然而,标准并不保证实现这一能力标 准。 试图在多支路网络中使用 an RS-422 设备时需要注意。
EIA/TIA-485-A: 平衡数字多点系统中所用的发送器和接收器的电气特性 (ANSI/TIA/EIA-485-A-98)

ModbusRTU命令格式

寄存器单元
功能码
0x01
作用
读线圈 指示状态1 = ON,0 = OFF 请求: 设备号 id 响应: 设备号 id0A单 寄存器起始地址 00 字节数 02
0x05
写单个线圈 十六进制FF 00置状态为ON,十六进制00 00 置状态为OFF 请求: 设备号 id 功能码 05 05 功能码 05 05 寄存器起始地址 00 00 寄存器起始地址 00 00
读输入寄存器 示例:读取输入寄存器0x0009单元的值,现场数据为0x000A 请求: 设备号 id 响应: 设备号 id 功能码 04 功能码 04 寄存器起始地址 00 字节数 02
请求及响应格式
例:读取0x0001到0x000A单元的开关状态,现场状态为全开(即全1) 寄存器起始地址 00 数据 FF 03 寄存器单元长度 00 0A CRC校验 crcl CRC校验 crcl crch crch
00 00 置状态为OFF 寄存器起始地址 AC AC 寄存器起始地址 AC AC
示例:将0x00AD单元状态置为ON/OFF 置为ON/OFF FF 00 00 00 CRC校验 crcl crcl crch crch
置为ON/OFF FF 00 00 00
CRC校验 crcl crcl crch crch
,数据内容为2个字节:十六进制CD 01(二进制 1100 1101 0000 0001) 寄存器起始地址 13 寄存器起始地址 13 寄存器单元长度 00 0A 字节数 02 CRC校验 crcl crch CD 数据 01 CRC校验 crcl crch
寄存器单元长度 00 0A
4-197内容为0xAC(即二进制1010 1100),212-205内容为0xDB(即二进制1101 1011),218-213内容为0x35(即二进制0011 寄存器起始地址 C4 寄存器单元长度 00 数据 AC DB 35 16 CRC校验 crcl crch
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档