愛伊米

PLC面向物件程式設計和梯形圖邏輯,到底誰更實用一些?

在工業自動化領域,梯形圖邏輯仍然是最常用的程式語言之一,但對於更加複雜的控制物件,面向物件程式設計不失為一種高效率的方式。下面先來談談面向物件程式設計:

面向物件程式設計是計算機高階語言的一種先進的程式設計模式,在工業控制系統的PLC程式中也可以採用這種設計思想,雖然我們無法實現面向物件的很多優秀特點如“繼承”,甚至於它根本就不具備面向物件程式語言的特點,但面向物件程式設計的基本概念就是類和類的例項(即物件),我們只需要使用這種概念就可以了。在計算機程式設計中我們需要把一些事物抽象和歸納,才能編寫類,而在工業控制系統中,控制物件如:電機,閥等等是很明顯的控制類別,不需要抽象就可以很明顯的針對它們編寫類,以下將會用到西門子的Step7程式語言和施奈德的Unity 程式語言來講解PLC的面向物件程式設計。

一、實現方式

面向物件程式設計在Step7中使用功能塊(即FB)程式設計,一談到此大家就會想到西門子提出的模組化程式設計,不錯,就是這個模組化程式設計,但西門子提出的模組化、背景資料塊、多重背景等名詞並不能讓大家很明白的理解和使用這種優秀的設計理念。

如果大家從面向物件程式設計的角度去理解,則可以很好的理解這種設計模式。“FB塊”被看 成“類”,它可以被看成是對相似的控制物件的程式碼歸納,如對MM440的變頻器可以編寫FB塊:MtrMM440,這在面向物件程式設計中稱為“類”,當需要 程式設計控制具體的電機時,可以給它分配一個背景DB塊,在面向物件程式設計中稱為類的實現(即建立類的例項:物件),當需要控制多個電機時,可以分配不同的背景 DB到這個FB塊,即建立類的多個例項。Step7中有另外一種程式塊,即FC塊,以FC塊為主的程式設計在西門子中稱為結構化程式設計,這也可以類比於計算機程式設計中的面向過程程式設計,即純粹以函式為主體的程式設計。

施奈德的Unity軟體程式設計可以更好的理解面向物件程式設計。它的DFB定義中包含輸入/輸出引數,私有/共有變數,以及程式碼實現,而這正是計算機的面向物件 程式設計中“類”的基本元素,而建立類的例項(物件)就像建立普通的“布林”變數一樣,只需在“Function Blocks”中定義這種“類”的變數即可。

Step7和Unity都可以採用面向過程和麵向物件程式設計方式,這兩種程式設計方式的區別類似於計算機高階語言中的C語言和C++語言程式設計的區別。

以下的講解將會把Step7中的FB和Unity中的DFB稱為“類”,Step7中的FB+背景DB以及Unity中DFB的例項稱為“物件”。

二、面對物件程式設計架構

以上講解的是實現細節,而程式設計思想是建立在程式架構上的,不是某個區域性使用了面向物件方式,則可以稱之為這種程式設計就是面向物件程式設計。這種程式設計需要從以下方面著手:

1、 電路設計的結構化。

這裡主要以自動線為主介紹,對於單機機床可以是它的簡化結構:

、自動線層:這是最高層次,它擁有一個主PLC,對屬於它下面的各區域控制、工程層:擁有獨立的配送電系統,但沒有PLC,只有分散式模組,由自動線控制。顧名思義,它有著較大的獨立性,可以作為一個單獨的工程專案設計和製造,當自動線比較小時,可以省略該層次。

、功能組層:根據工藝劃分,將實現某一個工藝功能的區段裝置劃分為一個功能組,它隸屬於工程層,當工程層被省略時,隸屬於自動線層。面向物件程式設計並不一定要求使用以上的結構,但好的電氣結構更利於面向物件程式設計。

2、 任何控制物件邏輯都在“類”中實現。

為了做到這點,必須分析與控制物件相關的資訊,譬如,對於一個電機,有以下相關的資訊需要考慮:

輸入資訊:

、電路保護資訊,如電機的空氣開關,熱繼電器等。

、功能保護資訊,如運動電機的限位開關,風機的風壓開關,油泵的油位開關等。

、啟動和終止條件,以上的電路保護和功能保護都可能導致電機運轉終止,復位也可能導致重啟動,但這裡的條件指的是正常執行的啟動和終止條件,譬如順序控制的流程步。

、控制模式:如手動和自動等。

、故障復位:透過復位資訊,重新啟動。

輸出資訊:

、控制輸出,如控制電機的主接觸器。

、狀態資訊輸出

