引言
现代完整的PLC控制系统试验需要有现场信号检测、上位监控以及联网功能。西华大学的教学以三菱PLC教学为主,三菱的通用编程软件GX Developer和GX Simulator仿真程序可实现无PLC硬件情况下的PLC编程、监控、调试等工作。为了提供完整的PLC控制系统试验,需要结合工业组态软件实现上位机对PLC的监控,并全真模拟PLC的控制对象以及相关的现场设备,因此需构建具有上下位机的完整的PLC控制系统以及远程控制系统。
全虚拟系统由基于PC机的PLC编程仿真软件和工业组态软件等构成,其可将PLC教学系统延伸到任何有Pc机的地方。目前,三菱公司提供了MXComponent联机通信软件,可与虚拟PLC GX Simulator通信,但其还要求组态软件有相应的通信构件,以实现组态软件与MX Component的通信,最终实现虚拟PLC与组态软件之间的数据交互。
监视与控制通用系统(monitor and control generatedsystem,MCGS)是一套用于陕速构造和生成计算机监控系统的组态软件,在自动化领域有着广泛的应用∞j。为了解决虚拟PLC与组态软件的接口连接问题,本文提出一种以VB 6.0为开发平台设计中间通信连接构件的方法,实现了虚拟PLC与MCGS间的通信连接,也为虚拟PLC与其他组态软件的通信连接提供了一种可行的方法。
1 总体方案设计
基于三菱GX和MCGS的全虚拟PLC系统通信接口连接框图如图1所示。
由图1可以看出,虚拟PLC系统建立在基于Windows系统的PC机上,需要安装基于三菱PLC的编程软件GX Developer、GX Simulator仿真软件以及MXComponent口1。MX Component是三菱公司开发的一种联机通信软件。该软件一方面可与GX Simulator交互变量数据,另一方面提供ActiveX库,使第三方编程软件可通过调用该库对应DDL文件来编程实现彼此之间的数据通信连接。当在GX Developer中编写梯形图程序并下载到GX Simulator中模拟PLC的程序运行时,GX Simulator将自动与MX Component进行数据交互。全虚拟PLC系统实现的关键是如何解决MXComponent与组态软件的通信问题。在此采用VB 6.0设计通信构件,以实现虚拟PLC系统与MCGS组态软件的通信。
2 基于MCGS的通信构件开发
基于MCGS的通信构件是基于VB 6.0环境开发设计的。首先,调用MX Component ActiveX库对应的DDL文件,根据通信要求进行编程设计,实现MXComponent与VB 6.0构件之间的数据交互,从而完成虚拟PLC与VB 6.0的通信连接;再通过DDE动态数据链接实现VB 6.0构件与MCGS的通信连接,最终实现数据在虚拟PLC GX Simulator与MCGS组态软件之间的上传下达。
2.1 MX与VB间数据交互设计
2.1.1 ACT控件概述和使用步骤
MX Component的ACT控制是三菱公司为解决上位机与其PLC通信的问题而提供的通信用ActiveX库,库中集成了所有型号的三菱系列PLC等硬件的通信协议。在此以三菱公司FX2N(C)型PLC为例,调用ActEasylF控制(用于简化Communication Setup Utility中的通信设置以进行通信)通信控件来设计实现虚拟PLC与VB 6.0(即MX Component与VB 6.0)之间的数据通信。
ACT控制中的ActEasylF控制提供众多的函数指令,在VB 6.0环境下调用这些函数指令可实现打开通道、关闭通道、读取软元件等操作。本文主要使用的函数功能如表1所示。
ACT控制的使用步骤如下。在VB 6.0编程环境下,首先导入三菱公司提供的通信开发模块(ActDefine.bas)。该模块包含了ACT控制所需的三菱系列PLC等硬件的通信协议特征和分配地址。然后,在“元件”中调用并注册ACT控制所对应的通信控件“ActMulti.DLL”,并将ActEasylF控制导入窗体。最后在MX Component的Communication Setup Utility中进行相关设置,如设置通信路径为GX Simulator,CPU型号为FX2N(C),逻辑站号为0。
2.1.2 基于VB的通信程序设计
在导入并注册对应通信开发模块和ACT控制通信控件以后,还需使用相关ACT功能函数(部分功能如表1所示)进行系统接口的开断、软元件的读写、PLC型号的读取等通信程序的设计,以实现MXComponent与VB 6.0的数据交互。
①读软PLC数据。ActEasylF控制软元件读取函数指令支持对批量软元件的读取,可用数组将批量软元件号和软元件数分别赋给szDevieeList和1Size,再调用ReadDeviceRandom功能指令。如果通信成功(1Ret=0),就可返回软元件值数组IData()。部分程序如下。 Private Sub Cmd—ReadDeviceRandom—Click() 1Ret=ActEasylFl.Open //打开通信接口 1Ret=ActEasyIFl.GetCpuType(szCpuName,lplCpuCode) //获取CPU型号 szDeviceList=ChgDeviceString(Txt—DeviceName.Text) //获取设备软元件名组 1Size=CLng(Txt—DeviceSizc.Text) //获取软元件数 ReDim 1Data(1Size) 1Ret=ActEasyIFl.ReadDeviceRandom(szDeviceList,1Size, 1Data(0)) //调用随机读软元件函数指令 Exit Sub
②写软PLC数据。ActEasyIF控制的写软元件函数指令需要通过软元件数组获取批量软元件号szDeviceList和它对应的设定软元件值。本设计通过调用数组函数ChgDeviceString()和CLng()来实现;之后调用WriteDeviceRandom指令将设定值写入对应软元件。部分程序如下。
Pfivate Sub Cmd—WriteDevieeRandom—Click() szDevieeList=ChgDeviceString(7rxLDeviceName.Text) //获取设备软元件名数组 1 Size=CLng(Txt_DeviceSize.Text) //获取设备软元件值数组 ReDim IData(1Size) Call ChgDevieeData(ISize,Txt_DeviceData.Text,lData) 1Ret:ActEasyWl.WriteDevJceRandom(szlg州eeList,ISze, l Da_b(0)) //调用随机写软元件函数指令 End Sub VB 6.0的通信程序设计实现了MX Component与 VB 6.0构件之间的数据交互。
2.2 VB与MCGS间数据交互设计
MCGS提供DDE方式与其他程序进行数据交互。会话是DDE的一个基本概念,一次会话由一个客户端和一个服务器两个应用程序参与。一个应用程序能同时充当客户端和服务器,并进行多路对话。本文采用DDE技术实现VB 6.0通信程序与MCGS组态软件服务器之间的数据交互。VB 6.0通信程序和MCGS组态软件DDE服务器互为客户端和服务器,其结构模式和工作原理如图2所示。
DDE协议为控制通信对象划分了服务名、主题名、项目名3层。对DDE通信接口的设置,实际上主要是对DDE协议控制通信对象的服务名、主题名和项目名等的设置。
①MCGS端DDE接口设置
在MCGS组态界面下的“DDE连接管理”窗口中,将所需输出的连接变量设置为DDE输出,将所需输入的连接变量设置为DDE输入,并对服务节点按照DDE的3层协议进行配置:服务节点名设为“服务节点0”;服务名设为VB对应工程名;主题名设为对应窗体的名称;连接节点都设为VB对应窗体名;连接项目为VB 6.0中所连接控件的名称。
②VB端DDE接口设置
将VB设计窗体中显示控件(如文本框)对应连接变量的Linkmode属性设置为Souce,将LinkTopic属性设置为McgsRun l DataCentre,再将LinkItem属性分别设置为所要连接变量的变量名。需要注意的是,这里命名的Linkltem属性变量名符号必须和三菱系列PLC寄存器符号命名规则相同(必须为x、Y、D、T、M等变量符号),且必须与MCGS的DDE输人中的变量名保持一致。这是因为ActEasyIF控制支持的软元件读写操作对象必须是三菱编程软件规定的寄存器变量名,只有通过MCGS提供对应的变量名,才能实现对虚拟PLC数据的读写功能。
2.3 VB内部数据交互设计
VB 6.0通信控件运行时的界面如图3所示。
在分别建立MX Component与VB 6.0之间的数据交互和VB 6.0与MCGS之间的数据交互以后,还需要在VB 6.0通信程序内部设立输入输出缓冲区(如图3中右侧框内所示区域),使虚拟PLC和MCGS与数据缓冲区建立数据交互,才能最终实现数据在虚拟PLCGX Simulator与MCGS组态软件之间的上传下达。缓冲区交互程序设计流程如下。
①数据的上传。数据的上传就是将从MXComponent中读取的软元件值,赋给VB 6.0通信程序中已与MCGS数据库变量建立DDE连接的对应显示控件。一般情况下,可建立数组赋值。部分程序如下。
For lCnt=0 To(1Size一1) Lst—Data.Addlmm(IData(ICnt)&”[t.&HexMYM(1Data (ICnt))&”(Hex)]”) ∥将对应数量的软元件值赋给文本框的 对应下拉菜单中(如图3中③所示) TxtY(ICnt).Text=IData(ICnt) //将对应数量的软元件值 赋给已与MCGS数据库变量建立 DDE连接的数据,缓冲区对应显示控件 Next
②数据的下达。数据的下达实际就是将从MCGS中得到的控制变量名和控制变量值,都赋给对应的、已与MX Component建立通信连接的VB 6.0通信程序的数据缓冲区中对应的文本框显示控件,从而实现上位机对虚拟PLC的写操作。部分程序如下。
Private Sub TxtXl一Change() Txt—DeviceData.Text=TxtM0.Text&vbCrLf&TxtMl. Text&...TxtMn.Text //将所有DDE交互得到的变量值重新写入已建立 连接的文本框显示控件1(如图3中①所示) Txt—DeviceDataName.Text=TxtM0.Caption&vbCrLf& TxtMl.Caption&...TxtMn.Caption //将所有DDE交互得到的变量名重新写入已建立 连接的文本框显示控件2(如图3中②所示) Cmd—WriteDeviceRandom—Click //如果文本显示构件内容改变,就执行写人软元件事件 End Sub
在完成VB 6.0内部通信数据连接交互后,虚拟PLC与MCGS的通信连接构件便设计完毕。此时,只需分别激活GX Simulator、MCGS、VB 6.0的运行模式,即可实现虚拟PLC与MCGS的通信连接。
3 通信构件的应用
在此以自动装卸料PLC控制系统为例,说明如何使用基于MCGS组态软件与三菱虚拟PLC通信构件,建立一个全虚拟的PLC完整控制系统。
①自动装卸料系统分析与PLC编程调试
按流程要求,在GX Developer编写梯形图控制程序,将编写好的梯形图程序写入虚拟PLC(即启动LLT),进入虚拟仿真调试,完成自动装卸料PLC控制系统的编程调试,并使MX Component与VB的通信准备完毕。
②设计并运行MCGS组态软件的上位监控界面
根据流程要求,需进行MCGS实时数据库中变量的添加和定义,这些变量包括控制所需的启动、停止、装料、卸料及装卸料的时间等。上位机界面组态完成后,激活MCGS组态软件的运行模式,使DDE接口开始运作。
③运行VB6.0通信连接控件
当MX Component的通信接口和MCGS的DDE接口都准备完成以后,只需打开并激活设计好的VB通信控件,便可实现虚拟PLC与MCGS之间的数据交互。此时,若在MCGS监控界面上点击启动按钮,虚拟PLC将执行相应操作,产生对应的动画监控界面。
4 结束语
本文采用VB 6.0设计的基于MCGS的虚拟PLC连接构件,实现了三菱系列虚拟PLC和组态软件的连接。该方法简单易行,有效地解决了实现全虚拟PLC控制系统的关键问题。它不仅适用于MCGS,而且适用于大多数的上位组态软件(如组态王、易控、力控等),是对组态软件的连接对象和连接方法的一次新的有益探索。
通过使用此构件实现的全虚拟PLC系统,可在无PLC硬件条件下为PLC教学提供完整的本机调试、上下位机控制及网络连接的现代试验平台,从而为PLC的现代试验提供了一种可利用现有资源实现的先进PLC试验教学系统。
(审核编辑: 智汇李)