組態(tài)軟件與三菱虛擬PLC通信構(gòu)件的研究與實(shí)現(xiàn)
點(diǎn)擊:1932
A+ A-
所屬頻道:新聞中心
引言
現(xiàn)代完整的PLC控制系統(tǒng)試驗(yàn)需要有現(xiàn)場(chǎng)信號(hào)檢測(cè)、上位監(jiān)控以及聯(lián)網(wǎng)功能。西華大學(xué)的教學(xué)以三菱PLC教學(xué)為主,三菱的通用編程軟件GX Developer和GX Simulator仿真程序可實(shí)現(xiàn)無(wú)PLC硬件情況下的PLC編程、監(jiān)控、調(diào)試等工作。為了提供完整的PLC控制系統(tǒng)試驗(yàn),需要結(jié)合工業(yè)組態(tài)軟件實(shí)現(xiàn)上位機(jī)對(duì)PLC的監(jiān)控,并全真模擬PLC的控制對(duì)象以及相關(guān)的現(xiàn)場(chǎng)設(shè)備,因此需構(gòu)建具有上下位機(jī)的完整的PLC控制系統(tǒng)以及遠(yuǎn)程控制系統(tǒng)。
全虛擬系統(tǒng)由基于PC機(jī)的PLC編程仿真軟件和工業(yè)組態(tài)軟件等構(gòu)成,其可將PLC教學(xué)系統(tǒng)延伸到任何有Pc機(jī)的地方。目前,三菱公司提供了MXComponent聯(lián)機(jī)通信軟件,可與虛擬PLC GX Simulator通信,但其還要求組態(tài)軟件有相應(yīng)的通信構(gòu)件,以實(shí)現(xiàn)組態(tài)軟件與MX Component的通信,最終實(shí)現(xiàn)虛擬PLC與組態(tài)軟件之間的數(shù)據(jù)交互。
監(jiān)視與控制通用系統(tǒng)(monitor and control generatedsystem,MCGS)是一套用于陜速構(gòu)造和生成計(jì)算機(jī)監(jiān)控系統(tǒng)的組態(tài)軟件,在自動(dòng)化領(lǐng)域有著廣泛的應(yīng)用∞j。為了解決虛擬PLC與組態(tài)軟件的接口連接問(wèn)題,本文提出一種以VB 6.0為開(kāi)發(fā)平臺(tái)設(shè)計(jì)中間通信連接構(gòu)件的方法,實(shí)現(xiàn)了虛擬PLC與MCGS間的通信連接,也為虛擬PLC與其他組態(tài)軟件的通信連接提供了一種可行的方法。
1 總體方案設(shè)計(jì)
基于三菱GX和MCGS的全虛擬PLC系統(tǒng)通信接口連接框圖如圖1所示。
由圖1可以看出,虛擬PLC系統(tǒng)建立在基于Windows系統(tǒng)的PC機(jī)上,需要安裝基于三菱PLC的編程軟件GX Developer、GX Simulator仿真軟件以及MXComponent口1。MX Component是三菱公司開(kāi)發(fā)的一種聯(lián)機(jī)通信軟件。該軟件一方面可與GX Simulator交互變量數(shù)據(jù),另一方面提供ActiveX庫(kù),使第三方編程軟件可通過(guò)調(diào)用該庫(kù)對(duì)應(yīng)DDL文件來(lái)編程實(shí)現(xiàn)彼此之間的數(shù)據(jù)通信連接。當(dāng)在GX Developer中編寫(xiě)梯形圖程序并下載到GX Simulator中模擬PLC的程序運(yùn)行時(shí),GX Simulator將自動(dòng)與MX Component進(jìn)行數(shù)據(jù)交互。全虛擬PLC系統(tǒng)實(shí)現(xiàn)的關(guān)鍵是如何解決MXComponent與組態(tài)軟件的通信問(wèn)題。在此采用VB 6.0設(shè)計(jì)通信構(gòu)件,以實(shí)現(xiàn)虛擬PLC系統(tǒng)與MCGS組態(tài)軟件的通信。
2 基于MCGS的通信構(gòu)件開(kāi)發(fā)
基于MCGS的通信構(gòu)件是基于VB 6.0環(huán)境開(kāi)發(fā)設(shè)計(jì)的。首先,調(diào)用MX Component ActiveX庫(kù)對(duì)應(yīng)的DDL文件,根據(jù)通信要求進(jìn)行編程設(shè)計(jì),實(shí)現(xiàn)MXComponent與VB 6.0構(gòu)件之間的數(shù)據(jù)交互,從而完成虛擬PLC與VB 6.0的通信連接;再通過(guò)DDE動(dòng)態(tài)數(shù)據(jù)鏈接實(shí)現(xiàn)VB 6.0構(gòu)件與MCGS的通信連接,最終實(shí)現(xiàn)數(shù)據(jù)在虛擬PLC GX Simulator與MCGS組態(tài)軟件之間的上傳下達(dá)。
2.1 MX與VB間數(shù)據(jù)交互設(shè)計(jì)
2.1.1 ACT控件概述和使用步驟
MX Component的ACT控制是三菱公司為解決上位機(jī)與其PLC通信的問(wèn)題而提供的通信用ActiveX庫(kù),庫(kù)中集成了所有型號(hào)的三菱系列PLC等硬件的通信協(xié)議。在此以三菱公司FX2N(C)型PLC為例,調(diào)用ActEasylF控制(用于簡(jiǎn)化Communication Setup Utility中的通信設(shè)置以進(jìn)行通信)通信控件來(lái)設(shè)計(jì)實(shí)現(xiàn)虛擬PLC與VB 6.0(即MX Component與VB 6.0)之間的數(shù)據(jù)通信。
ACT控制中的ActEasylF控制提供眾多的函數(shù)指令,在VB 6.0環(huán)境下調(diào)用這些函數(shù)指令可實(shí)現(xiàn)打開(kāi)通道、關(guān)閉通道、讀取軟元件等操作。本文主要使用的函數(shù)功能如表1所示。
ACT控制的使用步驟如下。在VB 6.0編程環(huán)境下,首先導(dǎo)入三菱公司提供的通信開(kāi)發(fā)模塊(ActDefine.bas)。該模塊包含了ACT控制所需的三菱系列PLC等硬件的通信協(xié)議特征和分配地址。然后,在“元件”中調(diào)用并注冊(cè)ACT控制所對(duì)應(yīng)的通信控件“ActMulti.DLL”,并將ActEasylF控制導(dǎo)入窗體。最后在MX Component的Communication Setup Utility中進(jìn)行相關(guān)設(shè)置,如設(shè)置通信路徑為GX Simulator,CPU型號(hào)為FX2N(C),邏輯站號(hào)為0。
2.1.2 基于VB的通信程序設(shè)計(jì)
在導(dǎo)入并注冊(cè)對(duì)應(yīng)通信開(kāi)發(fā)模塊和ACT控制通信控件以后,還需使用相關(guān)ACT功能函數(shù)(部分功能如表1所示)進(jìn)行系統(tǒng)接口的開(kāi)斷、軟元件的讀寫(xiě)、PLC型號(hào)的讀取等通信程序的設(shè)計(jì),以實(shí)現(xiàn)MXComponent與VB 6.0的數(shù)據(jù)交互。
①讀軟PLC數(shù)據(jù)。ActEasylF控制軟元件讀取函數(shù)指令支持對(duì)批量軟元件的讀取,可用數(shù)組將批量軟元件號(hào)和軟元件數(shù)分別賦給szDevieeList和1Size,再調(diào)用ReadDeviceRandom功能指令。如果通信成功(1Ret=0),就可返回軟元件值數(shù)組IData()。部分程序如下。 Private Sub Cmd—ReadDeviceRandom—Click() 1Ret=ActEasylFl.Open //打開(kāi)通信接口 1Ret=ActEasyIFl.GetCpuType(szCpuName,lplCpuCode) //獲取CPU型號(hào) szDeviceList=ChgDeviceString(Txt—DeviceName.Text) //獲取設(shè)備軟元件名組 1Size=CLng(Txt—DeviceSizc.Text) //獲取軟元件數(shù) ReDim 1Data(1Size) 1Ret=ActEasyIFl.ReadDeviceRandom(szDeviceList,1Size, 1Data(0)) //調(diào)用隨機(jī)讀軟元件函數(shù)指令 Exit Sub
②寫(xiě)軟PLC數(shù)據(jù)。ActEasyIF控制的寫(xiě)軟元件函數(shù)指令需要通過(guò)軟元件數(shù)組獲取批量軟元件號(hào)szDeviceList和它對(duì)應(yīng)的設(shè)定軟元件值。本設(shè)計(jì)通過(guò)調(diào)用數(shù)組函數(shù)ChgDeviceString()和CLng()來(lái)實(shí)現(xiàn);之后調(diào)用WriteDeviceRandom指令將設(shè)定值寫(xiě)入對(duì)應(yīng)軟元件。部分程序如下。
Pfivate Sub Cmd—WriteDevieeRandom—Click() szDevieeList=ChgDeviceString(7rxLDeviceName.Text) //獲取設(shè)備軟元件名數(shù)組 1 Size=CLng(Txt_DeviceSize.Text) //獲取設(shè)備軟元件值數(shù)組 ReDim IData(1Size) Call ChgDevieeData(ISize,Txt_DeviceData.Text,lData) 1Ret:ActEasyWl.WriteDevJceRandom(szlg州eeList,ISze, l Da_b(0)) //調(diào)用隨機(jī)寫(xiě)軟元件函數(shù)指令 End Sub VB 6.0的通信程序設(shè)計(jì)實(shí)現(xiàn)了MX Component與 VB 6.0構(gòu)件之間的數(shù)據(jù)交互。
2.2 VB與MCGS間數(shù)據(jù)交互設(shè)計(jì)
MCGS提供DDE方式與其他程序進(jìn)行數(shù)據(jù)交互。會(huì)話是DDE的一個(gè)基本概念,一次會(huì)話由一個(gè)客戶端和一個(gè)服務(wù)器兩個(gè)應(yīng)用程序參與。一個(gè)應(yīng)用程序能同時(shí)充當(dāng)客戶端和服務(wù)器,并進(jìn)行多路對(duì)話。本文采用DDE技術(shù)實(shí)現(xiàn)VB 6.0通信程序與MCGS組態(tài)軟件服務(wù)器之間的數(shù)據(jù)交互。VB 6.0通信程序和MCGS組態(tài)軟件DDE服務(wù)器互為客戶端和服務(wù)器,其結(jié)構(gòu)模式和工作原理如圖2所示。
DDE協(xié)議為控制通信對(duì)象劃分了服務(wù)名、主題名、項(xiàng)目名3層。對(duì)DDE通信接口的設(shè)置,實(shí)際上主要是對(duì)DDE協(xié)議控制通信對(duì)象的服務(wù)名、主題名和項(xiàng)目名等的設(shè)置。
①M(fèi)CGS端DDE接口設(shè)置
在MCGS組態(tài)界面下的“DDE連接管理”窗口中,將所需輸出的連接變量設(shè)置為DDE輸出,將所需輸入的連接變量設(shè)置為DDE輸入,并對(duì)服務(wù)節(jié)點(diǎn)按照DDE的3層協(xié)議進(jìn)行配置:服務(wù)節(jié)點(diǎn)名設(shè)為“服務(wù)節(jié)點(diǎn)0”;服務(wù)名設(shè)為VB對(duì)應(yīng)工程名;主題名設(shè)為對(duì)應(yīng)窗體的名稱;連接節(jié)點(diǎn)都設(shè)為VB對(duì)應(yīng)窗體名;連接項(xiàng)目為VB 6.0中所連接控件的名稱。
②VB端DDE接口設(shè)置
將VB設(shè)計(jì)窗體中顯示控件(如文本框)對(duì)應(yīng)連接變量的Linkmode屬性設(shè)置為Souce,將LinkTopic屬性設(shè)置為McgsRun l DataCentre,再將LinkItem屬性分別設(shè)置為所要連接變量的變量名。需要注意的是,這里命名的Linkltem屬性變量名符號(hào)必須和三菱系列PLC寄存器符號(hào)命名規(guī)則相同(必須為x、Y、D、T、M等變量符號(hào)),且必須與MCGS的DDE輸人中的變量名保持一致。這是因?yàn)锳ctEasyIF控制支持的軟元件讀寫(xiě)操作對(duì)象必須是三菱編程軟件規(guī)定的寄存器變量名,只有通過(guò)MCGS提供對(duì)應(yīng)的變量名,才能實(shí)現(xiàn)對(duì)虛擬PLC數(shù)據(jù)的讀寫(xiě)功能。
2.3 VB內(nèi)部數(shù)據(jù)交互設(shè)計(jì)
VB 6.0通信控件運(yùn)行時(shí)的界面如圖3所示。
在分別建立MX Component與VB 6.0之間的數(shù)據(jù)交互和VB 6.0與MCGS之間的數(shù)據(jù)交互以后,還需要在VB 6.0通信程序內(nèi)部設(shè)立輸入輸出緩沖區(qū)(如圖3中右側(cè)框內(nèi)所示區(qū)域),使虛擬PLC和MCGS與數(shù)據(jù)緩沖區(qū)建立數(shù)據(jù)交互,才能最終實(shí)現(xiàn)數(shù)據(jù)在虛擬PLCGX Simulator與MCGS組態(tài)軟件之間的上傳下達(dá)。緩沖區(qū)交互程序設(shè)計(jì)流程如下。
①數(shù)據(jù)的上傳。數(shù)據(jù)的上傳就是將從MXComponent中讀取的軟元件值,賦給VB 6.0通信程序中已與MCGS數(shù)據(jù)庫(kù)變量建立DDE連接的對(duì)應(yīng)顯示控件。一般情況下,可建立數(shù)組賦值。部分程序如下。
For lCnt=0 To(1Size一1) Lst—Data.Addlmm(IData(ICnt)&”[t.&HexMYM(1Data (ICnt))&”(Hex)]”) ∥將對(duì)應(yīng)數(shù)量的軟元件值賦給文本框的 對(duì)應(yīng)下拉菜單中(如圖3中③所示) TxtY(ICnt).Text=IData(ICnt) //將對(duì)應(yīng)數(shù)量的軟元件值 賦給已與MCGS數(shù)據(jù)庫(kù)變量建立 DDE連接的數(shù)據(jù),緩沖區(qū)對(duì)應(yīng)顯示控件 Next
②數(shù)據(jù)的下達(dá)。數(shù)據(jù)的下達(dá)實(shí)際就是將從MCGS中得到的控制變量名和控制變量值,都賦給對(duì)應(yīng)的、已與MX Component建立通信連接的VB 6.0通信程序的數(shù)據(jù)緩沖區(qū)中對(duì)應(yīng)的文本框顯示控件,從而實(shí)現(xiàn)上位機(jī)對(duì)虛擬PLC的寫(xiě)操作。部分程序如下。
Private Sub TxtXl一Change() Txt—DeviceData.Text=TxtM0.Text&vbCrLf&TxtMl. Text&...TxtMn.Text //將所有DDE交互得到的變量值重新寫(xiě)入已建立 連接的文本框顯示控件1(如圖3中①所示) Txt—DeviceDataName.Text=TxtM0.Caption&vbCrLf& TxtMl.Caption&...TxtMn.Caption //將所有DDE交互得到的變量名重新寫(xiě)入已建立 連接的文本框顯示控件2(如圖3中②所示) Cmd—WriteDeviceRandom—Click //如果文本顯示構(gòu)件內(nèi)容改變,就執(zhí)行寫(xiě)人軟元件事件 End Sub
在完成VB 6.0內(nèi)部通信數(shù)據(jù)連接交互后,虛擬PLC與MCGS的通信連接構(gòu)件便設(shè)計(jì)完畢。此時(shí),只需分別激活GX Simulator、MCGS、VB 6.0的運(yùn)行模式,即可實(shí)現(xiàn)虛擬PLC與MCGS的通信連接。
3 通信構(gòu)件的應(yīng)用
在此以自動(dòng)裝卸料PLC控制系統(tǒng)為例,說(shuō)明如何使用基于MCGS組態(tài)軟件與三菱虛擬PLC通信構(gòu)件,建立一個(gè)全虛擬的PLC完整控制系統(tǒng)。
①自動(dòng)裝卸料系統(tǒng)分析與PLC編程調(diào)試
按流程要求,在GX Developer編寫(xiě)梯形圖控制程序,將編寫(xiě)好的梯形圖程序?qū)懭胩摂MPLC(即啟動(dòng)LLT),進(jìn)入虛擬仿真調(diào)試,完成自動(dòng)裝卸料PLC控制系統(tǒng)的編程調(diào)試,并使MX Component與VB的通信準(zhǔn)備完畢。
②設(shè)計(jì)并運(yùn)行MCGS組態(tài)軟件的上位監(jiān)控界面
根據(jù)流程要求,需進(jìn)行MCGS實(shí)時(shí)數(shù)據(jù)庫(kù)中變量的添加和定義,這些變量包括控制所需的啟動(dòng)、停止、裝料、卸料及裝卸料的時(shí)間等。上位機(jī)界面組態(tài)完成后,激活MCGS組態(tài)軟件的運(yùn)行模式,使DDE接口開(kāi)始運(yùn)作。
③運(yùn)行VB6.0通信連接控件
當(dāng)MX Component的通信接口和MCGS的DDE接口都準(zhǔn)備完成以后,只需打開(kāi)并激活設(shè)計(jì)好的VB通信控件,便可實(shí)現(xiàn)虛擬PLC與MCGS之間的數(shù)據(jù)交互。此時(shí),若在MCGS監(jiān)控界面上點(diǎn)擊啟動(dòng)按鈕,虛擬PLC將執(zhí)行相應(yīng)操作,產(chǎn)生對(duì)應(yīng)的動(dòng)畫(huà)監(jiān)控界面。
4 結(jié)束語(yǔ)
本文采用VB 6.0設(shè)計(jì)的基于MCGS的虛擬PLC連接構(gòu)件,實(shí)現(xiàn)了三菱系列虛擬PLC和組態(tài)軟件的連接。該方法簡(jiǎn)單易行,有效地解決了實(shí)現(xiàn)全虛擬PLC控制系統(tǒng)的關(guān)鍵問(wèn)題。它不僅適用于MCGS,而且適用于大多數(shù)的上位組態(tài)軟件(如組態(tài)王、易控、力控等),是對(duì)組態(tài)軟件的連接對(duì)象和連接方法的一次新的有益探索。
通過(guò)使用此構(gòu)件實(shí)現(xiàn)的全虛擬PLC系統(tǒng),可在無(wú)PLC硬件條件下為PLC教學(xué)提供完整的本機(jī)調(diào)試、上下位機(jī)控制及網(wǎng)絡(luò)連接的現(xiàn)代試驗(yàn)平臺(tái),從而為PLC的現(xiàn)代試驗(yàn)提供了一種可利用現(xiàn)有資源實(shí)現(xiàn)的先進(jìn)PLC試驗(yàn)教學(xué)系統(tǒng)。
(審核編輯: 智匯李)
分享