、故障輸出

狀態儲存資訊:

用於程式碼實現的中間變數以及可以被人機介面讀出的狀態變數等。把以上資訊都整合到一個類中,並儘量使類的引數標準化。不過,同高級程式語言還是曾在一些差別,針對Step7,應該遵循的標準是:程式結構由FC實現,物件控制由FB實現,如下的一種結構體系(其電氣結構來自上面的介紹):這只不過是一個粗略的PLC程式架構體系,好的架構應該更完善和科學。

3、 規劃好資料結構

資料結構的定義相當重要,並儘量統一這些結構,不要顧慮儲存空間,當今的PLC記憶體足以容納大量的資料。說明一點的是在Step7中儘量不要在類的外部定義資料結構(UDT),而是在類裡面定義,雖然會造成不同類中同一結構的重複性定義,但卻提高了類的獨立性。

在接下來的篇幅中,我們來對比一下這兩種程式設計方式:

面向物件程式設計的優點

面向物件程式設計的優點與梯形圖邏輯相比,面向物件程式設計有以下優點 :

• 程式碼可移植,易於重複使用 ;

• 易於使用數學函式、迴圈等 ;

• 幾乎在每一門計算機程式設計課程中,都會教授面向物件程式設計 ;

• 程式碼可以在各種硬體平臺上執行。

要掌握面向物件程式設計,首先需要理解物件的概念及其使用。一旦物件或模組類編寫完成, 就很容易透過多次呼叫來實現重複利用。例如,建立一個物件來控制電機,用來處理所有輸入、輸出和故障。當需要時,可以透過多次例項化 該單一控制物件,來控制多個電機。這就是所謂的按需例項化。當需要控制多個電動機時, 可以多次使用該單個物體。它在需要時呼叫,並在使用時建立例項。

每個電機的每個例項都有自己的特性,如電機停機、電機執行、電機轉速、電機過載 等。大多數程式設計工作都是在首次建立物件時完成的。這是一種與梯形邏輯不同的思維方式,而且更強大,因為一旦構建了一個物件,它就很容易使用和重用。面向物件程式設計更易於執行復雜的數學函式、迴圈計算、陣列和巢狀子例程。幾乎每一門計算機程式設計——無論是高中、大學、還是網路上的教程,都會教授這方面的知識。建立的程式碼是可移植的,可以在各種硬體平臺上執行。

“梯形圖邏輯遵循繼電器控制 系統中使用的梯形電氣圖的格 式,大多數人都可以快速學習 並掌握它。”

面向物件程式設計的缺點

不過,與梯形圖邏輯相比,面向物件程式設計有以下缺點 :

• 費用更高 ;

• 更陡峭的學習曲線 ;

• 對於維護人員來說,故障排除不是特別 容易 ;

• 在將原始碼上傳到處理器之前,通常需要編譯。

與梯形圖邏輯相比,面向物件程式設計往往需要更多的記憶體和更強的處理能力,因此費用就更高。面向物件程式語言的學習時間可能更長。很可能需要課堂學習,需要大量的時間、實踐、測試和應用來掌握核心概念。程式設計人員必須經常研究面向物件程式設計,以便使用跟蹤器來追蹤程式碼,或偵錯程式來除錯邏輯。使用這種型別的高階程式設計,可能很難實現實時線上監視功能。

在將原始碼下載到控制器之前,必須對其進行編譯。通常,原始碼並不儲存在處理器記憶體中。這意味著必須小心備份原始碼,因為編譯過的程式碼通常是不可編輯的。使用面向物件程式設計,庫檔案必須與在編譯過程中使用的其它資源相連線。如果不瞭解連線和資源,將很難使程式執行。

梯形圖邏輯的優勢

梯形圖邏輯是一種簡單且自文件化的編碼方法,甚至有人懷疑它是否是一種程式語言。它遵循繼電器控制系統中使用的梯形電氣圖的格式,大多數人都可以快速學習並掌握它。它是在過去的數十年來唯一在機器自動化領域中大規模應用的程式語言,並且在可預見的將來, 仍然是自動化行業中使用的主要程式語言之一。

PLC面向物件程式設計和梯形圖邏輯,到底誰更實用一些?

隨著時間的推移,具有不同背景的人從不同領域進入該行業,各種程式語言被引入工業自動化工具箱中。其中包括功能塊程式設計、結構化文字、狀態程式設計和順序功能圖。這 4 種程式語言和梯形圖邏輯,構成了IEC61131-3 國際電工委員會 (IEC) 的標準程式語言。

