基于Modbus的上位机通讯.docx
- 文档编号:7936026
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:37
- 大小:935.22KB
基于Modbus的上位机通讯.docx
《基于Modbus的上位机通讯.docx》由会员分享,可在线阅读,更多相关《基于Modbus的上位机通讯.docx(37页珍藏版)》请在冰豆网上搜索。
基于Modbus的上位机通讯
第一章绪论1
第二章基于Modbus总线控制的上位机通信的总体框架2
第三章基于Modbus总线控制的上位机通信的硬件设计3
3.1气动回路图3
3.2主控制电路图4
3.3PLC控制电路图5
3.4上位机与PLC的连接图6
3.5PLC与变频器的网络接线6
第四章基于Modbus总线控制的上位机通信的软件设计7
4.1Modbus通信7
4.1.1Modbus通信协议介绍7
4.1.2变频器的ModbusRUT通信8
4.1.2.1Modbus通信协议描述8
4.1.2.2变频器的ModbusRTU通信的实现12
4.2三菱FX系列PLC编程口通信协议17
4.2.1编程口RS-422接口的介绍17
4.2.2基于三菱FxPLC编程口的通信17
4.3上位机的VB监控系统的设计22
4.3.1VB介绍22
4.3.2制作流25
4.3.3监控系统的界面设计26
4.3.4监控系统的代码设计29
总结35
参考文献36
致谢37
第一章绪论
PLC足专为工业控制而设计的专用计算机,其体积小,具有高可靠性和很强的抗干扰能力,配置灵活和完善的功能,因此在工业控制系统中得到了广泛的使用。
随着工业自动化程度的提高,对PLC的应用提出了更高的要求:
更快的处理速度,更高的可靠性,控制与管理功能一体化,控制与管理一体化也就足将计算机信息处理技术,网络通信技术应用于PLC,使用用下位分散控制,用计算机提供图形显示界面,同时对下拉机进行监控。
所以通常采用计算机PC与PLC组成一个完整的监控系统。
随着工业自动化技术的不断发展,在工业控制中,交流电机的拖动越来越多地采用变频器完成,而变频器也不仅仅作为一个单独的执行机构,而是随着其不断的智能化,可以同主机之间通过一定的通信方式结合成一个有机的整体。
虽然变频器广泛用于各行各业,但因其显示面板简单,且在对数据的处理、计算、保存等方面存在弱点,在一定程度上影响了变频器在复杂控制系统中的应用,不过通信技术与变频器相结合可以弥补这些缺点,可以利用PLC与变频器之间的通讯功能实现远程控制,采用RS485通信接口,使用MODBUS协议实现,对交流电机的拖动进行控制,这是一种低成本的联接方案,可以极大地减少线路联接的复杂性,避免现场可能的各种电磁干扰对控制设备的影响。
同时增强了变频器对数据处理,故障报警等方面的功能。
第二章基于Modbus总线控
制的上位机通信的总体框架
计算机通过三菱Fx系列PLC的程序下载线连接至PLC,PLC上的485通信板连接到变频器的PU接头,这样,计算机与PLC,PLC与变频器就得以通信。
PLC和变频器通过输出给外部设备进而控制外部设备的运行。
如图2-1
图2-1
第三章基于Modbus总线控制
的上位机通信的硬件设计
硬件结构包括了气动回路、主控制电路、PLC控制电路、上位机与PLC的接线图。
3.1气动回路图
气动回路:
为送料缸,推料缸,龙门机械手提供动力能源。
如图3-1所示。
图3-1
3.2主控制电路图
主电路:
为整流变压模块,变频器,异步电动机,PLC等提供工作电源。
如图3.2所示。
图3-2
3.3PLC控制电路图
即PLC的IO接线,接收外部信号,并将信息经过CPU处理运算后经由输出口控制电磁换向阀,指示灯,变频器。
如图3-3所示。
图3-3
3.4上位机与PLC的连接图
计算机与PLC连接时是用计算机的9针串口,而PLC编程是8针圆头的接口,这里就需要做一个转换。
其接线图如3-4图:
图3-4
3.5PLC与变频器的网络接线
PLC与变频器的网络通信,PLC端是用485通信板,而变频器端则是PU接口,接线图3.5:
图3-5
第四章基于Modbus总线控制
的上位机通信的软件设计
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
(8bit)
H
(8bit)
L
(8bit)
H
(8bit)
L
(8bit)
L
(8bit)
H
(8bit)
正常应答(Responsemessage)
从设备地址
功能代码
读取个数*2
读取数据
CRC校验
(8bit)
H03
(8bit)
(8bit)
H
(8bit)
L
(8bit)
…
(n×16bit)
L
(8bit)
H
(8bit)
●保持寄存器的数据写入(H06或06)
查询信息(Querymessage)
从设备地址
功能代码
寄存器地址
写入数据
CRC检验
(8bit)
H03
(8bit)
H
(8bit)
L
(8bit)
H
(8bit)
L
(8bit)
L
(8bit)
H
(8bit)
正常应答(Responsemessage)
从设备地址
功能代码
寄存器地址
写入数据
CRC检验
(8bit)
H03
(8bit)
H
(8bit)
L
(8bit)
H
(8bit)
L
(8bit)
L
(8bit)
H
(8bit)
注:
由于广播通讯时即使执行了查询也不会有应答,所以在进行下一个查询时,必须在执行完前一个查询后,等待变频器进行处理所需的时间后再进行。
●地址
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
0
外部/PU切换模式
1
固定为PU运行模式
2
可以在外部、网络模式间切换运行
3
外部/PU组合运行模式1
4
外部/PU组合运行模式2
6
网络模式
7
外部运行模式(PU运行互锁)
117
PU通讯站号
1
0
广播通讯
1—247
变频器站号指定1台控制器连接多台变频器时要设定变频器的站号。
118
PU通讯速率
192
48、96、192、348
通讯速率
设定值×100为通讯速率。
例)设定为96时通讯速率为9600bps
119
PU通讯停止位长
1
0
停止位
数据长度
1Bit
8Bit
1
2Bit
10
1Bit
7Bit
11
2Bit
120
PU通讯奇偶校验
2
0
无奇偶校验
1
奇校验
2
偶校验
121
PU通讯再试次数
9999
0~10
发生数据接收错误时的再试次数容许值。
连续发生错误
次数超过容许值时,变频器将跳闸
9999
即使发生通讯错误变频器也不会跳闸
122
U通讯校验时间间隔
9999
0
可进行RS-485通讯。
但,有操作权的运行模式启动的瞬
间将发生通讯错误(E.PUE)
0.1~999.8
通讯校验(断线检测)时间的间隔
无通讯状态超过容许时间以上时,变频器将跳闸。
(根据Pr.502的设定)。
9999
不进行通讯校验(断线检测)
123
PU通讯等待时间设定
9999
0~150ms
设定向变频器发出数据后信息返回的等待时间
9999
用通讯数据进行设定
124
PU通讯有无CR/LF选择
0
0
无CR、LF
1
有CR
2
有CR、LF
340
通讯启动模式选择
0
0
取决于Pr.79的设定
1
网络运行模式
10
网络运行模式
可通过操作面板切换PU运行模式与网络运行模式
343
通讯错误计数
0
-
显示ModbusRTU通讯时的通讯错误次数(只读)
502
通讯异常时停止模式选择
0
0
发生异常时
显示
异常输出
异常解除时
自由运行停止
E.PUE
输出
停止
(E.PUE)
1
减速停止
停止后
E.PUE
停止后输出
停止
(E.PUE)
2
减速停止
停止后
E.PUE
无输出
再启动
549
协议选择
1
0
三菱变频器(计算机链接)协议
1
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写入数据:
控制代码
命令
首地址
字节数
数据符
终止符
和检验
-
CMD
GROUPADDRESS
BYTES
DATA
ETX
SUM
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)命令
表通信格式中的命令
命令
命令符号
目标设备
字元件读取
0
X,Y,M,S,T,C,D
字元件写入
1
X,Y,M,S,T,C,D
位元件置ON
7
X,Y,M,S,T,C
位元件置OFF
8
X,Y,M,S,T,C
命令是用来指定操作的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Modbus 上位 通讯