毕业设计论文基于Modbus的上位机通讯Word文件下载.docx
- 文档编号:18220968
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:36
- 大小:811.86KB
毕业设计论文基于Modbus的上位机通讯Word文件下载.docx
《毕业设计论文基于Modbus的上位机通讯Word文件下载.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于Modbus的上位机通讯Word文件下载.docx(36页珍藏版)》请在冰豆网上搜索。
4.1Modbus通信
Modbus应用层协议由美国Modicon公司(现为施耐德电气旗下品牌)于1979年开发的,用于实现其PLC产品与上位机的通信。
由于其简单易用,得到了广大工业自动化仪器仪表企业的采纳与支持,实际上已成为了业界标准,我国标准化委员会已将Modbus协议作为我国工业自动化的行业标准,分别制定了GB/Z19582.1-2004(Modbus应用层协议),GB/Z19582.2-2004(串行链路上的Modbus)和GB/Z19582.3-2004(Modbus-TCP)三个标准。
Modbus应用层协议位于OSI模型中的第七层,将它嵌入到不同的低层协议中形成了三种具体的通信方式:
Modbus串行链路、Modbus-Plus和Modbus-TCP,三种通信网络上的设备可以通过网关来达到数据交换的目的。
这些年来以太网的繁荣壮大使得将Modbus协议嵌入到TCP/IP协议中实现Modbus设备间的通信非常必要,鉴于此,1999年施奈德电气发布了Modbus-TCP协议,使得以太网上的Modbus设备可以通过502端口进行通信。
4.1.1Modbus通信协议介绍
Modbus是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。
Modbus协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通讯。
它己经成为一通用工业标准。
Modbus协议是一种在工业领域被广为应用的真正开放、标准的网络通讯协议,被大部分SCADA(SupervisorControlAndDataAcquisition数据采集与监视控制系统)HMI(HumanMachineInterface人机界面)软件支持,所以它实际上己经成为一种通用的工业标准。
有了它不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通讯的。
它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
当在一Modbus网络上通讯时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包的结构。
这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
Modbus有两种传输模式,一种是ASCII模式,另一种是RTU模式。
当控制器设为在Modbus网络上以ASCI工(美国标准信息交换代码)模式通讯,在消息中的每个s字节都作为两个ASCI工字符发送。
这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。
本文以RUT模式为例说明。
4.1.2变频器的ModbusRUT通信
这里所使用的变频器是三菱公司的FR--D700系列,
4.1.2.1Modbus通信协议描述
1、Modbus通信协议
Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。
特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。
图
图4-1
启动Modbus事务处理的客户机创建Modbus应用单元。
功能码向服务指示将执行哪各操作。
Modbus协议建立了客户机启动的请求格式。
用一个字节编码Modbus数据单元功能码域。
有效的码字范围是十进制1-255(128—255为异常响应保留)。
当从客户机向服务器设备发送报文时,功能码域通知服务器执行哪种操作。
向一些功能码加入子功能码来定义多项操作。
从客户机向服务器设备发送的报文数据域包括附加信息,服务器使用这个信息执行功能码定义的操作。
这个域还包括离散项目和寄存器地址、处理项目数量以及域中的实际数据字节数。
在某种请求中,数据域可是不存在的(0长度),在此情况下服务器不需要任何附加信息。
功能码仅说明操作。
如果在一个正确接收的ModbusADU中,不出现与请求Modbus功能有关的差错,那么服务器至客户机的响应数据域包括请求数据。
如果出现与请求Modbus功能有关的差错,那么域包括一个异常码。
服务器应用能够使用这个域确定下一个执行的操作。
例如。
客户机能够读一组离散量输出或输入的开/关状态,或者客户机能够读/写一组寄存器的数据内容。
当服务器对客户响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应)。
对于一个正常响应来说,服务器仅原始功能码响应。
图4-2Modbus事务处理(无差错)
对于异常响应,服务器返回一个与原始功能码等同的码,设置该原始功能码的最高有效位为逻辑1.
图4-3Modbus事务处理(异常响应)
2、Modbus主站/从站协议原理
Modbus串行链路协议是一个主—从协议。
在同一时刻,只有一个主节点连接于总线,一个或多个子节点(最大编号为247)连接于同一个串行总线。
Modbus通信总是由主节点发起。
子节点在没有收到来主节点的请求时,从不会发送数据,子节点之间从不会互相通信。
主节点在同一时刻只会发起一个Modbus事务处理。
主节点以两但种模式对子节点发出Modbus请求:
在单播模式,主节点以特定地址访问某子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个‘应答’)。
在这个模式,一个Modbus事务处理包含2个报文:
一个来自主节点的请求,一个来自子节点的应答。
每个子节点必须有唯一的地址(1到247),这样才能区别于其它节点被猪瘟独立的寻址。
在广播模式,主节点向所有子节点以送请求。
对于主节点广播的请求没有应答返回,广播请求一般用于写命令。
所有设备必须接受广播模式的写功能。
地址0是专门用于表示广播数据的。
本文以单播模式为例。
图4-4单播模式
图4-5广播模式
3、CRC16校验
在RTU模式包含一个对全部报文内容执行的,基于循环冗余校验(CRC-CyclicalRedundancyChecking)算法的错误检验域。
CRC域检验整个报文的内容。
不管报文有无奇偶校验,均执行此检验。
CRC包含由两个8位字节组成的一个16位值。
CRC域作为报文的最后的域附加在报文之后。
计算后,首先附加低字节,然后是高字节。
CRC高字节为报文发送的最后一个子节。
附加在报文后面的CRC的值由发送设备计算。
接收设备在接收报文时重新计算CRC的值,并将计算结果于实际接收到的CRC值相比较。
如果两个值不相等,则为错误。
CRC的计算,开始对一个16位寄存器预装全1。
然后将报文中的连续的8位子节对其进行后续的计算。
只有字符中的8个数据位参与生成CRC的运算,起始位,停止位和校验位不参与CRC计算。
CRC的生成过程中,每个8–位字符与寄存器中的值异或。
然后结果向最低有效位(LSB)方向
移动(Shift)1位,而最高有效位(MSB)位置充零。
然后提取并检查LSB:
如果LSB为1,则寄存器中的值与一个固定的预置值异或;
如果LSB为0,则不进行异或操作。
这个过程将重复直到执行完8次移位。
完成最后一次(第8次)移位及相关操作后,下一个8位字节与寄存器的当前值异或,然后又同上面描述过的一样重复8次。
当所有报文中子节都运算之后得到的寄存器忠的最终值,就是CRC。
当CRC附加在报文之后时,首先附加低字节,然后是高字节。
4.1.2.2变频器的ModbusRTU通信的实现
1关于协议
●通信方法
基本的通讯方法是主设备发送Querymessage(查询),然后从设备回复Responsemessage(应答)。
正常通讯时会原样复制DeviceAddress和FunctionCode,异常通讯(功能代码、数据代码错误)时将Function Code的第7位(=80h)设置为ON,DataBytes设置为错误代码。
图4-6
信息帧由上表所示的4个信息区域构成。
通过在信息数据的前后附加3.5个字符的无数据时间(T1:
起始·
完成),从设备会识别为1个信息。
2信息格式类型
●保持寄存器的数据读取(H03或03)
查询信息(Querymessage)
从设备地址
功能代码
起始地址
读取个数
CRC检验
(8bit)
H03
H
L
正常应答(Responsemessage)
从设备地址
功能代码
读取个数*2
读取数据
CRC校验
H03
H
L
…
(n×
16bit)
●保持寄存器的数据写入(H06或06)
查询信息(Querymessage)
寄存器地址
写入数据
注:
由于广播通讯时即使执行了查询也不会有应答,所以在进行下一个查询时,必须在执行完前一个查询后,等待变频器进行处理所需的时间后再进行。
●地址
H03功能代码
寄存器
内容
单位
读取/写入
40201
输出频率/转速
0.01Hz/1
读取
40202
输出电流
0.01A
40203
输出电压
0.1V
H06功能代码
40205
频率设定值/转速设定值
0.01Hz/
0.001
写入
40015
运行频率(EEPROM值)
H00停止
H02正转
H04反转
请求PDU说明了起始寄存器地址和寄存器数量。
从零开始寻址寄存器。
因此,寻址寄存器1-16为0-15。
变频器参数设置
参数编号
名称
设定值
设定范围
79
运行模式选择
6
外部/PU切换模式
1
固定为PU运行模式
2
可以在外部、网络模式间切换运行
3
外部/PU组合运行模式1
4
外部/PU组合运行模式2
网络模式
7
外部运行模式(PU运行互锁)
117
PU通讯站号
广播通讯
1—247
变频器站号指定1台控制器连接多台变频器时要设定变频器的站号。
118
PU通讯速率
192
48、96、192、348
通讯速率
设定值×
100为通讯速率。
例)设定为96时通讯速率为9600bps
119
PU通讯停止位长
停止位
数据长度
1Bit
8Bit
2Bit
10
7Bit
11
120
PU通讯奇偶校验
无奇偶校验
奇校验
偶校验
121
PU通讯再试次数
9999
0~10
发生数据接收错误时的再试次数容许值。
连续发生错误
次数超过容许值时,变频器将跳闸
即使发生通讯错误变频器也不会跳闸
122
U通讯校验时间间隔
可进行RS-485通讯。
但,有操作权的运行模式启动的瞬
间将发生通讯错误(E.PUE)
0.1~999.8
通讯校验(断线检测)时间的间隔
无通讯状态超过容许时间以上时,变频器将跳闸。
(根据Pr.502的设定)。
不进行通讯校验(断线检测)
123
PU通讯等待时间设定
0~150ms
设定向变频器发出数据后信息返回的等待时间
用通讯数据进行设定
124
PU通讯有无CR/LF选择
无CR、LF
有CR
有CR、LF
340
通讯启动模式选择
取决于Pr.79的设定
网络运行模式
可通过操作面板切换PU运行模式与网络运行模式
343
通讯错误计数
-
显示ModbusRTU通讯时的通讯错误次数(只读)
502
通讯异常时停止模式选择
发生异常时
显示
异常输出
异常解除时
自由运行停止
E.PUE
输出
停止
(E.PUE)
减速停止
停止后
停止后输出
无输出
再启动
549
协议选择
三菱变频器(计算机链接)协议
Modbus-RTU协议
此时PLC的通信格式D8120=H0C97
【9】:
(1001)通信速率=19200pbs,
【7】:
(0111)停止位1位;
偶校验,数据位8位)
3、PLC程序编写
在PLC程序里,顺序控制程序并不难编写,这里最难的是CRC16校验码的计算,CRC16校验码的计算方法比较麻烦,需要对每个位进行异或然后判断,而且每个字都要如此计算,而不像和校验那样有专门的计算指令。
对此,我的编写思路是采用子程序的调用,在需要用到CRC16校验代码的时候就调用CRC16计算的子程序,对于CRC16的PLC编程如下:
4.2三菱FX系列PLC编程口通信协议
4.2.1编程口RS-422接口的介绍
RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。
实际上还有一根信号地线,共5根线。
由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。
即一个主设备(Master),其余为从设备(Salve),从设备之间不能通信,所以RS-422支持点对多的双向通信。
接收器输入阻抗为4k,故发端最大负载能力是10×
4k+100Ω(终接电阻)。
RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)。
RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。
其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。
只有在很短的距离下才能获得最高速率传输。
一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。
RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。
在短距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。
终接电阻接在传输电缆的最远端。
4.2.2基于三菱FxPLC编程口的通信
基于RS-422的FX系列的计算机通信用于一台计算机与一台PLC的通信,由计算机以出读写PLC中的数据命令报文,PLC收到后返回响应报文。
1、计算机与PLC之间的链接数据流
计算机与PLC之间的数据流有2种形式:
计算机从PLC中读数据;
计算机向PLC写入数据。
1)计算机读PLC的数据
计算机从PLC读数据的过程分为两步:
●计算机向PLC发送读数据命令。
●PLC接收到命令后,执行相应的操作,将计算机要读限的数据发送给计算机。
2)计算机向PLC写入数据
计算机向PLC写数据的过程分为两步:
●计算机首先向PLC发送写数据命令。
●PLC接收到写入数据命令后,执行相应的操作,执行完成后向计算机发送确认信号,表示写入数据操作已完成。
2、基于RS-422的三菱Fx通信基本格式
1)数据传输的基本格式
数据传输基本格式如图
读PLC数据:
控制代码
命令
首地址
字节数
终止符
和检验
CMD
GROUPADDRESS
BYTES
ETX
SUM
向PLC写入数据:
数据符
DATA
2)计算机与PLC数据的数据传输格式
1 当PLC读取PLC的数据且通信数据正确时,通信数据的形式如图4-7
图4-7
2 当计算机读取PLC元件数据且通信数据有错误时,其通信数据的形式如图4-8
图4-8
3 当计算机向PLC写入的元件数据且通信数据正确时,其通信数据的形式如图4-9:
图4-9
4 当计算机向PLC写入的元件数据且通信数据错误时,其通信数据的形式如图4-10:
图4-10
3控制协议各组成部分的说明
下面将按照从左到右的顺序,逐一介绍数据传输的基本格式中各部分的详细情况。
此通信的命令帧和响应帧均由ASCII码组成,使用ASCII码的优点是控制代码(包括结束字符)不会和需要的传送的数据的ASCII码混淆。
如果直接传送十六进制数据,可能会将数据误认为是报文结束字符。
一个字节的十六进制数对应两个ASCII码(即两个字节)。
因此ASCII码的传送效率较低。
1)控制代码
即ENQ、STX、NAK等,这些控制码用于通信的控制且在计算机的屏幕中属于不可见的字符,各个控制码的意义如下所示。
STX(StartofText,数据开始传送)
当PLC接收到要求读取元件的通信时,PLC会先判定接收的数据塄是否正确,若正确,即传送计算机所要求的元件数据,并于传送数据的最前端加上STX这个控制码。
STX是以十进制的2号ASCII码来表示的
ETX(EndofText,数据传送结束)
当STX表示数据开始时,PLC也会以ETX来表示数据传送的结束。
ETX是以3号ASCII码的字符来表示的。
ACK(Acknowledge,了解)
当PLC接收到的要求写入元件通信时,PLC会先判定接收的数据协议是否正确,若正确后即变更元件的数据,并以ACK回应计算机来表示收到。
NAK(NotAcknowledge,不了解)
当PLC接收到要求写入元件的通信时,PLC会先判定接收的否正确,若不正确,会以NAK回应计算机来表示不了解此次通信;
2)命令
表通信格式中的命令
命令符号
目标设备
字元件读取
X,Y,M,S,T,C,D
字元件写入
位元件置ON
X,Y,M,S,T,C
位元件置OFF
8
命令是用来指定操作的类型,例如读、写等,用一个ASCII符号来表示。
3)首地址
422通信协议的通讯地址不像485通信协议的通讯地址那样直观,不用算,就是PLC的元件地址。
其地址为4位十六进制数表示。
位元件强制置位的地址
位元件强制的地址不象字元件D的地址那样,其寻址方式比较麻烦。
其地址如图4-11
图4-11
按照上面排列可计算以下地址:
0600~06FF
T0-T255
0800~0BFF
M0-M1023
0E00~0EFF
C0-C255
0F00-0FFFM8000-M8255
位元件状态查询的地址
位元件的状态查询不是每个元件有一个地址,而是一个元件组(8个)为一个地址。
具体地址如下图4-12:
图4-12
上表用于读取当前状态,写入时,X,Y,M,S,T,C
作为触点使用的地址:
如读M8~M23的值即K4M8
地址:
0101
数据长度02
字元件D的地址
字元件D的地址比较容易计算,即是PLC内字元件D地址(4位)乘以2后再加上1000H就是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 基于 Modbus 上位 通讯
![提示](https://static.bdocx.com/images/bang_tan.gif)