請問有人用物件導向OOP寫過PLC程式嗎?目前各大PLC廠家對OOP的支援度如何?如三菱、Omron、西門子等。
小弟目前用TwinCAT 3 PLC寫IEC-61131-3 的ST語言。怕如果用太新的OOP功能(如interface, method, etc.),以後不容易porting到別家PLC...
感謝各位。
==補充說明==
#
OOP
= Object-oriented programing
#
物件導向程式設計
舉個例子,假設機台有很多不同制動器(伺服、步進、氣壓鋼、油壓缸...)。
一般做法是每個制動器都寫一個檔案。或用一堆switch case去區分它是哪個品牌。但這會造成程式越來越雜亂。尤其是新增功能或換馬達規格的時候,程式就會越長越肥或越改越亂。
然而對機台控制的邏輯來說,制動器的功能其實大同小異,只是從A走到B點而已。
那我們就化繁為簡,定義一個通用、抽象的制動器「類別」模版,它有「屬性」、「行為」和操作「介面」等資訊。
比如總行程、速度、當下位置、狀態、要傳什麼指令給它等等。
然後根據「類別」這個空白模板,把實際的規格填進去,創造不同的實體「物件」(真的制動器)
所以我們寫程式時,只需知道它屬於制動器「類別」,操作「介面」長怎樣,而不需知道太多細節(廠牌、規格、型號等)
好處是以後某個馬達停產、缺料,只要根據「類別」模版再創一個物件。上層邏輯都不用變。
長期來看,能省下很多開發心力。模組化的設計,也比較好維護,避免很多牽一髮而動全身的麻煩。
然而,若只是幾行的小程式,就不用考慮OOP了。幾個if else就能解決的問題,殺雞焉用牛刀。
以上是我目前寫OOP的心得。
主要來自之前C++的經驗。
林樹人
2020-03-12 10:03:20
呂俊毅
2020-03-12 10:04:42
Bill Lee
2020-03-12 10:22:47
Lewis Lee
2020-03-12 10:47:22
楊春生
2020-03-12 11:32:20
Jerry Chang
2020-03-12 13:10:58
陳炳宏
2020-03-12 13:52:59
Jerry Chang
2020-03-12 14:20:30
林樹人
2020-03-12 14:24:23
呂韋融
2020-03-12 15:40:22
楊春生
2020-03-12 15:56:38
楊春生
2020-03-12 15:58:59
楊春生
2020-03-12 16:03:19
呂韋融
2020-03-12 16:55:52
呂韋融
2020-03-12 16:56:40
Jerry Chen
2020-03-12 17:42:50
Sam Yang
2020-03-12 18:05:48
林大師
2020-03-12 19:02:00
蘇昱安
2020-03-12 19:28:05
吳志二
2020-03-12 19:37:33
劉昊玹
2020-03-12 20:10:51
楊岳庭
2020-03-12 22:24:15
Chou-Cheng Kuo
2020-03-12 22:32:22
Neo Zhang
2020-03-13 12:18:48
賴聲寬
2020-03-14 09:03:13