自動化編程語言的未來

未來的自動化操作可能使用多種編程語言,對於程序員來說,瞭解哪些語言是可用的、適合於哪些領域,以及如何用其創建可讀、有資源支持的代碼將至關重要。

梯形圖邏輯,是可編程邏輯控制器(PLC)的主要編程語言之一。它簡單易用,並以圖形方式表示繼電器觸點和線圈。不過,問題是:與其它編程語言相比,梯形圖邏輯能在多大程度上滿足當前和未來複雜的自動化需求?答案可能比繼電器和線圈要複雜的多。

梯形圖邏輯的起源

自動化的出現要早於PLC,那時使用繼電器網絡來充當應用的“大腦”。沒有編程人員的角色:只有工程師負責設計電路、電工負責組裝。當將邏輯繪製到圖紙上時,電路被記錄在有點類似梯子的標準結構中,因此被命名為“梯形圖”( 見圖1)。

自動化編程語言的未來

圖 1: 一個簡單的梯形圖邏輯示例。本文圖片來源: Breen 機器自動化服務

當PLC 剛出現時,宣稱它們會為自動化帶來很多好處,但沒有人知道如何對其進行編程。然後有人想到用梯形圖對PLC 進行編程,這樣工業領域就可以利用現有的編程技能。工程師和電工也可以閱讀和理解程序。在很大程度上,自動化設計可以遵循與繼電器相同的模式。

在PLC 之前,繼電器控制需要佔用機櫃的物理空間,而這些機櫃需要花錢購買,接線也需要時間。它們只能實現開/ 關功能——在繼電器邏輯中,無法實現模擬、數學工具或數據收集功能( 除了特殊繼電器中的一些定時和計數功能)。即使是最大、最複雜的自動化系統,也受到繼電器物理特性的限制,因此梯形圖邏輯語言並不需要做太多。

如今,PLC 所用的處理器芯片,所佔用的空間、資金和時間成本比繼電器更少,但能實現的功能更多。另外,PLC 中使用的編程語言也在不斷擴展,以實現不斷增加的功能。現在,梯形圖邏輯可以實現的功能比過去更多。PLC 通常用於模擬控制,至於跟蹤部件數據( 條形碼、測試結果、校準)、控制運動和其它更多任務,梯形圖邏輯仍然是主要語言。

隨著編程語言的發展,自動化變得更加複雜。對PLC 進行編程已成為一種更專業化的職業。對電工來講,閱讀和維護梯形圖邏輯並不十分方便,而且在即將到來的新一代勞動力中,梯形圖邏輯也不是普遍掌握的技能。

“封裝使程序在不同的細節層次上更容易理解,

並使代碼可以複用。”

其它PLC 編程語言

國際電工委員會的工業控制編程標準IEC61131-3,以及個人計算機(PC) 編程也對工業編程產生了重要的影響。這些語言通常被視為梯形圖邏輯的補充,而不是對立面。

由於PLC 逐漸開始流行,工業界發現需要新的標準來指導編程。IEC 委員會通過IEC61131 標準(主要是第三部分(IEC 61131-3)中的語言)來解決這一需求。標準中所定義的可以互換的4種編程語言——梯形圖、功能塊圖、結構化文本和指令列表,還有一種被稱之為順序功能圖的程序組織語言。

每種語言都有自己的優點和缺點,它們可以在某個程序中一起使用,以便更好地支持不同的程序功能。對於哪種語言最適合哪種任務,要根據不同的應用情況進行討論( 見圖 2)。通常情況下,過程或以離散方式運行、或以連續方式運行。自動化也傾向於直接依靠數字量或模擬量輸入輸出(I/O)。

自動化編程語言的未來

圖 2:IEC 61131-3 語言概述以及它們最適合編寫出可讀性程序的領域。

從PC 世界中蛻變而出的自動化語言,往往被用於特殊程序或外設的應用程序。這可能包括與數據庫的接口或為自動化外圍設備的編程,如攝像機和機器人。結構化文本 ( 在 IEC61131 中的定義) 與Pascal 語言非常相似。

IEC 61131 編程標準面世時,Pascal 語言是常用的PC 編程語言。此後,雖然Pascal 語言不再流行,但這是自動化行業向PC 行業借鑑的一個很好的例子。現在,在自動化中行業中,也有些正在應用的PC語言,例如C++、Java和C#。這些語言雖然功能強大,但在自動化領域還沒有得到廣泛的應用。

考慮編程語言的關鍵因素

在將梯形圖邏輯與其它潛在選項進行比較之前,瞭解程序真正需要做什麼,這一點非常重要。

程序必須能夠使自動化運行,雖然幾乎任何語言都能做到,但現實也對其提出了其它要求。這在很大程度上歸結於可讀性。

應該仔細考慮有關編程語言的3個關鍵問題:

A. 程序員或維護技術人員,能否查看代碼並瞭解其功能?

B. 能否快速發現問題,最大限度地減少機器停機時間?

C. 當需要新功能時,是否易於擴展程序?不同語言的特性會影響程序員編寫可讀程序的能力。

以下9 個方面可能會影響編程語言的選擇。

1. 基本知識

梯形圖邏輯應用廣泛,很容易就能找一個能閱讀理解程序的人。雖然某些行業對其它IEC 61131 語言表現出一定的偏好,但並沒有被普遍採用或理解。自動化中使用的PC語言往往非常流行,並且有大量的支持資源,但這些資源並不總能應用到工業領域,這就降低了可能的潛在收益。

2. 內部文檔

每種語言都有一種方法,可以讓程序員用簡單的語言來解釋程序的意圖。在梯形圖邏輯中,這主要是用迴路註釋和標籤( 變量)註釋來完成的,它們適用於簡單的迴路,但對較大的迴路或數學函數的幫助則較小。其它IEC 61131 語言各不相同,但通常很適合記錄它們擅長的內容。例如,結構化文本在數學計算和循環結構文檔方面表現良好。PC 語言往往有更多的功能,可用於內部文檔,有時甚至會自動從源代碼生成文檔,為程序員或技術人員創建手冊,以參考和快速瞭解整體結構。

3. 決策結構和循環

簡單來講,編程歸結為“如果發生這種情況,就那樣去做”。這是一個名為“如果,那麼”的決策結構。在本文討論的所有語言中,此結構都易於使用和理解。但是,如果程序員想重複做同一件事情,梯形圖邏輯對這些結構支持的並不是特別好,通常會導致代碼的可讀性較差。而結構化文本和PC 語言往往更擅長常見的決策和循環結構。

4. 數學

加、減法很容易,在任何語言中都能處理的很好,但當涉及複雜的數學功能時,那又會怎樣呢?梯形圖邏輯支持算術和一些基本函數,如絕對值或平方根,但如果計算涉及的內容更多,它們的可讀性往往較低。從視覺效果上,註釋與它們記錄的內容是分開的,而且重複執行數學運算並不是特別好,因為循環功能並不完美。結構化文本和PC 語言功能往往更強大,因為它具有更強大的數學功能。PC 語言提供的高級數學函數,幾乎可以用於任何目的,還可打包,以方便使用。

5. 可視性

閱讀一個不熟悉的程序,就像通過紙管閱讀一本探險小說,不得不在書的不同部分之間來回切換,因此一次只能看到頁面的一部分。適合屏幕顯示的代碼量,可能會影響程序員判斷程序功能的執行和方法。通常情況下,屏幕上只能同時顯示1 到5 行的梯形邏輯。它的圖形性質使其信息密度很小,程序員難以“看到”整個程序。而順序功能圖,雖然也是圖形化的,由於具有較高級的屬性,因此可以在一定程度上避免這個問題,就像一本帶有目錄的短篇小說。基於文本的語言( 結構化文本和PC 語言)信息量往往更密集,在屏幕上一次可以顯示30-50 行代碼。

6. 封裝、代碼複用

有什麼措施可以應對不斷增加的複雜性?開車時,司機並不需要考慮點火時間、牽引力控制或發動機冷卻策略。所有其它無關的東西都被抽象掉,自成一體、自我管理。在編程中,這被稱為“封裝”。封裝的好處,不僅僅是讓程序在不同的細節層次上更容易理解;而且這也意味著代碼可以複用。

如果根據程序設計,用機器來計算一天中每個小時的整體設備效率,則可以對其進行編程:計算一次整體設備效率,然後每小時複用一次。梯形圖邏輯和其它IEC 61131 語言,都可以很好地做到這一點。PC 語言增加了面向對象功能,這使其變得更強大。IEC 61131 提供了面向對象的規定,但PLC 製造商並不總是執行這些規定,這意味著程序員可能無法使用它們。

7. 庫文件

庫文件允許用戶通過將經封裝、測試的代碼添加到程序中,使代碼複用提升到一個新的水平。仍然用汽車作例子,雖然用戶不知道引擎蓋下有什麼部件,但仍然可以駕駛它。梯形圖邏輯和IEC 語言對類似功能的支持有限。PC 語言有很多庫文件支持,而且通常是免費的。並不是為了與梯形圖邏輯一較高下,但它們確實是經常適用於梯形圖邏輯不太適用的領域,如數學、視覺檢查和數據處理。

8. 模擬與數字

在許多方面, 模擬與數字參數有點類似於數學參數。梯形圖邏輯在數字信號和信息方面做得非常好, 但在模擬方面卻不太擅長。功能塊是另外一種 IEC61131 語言,它在模擬信號方面做得非常好,但在數字信號方面卻不太擅長。結構化文本和PC語言,能很好地處理這些,但由於它們更靈活,因此程序員需要更好地組織代碼以提高可讀性。

9. 確定性

在自動化應用中,按照循環週期( 例如,每15 毫秒) 讀取輸入、執行程序和寫入輸出,對控制器(PLC、PC) 很重要。這就是所謂的確定性。梯形圖邏輯和所有 IEC 61131 語言都是確定性的。PC 語言各不相同。例如,C++ 可以是確定性的,但像 Java和 C# 這樣的高級語言,通常不具有確定性。

最好的選擇是什麼

那麼梯形圖邏輯與其它邏輯是如何匹配的呢?它仍然受到離散自動化行業的青睞,在這些行業中,數字輸入和輸出是常態。另一方面,在模擬輸入和輸出占主導地位的過程工業,則更多的使用功能塊語言,來處理這部分代碼。

當然,行業偏好只由上述因素之一,技術支持也很重要。現有的技術支持,在很大程度上是歷史上適用規範的體現,因為最近的歷史決定了當今的勞動力經驗。由於梯形圖邏輯長期以來被廣泛採用,所以使用不同的編程語言可能看起來像是一個未卜的前景。

大量新畢業的大學生有基於文本的語言經驗,但並沒有梯形圖邏輯的經驗。隨著勞動力的更新換代,並且隨著更多支持文件的出現,行業偏好可能會傾向於基於文本的語言。未來,自動化操作很可能會包括多種語言。只用一種語言思考問題,可能會對實現這些目標產生不利影響。

PLC 將使用一種或多種語言,眾多外圍設備也是如此。對於程序員來說,瞭解哪些語言是可用的、哪種語言適合於哪些領域,以及如何用其創建可讀、有資源支持的代碼將至關重要。

本文關鍵概念:

■梯形圖邏輯更多受到離散廠商的青睞。

■對於更復雜的應用程序,IEC 61131-3和PC編程語言可能更適用。

■任何應用程序都可能涉及多種編程語言,因此儘可能多瞭解幾種語言大有裨益。

思考一下:

在梯形圖邏輯和其它編程語言中做選擇時,哪些因素對您的實施最重要?​

相關推薦

推薦中...