1 引言
國內(nèi)外有多種基于PC機(jī)WINDOWS操作系統(tǒng)的監(jiān)控組態(tài)軟件,美國Wonderware公司的FactorySuite軟件是其中之一,它由InTouch,InControl,I/O Server,IndustrialSQL Server,InTrack,InBatch,SuiteVoyager等組件構(gòu)成。本文僅介紹了其中的InTouch、InControl和I/O Server三種組件及其應(yīng)用開發(fā)方法,并列舉了實(shí)現(xiàn)連續(xù)控制、邏輯控制和順序控制的應(yīng)用實(shí)例。
InTouch是過程監(jiān)視組件,采用面向?qū)ο蟮膱D形開發(fā)環(huán)境,便于高效、快捷地組態(tài)人機(jī)界面(MMI)。用于開發(fā)形象直觀、圖文并茂的操作監(jiān)控畫面、實(shí)時和歷史數(shù)據(jù)曲線。
InControl是實(shí)時控制組件,支持邏輯梯形圖(LD)、順序功能圖(SFC)和結(jié)構(gòu)文本(ST)等組態(tài)方式,也提供了PID控制及運(yùn)算模塊的組態(tài)功能。用于開發(fā)連續(xù)控制、邏輯控制和順序控制策略。
I/O Server是過程輸入輸出接口驅(qū)動程序,負(fù)責(zé)對物理接口的直接訪問,實(shí)現(xiàn)該監(jiān)控組態(tài)軟件與硬件設(shè)備的數(shù)據(jù)交換。根據(jù)不同的硬件設(shè)備,選用相應(yīng)的I/O驅(qū)動程序,用于實(shí)時數(shù)據(jù)的通信。
另外還提供了SuiteLink通信協(xié)議和OPC(OLE for Process Control)功能,具有靈活性與擴(kuò)展性。
2 監(jiān)控系統(tǒng)的設(shè)計
監(jiān)控系統(tǒng)的設(shè)計包括人機(jī)界面設(shè)計、控制策略設(shè)計、人機(jī)界面與控制策略的通信。
2.1 人機(jī)界面設(shè)計
人機(jī)界面的組態(tài)和運(yùn)行分別由InTouch中的WindowMaker和WindowViewer完成。WindowMaker是一個應(yīng)用開發(fā)環(huán)境,用來建立窗口圖形界面,定義I/O的連接。主要功能有操作監(jiān)控畫面的組態(tài)和數(shù)據(jù)點(diǎn)的組態(tài),定義數(shù)據(jù)的類型和范圍、報警和事件等。
WindowViewer是一個實(shí)時運(yùn)行環(huán)境,運(yùn)行操作監(jiān)控畫面。各種實(shí)時和歷史數(shù)據(jù)、動態(tài)鏈接和動畫顯示,都只有在WindowViewer運(yùn)行時才能生效[3]。
2.2 控制策略設(shè)計
控制策略的組態(tài)和運(yùn)行由InControl實(shí)現(xiàn),提供與IEC61131-3兼容的三種組態(tài)編程方式。
(1) 邏輯梯形圖。通過對開關(guān)、觸點(diǎn)、線圈和算法功能塊的編輯,描述并實(shí)現(xiàn)邏輯控制功能。
(2) 順序功能圖。通過對有方向的流程框圖和算法功能塊的編輯,描述并實(shí)現(xiàn)順序控制功能。
(3) 結(jié)構(gòu)化文本。用腳本(script)語言編程,可以實(shí)現(xiàn)復(fù)雜控制算法。
以上三種基本的組態(tài)編程方式可以綜合使用,例如用腳本語言實(shí)現(xiàn)邏輯梯形圖中的功能塊或順序功能圖中的一些步驟等。
除了以上幾種組態(tài)編程方式,InControl還提供了符合ActiveX Server 規(guī)范的工廠對象編輯器FOE (Factory Object Editor),提供了幾種常用的FOE模塊,包括PID模塊、模擬報警模塊等,另外用戶還可以向工程中添加ActiveX控件。
組態(tài)完成的算法程序以工程的方式存儲,并在Runtime Engine上周期性地運(yùn)行。Runtime Engine是InControl工程的運(yùn)行平臺,其他應(yīng)用程序與InControl通信時,也是直接從Runtime Engine中獲取數(shù)據(jù)。
2.3 人機(jī)界面與控制策略的通信
InTouch與InControl之間的通信方式主要有DDE方式和SuiteLink協(xié)議兩種。
本應(yīng)用系統(tǒng)采用SuiteLink協(xié)議。數(shù)據(jù)通信配置的方法是,在InTouch的數(shù)據(jù)點(diǎn)組態(tài)過程中,將需要與InControl通信的變量定義為I/O類型,然后在訪問名中設(shè)置應(yīng)用名為RTEngine,主題名為TagName,項目名為所要監(jiān)視的變量名稱。項目名稱的選取遵循以下原則,對于InControl中的全局變量,直接使用InControl中的變量名;對于InControl中的局部變量,使用模塊名.變量名的方式,如模塊名為PID,變量名為PV,則項目名稱為PID.PV;如果是用戶自定義數(shù)據(jù)類型,則項目名稱為用戶自定義類型.變量名,例如用戶自定義類型名稱為Device,需要監(jiān)視的變量為Level,那么項目名為Device.Level。
3 應(yīng)用實(shí)例
本文用InTouch、InControl和I/O Server三種組件,實(shí)現(xiàn)了連續(xù)控制、邏輯控制和順序控制。
3.1 連續(xù)控制實(shí)例
圖1 貯罐液位的操作監(jiān)控畫面
貯罐液位的連續(xù)控制如圖1所示,上有進(jìn)口閥門,下有出口閥門,采用單回路PID控制。其應(yīng)用開發(fā)的方法與步驟如下:
(1) 定義I/O點(diǎn)。根據(jù)應(yīng)用要求確定所需參數(shù)和I/O點(diǎn),并在InTouch標(biāo)記名字典中為每個變量定義標(biāo)記名和類型,如表1所示。其中所有I/O類型的標(biāo)記名,將要與InControl變量進(jìn)行數(shù)據(jù)交換。
表1 貯罐液位單回路PID控制的I/O標(biāo)記名
(2) 設(shè)計操作監(jiān)控畫面。在InTouch中組態(tài)畫面,如圖1所示,其中有設(shè)備圖、PID控制器面板、PID參數(shù)設(shè)置按鈕、趨勢曲線按鈕、報警按鈕等[1],并對圖形對象和已定義的標(biāo)記名建立動畫鏈接關(guān)系,規(guī)定動畫屬性。定義各個按鈕的動作屬性,單擊PID參數(shù)設(shè)置按鈕后彈出軟鍵盤,進(jìn)行PID參數(shù)設(shè)置。實(shí)時和歷史趨勢曲線以及報警均采用InTouch提供的模板。
(3) 組態(tài)控制策略。在InControl中組態(tài)單回路控制,其中PID控制算法由工廠對象(Factory Object)中的PID模塊實(shí)現(xiàn)。通過填寫對話框,可以對PID控制器的被控量PV、設(shè)定值SP、輸出值、控制參數(shù)等進(jìn)行組態(tài)。另外可以用腳本語言直接對參數(shù)進(jìn)行賦值,例如,用PID.SP=80給SP賦值。
(4) 建立InTouch和InControl之間的數(shù)據(jù)交換鏈接。在InTouch的標(biāo)記名字典中,通過設(shè)置訪問名和項目名,利用SuiteLink通信協(xié)議,可以將InTouch中的標(biāo)記名與InControl中的變量鏈接起來,如表1所示。建立鏈接后,在InTouch中調(diào)整相應(yīng)的數(shù)據(jù),InControl中對應(yīng)的數(shù)據(jù)會發(fā)生同步的變化,反之亦然。
上述四步完成應(yīng)用開發(fā),再運(yùn)行InTouch中的WindowViewer和InControl,操作員通過畫面(如圖1所示)進(jìn)行操作監(jiān)控。調(diào)整P,I,D參數(shù),直至滿足控制要求[2]。
3.2 邏輯控制實(shí)例
圖2 燃油鍋爐的操作監(jiān)控畫面
表2 燃油鍋爐邏輯控制的I/O標(biāo)記名
燃油鍋爐的邏輯控制如圖2所示,燃油經(jīng)預(yù)熱器預(yù)熱,由噴油泵經(jīng)噴油嘴噴射到爐膛內(nèi)燃燒。首先用點(diǎn)火器點(diǎn)燃煤氣,再點(diǎn)燃油,并用火焰檢測器監(jiān)視燃油火焰。為了保證燃油鍋爐的安全穩(wěn)定地運(yùn)行,其點(diǎn)火、燃燒、停火清爐都必須嚴(yán)格地按要求進(jìn)行。具體的工藝流程如下:
點(diǎn)火過程:首先燃油預(yù)熱90秒,鼓風(fēng)機(jī)送風(fēng),點(diǎn)火器接通點(diǎn)火,煤氣閥打開點(diǎn)燃煤氣(子火),子火燃燒60秒;然后打開噴油泵,點(diǎn)燃燃油(母火),母火燃燒40秒;最后關(guān)閉點(diǎn)火和子火,母火繼續(xù),進(jìn)入持續(xù)燃油階段。
持續(xù)燃油:此階段用火焰檢測器監(jiān)視母火,一旦滅火立即進(jìn)入停火清爐階段。
停火清爐:首先關(guān)閉燃油預(yù)熱器和噴油泵,并繼續(xù)送風(fēng)80秒,將鍋膛內(nèi)廢氣和雜質(zhì)吹掃干凈;然后關(guān)閉鼓風(fēng)機(jī),停止清爐。
異常處理:異常事件有母火滅火、蒸汽壓力過高、水位高于上限或低于下限。一旦出現(xiàn)異常事件,立即進(jìn)入停火清爐階段。異常事件消失后,按啟動按鈕又自動點(diǎn)火,重新進(jìn)入正常燃燒階段。
根據(jù)應(yīng)用要求確定所需參數(shù)和I/O點(diǎn),并在InTouch標(biāo)記名字典中為每個變量定義標(biāo)記名和類型,如表2所示。另外定義定時器T1(燃油預(yù)熱90秒)、T2(子火燃燒60秒)、T3(母火燃燒40秒)和T4(吹掃80秒),均為內(nèi)存整型變量類型。
根據(jù)燃油鍋爐的工藝流程,在InTouch中設(shè)計圖2所示的操作監(jiān)控畫面。操作員可以操作ON/OFF開關(guān)、進(jìn)水和出水閥,畫面上有參數(shù)顯示和狀態(tài)顯示。
根據(jù)燃油鍋爐邏輯控制要求,在InControl中用邏輯梯形圖(LD)組態(tài)工具,進(jìn)行邏輯控制組態(tài),如圖3所示。這些符號可以從邏輯梯形圖(LD)工具條中拖至開發(fā)界面,構(gòu)成邏輯控制。
圖3 燃油鍋爐的邏輯控制梯形圖
3.3 順序控制實(shí)例
燃油鍋爐配套的油料罐如圖4所示,上、下分別安裝了液位測量開關(guān)LH和LL,用兩臺進(jìn)料泵P1和P2進(jìn)油。當(dāng)液位低于低限LL(LL=1,LH=1)時,兩臺進(jìn)料泵P1和P2同時運(yùn)行,以便盡快使液位上升到正常液位;當(dāng)液位在高低限值范圍內(nèi)(LL=0,LH=1),即液位L處于LH和LL之間(LL<L<LH),液位為正常,只有一臺泵運(yùn)行,而且采用交替運(yùn)行的方式,即上次是泵P1運(yùn)行,下次在一臺泵運(yùn)行時應(yīng)是泵P2運(yùn)行,反之交替,依次循環(huán);當(dāng)液位高于高限LH(LL=0,LH=0)時,兩臺進(jìn)料泵都停止。
類似于前面的例子,根據(jù)應(yīng)用要求確定所需參數(shù)和I/O點(diǎn),在標(biāo)記名字典中為每個變量定義標(biāo)記名和類型。根據(jù)油料罐的工藝流程,在InTouch中設(shè)計人機(jī)界面;在InControl中用順序功能圖(SFC)組態(tài)工具,進(jìn)行油料罐的順序控制功能組態(tài),如圖4(b)所示。圖中用方框表示步(Step)和命令(Command),框內(nèi)寫步號和命令,步框和命令框之間用短水平線連接。步框之間用垂直線連接,再在垂直線上用短水平線表示轉(zhuǎn)換,其旁寫轉(zhuǎn)換條件,用邏輯式表示。這些符號可以從順序功能圖(SFC)工具條中拖至開發(fā)界面,構(gòu)成順序控制。
順序功能圖4(b)由上、下兩部分組成。上選擇序列由步1,6,2組成,下選擇序列由步4,3,5組成。每個步對應(yīng)一個命令,運(yùn)行或停止進(jìn)料泵。為了滿足兩臺進(jìn)料泵交替運(yùn)行,設(shè)置了步2和步5的交替功能命令。步3和步6使另一臺進(jìn)料泵運(yùn)行,即兩臺進(jìn)料泵同時運(yùn)行。步1和步4使其中一臺進(jìn)料泵停止。
圖4 油料罐的順序控制功能圖
4 總結(jié)
本應(yīng)用系統(tǒng)利用了FactorySuite軟件中的InTouch,InControl和I/O Server,實(shí)現(xiàn)了貯罐液位連續(xù)控制、燃油鍋爐的邏輯控制和油料罐的順序控制,控制效果良好,受到用戶好評。