程立同,何志平
(中國煤炭科工集團 上海有限公司, 上海 200030)
面向對象作為一種技術方法,不僅在計算機領域的高級語言編程上得到普遍應用,在工業(yè)控制領域,諸如PLC、DCS、HMI等編程中亦有廣泛應用,可編程語言標準IEC 61131-3中也有針對面向對象的內容[1]。面向對象的設計思想是人們觀察自然現象的一種認知模式,其基本概念是類和類的實例對象,在計算機編程中,通過抽象和歸納,可將具有共同性質的對象封裝成類,而在工業(yè)控制系統中,控制對象諸如:電動機,水泵等就是很明顯的控制類別,只需簡單劃分,即可成類。面向對象編程的開發(fā)步驟大致為:劃分對象→抽象類→將類組織為層次化結構(繼承和合成)→用類與實例進行設計和實現等階段;封裝、繼承和多態(tài)為其主要特征[2]。
中煤科工集團上海檢測中心的1 200 kW電動機試驗臺主要用于變頻器及電動機的特性試驗,采用電動機對拖變頻回饋加載的技術方案[3]。其主電路系統構成為進線柜總受電,一路電源經開關柜、變頻器驅動陪試電動機,另一路經開關柜、調壓器進行試驗電壓調節(jié)后再通過開關柜、啟動柜、試品變頻器(或直接)驅動試品電動機;系統測量控制采用西門子S7-1500可編程控制器、人機交互選用工控機,整個監(jiān)控系統的編程使用西門子博圖集成環(huán)境[4]。
以試驗監(jiān)控系統中的高壓開關為例,分別給出PLC和HMI中面向對象的編程實現。
如圖1所示,建立一個新用戶數據類型(UDT),包含高壓開關所需的狀態(tài)控制操作等接口參數,并添加入項目庫發(fā)布為“udtHMI_HVSC_Control”類型。在博圖中數據類型可在PLC和HMI間共享。
如圖2所示創(chuàng)建新FB塊,在InOut部分添加新發(fā)布“udtHMI_HVSC_Control”類型的變量,編寫代碼實現高壓開關控制狀態(tài)等邏輯,編譯成功后將此FB塊拽入項目庫、發(fā)布為“fbHVSC_Control”類型[5]。
圖2 FB塊
添加“udtHMI_HVSC_Control”類型變量(UDT實例對象),如圖3所示;在功能塊中調用“fbHVSC_Control”類型FB實例,如圖4所示,對具體開關設備對象實現PLC控制。
圖3 PLC變量
圖4 FB實例調用
創(chuàng)建新面板,如圖5所示,放置合適的控件,添加“udtHMI_HVSC_Control”數據類型的新面板屬性,將面板中控件的屬性、事件與新屬性相應元素映射關聯,編譯成功后添入項目庫、發(fā)布為新版本面板。
圖5 面板
添加“udtHMI_HVSC_Control”類型HMI變量、與相應的PLC變量建立通信連接,如圖6所示。調用面板實例、接口屬性關聯HMI變量,如圖7所示,對具體開關設備對象實現HMI監(jiān)控。
圖6 HMI變量
前文針對高壓開關,采用對象封裝技術,在PLC中將UDT和FB塊封裝為控制類,在HMI上將UDT和面板封裝為視圖類,創(chuàng)建類的實例對象在PLC中控制、在HMI上交互、UDT數據對象在HMI與PLC間交換。同樣的方法,將電動機試驗系統中的調壓器、試品啟動器、變頻器、電量測量、溫度測量等對象均分別在PLC、HMI中封裝成相應的類,并添加到項目庫,用面向對象編程,實現后的系統監(jiān)控界面如圖8所示。
圖8視圖中的各個監(jiān)控對象均由類實例化創(chuàng)建,與系統實際設備構成相對應,可動態(tài)顯示設備狀態(tài);同時,每個設備均可通過點擊彈窗進行細節(jié)顯示和操作(彈窗中對象也要應用類實例化),圖9所示的彈窗對象為電量測量,圖10所示為試品啟動柜操作。
圖9 電量測量
該系統投入運行一年來穩(wěn)定可靠,日常試驗運行結果顯示,采用面向對象編程,使PLC及HMI程序邏輯更清晰、可讀性強;依據實際控制設備對程序類對象進行封裝構建,讓用戶在界面操作上更方便;類型庫的使用,使系統維護擴展更便利、適應性和穩(wěn)定性更高,同時也有利于編程風格的標準化、提高程序代碼的重用度及移植性。
圖10 啟動柜操作