Modbus功能表.docx
《Modbus功能表.docx》由会员分享,可在线阅读,更多相关《Modbus功能表.docx(16页珍藏版)》请在冰豆网上搜索。
![Modbus功能表.docx](https://file1.bdocx.com/fileroot1/2022-12/1/f7e991f4-64b7-49b3-bc6d-32d4f7554dac/f7e991f4-64b7-49b3-bc6d-32d4f7554dac1.gif)
Modbus功能表
Modbus网络是一个工业通信系统,由带智能终端的可编程
序控制器和计算机经过公用线路或局部专用线路连接而成。
其系统结构既包含硬件、亦包含软件。
它可应用于各种数据
收集和过程监控。
下表1是ModBus的功能码定义。
表1ModBus功能码
功能码
名称
作用
01
读取线圈状态
获得一组逻辑线圈的当前状态(
ON/OFF)
02
读取输入状态
获得一组开关输入的当前状态(
ON/OFF)
03
在一个或多个保持寄存器中获得当前的二
读取保持寄存器
进制值
04
在一个或多个输入寄存器中获得当前的二
读取输入寄存器
进制值
05
强置单线圈
强置一个逻辑线圈的通断状态
06
预置单寄存器
把详尽二进值装入一个保持寄存器
获得8个内部线圈的通断状态,这
8个线
07
圈的地址由控制器决定,用户逻辑可以将
读取异常状态
这些线圈定义,以说明从机状态,短报文
适合于迅速读取状态
08
把诊断校验报文送从机,以对通信办理进
回送诊断校验
行评鉴
编程(只用于
09
484)
控询(只用于
10
484)
11读取事件计数
读取通信事件记
12
录
编程(184/384
13
484584)
探询(184/384
14
484584)
15强置多线圈
16预置多寄存器
使主机模拟编程器作用,更正PC从机逻
辑
可使主机与一台正在执行长程序任务从机通信,探询该从机能否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送
可使主机发出单咨询,并随即判断操作能否成功,特别是该命令或其余应答产生通信错误时
可是主机检索每台从机的ModBus事务办理通信事件记录。
假如某项事务办理完成,记录会给出有关错误
可使主机模拟编程器功能更正PC从机逻
辑
可使主机与正在执行任务的从机通信,定
期控询该从机能否已完成其程序操作,仅
在含有功能13的报文发送后,本功能码才
得发送
强置一串联续逻辑线圈的通断
把详尽的二进制值装入一串联续的保持寄存器
可使主机判断编址从机的种类及该从机运
17报告从机表记
行指示灯的状态
(884
和MICRO可使主机模拟编程功能,更正
PC状态逻
18
84)
辑
发生非可更正错误后,是从机复位于已知
19重置通信链路
状态,可重置序次字节
读取通用参数
20显示扩展储存器文件中的数据信息
(584L)
写入通用参数
21把通用参数写入扩展储存文件,或更正之
(584L)
保留作扩展功能
22~64
备用
保留以备用户功
65~72留作用户功能的扩展编码能所用
73~119非法功能
120~
保留留作内部作用
127
128~
保留用于异常应答
255
Modbus网络不过一个主机,所有通信都由他发出。
网络
可支持247个之多的远程隶属控制器,但实质所支持的从机
数要由所用通信设备决定。
采纳这个系统,各PC可以和中
心主机交换信息而不影响各PC执行自己的控制任务。
表2
是ModBus各功能码对应的数据种类。
表2ModBus功能码与数据种类对应表
代
功能
数据种类
码
01
读
位
02
读
位
03
整型、字符型、状态字、
读
浮点型
04
读
整型、状态字、浮点型
05
写
位
06
整型、字符型、状态字、
写
浮点型
08
N/A
重复“回路反响”信息
15
写
位
16
整型、字符型、状态字、
写
浮点型
17
读
字符型
(1)ModBus的传输方式
在ModBus系统中有2种传输模式可选择。
这2种传输模式与
从机
PC
通信的能力是相同的。
选择时应视所用
ModBus
主机而
定,每个
ModBus
系统只好使用一种模式,不同意
2种模式混
用。
一种模式是
ASCII
(美国信息交换码),另一种模式是
RT
U(远程终端设备)这两种模式的
定义见表
3
表3ASCII
和RTU传输模式的特点
特点
ASCII(7位)
RTU(8位)
十六进制(使用
编码系
ASCII可打印字
二进制
统
符:
0~9,A~
F)
开始位
1位
1位
数据位(最低有
7位
8位
效位第一位)
每一个
1位(此位用于
1位(此位用于奇
字符的
奇偶校验(任选)奇偶校验,无校
偶校验,无校应
位数
应则无该位)
则无该位)
停止位
1或2位
1或2位
错误校验
LRC(即纵向冗
CRC(即循环冗
余校验)余校验)
ASCII可打印字符便于故障检测,并且对于用高级语言
(如Fortan)编程的主计算机及主PC很适合。
RTU则适用
于机器语言编程的计算机和PC主机。
用RTU模式传输的数据是8位二进制字符。
如欲变换
为ASCII模式,则每个RTU字符第一应分为高位和低位两
部分,这两部分各含4位,尔后变换成十六进制等量值。
用以构成报文的ASCII字符都是十六进制字符。
ASCII模式使用的字符虽是RTU模式的两倍,但ASCII数据的译玛和办理更为简单一些,其余,用RTU模式时报文字符一定以连续数据流的形式传递,用ASCII模式,字符之间可产生长
达1s的间隔,以适应速度较快的机器。
表4给出了以RTU
方式读取整数据的例子
以RTU方式读取整数据的例子主机央求
第一个第一个
寄存器寄存器
寄存器寄存器
错误校
地址
功能码
的数目的数目
的高位的低位
验
的高位的底位
地址
地址
01
03
00
38
00
01
XX
从机应答
地址
功能码
字节数
数据高
数据低
错误校
字节
字节
验
01
03
2
41
24
XX
十六进制数4124
表示的十进制整数为
16676,错误校
验值要依据传输方式而定。
(2)Modbus的数据校验方式
CRC-16(循环冗余错误校验)
CRC-16错误校验程序以下:
报文(此处只涉及数据位,
不指初步位、停止位和任选的奇偶校验位)被看作是一个连
续的二进制,其最高有效位(MSB)首选发送。
报文先与
X↑16相乘(左移16位),尔后看X↑16+X↑15+X↑2+1除,
X↑16+X↑15+X↑2+1可以表示为二进制数
0101。
整数商位忽视不记,16位余数加入该报文(MSB先发送),成为2个CRC校验字节。
余数中的1所有初始化,
省得所有的零成为一条报文被接收。
经上述办理而含有CR
C字节的报文,若无错误,到接收设备后再被同一多项式(X
↑16+X↑15+X↑2+1)除,会获取一个
这个CRC字节,并将其与被传递的
零余数(接收设备核验
CRC比较)。
所有运算
以
2
为模(无进位)。
习惯于成串发送数据的设备会首选送出字符的最右位(LSB-最低有效位)。
而在生成CRC状况下,发送首位应是被除数的最高有效位MSB。
由于在运算中不用进位,为便于
操作起见,计算CRC时设MSB在最右位。
生成多项式的位
序也一定反过来,以保持一致。
多项式的
MSB
略去不记,
因其只对商有影响而不影响
余数。
生成
CRC-16
校验字节的步骤以下:
①装如一个
16位寄存器,所有数位均为
1。
②该
16位寄存器的高位字节与开始
8位字节进行“异或”运
算。
运算结果放入这个
16位寄存器。
③把这个16寄存器向右移一位。
④若向右(标志位)移出的数位是1,则生成多项式10100
00000000001和这个寄存器进行“异或”运算;若向右移出的数位是0,则返回③。
⑤重复③和④,直至移出8位。
⑥其余8位与该十六位寄存器进行“异或”运算。
⑦重复③~⑥,直至该报文所有字节均与16位寄存器进行“异
或”运算,并移位8次。
⑧这个16位寄存器的内容即2字节CRC错误校验,被加到
报文的最高有效位。
其余,在某些非ModBus通信协议中也常常使用CRC1
6
作为校验手段,并且产生了一些
CRC16的变种,他们是
使用CRC16
多项式X↑16+X↑15+X↑2+1,单初次装入的1
6
位寄存器为
0000;使用CRC16
的反序X↑16+X↑14+X↑1
+1,初次装入寄存器值为0000或FFFFH。
LRC(纵向冗余错误校验)
LRC错误校验用于ASCII模式。
这个错误校验是一个8
位二进制数,可作为2个ASCII十六进制字节传递。
把十六
进制字符变换成二进制,加上无循环进位的二进制字符和
二进制补码结果生成LRC错误校验(拜见图)。
这个LRC
在接收设备进行核验,并与被传递的LRC进行比较,冒号
(:
)、回车符号(CR)、换行字符(LF)和置入的其余
任何非ASCII十六进制字符在运算时忽视不计。
表5LRC生成模范--读取02号从机的前8个线圈
十六进制二进制
地址
0
2
0000
0010
功能码
0
1
0000
0001
初步地址高
0
0
0000
0000
位
初步地址低
0
0
0000
0000
位
单元数目
0
0
0000
0000
0
8+
0000
1000
0000
1011
变为补码
1111
0101
错误校验
F
5
F
5
接受PC把所
有收到的数
据字节(包含
最后的LRC)
加在一起,8
位应所有为0
(注意:
和可
00000010
00000001
00000000
00000000
00000000
00001000
能超出8位,
应略去最低
位)
错误校验11110101
和00000000