admin管理员组

文章数量:1531699

2024年7月17日发(作者:)

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敕令,但是平日

也只有一个主节点装备启动指令).

一个ModBus敕令包含了打算履行的装备的Modbus地址.所有装备都邑收

到敕令,但只有指定地位的装备会履行及回应指令(地址 0破例,指定地址 0

的指令是广播指令,所有收到指令的装备都邑履行,不过不回应指令).所有的

Modbus敕令包含了检讨码,以肯定到达的敕令没有被损坏.根本的ModBus敕令

能指令一个RTU转变它的存放器的某个值,掌握或者读取一个I/O端口,以及批

示装备回送一个或者多个其存放器中的数据.

有很多modems和网关支撑Modbus协定,因为Modbus协定很简略并且轻易

复制.它们当中一些为这个协定特殊设计的.有应用有线.无线通信甚至短新闻

和GPRS的不合实现.不过设计者须要战胜一些包含高延迟和时序的问题.

MODBUS通信进程如下图

MODBUS RTU 报文格局

肇端位

T1-T2-T3-

T4

装备地址 功效代码

8Bit 8Bit

数据

n个8Bit

CRC校验

16Bit

停止符

T1-T2-T3-

T4

MODBUS ASCII 报文格局

肇端位

1个字符

装备地址 功效代码

2个字符 2个字符

数据 LRC校验 停止符

2个字符 n个字符 2个字符

MODBUS TCP报文

交互标识

2字节

一般为0

协定标识 报文长度 装备标识 功效代码

2字节 2字节

一般为0 高字节在

1字节

也就是装

备地址

1个字符

数据

n个字符

现实上MODBUS RTU与ASCII的内容是完整雷同的,不合的的ASCII方法用

“:”标识帧肇端,用“CR LF”标识帧停止.校验采取LRC,把RTU帧中一个字

节的内容换成了2个ASCII字符.比方在RTU方法下装备地址 01 只有一个字

节,在ASCII方法下转换成字符串“01”(16进制的30 31 ).

MODBUS TCP 中的装备标识,功效码等与MODBUS RTU雷同,可以以为是在

MODBUS RTU报文的前边加了一个头,去失落了CRC校验这个尾.

MODBUS协定界说了4种根本数据类型:可读写位数据,只读位数据,只读

16位数据,可读写16位数据.这些数据分离被称为线圈状况,输入状况,输入存

放器,保持存放器.

MODBUS协定中界说的这些数据都是一个从地址1开端的数组,拜访时须要

指明从哪个地址开端拜访,拜访若干个数据.下表是MODBUS的功效码.

ModBus功效码

功效

名称 感化

取得一组逻辑线圈的当前状况(ON/OFF)

取得一组开关输入的当前状况(ON/OFF)

在一个或多个保持存放器中取得当前的二进制

在一个或多个输入存放器中取得当前的二进制

强置一个逻辑线圈的通断状况

把具体二进值装入一个保持存放器

01 读取线圈状况

02 读取输入状况

03 读取保持存放器

04 读取输入存放器

05 强置单线圈

06 预置单存放器

07 读取平常状况

取得8个内部线圈的通断状况,这8个线圈的

地址由掌握器决议,用户逻辑可以将这些线圈

界说,以解释从机状况,短报文合适于敏捷读取

状况

把诊断校验报文送从机,以对通信处理进行评

08 回送诊断校验

09 编程(只用于484) 使主机模仿编程器感化,修正PC从机逻辑

可使主机与一台正在履行长程序义务从机通

10 控询(只用于484) 信,探听该从机是否已完成其操纵义务,仅在含

有功效码9的报文发送后,本功效码才发送

11 读取事宜计数

可使主机发出单讯问,并随即剖断操纵是否成

功,尤其是该敕令或其他应答产生通信错误时

可是主机检索每台从机的ModBus事务处理通

12 读取通信事宜记载 信事宜记载.假如某项事务处理完成,记载会给

出有关错误

13

编程(184/384 484

可使主机模仿编程器功效修正PC从机逻辑

584)

可使主机与正在履行义务的从机通信,按期控

探听(184/384 484

14 询该从机是否已完成其程序操纵,仅在含有功

584)

效13的报文发送后,本功效码才得发送

15 强置多线圈

16 预置多存放器

17 陈述从机标识

18

(884和MICRO

84)

强置一串持续逻辑线圈的通断

把具体的二进制值装入一串持续的保持存放器

可使主机断定编址从机的类型及该从机运行指

导灯的状况

可使主机模仿编程功效,修正PC状况逻辑

产生非可修正错误后,是从机复位于已知状况,

可重置次序字节

显示扩大存储器文件中的数据信息

把通用参数写入扩大存储文件,或修正之

留感化户功效的扩大编码

留作内部感化

用于平常应答

19 重置通信链路

20

21

读取通用参数

(584L)

写入通用参数

(584L)

22~保存作扩大功效备

64 用

65~保存以备用户功效

72 所用

73~

不法功效

119

120~

保存

127

128~

保存

255

各个功效码对应的数据类型

