0302 【萬(wàn)泉河】PLC編程,耦合比算法重要。
我得首先來(lái)講一下什么叫“重要”。
在馬斯洛需求層次理論中, 生理需求在最底層,而其它的安全需求,尊重需求,認知需求等分級在上層。 前者分別是基礎,后者分別是基礎達到之上的更高層次的需求。
所以,當我們在討論尊重需求或者自我實(shí)現很重要的時(shí)候,有人跳出來(lái)抬杠說(shuō)吃喝拉撒睡更重要。說(shuō)明這個(gè)人還僅僅在為滿(mǎn)足吃喝拉撒睡的級別上奮斗,他原本就該抓緊那點(diǎn)時(shí)間多送幾單外賣(mài),跑幾單滴滴,多攢點(diǎn)錢(qián)好湊首付娶媳婦的。這種話(huà)題原本就不該他來(lái)參與討論的。
所以,還有另一種說(shuō)法,每一個(gè)人,你認為什么更重要,那么就說(shuō)明這一部分你還沒(méi)掌握,所以才顯得重要。
我在去年發(fā)表了一篇短文《0716【萬(wàn)泉河】PLC標準化編程的主要目的》,就引來(lái)罵聲一片, 一大堆來(lái)罵我告訴我實(shí)現工藝功能更重要的道理的。 我就才發(fā)現,是我沒(méi)講清楚,這些人看到里面有PLC編程的字樣,就以為他也是同級別的同行,就輪得到他也有發(fā)言權了。 不好意思,我指的是在完成了PLC編程的技能, 能實(shí)現設備需求的情況下,想把設備做做好,做做標準化,將來(lái)設備的質(zhì)量外觀(guān)能更好,設計調試的效率更高,出錯更少。
但沒(méi)辦法,這些人的閱讀能力受限,根本看不懂文章的內容,只把文章的題目看了一半,就挽起袖子下場(chǎng)開(kāi)噴了。 當然,這也是他們還一直混在馬斯洛需求最底層的原因;橐蚬。
所以,我不希望本文也有人來(lái)開(kāi)噴,跟我強調算法最重要,算法是基礎,算法沒(méi)實(shí)現,別的都是空的。 沒(méi)錯,那是對你還沒(méi)有能力實(shí)現算法的時(shí)候。 而且我一直說(shuō)的是,PLC程序里面基本沒(méi)什么算法。 別吹牛逼你搞的算法多高級。 PLC應用中凡是有重要算法的工藝需求,早就被封裝打包了。到了PLC工程師手里,還只是應用。 參數設定下,優(yōu)化下,就應用了。
什么叫耦合,就是當你有一個(gè)復雜的算法需求的時(shí)候, 你有能力實(shí)現這個(gè)算法, 實(shí)現的同時(shí),就要實(shí)現對它的封裝,封裝的目的是為了可以重復使用。而重復使用的對象,不僅僅是自己,而是除了自己之外,還有可能是其他人,比如愿意出錢(qián)給你購買(mǎi)你這個(gè)封裝庫算法的人。 那么別人或者你自己在使用這個(gè)封裝庫時(shí),就叫耦合。
什么叫好的耦合?好的耦合是看得見(jiàn)的公認的好。要簡(jiǎn)單易用,即成為低耦合。 而這個(gè)低耦合的標準不能設計者單方面說(shuō)了算,是要設計者和使用者雙方都共同認可,已經(jīng)足夠簡(jiǎn)單易用,已經(jīng)優(yōu)化到極致,已經(jīng)沒(méi)有再優(yōu)化的空間,這才叫好的低耦合。
所以,有可能是,算法我不懂,你懂算法,但你做出來(lái)的封裝庫得能讓我滿(mǎn)意。 或者反過(guò)來(lái)說(shuō),算法我懂,你不懂算法,但我做出來(lái)的封裝庫得能讓你滿(mǎn)意, 你拿到手里簡(jiǎn)單易用。 才是達到了封裝的目的。
或者還有一種情況,你有拿到別人做的封裝庫,但不會(huì )用,因為使用難度太大,在想有沒(méi)有可能有人給改進(jìn)下,做到更建議的耦合效果,就不需要先讀懂原理再使用了。 編程行業(yè),如果所謂的封裝都還需要拆解開(kāi)源代碼,把所有功能都讀懂了,完全了解了工藝原理,才可以使用這個(gè)庫, 那所謂的封裝的過(guò)程都是非常搞笑的。
比如我們來(lái)看一個(gè)網(wǎng)絡(luò )圖片關(guān)于自定義定時(shí)器的調用:
其中的起始值和當前時(shí)間這些管腳就是多余的。使用者完全不需要知道,也不需要負責管理的。
設計者不可以倒打一耙,指責使用者:你懂個(gè)啥呀!某某優(yōu)雅 PLC必須在這里分配一段地址,否則功能無(wú)法實(shí)現!作為設計者,你頂多可以強調這種不得已,謀得對方諒解,實(shí)在沒(méi)辦法躲不過(guò),否則功能實(shí)現不了。 然后再給出詳盡的使用說(shuō)明。 但后者都是下下策。
還有一個(gè)例子,
我在講到MODBUS封裝的時(shí)候經(jīng)常舉到的例子
圖中這樣的封裝庫的管腳,可謂是已經(jīng)達到了極致,無(wú)法再少了。 然而其中隱藏了一個(gè)非常重要的管腳,通訊鏈接的ID。 每一個(gè)設備對象ID都要不同。 這一點(diǎn),所有懂MODBUS TCP通訊的都懂,而不懂的原本都不需要懂。
做封裝庫的時(shí)候,如果做不到這一點(diǎn),處理不好,需要放在管腳上需要使用者來(lái)填入,然后還需要千叮嚀萬(wàn)囑咐管腳填入的規則,如果錯了就會(huì )導致程序功能失靈, 那就說(shuō)明這個(gè)封裝還不夠最優(yōu),甚至,倒過(guò)來(lái)也說(shuō)明了封裝的算法掌握的也還不夠好。 那么使用者也完全可以倒過(guò)來(lái)靈魂質(zhì)問(wèn)封裝設計者的。 即便知道自己水平比他差一截,也可以質(zhì)問(wèn)。
我在文章《0103 【萬(wàn)泉河】PLC程序塊INOUT管腳的倒置用法》中提出了一種為降低耦合難度的縮減FB管腳的編程方法,被很多人不能接受,以各種說(shuō)辭辯解甚至辱罵。大家可以去鏈接觀(guān)察下這些人的丑態(tài)
https://www.ad.siemens.com.cn/club/bbs/post_1929369_64_0_0.html#anch 總結起來(lái),這些人也都還是不懂得耦合的重要性, 不了解本文的觀(guān)點(diǎn)的。
這是這個(gè)行業(yè)的現狀,千萬(wàn)別大驚小怪。
最后,如果我們成立一個(gè)組織,專(zhuān)門(mén)做一些滿(mǎn)足低耦合需求的行業(yè)封裝庫,或者在已有的不成熟的庫基礎上優(yōu)化降低耦合難度,有多少人會(huì )感興趣嗎?
這個(gè)時(shí)候,需求者是甲方,你的所有合理需求都是合理的。
0302 【萬(wàn)泉河】PLC編程,耦合比算法重要.pdf (226 K) 下载次数:49