PLC的Modbus通信
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
写命令同样存在地址不同的情况。
第二,就是要读取的数据量是以字为单位而不是以字节为单位。
3.3 I/O
在这次设计中一共用到了5个输入,3个输出,具体分配如表7
表7 I/O分配表
I/O名称
作用
I/O类型
I0.0
复位按钮
输入
I0.1
发送步进电机阶段1控制命令
输入
I0.2
发送步进电机阶段2控制命令
输入
I0.3
数据量H
所读取数据的个数以两个字节表示(注:此处说的数据量以字为单位)
数据量L
CRC H
CRC校验码在数据帧中以两个字节表示,主要用于检验数据传输过程中是否出错
CRC L
例:
需要读取2号站从第4个寄存器开始的3个寄存器,MODBUS主站发送的数据帧为:
02 03 00 04 00 03 44 39
从站在接收到主站的读命令以后,会发送一个返回命令帧,返回的命令帧格式如表3。
Done:指令完成时该位置1。
Error:当指令执行出现错误时,在该寄存器处显示出错误号。
例:
1、需要读取2号站地址为0004开始的3个寄存器里面的值到VB200地址开始的寄存器里,设置如图4。
2、需要将VB100地址开始的4个寄存器里面的值写到地址为004F开始的寄存器里面,设置如图5。
图4读数据设置图6写数据设置
2:功能码相同
3:两个数据帧的地址HoldStart相同
4:两个数据帧的数据量DataNum相同
如果从站在接收到数据以后,认为接收到的主站发送过来的数据是错误的,会返回一个异常帧给主站,告诉主站,从站接收到的数据是错误的。异常帧的数据格式如表10,命令帧不再具体说明。
表10异常帧格式
设备地址
功能址H
地址L
数据量H
数据量L
CRC H
CRC L
Add0
10H
HoldStart
DataNum
CRC高位
CRC低位
返回帧说明如下表:
表9写命令从站返回数据帧说明
设备地址
被写入数据的从站地址
功能码
10H代表响应的是写多个保持寄存器
地址H
被写入数据的首地址,用两个字节表示
地址L
数量H
被写入数据的个数(注:以字为单位)
表3读命令从站返回命令帧格式
设备地址
功能码
数据量
数据1
数据N
CRC H
CRC L
Add0
3H
返回数据的字节数N
Data(1-N)
CRC高位
CRC低位
数据帧说明如下表:
表4读命令从站返回命令帧说明
设备地址
返回数据的从站地址
功能码
03H代表该数据帧是应答读取多个保持寄存器
数据量
返回数据的字节个数(注:以字节为单位)
PLC与串口的MODBUS通信
1
1
程序开始,赋值VB10=1,等待执行步进电机阶段1。
2
VB10=1,等待执行步进电机阶段1;VB10=2,等待执行步进电机阶段2;VB10=3,等待执行步进电机阶段3。
2
当(VB10=1且I0.1)或者(VB10=2且I0.2)或者(VB10=3且I0.3),主站首先向从站发送控制命令帧,从站收到以后,返回给主站一应答帧表明数据已经收到。主站在接收到该应答帧后开始计时,10s后读从站执行状态信息,判断从站该阶段的动作是否完成,如果完成了进入下一阶段的等待,如果未完成,5s后再次读取从站执行状态信息判断阶段动作是否完成。
在这里需要注意的有两点:
第一,对于要写入或者是要读取的寄存器地址,如果需要读0004开始的寄存器,地址要设置为40005而不是40004,同样如果需要写004F地址应该设置为40080而不是40079,这是通过观察其发送出的数据帧发现的,如果读寄存器时地址设置为40004,发送出的命令帧是:
02 03 00 03 0003 F5 F8
图8初始化流程图
3.4.3
步进电机阶段控制包括3个子程序,三个子程序的动作流程结构一样,当进入相应步进电机阶段子程序后执行:
步骤1:判断是否满足发送相应的步进电机阶段控制命令,如果不满足继续等待;如果满足,进入下一步。
步骤2:将上一步进电机阶段控制所用到的寄存器清零。
步骤3:将存放3个步进电机阶段状态信息返回值的寄存器(VB200,VB210,VB220)清零,进入下一步。
表6写命令主站发送数据帧格式
设备地址
功能码
地址H
地址L
数量H
数量L
字节数
具体数据
CRC H
CRC L
Add0
10H
HoldStart
DataNum
byteN
1-byteN
CRC高位
CRC低位
数据帧说明如下表:
表7写命令主站发送数据帧说明
设备地址
要写入数据的从站地址
功能码
10H代表写多个保持寄存器
地址H
要写入数据的首地址,用两个字节表示
地址L
数量H
要写入数据的个数(注:以字为单位)
数量L
字节数
要写入数据的个数(注:以字节为单位)
具体数据
CRC H
CRC校验码在数据帧中以两个字节表示,主要用于检验数据传输过程中是否出错
CRC L
例:
需要向2号从站第80个寄存器开始的4个寄存器里面依次写入:
11H,22H,33H,44H,55H,66H,77H,88H
图3 BUS_MSG指令
First:应当通过一个边沿检测元素打开,这将导致请求被传送一次。
Slave:Modbus从站的地址。
RW:指定指令的类型是读指令还是写指令,0表示指令为读;1表示指令为写。
Addr:读取Modbus从站的起始地址。
Count:指定此次读写数据的个数。
DataPtr:要写入数据的首地址或者是读取上来数据存放的首地址。
3
步进电机阶段动作能循环执行。
4
紧急情况下(I0.5=1),可以通过主站向从站写入命令使从站程序初始化。
5
当主站读取到的状态信息出错时,可以通过I/O输出指示出来(Q0.1指示步进电机阶段1读取状态信息出错;Q0.2指示步进电机阶段2读取状态信息出错;Q0.3指示步进电机阶段3读取状态信息出错),在错误解除以后,可以通过I/O输入(I0.0)将错误指示消除,并使程序复位。
2
MODBUS协议是一种主从协议,只允许一个主设备,设计中以PLC作为主站MSP430开发板作为从站。如图1示。
图1 PLC与MSP430连接图
为方便起见,首先以PC机作为MODBUS从站,在PC机上利用串口调试助手来接收和发送数据,PLC通过PPI电缆连接到串口,采用PROT0通讯口作为MODBUS通讯口。
数量L
CRC H
CRC校验码在数据帧中以两个字节表示,主要用于检验数据返回过程中是否出错
CRC L
例:
2号从站在接收到主站的写命令以后,判断接收到的信息是正确的,返回一个应答帧:
02 10 00 50 0004 C1 E8
对于PLC写保持寄存器,发送的命令帧与应答帧之间应该有如下关系:
1:设备地址相同
3
3.1 MODBUS
MODBUS广泛应用于工业通讯领域,它规定了通信双方的通信格式,只要双方都使用该规定就可以解析出正确的通信容。
在此,首先介绍一下MODBUS通信的数据帧格式,以3号功能码以及16号功能码为例,3号功能码是读保持寄存器的值,16号功能码是写保持寄存器的值。
1、读取保持寄存器
当MODBUS主站需要读取指定地址处数据时,首先向从站发送一个读命令帧,所发送命令帧格式如表1。
发送步进电机阶段3控制命令
输入
I0.5
急停
输入
Q0.1
步进电机阶段1错误
输出
Q0.2
步进电机阶段2错误
输出
Q0.3
步进电机阶段3错误
输出
3.4 PLC
PLC程序包含一个主程序和4个子程序构成。4个子程序分别是一个初始化子程序和3个步进电机阶段控制子程序。
3.4.1
主程序主要是根据条件调用相应的子程序,此外还处理一些简单的逻辑运算。主程序流程图如图7:
Timeout:设置超时时间,用于确定主站发送命令以后从站是否相应,一般设置为1000。
Done:执行该命令完成时,该位被置为1。
Error:当指令执行出现错误的时候,该寄存器显示错误类型。
3.2.2
MBUS_MSG指令用于启动对Modbus从站的请求并处理应答。当EN输入和"首次"输入打开时,BUS_MSG指令启动对Modbus从站的请求。发送请求、等待应答、并处理应答通常需要多次扫描。EN输入必须打开以启用请求的发送,并应该保持打开直到"完成"位被置位,BUS_MSG指令如图3示。
3.2.1
用于S7-200端口0的MBUS_CTRL指令可初始化、监视或禁用Modbus通讯。在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令。指令完成后立即设定"完成"位,才能继续执行下一条指令。在每次扫描且EN输入打开时执行该指令。MBUS_CTRL指令必须在每次扫描时(包括首次扫描)被调用,以允许监视随MBUS_MSG指令启动的任何突出消息的进程。除非每次调用MBUS_CTRL,否则Modbus主设备协议将不能正确运行,MBUS_CTRL指令如图2。
对于发送的命令帧与应答帧之间有如下关系:
1:两个数据帧的设备地址相同。
2:两个数据帧的功能码相同。
3:返回的数据量N=2ⅹDataNum
如果从站在接收到数据以后,认为接收到的主站发送过来的数据是错误的,会返回一个异常帧给主站,告诉主站,从站接收到的数据是错误的。异常帧的数据格式如表5,数据帧不再具体说明。
数据
所返回的数据(数据个数与数据量相同)
CRC H
CRC校验码在数据帧中以两个字节表示,主要用于检验应答帧在传输过程中是否出错
CRC L
例:
对于主站的读命令帧,2号站如果第4个寄存器开始的3个寄存器里面的值分别为:
31,32H,33H,34H,35H,36H
则应答帧应该是:
02 03 06 31 32 33 34 35 36 D1 AC
3.4.2
初始化子程序是在上电或者是满足复位条件时调用的,在该子程序里面完成了4个动作:
第一,将写数据缓冲区VB100到VB107全部清零;
第二,将存放3个阶段状态信息返回值的寄存器VB200,VB210,VB220清零;
第三,将3个阶段子程序中所用到的控制寄存器VD0,VD4,VW8清零;
第四,将VB10里面的值赋值为1,允许步进电机阶段1动作。初始化流程如图8示。
表5异常帧格式
设备地址
功能码
错误信息
CRC H
CRC L
Add0
83H
一个字节的错误信息
CRC高位
CRC低位
例:
2号站在接收到主站发送的命令以后,判断得出该命令是错误的,发送回一个异常帧:
02 83 0170 F0
错误信息可以根据不同的错误类型而不同。
2、写保持寄存器
当MODBUS主站需要向从站指定地址写入数据时,会发送一个数据帧,数据帧格式如表6。
CRC H
CRC L
Addr0
90H
一个字节的错误信息
CRC高位
CRC低位
例:
2号从站在接到到命令以后,判断接收到的信息是一个错误信息,返回一个异常帧:
02 90 01 7D C0
错误信息可以根据不同的错误类型而不同。
3.2 PLC
对于S7-200 PLC,开发了MODBUS库函数,可以直接使用它所带的MODBUS库函数来实现PLC与其他设备之间的MODBUS通信。选用PROT0作为MODBUS通信,主要用到MODBUS库函数中的MBUS_CTRL和MBUS_MSG。
图7主程序流程图
如图7示,首先判断是否调用初始化子程序,然后对MODBUS主设备进行初始化,接着根据VB10值的不同分别调用相应的步进电机阶段动作子程序,扫描完相应子程序以后还要判断急停按钮是否有效,如果无效,自此一个扫描周期结束,进入下一个扫描周期;如果有效,首先将VB10清零,然后向从站的命令寄存器写入代表急停的命令,到此一个扫描周期结束。
表1读命令主站发送命令帧格式
设备地址
功能码
地址H
地址L
数据量H
数据量L
CRC H
CRC L
Add0
3H
HoldStart
DataNum
CRC高位
CRC低位
数据帧说明如下表:
表2读命令主站发送命令帧说明
设备地址
要读数据的从站地址
功能码
03H代表读取多个保持寄存器
地址H
所读取数据的地址以两个字节表示
地址L
则MODBUS主站发送的数据帧为:
02 10 00 50 00 04 08 11 22 33 44 55 66 77 88 D4 F0
当从站接收到主站的写命令帧以后,判断接收到的信息是正确的,会返回一个命令帧告诉主站所发生的数据从站已经正确接收到了,返回数据帧格式如表8。
表8写命令从站返回数据帧格式
图2 MBUS_CTRL指令
Mode:输入数值选择通讯协议。输入值1为Modbus协议;输入值0为PPI协议。在本次设计中输入1。
Baud:设置波特率,可以设置的波特率有1200、2400、4800、9600、19200、38400、57600和115200,在本次设计中,波特率选择为9600。
Parity:设置校验方式。0 -无奇偶校验;1 -奇校验;2 -偶校验。在本次设计中采用无奇偶校验。
第二,就是要读取的数据量是以字为单位而不是以字节为单位。
3.3 I/O
在这次设计中一共用到了5个输入,3个输出,具体分配如表7
表7 I/O分配表
I/O名称
作用
I/O类型
I0.0
复位按钮
输入
I0.1
发送步进电机阶段1控制命令
输入
I0.2
发送步进电机阶段2控制命令
输入
I0.3
数据量H
所读取数据的个数以两个字节表示(注:此处说的数据量以字为单位)
数据量L
CRC H
CRC校验码在数据帧中以两个字节表示,主要用于检验数据传输过程中是否出错
CRC L
例:
需要读取2号站从第4个寄存器开始的3个寄存器,MODBUS主站发送的数据帧为:
02 03 00 04 00 03 44 39
从站在接收到主站的读命令以后,会发送一个返回命令帧,返回的命令帧格式如表3。
Done:指令完成时该位置1。
Error:当指令执行出现错误时,在该寄存器处显示出错误号。
例:
1、需要读取2号站地址为0004开始的3个寄存器里面的值到VB200地址开始的寄存器里,设置如图4。
2、需要将VB100地址开始的4个寄存器里面的值写到地址为004F开始的寄存器里面,设置如图5。
图4读数据设置图6写数据设置
2:功能码相同
3:两个数据帧的地址HoldStart相同
4:两个数据帧的数据量DataNum相同
如果从站在接收到数据以后,认为接收到的主站发送过来的数据是错误的,会返回一个异常帧给主站,告诉主站,从站接收到的数据是错误的。异常帧的数据格式如表10,命令帧不再具体说明。
表10异常帧格式
设备地址
功能址H
地址L
数据量H
数据量L
CRC H
CRC L
Add0
10H
HoldStart
DataNum
CRC高位
CRC低位
返回帧说明如下表:
表9写命令从站返回数据帧说明
设备地址
被写入数据的从站地址
功能码
10H代表响应的是写多个保持寄存器
地址H
被写入数据的首地址,用两个字节表示
地址L
数量H
被写入数据的个数(注:以字为单位)
表3读命令从站返回命令帧格式
设备地址
功能码
数据量
数据1
数据N
CRC H
CRC L
Add0
3H
返回数据的字节数N
Data(1-N)
CRC高位
CRC低位
数据帧说明如下表:
表4读命令从站返回命令帧说明
设备地址
返回数据的从站地址
功能码
03H代表该数据帧是应答读取多个保持寄存器
数据量
返回数据的字节个数(注:以字节为单位)
PLC与串口的MODBUS通信
1
1
程序开始,赋值VB10=1,等待执行步进电机阶段1。
2
VB10=1,等待执行步进电机阶段1;VB10=2,等待执行步进电机阶段2;VB10=3,等待执行步进电机阶段3。
2
当(VB10=1且I0.1)或者(VB10=2且I0.2)或者(VB10=3且I0.3),主站首先向从站发送控制命令帧,从站收到以后,返回给主站一应答帧表明数据已经收到。主站在接收到该应答帧后开始计时,10s后读从站执行状态信息,判断从站该阶段的动作是否完成,如果完成了进入下一阶段的等待,如果未完成,5s后再次读取从站执行状态信息判断阶段动作是否完成。
在这里需要注意的有两点:
第一,对于要写入或者是要读取的寄存器地址,如果需要读0004开始的寄存器,地址要设置为40005而不是40004,同样如果需要写004F地址应该设置为40080而不是40079,这是通过观察其发送出的数据帧发现的,如果读寄存器时地址设置为40004,发送出的命令帧是:
02 03 00 03 0003 F5 F8
图8初始化流程图
3.4.3
步进电机阶段控制包括3个子程序,三个子程序的动作流程结构一样,当进入相应步进电机阶段子程序后执行:
步骤1:判断是否满足发送相应的步进电机阶段控制命令,如果不满足继续等待;如果满足,进入下一步。
步骤2:将上一步进电机阶段控制所用到的寄存器清零。
步骤3:将存放3个步进电机阶段状态信息返回值的寄存器(VB200,VB210,VB220)清零,进入下一步。
表6写命令主站发送数据帧格式
设备地址
功能码
地址H
地址L
数量H
数量L
字节数
具体数据
CRC H
CRC L
Add0
10H
HoldStart
DataNum
byteN
1-byteN
CRC高位
CRC低位
数据帧说明如下表:
表7写命令主站发送数据帧说明
设备地址
要写入数据的从站地址
功能码
10H代表写多个保持寄存器
地址H
要写入数据的首地址,用两个字节表示
地址L
数量H
要写入数据的个数(注:以字为单位)
数量L
字节数
要写入数据的个数(注:以字节为单位)
具体数据
CRC H
CRC校验码在数据帧中以两个字节表示,主要用于检验数据传输过程中是否出错
CRC L
例:
需要向2号从站第80个寄存器开始的4个寄存器里面依次写入:
11H,22H,33H,44H,55H,66H,77H,88H
图3 BUS_MSG指令
First:应当通过一个边沿检测元素打开,这将导致请求被传送一次。
Slave:Modbus从站的地址。
RW:指定指令的类型是读指令还是写指令,0表示指令为读;1表示指令为写。
Addr:读取Modbus从站的起始地址。
Count:指定此次读写数据的个数。
DataPtr:要写入数据的首地址或者是读取上来数据存放的首地址。
3
步进电机阶段动作能循环执行。
4
紧急情况下(I0.5=1),可以通过主站向从站写入命令使从站程序初始化。
5
当主站读取到的状态信息出错时,可以通过I/O输出指示出来(Q0.1指示步进电机阶段1读取状态信息出错;Q0.2指示步进电机阶段2读取状态信息出错;Q0.3指示步进电机阶段3读取状态信息出错),在错误解除以后,可以通过I/O输入(I0.0)将错误指示消除,并使程序复位。
2
MODBUS协议是一种主从协议,只允许一个主设备,设计中以PLC作为主站MSP430开发板作为从站。如图1示。
图1 PLC与MSP430连接图
为方便起见,首先以PC机作为MODBUS从站,在PC机上利用串口调试助手来接收和发送数据,PLC通过PPI电缆连接到串口,采用PROT0通讯口作为MODBUS通讯口。
数量L
CRC H
CRC校验码在数据帧中以两个字节表示,主要用于检验数据返回过程中是否出错
CRC L
例:
2号从站在接收到主站的写命令以后,判断接收到的信息是正确的,返回一个应答帧:
02 10 00 50 0004 C1 E8
对于PLC写保持寄存器,发送的命令帧与应答帧之间应该有如下关系:
1:设备地址相同
3
3.1 MODBUS
MODBUS广泛应用于工业通讯领域,它规定了通信双方的通信格式,只要双方都使用该规定就可以解析出正确的通信容。
在此,首先介绍一下MODBUS通信的数据帧格式,以3号功能码以及16号功能码为例,3号功能码是读保持寄存器的值,16号功能码是写保持寄存器的值。
1、读取保持寄存器
当MODBUS主站需要读取指定地址处数据时,首先向从站发送一个读命令帧,所发送命令帧格式如表1。
发送步进电机阶段3控制命令
输入
I0.5
急停
输入
Q0.1
步进电机阶段1错误
输出
Q0.2
步进电机阶段2错误
输出
Q0.3
步进电机阶段3错误
输出
3.4 PLC
PLC程序包含一个主程序和4个子程序构成。4个子程序分别是一个初始化子程序和3个步进电机阶段控制子程序。
3.4.1
主程序主要是根据条件调用相应的子程序,此外还处理一些简单的逻辑运算。主程序流程图如图7:
Timeout:设置超时时间,用于确定主站发送命令以后从站是否相应,一般设置为1000。
Done:执行该命令完成时,该位被置为1。
Error:当指令执行出现错误的时候,该寄存器显示错误类型。
3.2.2
MBUS_MSG指令用于启动对Modbus从站的请求并处理应答。当EN输入和"首次"输入打开时,BUS_MSG指令启动对Modbus从站的请求。发送请求、等待应答、并处理应答通常需要多次扫描。EN输入必须打开以启用请求的发送,并应该保持打开直到"完成"位被置位,BUS_MSG指令如图3示。
3.2.1
用于S7-200端口0的MBUS_CTRL指令可初始化、监视或禁用Modbus通讯。在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令。指令完成后立即设定"完成"位,才能继续执行下一条指令。在每次扫描且EN输入打开时执行该指令。MBUS_CTRL指令必须在每次扫描时(包括首次扫描)被调用,以允许监视随MBUS_MSG指令启动的任何突出消息的进程。除非每次调用MBUS_CTRL,否则Modbus主设备协议将不能正确运行,MBUS_CTRL指令如图2。
对于发送的命令帧与应答帧之间有如下关系:
1:两个数据帧的设备地址相同。
2:两个数据帧的功能码相同。
3:返回的数据量N=2ⅹDataNum
如果从站在接收到数据以后,认为接收到的主站发送过来的数据是错误的,会返回一个异常帧给主站,告诉主站,从站接收到的数据是错误的。异常帧的数据格式如表5,数据帧不再具体说明。
数据
所返回的数据(数据个数与数据量相同)
CRC H
CRC校验码在数据帧中以两个字节表示,主要用于检验应答帧在传输过程中是否出错
CRC L
例:
对于主站的读命令帧,2号站如果第4个寄存器开始的3个寄存器里面的值分别为:
31,32H,33H,34H,35H,36H
则应答帧应该是:
02 03 06 31 32 33 34 35 36 D1 AC
3.4.2
初始化子程序是在上电或者是满足复位条件时调用的,在该子程序里面完成了4个动作:
第一,将写数据缓冲区VB100到VB107全部清零;
第二,将存放3个阶段状态信息返回值的寄存器VB200,VB210,VB220清零;
第三,将3个阶段子程序中所用到的控制寄存器VD0,VD4,VW8清零;
第四,将VB10里面的值赋值为1,允许步进电机阶段1动作。初始化流程如图8示。
表5异常帧格式
设备地址
功能码
错误信息
CRC H
CRC L
Add0
83H
一个字节的错误信息
CRC高位
CRC低位
例:
2号站在接收到主站发送的命令以后,判断得出该命令是错误的,发送回一个异常帧:
02 83 0170 F0
错误信息可以根据不同的错误类型而不同。
2、写保持寄存器
当MODBUS主站需要向从站指定地址写入数据时,会发送一个数据帧,数据帧格式如表6。
CRC H
CRC L
Addr0
90H
一个字节的错误信息
CRC高位
CRC低位
例:
2号从站在接到到命令以后,判断接收到的信息是一个错误信息,返回一个异常帧:
02 90 01 7D C0
错误信息可以根据不同的错误类型而不同。
3.2 PLC
对于S7-200 PLC,开发了MODBUS库函数,可以直接使用它所带的MODBUS库函数来实现PLC与其他设备之间的MODBUS通信。选用PROT0作为MODBUS通信,主要用到MODBUS库函数中的MBUS_CTRL和MBUS_MSG。
图7主程序流程图
如图7示,首先判断是否调用初始化子程序,然后对MODBUS主设备进行初始化,接着根据VB10值的不同分别调用相应的步进电机阶段动作子程序,扫描完相应子程序以后还要判断急停按钮是否有效,如果无效,自此一个扫描周期结束,进入下一个扫描周期;如果有效,首先将VB10清零,然后向从站的命令寄存器写入代表急停的命令,到此一个扫描周期结束。
表1读命令主站发送命令帧格式
设备地址
功能码
地址H
地址L
数据量H
数据量L
CRC H
CRC L
Add0
3H
HoldStart
DataNum
CRC高位
CRC低位
数据帧说明如下表:
表2读命令主站发送命令帧说明
设备地址
要读数据的从站地址
功能码
03H代表读取多个保持寄存器
地址H
所读取数据的地址以两个字节表示
地址L
则MODBUS主站发送的数据帧为:
02 10 00 50 00 04 08 11 22 33 44 55 66 77 88 D4 F0
当从站接收到主站的写命令帧以后,判断接收到的信息是正确的,会返回一个命令帧告诉主站所发生的数据从站已经正确接收到了,返回数据帧格式如表8。
表8写命令从站返回数据帧格式
图2 MBUS_CTRL指令
Mode:输入数值选择通讯协议。输入值1为Modbus协议;输入值0为PPI协议。在本次设计中输入1。
Baud:设置波特率,可以设置的波特率有1200、2400、4800、9600、19200、38400、57600和115200,在本次设计中,波特率选择为9600。
Parity:设置校验方式。0 -无奇偶校验;1 -奇校验;2 -偶校验。在本次设计中采用无奇偶校验。