代功效 数据类型

01

02

03

04

05

06

15

16

16位整型

16位整型

整16位整型

整16位整型

MODBUS协定相当庞杂,但是经常应用的敕令也就简略的几

个,01,02,03,04,05,06,15,16号敕令.

各个敕令的功效和报文如下:

01 敕令读取线圈状况 MODBUS地址 00001~

MODBUS 请求

功效码

肇端地址

读取数目

1 BYTE

2 BYTE

2 BYTE

1 BYTE

1 BYTE

n BYTE

0X01

0X0000 TO 0XFFFF

1 TO 2000(0X7D0)

0X01

N

n =N or N+1

MODBUS 响应

功效码

字节计数

线圈状况

N =读取数目/8 假如余数不为0 则N=N+1

错误响应

功效码

错误代码

1 BYTE

1 BYTE

0X01+ 0X80

0x1 or 0x2 or 0x3 or 0x4

响应

数据(hex)

01

00

13

00

13

域名称

功效码

字节计数

27(h)~20状

35(h)~28状

38(h)~36状

数据(hex)

01

03

CD

6B

05

举例

请求

域名称

功效码

肇端地址高(字节)

肇端地址低(字节)

读取数目高(字节)

读取数目低(字节)

02 敕令读取输入状况 MODBUS地址 10001~

MODBUS 请求

功效码

肇端地址

读取数目

1 BYTE

2 BYTE

2 BYTE

0X02

0X0000 TO 0XFFFF

1 TO 2000(0X7D0)

MODBUS 响应

功效码

字节计数

输入状况

1 BYTE

1 BYTE

n BYTE

0X02

N

n =N or N+1

N =读取数目/8 假如余数不为0 则N=N+1

错误响应

功效码

错误代码

1 BYTE

1 BYTE

0X02+ 0X80

0x1 or 0x2 or 0x3 or 0x4

响应

数据(hex)

02

00

C4

00

16

域名称

功效码

字节计数

204(h)~197状况

212(h)~205状况

218(h)~213状况

数据(hex)

02

03

AC

DB

35

举例

请求

域名称

功效码

肇端地址高(字节)

肇端地址低(字节)

读取数目高(字节)

读取数目低(字节)

03 读保持存放器 MODBUS地址 40001~

MODBUS 请求

功效码

肇端地址

读取数目

1 BYTE

2 BYTE

2 BYTE

1 BYTE

1 BYTE

N*2 BYTE

1 BYTE

1 BYTE

0X03

0X0000 TO 0XFFFF

1 TO 125(0X7D)

0X03

N*2

0X03+ 0X80

0x1 or 0x2 or 0x3 or 0x4

响应

数据(hex)

03

00

6B

00

03

域名称

功效码

字节计数

存放器高(108)

存放器低(108)

存放器高(109)

存放器低(109)

存放器高(110)

存放器低(110)

数据(hex)

03

06

02

2B

00

00

00

64

MODBUS 响应

功效码

字节计数

输入状况

错误响应

功效码

错误代码

举例

请求

域名称

功效码

肇端地址高(字节)

肇端地址低(字节)

读取数目高(字节)

读取数目低(字节)

04 输入存放器 MODBUS地址 30001~

MODBUS 请求

功效码

1 BYTE 0X04

肇端地址

读取数目

2 BYTE

2 BYTE

1 BYTE

1 BYTE

N*2 BYTE

1 BYTE

1 BYTE

0X0000 TO 0XFFFF

1 TO 125(0X7D)

0X04

N*2

0X04+ 0X80

0x1 or 0x2 or 0x3 or 0x4

响应

MODBUS 响应

功效码

字节计数

输入状况

错误响应

功效码

错误代码

举例

请求

域名称

功效码

肇端地址高(字节)

肇端地址低(字节)

读取数目高(字节)

读取数目低(字节)

数据(hex)

04

00

08

00

01

域名称

功效码

字节计数

输入存放器高

(9)

输入存放器低

(9)

数据(hex)

04

02

00

0A

05 设置单个继电器状况

MODBUS 请求

功效码

设置地址

设置内容

1 BYTE

2 BYTE

2 BYTE

0X05

0X0000 TO 0XFFFF

0x0000 OR 0XFF00

0x0000 释放继电器

0xff00 吸合继电器

0X05

0X0000 TO 0XFFFF

0x0000 OR 0XFF00

0X05+ 0X80

0x1 or 0x2 or 0x3 or 0x4

响应

数据(hex)

05

00

05

FF

00

域名称

功效码

设置地址高(字节)

设置地址低(字节)

设置内容高(字节)

设置内容低(字节)

数据(hex)

05

00

05

FF

FF

MODBUS 响应

功效码

设置地址

设置内容

1 BYTE

2 BYTE

2 BYTE

1 BYTE

1 BYTE

错误响应

功效码

错误代码

举例(吸合6号继电器)

请求

域名称

功效码

设置地址高(字节)

设置地址低(字节)

设置内容高(字节)

设置内容低(字节)

06 设置单个保持存放器

MODBUS 请求

本文标签: 字节地址功效