西門子博途與CoDeSys (IEC61131-3)的異同點

PLC,是當今自動化領域的核心,雖然已經推出了幾十年,這幾十年科學技術也是飛速發展,但PLC 如同兵器中的迫擊炮一樣,以其可靠,耐用,傲視群雄,依然沒有其他替代品能撼動其地位。但PLC是不同廠家發展而來,因此,從編程軟體到指令甚至下載線,都是五花八門,這給使用PLC 的工程技術人員帶來了很大麻煩,因此標準化是其必然之路,然而,PLC 的標準化之路也是烽煙四起,最終IEC61131-3 標準一統江湖,成為工控界的標準,然而,它也只是一個標準而已!

CoDeSys 就在這種背景下誕生,它是PLC的一個完整開發環境,不依賴硬體,還支持運動控制。它被譽為工控界的安卓,開放,完全遵守IEC61131-3標準。ABB 施耐德 倫茨 以及國內的和利時,匯川都推出了以此為標準的PLC。

西門子,作為PLC界的霸主,自然對標準不屑一顧,一度想有自己的標準,然而,世界潮流,浩浩湯湯,順之者興逆之者亡,世界發展趨勢,標準化是必然,因此,世界各大主流PLC 都在向標準靠齊,但還是稍微有區別。下面就介紹下兩者的不同。

介紹之前,先看一下兩者的界面。這裡,以施耐德的Somachine 軟體來 代表CoDeSys。圖中描述的是一個簡單的啟保停電路。

Somachine

博途

PLC 說到底就是編程,而作為工程技術人員也是使用其編程功能,以此,所謂的不同,直觀開來就是編程方式的不同。

1) DB( 數據塊)

數據塊是博途中的重要概念,數據塊的大小與定義的數據類型和個數有關。而在IEC61131-3中是沒有數據塊的概念的。它只有一片數據區,可以自由定義變數分配地址。

2) FB FC

這兩者之間的區別,個人認為是博途和IEC61131-3 最大的區別。

IEC61131-3 定義了三種 程序類型 POU(程序組織單元) FB (功能塊) FC(功能 )

POU 可以理解為子程序,類似博途的OB,但POU 必須在 MASK(任務)中調用才能被PLC掃描。否則,不起作用

POU 可以調用FB 和FC ,反之則不行。同樣,FB可以調用FC,反之也不行。

FB 指功能塊,它是由多個輸入和輸出,輸入輸出的數量和類型 沒有限制。

FC 指功能也稱之為函數,它是由多個輸入和一個輸出組成。輸入的數量和類型沒限制,但輸出只有一個。所以稱之為函數。 因為函數是只有一個輸出的。比如 Y=AX^2+B 。

在博途中,功能和功能塊的區別是一個有存儲區,另外一個沒有存儲區。這和IEC61131-3 是截然不同的。在IEC61131-3中,存儲是由變數實現的,如果變數定義成RETAIN 型就掉電存儲,否則清零。

IEC61131-3中調用功能塊會分配一個實例,一般我們會把它理解成功能塊型變數。類似於博途中的背景數據塊。

3) 系統功能

在博途中,各種系統功能是做成函數,讓用戶直接調用,這點類似日系PLC. 而在CoDeSys中,所有的功能都是開放給用戶,讓用戶自己完成,這點就是安卓的風格。

比如上電第一次掃描,博途直接做成OB ,直接調用即可。CoDeSys需要調用系統函數來完成。各種秒脈衝,博途也是在系統和時鐘存儲器中設置,然後調用%M0.0 等特殊變數。而在CoDeSys中,仍然需要調用函數來完成。

4)漢化

這個毫無疑問,在界面上,博途的漢化做的不錯。CoDeSys 還是很欠缺的。不過 兩者都支持中文變數,這個是個不錯的功能。再也不用 拿漢語拼音來冒充英文了,對程序的可讀性和維護性是很大的幫助。不過在施耐德的Somachine中默認是不支持的,需要在選項中勾選支持Unicode 字元,才能支持中文變數,否則編譯會報錯的

你可能會喜歡