萬(wàn)泉河
WX:ZHO6371995,歡迎+
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 130 個(gè)
工控威望: 246 點(diǎn)
下載積分: 831 分
在線時(shí)間: 11(小時(shí))
注冊(cè)時(shí)間: 2021-06-11
最后登錄: 2024-11-07
查看萬(wàn)泉河的 主題 / 回貼
樓主  發(fā)表于: 2022-07-25 12:25
0725 【萬(wàn)泉河】所有小型PLC也都能做標(biāo)準(zhǔn)化程序了

先講解一個(gè)關(guān)于“能”和“能力”的概念。

當(dāng)我們描述一個(gè)事物的某個(gè)特征能力的時(shí)候。即說(shuō)A事物能不能實(shí)現(xiàn)某某B功能,咱們可以客觀判斷一下,斷定能或者不能,這是一個(gè)客觀判斷。

比方斷定豬不會(huì)飛,在沒(méi)有外力輔助的情況下不能飛上天。這就是一個(gè)客觀判斷。 后來(lái)雷軍說(shuō)站在風(fēng)口上豬也能飛上天的時(shí)候, 那不是豬的能力, 而是風(fēng)口的能力。 所以原話豬不會(huì)飛并沒(méi)有錯(cuò)。

而在另外一些領(lǐng)域, 比方我一直以來(lái)表達(dá)說(shuō)一些功能簡(jiǎn)單的小型PLC不能做煙臺(tái)方法標(biāo)準(zhǔn)化編程,其實(shí)就不是一個(gè)精確的客觀判斷。 如果完整一點(diǎn)表達(dá),只能是,在當(dāng)時(shí)的認(rèn)知情況下,以我彼時(shí)的技術(shù)水平和個(gè)人能力,在功能簡(jiǎn)單的小PLC上做不到標(biāo)準(zhǔn)化編程。

因?yàn)閺慕裉扉_(kāi)始,我可以宣布能了。 所有已知的未知的,見(jiàn)過(guò)的沒(méi)見(jiàn)過(guò)的PLC品牌和型號(hào), 都可以做標(biāo)準(zhǔn)化煙臺(tái)方法編程了。

即,不管別人能不能, 我, 我的煙臺(tái)方法,能了。

這同時(shí)又是一個(gè)證有易證無(wú)難的非對(duì)稱邏輯。 有9999個(gè)人說(shuō)不能,也只是他們不能, 而只要有1個(gè)人說(shuō)能, 那就是能了。

前一篇文章《0724 【萬(wàn)泉河】煙臺(tái)方法前進(jìn)之路:在信捷PLC中實(shí)現(xiàn)FB功能》發(fā)表后, 有讀者表示, 閱讀之后思路瞬間打開(kāi)。以前做信捷PLC程序做的非常痛苦,現(xiàn)在則有思路了。

而其實(shí)何嘗他自己思路打開(kāi),我自己思路也隨之打開(kāi)了。 在我看來(lái)像信捷這樣的PLC所謂的子程序, 除了一個(gè)CALL之外,什么功能都沒(méi)有,經(jīng)過(guò)自己的努力改造, 只要沒(méi)有的功能,我們通過(guò)編程方法給補(bǔ)足,未來(lái)也一樣可以實(shí)現(xiàn)面向?qū)ο蟮臉?biāo)準(zhǔn)化架構(gòu)和應(yīng)用了。

那么,其實(shí)需要的門檻只有一個(gè):子程序功能。而子程序功能的本質(zhì),其實(shí)就是一個(gè)跳轉(zhuǎn)和返回。 那么,即便有PLC系統(tǒng)沒(méi)有所謂子程序功能, 那么它只要有JUMP或者GOTO等跳轉(zhuǎn)指令, 那就相當(dāng)于具備子程序功能。

而跳轉(zhuǎn)指令, 原本就是匯編語(yǔ)言中的基本指令。所有PLC廠家, 哪怕是個(gè)人開(kāi)發(fā)愛(ài)好者,自己用單片機(jī)搗鼓攢一個(gè)PLC系統(tǒng)出來(lái), 跳轉(zhuǎn)功能也一定有的。

