概念、技術、演進和優勢——一文讓你了解面對的工業編程 (OOIP)

控制工程中文版 發佈 2020-02-25T13:11:30+00:00

面向對象編程:• 包括全套計算機科學領域面向對象的編程功能 ;• 主要基於文本 ;• 通常是受過高等教育的計算機科學家的專長。

工廠和設備是由對象組裝而成的,因此控制體系結構也應如此。新工具可幫助工業編程人員,提高面向對象編程的交付能力,而不會額外增加複雜性。

新的面向對象的工業編程 (OOIP) 技術,可提高面向對象編程(OOP)的交付能力,同時保持工業控制應用程式所需的易用性和可靠性。工業控制程序需要由廣大用戶開發和維護,這推動了面向圖形語言(如梯形邏輯)的廣泛使用,而對高可靠性的需求,則促使控制工程師在採用某種最新的計算機技術之前,必須確保其已經成熟(例如符號尋址和數據結構,在進入主流工業控制系統之前,都已經成熟使用 20 年了)。本文將展示面向對象的工業編程在顯著提高生產率的同時,是如何滿足上述兩個需求的。


在1990年代,計算機科學家開始使用面向對象編程,但是由於它的複雜性和缺乏支持的圖形化語言環境,使其在工業控制中的應用一直很緩慢。工業軟體供應商開始著手解決這些問題,使工業控制領域可以受益於面向對象編程所帶來的諸多優勢,並且不會增加複雜性。


工程師可以通過了解和掌握一些面向對象編程技術來從中獲益。對於控制基於對象的物理世界,使用對象進行編程是一種自然且直觀的技術。


了解面向對象的工業編程


關於面向對象編程的解釋,工業控制領域和計算機科學往往有所不同。要了解面向對象的工業編程,請務必注意其與面向對象編程的主要區別。


面向對象編程 :

• 包括全套計算機科學領域面向對象的編程功能 ;

• 主要基於文本 ;

• 通常是受過高等教育的計算機科學家的專長。


面向對象的工業編程 :

• 能夠使用封裝、實例化和抽象的概念,將功能塊(FB)實例化為其它功能塊 ;

• 主要基於圖形 ;

• 只需很少的培訓,控制工程師和工廠技術人員就可以使用。


面向對象工業編程的演進


在工業自動化的早期,編程是扁平的。編程人員讀取輸入,縮放輸入,根據輸入值生成警報,執行控制算法以生成輸出,在輸出上執行警報,縮放輸出並使用存儲器映射的輸入 / 輸出(I/O)寫入輸出值(如圖 1 所示)。後來的功能允許合併一些重複的代碼,但是過程仍然是扁平化的。



當控制軟體開始執行多個任務時,工業編程人員採用了集中式的面向任務的方法。這種方法將操作劃分為單獨的任務,然後由一系列集中過程,對程序中的標籤執行單獨的操作活動。例如,第一個任務讀取所有輸入,然後是縮放所有輸入,接著在處理後的數據上進行警報活動,以此類推(如圖 2 所示)。


圖 2 :面向任務的編程風格,將操作劃分為多個單獨的任務,然後由一系列集中處理過程,對程序中的標籤單獨執行操作活動。


相較於扁平化的方法,這種集中式的面向任務的編程方法有很大的進步,但是當需要向程序添加新功能時,它需要修改每個任務。另外,面向任務的編程在查看信息流和理解控制代碼中的因果關係時,會變得比較困難。這些缺點使編程人員設計困難,工廠技術人員維護也困難,特別是對於在面向對象編程中學習、成長的年輕工程師而言更是如此,因為他們不太適應面向任務的編程。


由於工業控制工廠由諸如馬達、輸送機、閥門以及傳感器等對象組成,因此面向對象編程是工業控制的自然選擇,甚至可能比為其創建面向對象編程的計算機編程應用還要多。


