2016年5月1日 星期日

Arduino 另類應用: PLC

Arduino 應該不用特別介紹了,大概已經到了大人小孩人手一片的程度,據說坊間還有開設給小孩上的才藝班。不過今天要介紹的應用除了工控圈的人之外應該很少人知道



Arduino 變成 PLC 這種玩法在 20 年前台灣就有人嘗試過:


用的是當時很紅,現在已經有點沒落的 8051,不像現在每家 PLC 都有提供圖形界面的 Ladder 編輯器,當時只能用純文字的方式寫程式,也就是輸入 LD、LDI、ANI...這些很像組合語言的指令,不過當時用 PE2 寫程式比起用程式書寫器算是很大的進步了。

Arduino(或任何一種 open hardware) 當 PLC 的挑戰


以下算小弟個人見解,歡迎各方先進指正

Software or hardware Timer, Counter?


有用過任何一種知名品牌 PLC 的人,都會知道 PLC 上面隨便都是幾百個 timer 跟 counter,以 timer 來說,精度從 1ms - 100ms 不等。今天如果是用通用型 MCU/CPU 來做 PLC,通用型 PLC 上面的 hardware timer 絕對沒有這麼多,所以只能用軟體模擬。以台灣學校最常教的 Mitsubishi FX 系列來說,FX3U scan time 已經做到小於 1ms,所以可想而知要把 ladder 執行的這麼快,timer 一大堆又要維持精準用純軟體有多麼困難,除非你的 ladder editor 強到可以編譯成該 MCU 的組合語言,否則你要跟真正的商用 PLC 拼難度是很高的。

另外,商用 PLC 還有 high speed counter,這個用軟體來做就更不可能了,因為輸入的頻率從數 k 到數十 k 不等,勢必得用 hardware counter 來做,但是一般通用型 MCU 不會做這麼多 counter 給您用,所以這部份要跟商用 PLC 硬拼也有困難。

所以,國內一些 PLC 大廠會強調他們是開發專用 ASIC 來執行 Ladder,效果比用通用型 MCU 好。

隔離輸出入


一般 PLC 輸出入都是 24V,而且一定會做隔離,除了電壓轉換外,最重要的是隔離訊號,避免 CPU 被打掛,這部份的知識林伸茂先生在他的 8051 三部曲裡面已經公開線路了,這些賣 PLC 模組的商家也該一起搭配出售才是,另外工控也很強調電源也要隔離,所以用一般便宜的 DC Jack 電源很可能成為系統上的另一個弱點。

軟體


這些拿 open hardware 做 PLC 商業應用的人不可能回頭叫 user 開記事本寫程式,提供圖形界面是必要的,但現在商用 PLC 軟體的成熟度非常高,跑線上模擬是基本盤,有些可以做到畫時序圖,可以插入中斷點,可以寫副程式讓 Ladder 呼叫...

所以現在有一派的作法是乾脆硬體直接套這些知名廠牌 PLC 軟件,比方說 Mitsubishi GX Developer,這些又以強國最多,這也不是新鮮事了,就是 Microchip PIC 抄襲事件發生在 PLC 領域而已。

所以台灣軟體做不起來很正常,因為很多人寧可花時間在抄襲上也不願意花錢請軟體工程師寫編輯器。

I/O 控制不是 PLC 主要競爭力


商用 PLC 不會把 IO 控制當作競爭力,那個叫基礎建設,這些非主流 PLC 能夠執行 PID、G-Code、伺服控制...嗎?這小弟是有點懷疑的(這部份小弟自認外行,歡迎各位過來留言打臉)

商用 PLC 低價化


永宏是台灣老字號 PLC 廠商,最近推出的 B1/B1z 系列用超低價格殺進市場,有多便宜呢?就小弟的印象,如果你只是要做個治具,絕對比你去洗板子 + 寫一堆 C/ASM 程式的成本低,當然如果你是要藉機學該 MCU 那沒話講。OMRON ZEN 系列也是想主打這個市場,不過就印象來說,他的執行方式跟傳統 PLC 掃描方式不一樣,有點自廢武功的感覺XD。

PS. 就算不想寫 ladder,直接買山寨 Arduino 也比洗板子的成本低多了。

Open Hardware 最適合執行的工控任務


