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