昨天,隨便擼了一個(gè)某網(wǎng)站上的PLC品牌列表:


把上面的原本沒(méi)摸過(guò)的PLC的軟件全部找來(lái)下載安裝了:南大奧拓,矩形,科威,海為。

其實(shí)主要研究他們系統(tǒng)中實(shí)現(xiàn)子程序和子程序調(diào)用的方法。總得來(lái)說(shuō)大同小異。 無(wú)非各自間使用的指令名稱不同, 有叫CALL的, 也有叫JSR的。僅此而已。

而在此基礎(chǔ)上,我更關(guān)注的一件事,它的系統(tǒng)中是否能夠具備8個(gè)或者更多的位聚到一個(gè)字節(jié)或者字的功能。子程序具備功能可以, 有其它的專用指令也可以。

比如海為的PLC的子程序可以有最多8個(gè)INPUT和3個(gè)OUTPUT,  

那么我們就可以打造一個(gè)8BIT到一個(gè)MB的函數(shù)。

然后當(dāng)我們自己的子程序需要傳入實(shí)參的時(shí)候, 就可以通過(guò)調(diào)用這個(gè)函數(shù),實(shí)現(xiàn)稍微不那么難看的優(yōu)雅和整潔,即對(duì)庫(kù)函數(shù)的使用者來(lái)說(shuō), 耦合的難度可以小一點(diǎn)。

比如:

我們可以通過(guò)調(diào)用一次函數(shù),把數(shù)據(jù)送到V10中,然后庫(kù)函數(shù)中拆分V10的數(shù)據(jù)后使用。這樣,在庫(kù)函數(shù)管腳不夠,甚至沒(méi)有管腳的時(shí)候,可以實(shí)現(xiàn)管腳輸入。 而即便庫(kù)函數(shù)需要的管腳數(shù)量更多,還可以多次調(diào)用,把數(shù)據(jù)分別送到V10,V11,V12中。而輸出管腳也同樣的方法。

我在SMART200的標(biāo)準(zhǔn)化程序中就是使用了這樣的方法。  

我猜一定有人總想教我用指針和循環(huán)來(lái)處理,所以我做上面的例子刻意把點(diǎn)位的順序弄亂,不讓他那么整齊, 不給人做循環(huán)的機(jī)會(huì)。 真正的工程應(yīng)用中, 點(diǎn)位的順序肯定是雜亂的,不會(huì)給你機(jī)會(huì)去精心設(shè)計(jì)IO順序。

然后就會(huì)有人給出解決方案說(shuō), 用IO映射啊!先都整理映射到內(nèi)部的一個(gè)整齊規(guī)則的數(shù)據(jù)區(qū), 然再來(lái)做循環(huán)。

那么,請(qǐng)有這樣想法的人瞪大眼睛看一看, 我這里把一批數(shù)據(jù)送到了V10.0-V10.7的數(shù)據(jù)區(qū)中, 是不是就相當(dāng)于IO映射?我用一次函數(shù)調(diào)用,目的要避免的就是重復(fù)8行簡(jiǎn)單賦值的垃圾工作量啊!

一直以來(lái),很多把IO映射大法當(dāng)作處理問(wèn)題的核心技能的同行們,本質(zhì)上是不認(rèn)為IO映射重復(fù)寫幾百幾千行無(wú)效程序當(dāng)作工作量,認(rèn)為簡(jiǎn)單重復(fù)無(wú)難度的工作內(nèi)容就可以忽略不計(jì)了。
如果那樣, 那么上一篇信捷的調(diào)用方法就已經(jīng)足夠滿足你們的需要了。 然而對(duì)我來(lái)說(shuō),覺(jué)得很繁瑣, 很丑陋,希望能有更好的辦法。 這些品牌的具體指令我都不熟悉,如果有人知道比如信捷如果有相關(guān)的指令, 麻煩請(qǐng)告訴我。

從這樣來(lái)看,這些小型PLC的煙臺(tái)方法的實(shí)現(xiàn),其實(shí)就是在原本的SMART200的標(biāo)準(zhǔn)化程序基礎(chǔ)上做一步擴(kuò)展,就可以了。 比如通過(guò)今天舉例的海為PLC,其標(biāo)準(zhǔn)化程序架構(gòu)會(huì)無(wú)限接近于SMART200, 甚至有可能可以直接照抄移植過(guò)來(lái)。