小弟認為不是 PLC,應該是 protocol gateway & SCADA,如果硬體通訊上能做好隔離,剩下就是軟體的功,而這些軟體用通用型 CPU 就能做的很好,推出以下套件說不定會有賣點?


7 則留言:

  1. 嗯~有些我也不懂。

    但第一點關於硬體的問題:我有一個小想法,那就是搭配FPGA (或是CPLD)。

    只要搭配一個 FPGA 我想要多少 Timer/counter 都不是甚麼問題,

    連 IO 也順便。而且要寫一個這樣子簡單的 Verilog code , 我想一些大學

    課程都有開這門課。多紅啊~未來可以做IC 設計耶,可以進聯發科,

    每個電子電機科系的老師也都會開這門課。
    ----
    所以您也可猜到這些做 FPGA/CPLD 的公司不太可能只賣給IC 設計公司來做

    產品開發而已吧。有很多工控市場應用都會拿這個來搭配使用的。

    ----
    PLC 是一個老產品名稱。她有她歷史的包袱,但人家也有一定的市佔率。

    所以產品世代交迭都有他必須要走的歷程。如何做到無痛移轉才是重點。

    ----
    這就看您們搞工控這一行人如何去看了?

    PS:我自己後來發現 MACH3 這個東西真的好用。很基礎但真的好用...

    連我教我兒子拿來切割壓克力,不需要一天就搞定可以自行DIY 了。

    至於如何在軟體上轉 G-Code ? 網路世界裡的軟體更不用我們多言了。

    回覆刪除

  2. blogspot 怪怪的,只好用貼上的了
    ======================
    ChamberPlus Taiwan 已針對您的文章「Arduino 另類應用: PLC」留下新意見:

    嗯~有些我也不懂。

    但第一點關於硬體的問題:我有一個小想法,那就是搭配FPGA (或是CPLD)。

    只要搭配一個 FPGA 我想要多少 Timer/counter 都不是甚麼問題,

    連 IO 也順便。而且要寫一個這樣子簡單的 Verilog code , 我想一些大學

    課程都有開這門課。多紅啊~未來可以做IC 設計耶,可以進聯發科,

    每個電子電機科系的老師也都會開這門課。
    ----
    所以您也可猜到這些做 FPGA/CPLD 的公司不太可能只賣給IC 設計公司來做

    產品開發而已吧。有很多工控市場應用都會拿這個來搭配使用的。

    ----
    PLC 是一個老產品名稱。她有她歷史的包袱,但人家也有一定的市佔率。

    所以產品世代交迭都有他必須要走的歷程。如何做到無痛移轉才是重點。

    ----
    這就看您們搞工控這一行人如何去看了?

    PS:我自己後來發現 MACH3 這個東西真的好用。很基礎但真的好用...

    連我教我兒子拿來切割壓克力,不需要一天就搞定可以自行DIY 了。

    至於如何在軟體上轉 G-Code ? 網路世界裡的軟體更不用我們多言了。

    回覆刪除
    回覆
    1. 其實,用FPGA,CPLD 製作 counter/timer 之前也有人打算這麼做,最後是不了了之,可能是成本上划不來吧?也許現在FPGA,CPLD價格低到可以被大眾接受了也說不定

      但是就如同上面提到的B1/B1z,人家價格都殺到那樣了...還搞個拼裝車MCU+FPGA,這樣會有競爭力嗎?現在最多人的作法就是拿一顆ARM來硬操,反正 ladder 裡一次用個幾十個 timer 說不定都很罕見了,大家來對賭XDD

      而且 PLC 現在對岸一堆山寨貨,Arduino 拿來做其他用途或許更合適

      刪除
  3. 目前32bit單精片可以輕易做出PLC功能而不需fpga or cpld

    回覆刪除
    回覆
    1. 感謝您的回應,請教一下,那要怎麼處理high speed counter的問題呢?要如何維持數百個timer與counter的精準度呢?如果添加了通訊等功能,是否會影響原本的執行速度呢?因為小弟使用過delta PLC,的確會有此現象

      刪除
  4. 現在很多ARM單晶片 都內建 timer與counter, 連 quadrature encoder input,都有.

    回覆刪除
    回覆
    1. 感謝回應,最近得知有ARM單晶片還把工作電壓提升到5V,有專門針對工業市場的樣子,但具我朋友試用ARM山寨版的經驗是還有待改進...也許是山寨的功力有有差吧?

      刪除