代征宇,楊觀賜,李少波
(貴州大學教育部現(xiàn)代制造技術(shù)重點實驗室,貴陽 550003)
軟PLC的市場需求量在不斷的增長。典型的軟PLC應(yīng)用產(chǎn)品有:①SOFTPLC公司的softPLC。soft-PLC是基于PC的開放式控制軟件,具有開放的控制平臺,用戶能夠根據(jù)自己的需求來選擇硬件。②SIEMENS公司的 SIMATIC WinAc。SIMATIC WinAc是基于windows平臺的控制軟件,具有可視化人機界面,它將控制、數(shù)據(jù)處理、通信等技術(shù)集于一體,采用了實時操作系統(tǒng)作為Windows NT的擴展,具有“硬實時”的特性。③CJ International公司的ISaGRAF。ISaGRAF能夠在多種操作系統(tǒng)下運行,具有良好的網(wǎng)絡(luò)通訊能力[1]。在國內(nèi),呂涌等開發(fā)的面向DCS控制組態(tài)軟件中包含一些軟PLC功能,它只是DCS系統(tǒng)的一部分,不能獨立運行[2]。李左章等對軟PLC技術(shù)進行了大量的研究,其開發(fā)的數(shù)控內(nèi)嵌式PLC具有軟PLC的特點,但功能單一,不能作為獨立系統(tǒng)運行,且無聯(lián)網(wǎng)通訊能力[3]。
基于上述產(chǎn)品的特點以及不足,本文主要研究基于Qt平臺的中央空調(diào)控制系統(tǒng)中的軟PLC控制軟件的開發(fā),其對于降低大型中央空調(diào)能耗,緩解我國因不斷增長的能源需求所帶來的能源壓力和環(huán)境壓力具有重要的意義。
采用梯形圖語言設(shè)計順序控制邏輯,具有方便直觀的優(yōu)點,且梯形圖程序由若干圖形元件按邏輯規(guī)則連接而成,編譯順序是從上到下,從左到右[4]。將控制系統(tǒng)的開關(guān)量邏輯與狀態(tài)表示成梯形圖,有利于系統(tǒng)維護與快速故障診斷[5]。通過對梯形圖及其設(shè)計規(guī)則的分析,用梯形圖語言編制程序的過程實質(zhì)上是一個用梯形圖圖符來表示操作指令、用圖符的串并聯(lián)及位置順序來表示操作指令之間邏輯關(guān)系的過程。由此,一個梯形圖可以看作是由梯形圖圖符和連接符組合而成[6]。為實現(xiàn)軟PLC控制軟件功能,其編輯模塊應(yīng)包括指令的類設(shè)計與實現(xiàn)、梯形圖的生成、顯示和修改功能的實現(xiàn),并為用戶提供友好的操作界面和良好的編程環(huán)境,提高軟PLC編輯模塊的可靠性和可用性的功能。對于元件的操作,應(yīng)實現(xiàn)元件復制、粘貼、剪切、添加、刪除、元件屬性編輯等操作。
在軟PLC控制軟件編輯模塊中,元件類必須符合以下要求:
(1)為減少系統(tǒng)代碼冗余,縮短運行時間,元件代碼必須要高效、合理、精簡。操作過程中,要實現(xiàn)元件的靈活拖放,并保證系統(tǒng)穩(wěn)定。
(2)元件必須能夠準確、完整、快速地保存數(shù)據(jù)。并且在系統(tǒng)運行時,及時保存并更新數(shù)據(jù)。
(3)元件必須具備出錯處理功能,并能夠判別其使用環(huán)境,當兩個元件不能同時使用時,需要有相應(yīng)的提示。
依據(jù)《Logix5550控制器指令集參考手冊》,指令主要分為8大類,分別是位操作類、計時器/計數(shù)器類、比較類、計算類、傳送與邏輯類、程序控制類、終止循環(huán)類、濾波類。文獻[7]中定義了一個EClass建模類,它指定屬性和參數(shù)以描述元件圖形、圖像化的數(shù)據(jù)。此方法可以降低工作量,減小代碼冗余。但是在具體實現(xiàn)過程中,各個元件的圖形、圖像化參數(shù)存在差異,所要呈現(xiàn)的視覺效果不同,此方法無法滿足系統(tǒng)對指令圖形多樣化的需求。文獻[8]定義了DrawObject基類來描述所有元件圖形化的共同屬性和行為,把元件的圖形化和邏輯功能封裝在一起,簡化了編程過程。在本系統(tǒng)構(gòu)架中,定義ClogicElement為元件庫模型的基類,它是從梯形圖編程系統(tǒng)所支持的所有元件抽象出來的一個類,它定義了其他類的共有操作接口和屬性,是其他圖形元件類的父類。模塊中所有的元件子類都依據(jù)繼承機制繼承了基類的屬性,并根據(jù)自己支持的圖形元件有選擇地重載基類相應(yīng)的操作,以滿足子類的需求[9]。如圖1,為其邏輯功能模塊類結(jié)構(gòu)。
圖形元件是實現(xiàn)對象的模型,它不僅是實現(xiàn)對象的圖形表示,而且還要包括與現(xiàn)實對象相關(guān)的一些主要屬性、數(shù)據(jù)和行為。因此,必須將圖形元件智能化[10]。Qt具有很好的平臺移植性,采用面向?qū)ο笳Z言,易于擴展,并且允許組件編程。另外,使用Qt編寫的程序在嵌入式系統(tǒng)上運行時間性能高,占用系統(tǒng)資源少,能保證該系統(tǒng)移植到嵌入式系統(tǒng)以后的順暢運行。因此,本系統(tǒng)在Qt平臺上進行開發(fā)。
圖1 邏輯功能模塊類結(jié)構(gòu)
根據(jù)《Logix5550控制器指令集參考手冊》,元件基類應(yīng)定義元件預掃描函數(shù)、梯級輸入函數(shù)、梯級輸出函數(shù)、元件邏輯功能函數(shù)、元件輸出函數(shù)等一些公有屬性的函數(shù)。
梯形圖元件基類的關(guān)鍵代碼如下:
梯形圖是由梯級和圖形元件構(gòu)成,用圖形元件的串聯(lián)或并聯(lián)以及它們的位置和順序來表示實際元件之間的邏輯關(guān)系,而元件之間的邏輯運算是通過各個元件之間的函數(shù)進行關(guān)聯(lián)。在定義元件類時,把元件數(shù)據(jù)定義為私有,把元件函數(shù)定義為公有,以此方式來實現(xiàn)元件的功能。如圖2所示。
圖2 元件間的邏輯運算方式
以計時器計數(shù)器類中TON指令為例,
(1)對象初始化
CLogicElement*myElement=new CLogicCounterTON;
(2)數(shù)據(jù)初始化
myElement->SetDataInput(myData,output,preScan);
其中myData為當前元件的數(shù)據(jù),output為在梯形圖運行中的輸出值,preScan為當前元件是否預掃描。
(3)程序執(zhí)行
myElement->Output();
(4)將數(shù)據(jù)返回到存儲與交換數(shù)據(jù)中間件類
myElement->ModifyData(Instance);
并非每個元件運行后都修改數(shù)據(jù),因此對未修改數(shù)據(jù)的元件類此方法內(nèi)容為空。
(5)在執(zhí)行中元件類數(shù)據(jù)的修改
myElement->UpdateDataValues(Instance);
此方法可以將已經(jīng)在存儲與交換數(shù)據(jù)中間件類中更新的數(shù)據(jù)傳入元件類中,在執(zhí)行過程中調(diào)用,如圖3為元件運算流程圖。
圖3 元件運算流程圖
遵循軟件測試原則,采用黑盒測試方法。根據(jù)《Logix5550控制器指令集參考手冊》中規(guī)定的元件功能來設(shè)計測試用例,對部分圖形元件功能進行測試。其中,XIC指令檢查數(shù)據(jù)位是否是置位狀態(tài),當數(shù)據(jù)位置位時,則使能下一條指令并且梯級輸出條件為真。CTU指令為向上計數(shù)指令,當指令被使能時加計數(shù)使能位(.CU)是清零狀態(tài),則CTU指令使計數(shù)器加1。RES指令復位 TIMER、COUNTER和CONTROL結(jié)構(gòu)。當RES指令被使能時,指令清零TIMER和COUNTER型的累加值和控制狀態(tài)位,清零CONTROL型的位置值和控制位。如圖4,其中變量2、4為元件數(shù)據(jù)初始值;如圖5元件功能測試用例,其主要測試XIC、CTU、RES指令的邏輯功能是否實現(xiàn)。
圖4 元件數(shù)據(jù)初始值
當XIC數(shù)據(jù)位為1時,梯級輸出為真;CTU指令使能,累加值加1;當遍歷到第二個梯級時,檢測ctu_test的DN位,其值為1則使能RES指令,并清零ctu_test的累加值(.ACC)。運行結(jié)果如圖6。
圖5 元件功能測試用例
圖6 元件功能測試用例運行結(jié)果
圖形元件是梯形圖的重要組成部分,而在編輯圖形元件時,實現(xiàn)圖形元件類的高效、簡潔、高可重用性至關(guān)重要。把各種元件定義為相應(yīng)的類以后,在計算機屏幕上顯示元件時,程序生成一個該元件類的對象,并且這個對象的屬性和函數(shù)就描述了相應(yīng)的元件。程序就是通過判斷或運算這些對象的屬性來實現(xiàn)元件的各種功能的。實現(xiàn)了系統(tǒng)的高效性,減少系統(tǒng)代碼冗余,大大提高的系統(tǒng)運行效率。
[1]趙強,張建瓴,可欣榮,等.軟PLC技術(shù)研究現(xiàn)狀與發(fā)展趨勢[J].科技信息,2010(4):120.
[2]呂涌,皇甫正賢.組件化結(jié)構(gòu)的組態(tài)軟件研究與開發(fā)[J]. 工業(yè)控制計算機,2000,13(5):14-17.
[3]李左章,周云飛.一種基于IPc的內(nèi)嵌式PLc的實現(xiàn)方法[J]. 機械與電子,2000(5):3-6.
[4]畢輝,程良鴻.關(guān)于軟PLC梯形圖向語句表轉(zhuǎn)換方法的研究[J].微計算機信息,2007(25):63-65.
[5]譚錦潔,程良鴻.嵌入式PLC中梯形圖到AOV圖的映射[J]. 計算機測量與控制,2004,12(10):993-995.
[6]譚錦潔,程良鴻.嵌入式PLC梯形圖的一種數(shù)據(jù)結(jié)構(gòu)描述方法[J].計算機工程,2004(5):85-87.
[7]項湜武,章銳.可視化集成環(huán)境在嵌入式系統(tǒng)中的開發(fā)[J]. 上海電機學院學報,2008,11(3):207-210.
[8]鄧其軍,周洪,魯覺.面向圖形對象的配電網(wǎng)單線圖繪制與使用[J]. 電力自動化設(shè)備,2009,29(7):97-100.
[9]韓偉,宋明偉,魏志強,等.基于Windows的華中世紀星數(shù)控系統(tǒng) PLC編程系統(tǒng)設(shè)計[J].機床與液壓,2011(14):98.
[10]郭偉偉.Visio圖形化電力系統(tǒng)計算軟件的研究與開發(fā)[D].鄭州:鄭州大學,2006.