个人对MODBUS的理解.docx
- 文档编号:25224150
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:12
- 大小:207.75KB
个人对MODBUS的理解.docx
《个人对MODBUS的理解.docx》由会员分享,可在线阅读,更多相关《个人对MODBUS的理解.docx(12页珍藏版)》请在冰豆网上搜索。
个人对MODBUS的理解
实现。
虽然RTU比较简单,但是看协议资料、手册说得太专业了,起初很多内容都很难理解。
所谓的协议是什么?
就是互相之间的约定嘛,如果不让别人知道那就是暗号。
现在就来定义一个新的最简单协议。
例如,
协议:
“A”-“LED灭”
“B”报警”
“C”“LED亮”
单片机接收到“A”制一个LED灭,单片机接收到“B”制报警,单片机接收到“A”制一个LED亮。
那么当收到对应的信息就执行相应的动作,这就是协
议,很简单吧。
先来简单分析一条MODBUS-RTU报文,例如:
0106000100179804
0106000100179804
从机地址功能号数据地址数据CRC校验
这一串数据的意思是:
把数据0x0017(十进制23)写入1号从机地址0x0001数据地址。
先弄明白下面的东西。
1、报文
一个报文就是一帧数据,一个数据帧就一个报文:
指的是一串完整的指令数据,就像上面的一串数据。
2、CRC校验
意义
例如上面的9804是它前面的数据(010600010017)通过一算法(见附录2,很简单的)计算出来的结果,其实就像是计算累加和那样。
(累
加和
就是010600010017加起来的值,然后它的算法就是加法)。
作用
在数据传输过程中可能数据会发生错误,CRC检验检测接收的数据是否正确。
比如主机发出0106000100179804,那么从机接收到后要根据
010600010017再计算CRC校验值,从机判断自己计算出来的CRC校验是否与接收的CRC校验(9804主机计算的)相等,如果不相等那么说明
数据传输有错误这些数据不能要。
3、功能号
意义:
modbus定义。
见附录1。
作用:
指示具体的操作。
MODBUS-RTU
一、一个报文分析
先声明下我们的目的,我们是要两个设备通讯,用的是MODBUS协议。
上面简单介绍了:
报文”“CF校验”功'能号”。
在单片机中拿出一部分内存(RAM)进行两个设备通讯,例如:
数组后面的注释,说明
OX[20]代表是输出线圈,用功能码0x01,0x05,OxOF访问,开头地址是0(这个后续说明)
IX[20]代表是输入线圈,用功能码0x02访问,开头地址是1(这个后续说明)
另外两个一样的道理。
注意:
所谓的线圈”寄存器”就是位变量”“位变量”,不要被迷惑。
之所以称线圈”我觉得应该是对于应用的设备,MODBUS协议是专门针对485总线
设备(例PLC)开发的。
1、主机对从机写数据操作
如果单片机接收到一个报文那么就对报文进行解析执行相应的处理,如上面报文:
假如本机地址是1,那么单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:
HoldDataReg[1]=0x0017;
MODBUS主机就完成了一次对从机数据的写操作,实现了通讯。
2、主机对从机读数据操作
主机进行读HoldDataReg[1]操作,则报文是:
010300010001D5CA
从机地址功能号数据地址读取数据个数CRC校验
那么单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:
返回信息给主机,返回的信息也是有格式的:
返回内容:
0103020017F84A
从机地址功能号数据字节个数两个字节数据CRC校验
MODBUS主机就完成了一次对从机数据的读操作,实现了通讯。
MODBUS报文模型
以上了解到了MODBUS的一帧报文是如何通讯的,其实每个报文的格式都基本一样的。
PDU
通用MODBUS帧.
这里两个缩略词以前不知道,但是现在要明白指的是什么,“ADU“PDU
ADU:
应用数据单元
PDU:
协议数据单元
三、MODBUS数据模型
MODBUS以•系列典仃不同待征农格上的数据模熨为皋础。
四个丛木衣格为:
基本表格
对矗类型
访问类型
内容
XftM入
眼个比待
只读
I/O系统提供这种类巾数据
线■
眾个比待
读写
通过W用程用改变这种炎住数据
■入寄存器
16•比特字
只读
I/O系统捉供这种类劲数撫
保持寄存11
16•比转字
读写
通过应用用序改变这种类申叙《gkon9xom
■V
MODBUS访间
MODBUS服务器设的
MODBUS请求
.
四、MODBUS事务处理
下列状态图描述了在服务器侧MODBUS事务处理的一般处理过程。
五、MODBUS请求与响应
看MODBUS协议手册,中文第10页开始,英文第24页开始。
手册非常详细举例说明了MODBUS协议各个功能号的请求与响应。
modbus协议在单片机上实现过程
MODBUS任务处理函数
早/
•FunctionNarae
McdbusH&ndle
・Input
•Return
Description
McdBus处理更数
voidModbusHandle(void)
uarcciearButrer();
if(RcvBuf(Ji-LOCALADDR){//比校蛇址,是否是本机地址
UartClearBuffer():
//不是本匸地址•渣空接牧缓冲区
return:
casex:
{
ReadCoilState(*0*):
Jbreak;
case:
x2:
{
ReadCoilStateC:
・):
)break;
caseOx:
(
ReadReQiState(*H*);
)break;
casex(
ReadReqiState(*I•);
)break;
caseZz:
:
{
SetSmgleColl();
)breakr
case-x6:
(
SetSingleRegVal(*H・);
JbreAk;
cx>sex-:
{
SetMultCollO;
)break;
case:
(
SecMultRegVal(•H•);
)break;
default:
(
RcvBuf(]I-
■X;
RcvBuf(]■
••
••
switch(RcvBuf()){
UarcSend(RcvBuf,);)break;
//逮取第出线圈状态
//读取第入线圈状态
〃渎取保持密存器
//读取需入奇存劈
//设受筆个线圈
//设査臣个寄存踣
//设迓多个皱96
//衣盘多个窃存器
//返回惜浜码I不支持的功睦号)
gcom
6
7
8
9
10
11
12
X3
14
15
16
17
18
19
20
21
22
23
25
26
27
28
29
30
31
32
33
34
35
36
37
38
的操作根据功能号在各自的函数中执行,相当于解析接收到的数据。
附录1:
MODBUS-RTU功能码
最常用功能码:
下面线圈”寄存器”其实分别直的就是位变量”“位变量
01(0x01)
读线圈
02(0x02)
读离散量输入
03(0x03)
读保持寄存器
04(0x04)
读输入寄存器
05(0x05)
写单个线圈
06(0x06)
写单个寄存器
15(0x0F)
写多个线圈
16(0x10)
写多个寄存器
01ReadCoilStatus
02ReadInputStatus
03ReadHoldingRegisters
04ReadInputRegisters
05ForceSingleCoil
06PresetSingleRegister
07ReadExceptionStatus
11(OBHex)FetchCommEventCtr
12(OCHex)FetchCommEventLog
15(OFHex)ForceMultipleCoils
16(10Hex)PresetMultipleRegs
17(11Hex)ReportSlaveID
20(14Hex)ReadGeneralReference
21口5Hex)WriteGeneralReference
22(16Hex)MaskWrite4XRegister
23(17Hex)Read/Write4XRegisters
24(18Hex)ReadFIFOQueue
附录2:
CRCGeneration
Gkongcom
CRCGenerationFunction
/*messagetocalculateCRCupon/wquantityofbytesinmessage
unsignedshortCRC16(puchMsgrusDataLen)unsignedchar・puchMsg;
unsignedshortusDataLen;
unsignedcharuchCRCHi■OxFF;unsignedcharuchCRCLo■OxFF;unsigneduIndex;
/•highbyteofCRCinitialized
/*lowbyteofCRCinitialized
/・willindexintoCRClookuptable
while(usDataLen一)
uIndex・uchCRCHiA*puchMsgg**;
/•passthroughmessagebuffer
/・calculatetheCRC
uchCRCHi■uchCRCLoAauchCRCHi(ulndex);
uchCRCLo■auchCRCLo(ulndex);
./
return(uchCRCHi«8|uchCRCLo);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人 MODBUS 理解