面向對象的工業編程與面向任務的過程不同(如圖 3 所示),其功能沒有分散在許多任務中,而是包含在「對象」內部。面向對象的工業編程可以將控制的對象設計為與工廠中的對象相對應,從而可以使控制程序看起來非常類似於工廠配置(如圖 3 所示)。使用正確的控制圖編輯器,工廠設計和控制圖可以相同。



為了實現面向對象的工業編程,控制工程師需要掌握兩個關鍵的面向對象編程概念 :封裝和實例化。


封裝


封裝允許創建對象,包含控制其相應工廠對象所需的所有功能和數據。用戶不需要了解或理解底層實現 ;他們只是使用它。這與汽車發動機很類似。發動機封裝了活塞、閥門、軸承和許多其它部件,功能相當複雜。但是駕駛員不需要知道發動機的工作原理。他們只需要了解其接口並與之交互 :點火器和油門踏板。


圖 4 左下方的模擬輸入模塊(圖 5 進行了詳細說明)展示了面向對象的工業編程封裝。該模塊封裝了與模擬輸入有關的所有複雜的功能,包括縮放、鉗位、濾波、指令覆蓋、變化率報警和高 /低報警。編程人員只需關心模塊的配置(左端以 _CI 結尾的輸入)和程序輸出(輸出 _PO 和優化輸出 _PO)。編程人員不需要了解或擔心潛在的複雜性。

圖 5 :該模擬輸入功能塊封裝了模擬輸入的複雜的功能,包括縮放、鉗位、濾波、信號覆蓋、變化率報警和高 / 低報警。


實例化


實例化是聲明和使用一個對象的多個副本而無需製作該對象副本的功能。在 IEC61131-3 程式語言中,這些對象被稱為「功能塊」。功能塊,就像整數或實數一樣,是一種數據類型。


與聲明整數實例的方式相同,通過對其進行聲明來創建功能塊的「 實 例 」。在 後 台, 編 譯 器 用為整數實例分配內存相同的方式,為功能塊每個實例中的變量分配唯一的內存。就像定義整數的數量不受限制(最大為存儲容量)一樣,特定功能塊實例的聲明也不受數量的限制。圖6顯示了在 Codesys軟體連續功能圖(CFC)編輯器中,如何實例化和使用對象。


圖 6 :該圖顯示了如何創建和實例化功能塊(在 CFC 編輯器的聲明區域中)以及如何調用該功能塊的實例(在 CFC 編輯器的實現區域中)的機制。


例如,如圖 7 所示,一輛 1964 年的「野馬」是車輛「類型」(同樣,整數是數據的「類型」)。在創建它的實例之前,沒有人可以驅動該「野馬」類型(同樣,除非聲明了整數,否則無法使用它)。指示汽車裝配線創建「野馬」實例的工作指令,類似於指示編譯器分配整數內存的聲明。這樣,車道中的「野馬」就變成了該數據類型的實例。



用戶可以聲明多個整數(並且編譯器可以為其分配內存),工廠可以製造多個「野馬」實例。通過這種方式,鄰居擁有的「野馬」,可以完全獨立於之前創建的野馬。該功能被封裝在對象的每個實例中(儘管存在潛在的量子糾纏)。


面向對象工業編程的優勢


工具供應商開始將面向對象的工業編程所具有的優勢提供給控制工程師。為了利用這些優勢,控制工程師需要掌握封裝和實例化。控制工程師可以將工廠對象的功能封裝到與之對應的控制對象中,然後實例化這些對象以創建映射工廠設計的控制設計。


面向對象的工業編程使設計易於構建,工廠技術人員易於排除故障,並且便於未來的控制工程師進行維護。正如在工業控制中採用了通用軟體的進步一樣,面向對象的工業編程也遵循了相同的模式,並且正在成為控制工程的未來。


關鍵概念:

■ 面向對象的工業編程所帶來的優勢。

■ 基於任務的控制不同於基於對象的控制。


思考一下:

易於更新和重用的代碼是否值得學習?歡迎留言討論。

- end -

本文來自於《控制工程中文版》(CONTROL ENGINEERING China )2020年01-02月刊《封面故事》欄目,原標題為:用於工業控制的面向對象編程

關鍵字: