歐洲人厲害的在於非常有組織地從事工程活動, 個人感受到的一個例子有CANopen的規範, 結合長年累積的運動控制經驗集結成一個標準; 又, 工業PLC上面也有一個例子, 那就是IEC61131-3的自動化程式語言的標準。
在這裡節錄一篇簡單的介紹,分享給大家。這個標準集結了7家自動化的公司的努力,樹立了此標準規範,讓書同文,車同軌,整體提升了工作的效率。
它的基本組成,整理如圖所示,主要分成兩個部份:
1. Common Elements 共通項目
2. Programming Languages 程式語言
共通項目(Common Elements )好比一個社會的基礎建設,如圖所示此處包含了資料的型別, 變數, 組態, 程式容納器, 順序功能圖。
●資料型別: 如布林型, 整數型, 浮點數, 位元組(Byte), Word, 日期, 時間, 字串等。也可以自定型別稱為derived data type衍生型。
●變數: 只分配給特定的硬體位址,如I/O, 目的為提供程式彈性, 較不會依存於某個硬體。變數的有效範圍通常在局部, 所以同一個名字可以出現在別的單元, 按實際為不相同的東西。如果想要把變數定義為全域,就必須特別以VAR_GLOBAL來宣告指定。在開機或冷啟動時可以指定參數的初始值以利操作。
●組態: 就好比一個完整的控制器,它被用來兜起所有的必要的資源,任務(tasks),以完成某一個獨立的控制任務。一個組態中典型地包含了資源(如記憶體位址, I/O)還有處理程式的部份。處理程式也可以多工也就是含有複數個任務(tasks)。各個任務可以週期性地執行,也可以用事件觸發的方式啟動。程式包含了許多互動的functions(函式)或Function Block(功能方塊),程式可以用本標準規範的任何語言撰寫.
●程式容納器(POU): 具體指的是程式, 功能方塊(Function Blocks), 功能(Functions); 總括來講為Program Organization Unit簡稱POU。功能包函預先定義的功能例如數學運算,三角函式之類等等,也可由使用者自己定義。然後 功能方塊(FB),則類似電子電路的IC的概念,具有特定的功能完成一些特殊的任務; 內函有資料與運算法則。FB與前述的功能(functions)最大的不同的是FB內可以處理過去時間的資料,或者說具有一定的記憶功能; FB具有獨立性,所以程式容易區隔因此也較容易維護。複雜的功能都包在FB裡面,讓其他的人撰寫程式也可以比較簡化程式的複雜度。 一個例子是PID回路的運算,就是一個典型的FB的擔任工作,一旦此FB建立就可以重覆應用在其他程式,甚至其他專案中。FB通常都藉由輸入變數與輸出變數來與FB之外的世界互動。
●SFC順序功能表: SFC主要以圖型的型態描述一個控制程式的順序行為。它的原始用圖乃是圖形化的程式文件描述標準。但轉變為圖形化程式寫作的標準。SFC讓程式更具有結構提供更優量的概觀(overview)。它主要包函步驟(Steps),而與各步驟連結有行動方案(Actions),然後各個步驟之間具有過度(Transition)。幾本上個個步驟都對應到控制系統的某狀態,而過度期則可能為某個條件或事件,一旦發生則會由上個步驟遷移到次個步驟。也容許並行運作的SFC,例如一個負責主控,另一個負責監督狀態。
程式語言(Programming Languages)
此國際標準定義了四種語言, 工程師可以各取所需,以自己喜愛的語言開發:
●指令 Instruction List, IL
●結構化語言 Structured Text, ST
●階梯圖 Ladder Diagram, LD
●功能方塊圖 Function Block Diagram, FBD
前兩種屬於純文字型,後兩種則為圖形化介面型。