引言
現代完整的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試驗教學系統。
(審核編輯: 智匯李)
分享