所以, 這樣的話, 我也沒(méi)必要親歷親為為每一個(gè)小型PLC品牌都做一套標(biāo)準(zhǔn)化示范了。 有需要學(xué)習(xí)的同行,可以直接報(bào)名SMART200的學(xué)習(xí)營(yíng),在把SMART200的架構(gòu)原理了解清楚后,再補(bǔ)充一點(diǎn)費(fèi)用, 我給提供一個(gè)相應(yīng)品牌的小的例子, 再給做個(gè)一對(duì)一的講解,把過(guò)程中的難點(diǎn)和注意事項(xiàng)稍微講解,大致就可以實(shí)現(xiàn)。

當(dāng)然, 還是那句話, 越小的越簡(jiǎn)單的PLC, 實(shí)現(xiàn)起標(biāo)準(zhǔn)化來(lái)越難。 那么學(xué)習(xí)難度和門檻就越高。 一定要有充分的思想準(zhǔn)備。 當(dāng)然, 如果做的設(shè)備供貨量足夠大, 有足夠的利潤(rùn)支撐的話,可以邀請(qǐng)我合作一起來(lái)做。

另外, 這些品牌商廠家,我能理解你們,把IEC61131標(biāo)準(zhǔn)落地實(shí)現(xiàn)到自己的控制器中, 難度已經(jīng)相當(dāng)大了,面向?qū)ο笮枨蟮倪@些功能, 其實(shí)只是上位編程軟件上面需要做更多的功能, 然而市場(chǎng)的需求和呼聲實(shí)在太小。 即,即便你們費(fèi)盡心力,投入大量人員和資金給開(kāi)發(fā)提供了FB功能以及面向?qū)ο笮枰钠渌δ芙涌冢?也沒(méi)多少應(yīng)用工程師能夠充分利用發(fā)揮所有效力。 所以你們自然沒(méi)有動(dòng)力投入更多。

不過(guò)咱們可以有合作,各品牌商可以找我協(xié)助開(kāi)發(fā)一批實(shí)現(xiàn)功能模塊的例子以及應(yīng)用指導(dǎo), 填充到你們的幫助系統(tǒng)或示例中,將來(lái)對(duì)提高品牌在各行各業(yè)的標(biāo)準(zhǔn)化應(yīng)用水平,更大程度提高市場(chǎng)競(jìng)爭(zhēng)力,會(huì)有一些幫助的。


0725 【萬(wàn)泉河】所有小型PLC也都能做標(biāo)準(zhǔn)化程序了.pdf (235 K) 下载次数:136




haiyouyang
LabVIEW & C++
級(jí)別: 網(wǎng)絡(luò)英雄
精華主題: 0
發(fā)帖數(shù)量: 180 個(gè)
工控威望: 8153 點(diǎn)
下載積分: 42713 分
在線時(shí)間: 888(小時(shí))
注冊(cè)時(shí)間: 2011-03-29
最后登錄: 2024-11-09
查看haiyouyang的 主題 / 回貼
1樓  發(fā)表于: 2022-07-25 13:08
PLC OOP編程是大勢(shì)所趨。
liliangvs
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 11 個(gè)
工控威望: 130 點(diǎn)
下載積分: 581 分
在線時(shí)間: 11(小時(shí))
注冊(cè)時(shí)間: 2012-01-11
最后登錄: 2022-08-07
查看liliangvs的 主題 / 回貼
2樓  發(fā)表于: 2022-07-27 10:43
感謝分享
https://www.dgdqw.com電工學(xué)習(xí)網(wǎng)
fgx9306
Engineer-X
級(jí)別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 730 個(gè)
工控威望: 831 點(diǎn)
下載積分: 17426 分
在線時(shí)間: 151(小時(shí))
注冊(cè)時(shí)間: 2015-06-08
最后登錄: 2024-11-06
查看fgx9306的 主題 / 回貼
3樓  發(fā)表于: 2022-07-27 11:47
面向?qū)ο缶幊虇幔?/div>