IEC61131 背後的邏輯是 :如果每個供應商都遵循該標準,那麼至少在某種程度上,一個人只需學習這 5 種程式語言,就可以輕鬆地在來自不同供應商提供的平臺之間進行切換。然而,事實卻並非如此。

基本梯形圖邏輯(如使用繼電器觸點和線圈)也是一樣的 ;但是在程式設計時,必須學習每個供應商的語法和使用者體驗,以及如何使用程式設計平臺的詳細資訊。儘管缺乏標準化,但與面向物件程式設計相比,梯形圖邏輯有以下優勢 :

• 非常適合機器和過程控制 ;

• 由於本質上是自文件,因此更易於理解;

• 易於對受控系統進行故障排除 ;

• 易於除錯 ;

• 原始碼通常可以儲存在處理器中。

梯形圖邏輯非常適合於機器和過程控制, 特別是具有大量離散輸入、輸出(I/O)的自動化系統。多年來,梯形圖邏輯也在不斷改進,以處理模擬量I/O,使其更適合於眾多的過程控制應用。

與機器控制應用相比,過程應用中模擬量 I/O 的比例往往較高。

因為梯形圖邏輯比面向物件程式設計更易於使用,因此眾多熟練的技術人員和工程人員可以快速學習梯形圖邏輯。邏輯高度系統化、有序化,再加上其具有自文件的性質,使其更易於理解和掌握。在啟動某個裝置之前,每行程式碼都必須為真。如果有 5 個電機需要控制,那麼至少需要 5行程式碼,實現了高度簡化。

“梯形圖邏輯原始碼和描述符通常儲存在控制器中,無需訪問原始碼,這可以消除程式設計師在試圖理解編譯程式所遭受的挫敗。”

更易於學習

對電氣工程師和維護人員來講,梯形圖邏輯非常直觀。雖然梯形圖邏輯需要有與面向物件程式設計不同的思維方式,但透過學習可以快速掌握,並且理解他人編寫的程式碼所需的時間也較少。邏輯何時為真,何時為假,一清二楚。即使程式設計經驗有限的人,也很容易弄清楚開或關、線圈通電、比較變數和常見的數學函式。

PLC面向物件程式設計和梯形圖邏輯,到底誰更實用一些?

它簡單易用,簡化了故障排除和除錯工作。監視邏輯時,可以很容易明白目前正在發生的工況。無需軟體學位或高階程式設計技能。有了梯形圖邏輯,維護人員和工程人員就很容易跟蹤流程,瞭解正在發生的事情。可以將梯形圖邏輯看作真值表。如果左邊的邏輯為真,則右側的邏輯就會啟動。

梯形圖邏輯原始碼和描述符,通常被儲存在控制器中。這可以消除程式設計師在試圖理解編譯程式而無法訪問原始碼時所遭受的挫敗,面向物件程式設計也是如此。

然而,與面向物件程式設計相比,梯形圖邏輯也有如下缺點 :

• 計算機程式設計師和 IT人員對梯形圖邏輯不熟悉 ;

• 難於進行數學函式、文字和資料處理 ;

• 依賴於掃描時間 ;

• 需要專門的硬體來執行, 如可程式設計邏輯控制器 (PLC) 。

梯形圖邏輯是計算機程式設計師和IT人員所不熟悉的一種符號語言,他們在學校裡並沒有學習這種語言。在梯形圖邏輯中處理數學函式、文字字串和資料可能會很困難,這主要是因為梯形圖邏輯最初並不是為了處理這些函式而設計的。

依賴掃描時間

梯形圖邏輯也依賴於掃描時間。較大的程式,需要更長的時間來掃描和處理邏輯。執行梯形 圖邏輯時,讀取輸入、掃描邏輯、 更新資料表和輸出、執行通訊, 然後迴圈重複。可以實現中斷和其它程式設計技術等功能,以確保更快地執行某些邏輯。

儘管配置了梯形圖邏輯的基於軟體的PLC可以在PC上執行, 但通常硬體 ( 如 PLC)要與程式設計軟體相匹配,兩者最好都是從同一個供應商處購買的。這樣就可以確保相容性,但如果想要更換供應商,則不是特別方便。

除了比較梯形圖邏輯和麵向物件程式設計的利弊外,使用者還應該評估這些程式語言在將要部署的環境中的使用情況。如果工廠或設施已實現了梯形圖邏輯的標準化,那麼即使面向物件程式設計更適合於該應用,也不鼓勵將梯形圖邏輯更換為 面向物件程式設計。隨著面向物件程式設計的使用日益增多,預計在未來幾十年內,它將與梯形圖邏輯共存。一個有遠見的自動化專業人士,最好要掌握這兩種語言。

文章來源:網路