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