0725 【萬泉河】所有小型PLC也都能做標準化程序了
先講解一個關于“能”和“能力”的概念。
當我們描述一個事物的某個特征能力的時候。即說A事物能不能實現某某B功能,咱們可以客觀判斷一下,斷定能或者不能,這是一個客觀判斷。
比方斷定豬不會飛,在沒有外力輔助的情況下不能飛上天。這就是一個客觀判斷。 后來雷軍說站在風口上豬也能飛上天的時候, 那不是豬的能力, 而是風口的能力。 所以原話豬不會飛并沒有錯。
而在另外一些領域, 比方我一直以來表達說一些功能簡單的小型PLC不能做煙臺方法標準化編程,其實就不是一個精確的客觀判斷。 如果完整一點表達,只能是,在當時的認知情況下,以我彼時的技術水平和個人能力,在功能簡單的小PLC上做不到標準化編程。
因為從今天開始,我可以宣布能了。 所有已知的未知的,見過的沒見過的PLC品牌和型號, 都可以做標準化煙臺方法編程了。
即,不管別人能不能, 我, 我的煙臺方法,能了。
這同時又是一個證有易證無難的非對稱邏輯。 有9999個人說不能,也只是他們不能, 而只要有1個人說能, 那就是能了。
前一篇文章《0724 【萬泉河】煙臺方法前進之路:在信捷PLC中實現FB功能》發表后, 有讀者表示, 閱讀之后思路瞬間打開。以前做信捷PLC程序做的非常痛苦,現在則有思路了。
而其實何嘗他自己思路打開,我自己思路也隨之打開了。 在我看來像信捷這樣的PLC所謂的子程序, 除了一個CALL之外,什么功能都沒有,經過自己的努力改造, 只要沒有的功能,我們通過編程方法給補足,未來也一樣可以實現面向對象的標準化架構和應用了。
那么,其實需要的門檻只有一個:子程序功能。而子程序功能的本質,其實就是一個跳轉和返回。 那么,即便有PLC系統沒有所謂子程序功能, 那么它只要有JUMP或者GOTO等跳轉指令, 那就相當于具備子程序功能。
而跳轉指令, 原本就是匯編語言中的基本指令。所有PLC廠家, 哪怕是個人開發愛好者,自己用單片機搗鼓攢一個PLC系統出來, 跳轉功能也一定有的。
昨天,隨便擼了一個某網站上的PLC品牌列表:
把上面的原本沒摸過的PLC的軟件全部找來下載安裝了:南大奧拓,矩形,科威,海為。
其實主要研究他們系統中實現子程序和子程序調用的方法。總得來說大同小異。 無非各自間使用的指令名稱不同, 有叫CALL的, 也有叫JSR的。僅此而已。
而在此基礎上,我更關注的一件事,它的系統中是否能夠具備8個或者更多的位聚到一個字節或者字的功能。子程序具備功能可以, 有其它的專用指令也可以。
比如海為的PLC的子程序可以有最多8個INPUT和3個OUTPUT,
那么我們就可以打造一個8BIT到一個MB的函數。
然后當我們自己的子程序需要傳入實參的時候, 就可以通過調用這個函數,實現稍微不那么難看的優雅和整潔,即對庫函數的使用者來說, 耦合的難度可以小一點。
比如:
我們可以通過調用一次函數,把數據送到V10中,然后庫函數中拆分V10的數據后使用。這樣,在庫函數管腳不夠,甚至沒有管腳的時候,可以實現管腳輸入。 而即便庫函數需要的管腳數量更多,還可以多次調用,把數據分別送到V10,V11,V12中。而輸出管腳也同樣的方法。
我在SMART200的標準化程序中就是使用了這樣的方法。
我猜一定有人總想教我用指針和循環來處理,所以我做上面的例子刻意把點位的順序弄亂,不讓他那么整齊, 不給人做循環的機會。 真正的工程應用中, 點位的順序肯定是雜亂的,不會給你機會去精心設計IO順序。
然后就會有人給出解決方案說, 用IO映射啊!先都整理映射到內部的一個整齊規則的數據區, 然再來做循環。
那么,請有這樣想法的人瞪大眼睛看一看, 我這里把一批數據送到了V10.0-V10.7的數據區中, 是不是就相當于IO映射?我用一次函數調用,目的要避免的就是重復8行簡單賦值的垃圾工作量啊!
一直以來,很多把IO映射大法當作處理問題的核心技能的同行們,本質上是不認為IO映射重復寫幾百幾千行無效程序當作工作量,認為簡單重復無難度的工作內容就可以忽略不計了。
如果那樣, 那么上一篇信捷的調用方法就已經足夠滿足你們的需要了。 然而對我來說,覺得很繁瑣, 很丑陋,希望能有更好的辦法。 這些品牌的具體指令我都不熟悉,如果有人知道比如信捷如果有相關的指令, 麻煩請告訴我。
從這樣來看,這些小型PLC的煙臺方法的實現,其實就是在原本的SMART200的標準化程序基礎上做一步擴展,就可以了。 比如通過今天舉例的海為PLC,其標準化程序架構會無限接近于SMART200, 甚至有可能可以直接照抄移植過來。
所以, 這樣的話, 我也沒必要親歷親為為每一個小型PLC品牌都做一套標準化示范了。 有需要學習的同行,可以直接報名SMART200的學習營,在把SMART200的架構原理了解清楚后,再補充一點費用, 我給提供一個相應品牌的小的例子, 再給做個一對一的講解,把過程中的難點和注意事項稍微講解,大致就可以實現。
當然, 還是那句話, 越小的越簡單的PLC, 實現起標準化來越難。 那么學習難度和門檻就越高。 一定要有充分的思想準備。 當然, 如果做的設備供貨量足夠大, 有足夠的利潤支撐的話,可以邀請我合作一起來做。
另外, 這些品牌商廠家,我能理解你們,把IEC61131標準落地實現到自己的控制器中, 難度已經相當大了,面向對象需求的這些功能, 其實只是上位編程軟件上面需要做更多的功能, 然而市場的需求和呼聲實在太小。 即,即便你們費盡心力,投入大量人員和資金給開發提供了FB功能以及面向對象需要的其它功能接口, 也沒多少應用工程師能夠充分利用發揮所有效力。 所以你們自然沒有動力投入更多。
不過咱們可以有合作,各品牌商可以找我協助開發一批實現功能模塊的例子以及應用指導, 填充到你們的幫助系統或示例中,將來對提高品牌在各行各業的標準化應用水平,更大程度提高市場競爭力,會有一些幫助的。
0725 【萬泉河】所有小型PLC也都能做標準化程序了.pdf (235 K) 下载次数:137