-
modbus
缩写
【篇一:
modbus
缩写】
modbus
modbus
的意思
modbus
是什么意思
modbus
什么意思
modbus
的解释
modbus
一、
modbus
协议简介
modbus
协议是应用于电子控制器上的一种通用语言。通过此协议
,
控制器相互之间、控制器经由网络(例如以太网)和其它设备之间
可以通信。它
已经成为一通用工业标准。有了它
,
不同厂商生产的控
制设备可以连成工业网络
,
进行集中监控。此协
议定义了一个控制器
能认识使用的消息结构
,
< br>而不管它们是经过何种网络进行通信的。它
描述了一控制器请求访问其它设备的过
程
,
如果回应来自其它设备的
请求
p>
,
以及怎样侦测错误并记录。它制定了消息域格局和内容的公共
p>
格式。
当在一
m
odbus
网络上通信时
,
此协议决定
了每个控制器须要知道它
们的设备地址
,
识别按地址发来的消息
,
决定要产生何种行动。如果需
要回应
,
控制器将生成反馈信息并用
modbus
协议发出。在其它网络
上
,
包含了
modbus
协议的消息转换为在此网络上使用的帧或包结构。
这种转换也扩展了根据具体的网络解决
节地址、路由路径及错误检
测的方法。
1
、在
modbus
网络上转输
p>
标准的
modbus
口是使用一
rs-232c
兼容串行接口
< br>,
它定义了连接口
的针脚、电缆、信号位、传输波特率、
奇偶校验。控制器能直接或
经由
modem
组网。
控制器通信使用主
—
p>
从技术
,
即仅一设备(主设备)能初始化传
输
(查询)。其它设备(从设备)根据主设备查询提供的数据作出相
应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编
程控制器。
主设备可单独和从设备通信
,
也能以广播方式和所有从设备通信。如
果单独通信
,
从设备返回一消息作为回应
,
如果是以
广播方式查询的
,
则
不作任何回应。<
/p>
modbus
协议建立了主设备查询的格式:设备(或
广播)地址、功能代码、所有要发送的数据、一错误检测域。
从设备回应消息也由
modbus
协议构成
,
包括确认要行动的域、任何
要返回的数据、
和一错误检测域。如果在消息接收过程中发生一错
误
,
或从设备不能执行其命令
,
从设备将建立一错误
消息并把它作为回
应发送出去。
2
、在其它类型网络上转输
在其它网络上
,
控制器使用对等技术通信
,
故任何控制都能初始和其它
控制器的通信。
这样在单独的通信过程中
,
控制器既可作为主设备也
可作为从设备。提供的多个内部通道可允许同时发生的传输进程。
在消息位
,modbus
协议仍提供了主
p>
—
从原则
,
尽管网
络通信方法是
“
对等
”
。如果一控制器发送一消息
,
它只是作为主设备
,
并期望从从设
备得到回应。同样
,
当控制器接收到一消息
,
它将建立一从设备回应格
式并返回给发送的控制器。
3
、查询
—
回应周期
(
1
)查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。数据
段包含了从设备要执行功能的任何附加信息。例如功能代码
03
是要
求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之
从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测
域为从设备提
供了一种验证消息内容是否正确的方法。
(
2
)回应
如果从设备产生一正常的回应
,
在回应
消息中的功能代码是在查询消
息中的功能代码的回应。数据段包括了从设备收集的数据:
象寄存
器值或状态。如果有错误发生
,
功能代码将被修改以用于指出回应消
息是错误的
,
同时数据段包含了描述此错误信息的代码。错误检测域
允许主设备确认消息内
容是否可用。
二、两种传输方式
<
/p>
控制器能设置为两种传输模式(
ascii
或
rtu
)中的任何一种在标准
的<
/p>
modbus
网络通信。用户选择想要的模式
,
包括串口通信参数(波
特率、校验方式等)
,
在配置每个控制器的时候
,
在一个
modbus
网络
上的所有设
备都必须选择相同的传输模式和串口参数。
所选的
ascii
或
rtu
方式
仅适用于标准的
modbus
网络
,<
/p>
它定义了在
这些网络上连续传输的消息段的每一位
,
以及决定怎样将信息打包成
消息域和如何解码。
p>
在其它网络上(象
map
和
modbus plus
)
modbus
消息被转成与
串行传输无关的帧。
1
、
ascii
模式
当控制器设为在
m
odbus
网络上以
ascii
(美国
标准信息交换代码)
模式通信
,
在消息
中的每个
8bit
字节都作为两个
as
cii
字符发送。这
种方式的主要优点是字符发送的时间间隔可
达到
1
秒而不产生错误。
代码系统
每个字节的位
crc
域是两个字节
,
包含一
16<
/p>
位的二进制值。它由传输设备计算后加
入到消息中。接收设备重新
计算收到消息的
crc,
并与接收到的
crc
域中的值比较
,
如果两值不同<
/p>
,
则有误。
c
rc
是先调入一值是全
“1”
的
16
位寄存器
,
然后
调用一过程将消息中
连续的
8
位字节各
当前寄存器中的值进行处理。仅每个字符中的
8bit
数据对<
/p>
crc
有效
,
起
始位和停止位以及奇偶校验位均无效。
crc
产生过程中
,
每个
8
位字符都单独和寄存器内容相或(
or
)
,
结果
向最低有效位方向移动
,
最高有效位以
0
填充。
p>
lsb
被提取出来检测
,
< br>如果
lsb
为
1,
寄存器单独和预置的值或一下
,
如果
lsb
为
0,
则不进行。
p>
整个过程要重复
8
次。在最后一位(第
p>
8
位)完成后
,
下
一个
8
位字
节又单独和寄存器的当前值
相或。最终寄存器中的值
,
是消息中所有
的字节都执行之后的
crc
值。
<
/p>
crc
添加到消息中时
,
低字节先加入
,
然后高字节。
crc
简单函数如下:
unsigned short crc16(puchmsg,
usdatalen)
unsigned char
*puchmsg /*
要进行
crc
< br>校验的消息
*/
unsigned short usdatalen /*
消息中字节数
*/
{
unsigned char
uchcrchi = 0xff /*
高
crc
字节初始化
*/
unsigned char uchcrclo = 0xff /*
低
crc
字节初始化
*/
unsigned uindex /*
crc
循环中的索引
*/
while (usdatalen--) /*
传输消息缓冲区
*/
{
uindex =
uchcrchi ^ *puchmsgg++ /*
计算
crc */
uchcrchi = uchcrclo ^ auchcrchi[uindex}
;
uchcrclo =
auchcrclo[uindex]
}
return
(uchcrchi modbus
网络是一个工业通信系统
,
由带智能终端
的可编程序控制器和计算机通过公用线路或局部专
用线路连接而成。
其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和
p>
过程监控。下表
1
是
modbus
的功能码定义。
表
1
modbus
功能码
01 read
coil status
02 read input
status
03 read holding
register
04 read input
register
05 write single
coil
06 write single
register
15 write multiple
coil
16 write multiple
register
modbus
网络
只是一个主机
,
所有通信都由他发出。网络可支持
247
个之多的远程从属控制器
,
< br>但实际所支持的从机数要由所用通信设备
决定。采用这个系统
,
各
pc
可以和中心主机交换信息
而不影响各
pc
执行本身的控制任务。
(
1
)
mod
bus
的传输方式
在
modbus
系统中有
2
种传
输模式可选择。这
2
种传输模式与从机
pc
通信的能力是同等的。选择时应视所用
modbus
主机而定
,
每个
mo
dbus
系统只能使用一种模式
,
不允
许
2
种模式混用。一种模式是
asci
i
(美国信息交换码)
,
另一种模式是
rtu
(远程终端设备)这两
种模式的
定义见表
3
表
3 ascii
和
< br>rtu
传输模式的特性
asc
ii
可打印字符便于故障检测
,
而且对
于用高级语言(如
fortan
)编
程
的主计算机及主
pc
很适宜。
rtu<
/p>
则适用于机器语言编程的计算机
和
pc<
/p>
主机。
用
rt
u
模式传输的数据是
8
位二进制字符。
如欲转换为
ascii
模式
,
则
每个
rtu
字符首先
应分为高位和低位两部分
,
这两部分各含
4
位
,
然后
转换成十六进制等量值。用以构成报文的
ascii
字符都是十
六进制字
符。
ascii
模式使用的字
符虽是
rtu
模式的两倍
,
但
ascii
数据的译玛
和处理更为容易一些
,
此外
,
用
rtu
模式时报文字符必须以连续数据流
p>
的形式传送
,
用
a
scii
模式
,
字符之间可产生长达<
/p>
1s
的间隔
,
以
适应速
度较快的机器。
(
2
)
modbus
的数据
校验方式
crc-16
(循环冗余错误校验)
crc-16
错误校验程序如下:报文(此处只涉及数据位
p>
,
不指起始位、
停止位和任选的奇偶校验位
)被看作是一个连续的二进制
,
其最高有
效位(
msb
)首选发送。报文先与
x↑16
相乘(左移
16
位)
,
然后看
x↑16+x↑15+x↑2+1
p>
除
,x↑16+x↑15+x↑2+1
可以
表示为二进制数
11101
。整数商位忽略不记
,16
位余数加入该报文
(
m
sb
先发送)
,
成为
< br>2
个
crc
校验字节。余数中的
1
全部初始化
,
以
免所有的零成为一条报文被接收。经上述处理而含有
crc
字节的报
文
,
若无错误
,
到接收设备后再被同一多项式(
x↑16+x↑15+x↑2+1
)除
,
< br>会得到一个零余数(接收设备核验这个
crc
字节
,
并将其与被传送的
crc
< br>比较)。全部运算以
2
为模(无进位)。
习惯于成串发送数据的设备会首选送出字符的最右位(
lsb-
最低有效
位)。而在生成
c
rc
情况下
,
发送首位应是被除数的最
高有效位
msb
。
由于在运算中不用进
位
,
为便于操作起见
,
计算
crc
时设
msb
在最右
位。生成多项式的位序也必须反过来
,
以保持一致。多项式的
msb
略
去不记
,
因其只对商有影响而不影响余数。<
/p>
生成
crc-16
校验字节的步骤如下:
①装如一个
16
位寄存器
,
所有数位均为
1
。
②该
16
位寄存器的高位字节与开始
8
位字节进行
“
异或
”
运算。运算
结果放入这个
16
位寄存器。
③把这个
16<
/p>
寄存器向右移一位。
④若向右(标记位
)移出的数位是
1,
则生成多项式
10
01
和这个寄存器进行
“
异或
”
运算
;
若向右移出的
数
位是
0,
则返回③。
⑤重复③和④
,
直至移出<
/p>
8
位。
⑥另外
8
位与该十六位寄存器进行
“
异或
”
运算。
⑦重复③
~
⑥
,
p>
直至该报文所有字节均与
16
位寄存器进行
“
异或
”
运算
,
并移位
8
次
。
⑧这个
16
位寄存器的内容即
2
字节
crc
p>
错误校验
,
被加到报文的最高
有效位。
另外
,
在某些非
modbus
通信协议中也经常使用<
/p>
crc16
作为校验手段
,
而且产生了一些
crc16
的变种
< br>,
他们是使用
crc16
多项式
x↑16+x↑15+x↑2+1,
单首次装入的
16
位寄存器为
0000;
使用
crc16
的反序
x↑16+x↑
14+x↑1+1,
首次装入寄存器值为
0000
或
ffffh
。
lrc
(纵向冗余错误校验)
lrc
错误校验用于
ascii
模式。这个错误校验是一个
8
位二进制数
,
可
作为
2
个
ascii
十六进制字节传送。把十六进制字符转
换成二进制
,
加上无循环进位的二进制字符和二进制补码结果生
成
lrc
错误校验
(参见图)。这个<
/p>
lrc
在接收设备进行核验
,
并与被传送的
lrc
进行比
较
,
冒号(:)、回车符号(
cr<
/p>
)、换行字符(
lf
)和置入的其他任何
非
ascii
十六进制字符在运算时忽
略不计。
声明:此内容系本站根据您的指令自动搜索到的结果
,不代表本站
赞成其中所述的内容或立场!
-
-
-
-
-
-
-
-
-
上一篇:如何教好小学英语五年级Read-and-write
下一篇:导购英文常用语