0926 【萬泉河】關(guān)于UDT,只怪自己腦洞不夠大
上一篇文章《0917 【萬泉河】關(guān)于PLC中UDT和FB的迷思》,是針對更早一篇文章
《0820 【萬泉河】就是要為不用UDT而不用UDT》所引發(fā)的網(wǎng)友爭論所寫。
文中主要的結(jié)論:
UDT本質(zhì)上是數(shù)據(jù)類型,而FB本質(zhì)上也是數(shù)據(jù)類型。
從接口的角度,UDT和FB同樣都可以作為接口。
而從類的角度,UDT和FB也都同樣可以作為類。
文章發(fā)出后,這回的反響就比較好了,沒了那么多反對爭論的聲音,連帶那個討論的帖子,過程也不那么激烈了。
因為我一再表示,我發(fā)表這些觀點不是拋磚引玉供大家辯駁的,而是立下個標(biāo)志,供大家可以在很長時間里學(xué)習(xí)理解的。我根本沒有要和同行討論的意思。 所以不需要來和我討論乃至爭論。 除非有人能和我一樣寫出來系列文章,并且發(fā)表出有理有據(jù)的更深刻的觀點。
然而有群友讀懂了之后就在群里問我, 既然UDT和FB都是數(shù)據(jù)類型, 那么FB是否可以作為UDT的數(shù)據(jù)元素呢?
我以多年西門子PLC的經(jīng)驗,做出的第一反應(yīng)是,不能,絕不可能!
然后說出口之后立馬感覺自己有些唐突了。 這要是說錯了話, 這要是被整天跟在腳后跟后面盯著咬腳后跟的家伙抓著了把柄, 不得興奮跳腳好幾年啊!當(dāng)然, 以他們的智力水平,這一段的技能已經(jīng)遠(yuǎn)遠(yuǎn)超越了他們的認(rèn)知上限,即便放個破綻給他們,他們也沒那么容易叼到。
所以,說完之后,我趕緊在PORTAL V17里面驗證了一下,先松一口氣,當(dāng)然是不可以。 在UDT中建立數(shù)據(jù)元素的時候,可選的數(shù)據(jù)類型有各種基本數(shù)據(jù)類型,也有已經(jīng)存在的UDT,但已經(jīng)存在的FB卻并沒有出現(xiàn)在可選列表中。
注意看這個時候的表達(dá),是要嚴(yán)謹(jǐn)包括軟件版本的。 更新版本的V18我還沒有用過,所以暫時無從驗證。 而未來保不齊在哪一個版本中會支持,在當(dāng)下這還是懸而未決的懸案,需要未來驗證。
然后,我就順手在正在使用的倍福TC2的軟件中試了一下, 驚掉下巴的事情出現(xiàn)了: CODESYS中竟然可以!
CODESYS中的UDT的數(shù)據(jù)類型,竟然可以選擇系統(tǒng)FB和自定義的FB作為其數(shù)據(jù)元素。
而且,當(dāng)天也就有了報應(yīng)。
我承接的一個公司的非標(biāo)設(shè)備的PLC程序的標(biāo)準(zhǔn)化改造,他們的PLC主要使用倍福,所以我還在逐字逐句解讀他們原來的TC2程序。 然后當(dāng)天下午,在閱讀到某一數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu)時,赫然發(fā)現(xiàn)了其中定義的R_TRIG , 就是相當(dāng)于SFB啊
TYPE ST_calcpointw :
STRUCT
limitswitch:BOOL;
point1:BOOL;
point2:BOOL;
rise_tf:R_TRIG;
rise_fs:R_TRIG;
rise_cs:R_TRIG;
rise_fw:R_TRIG;
END_STRUCT
END_TYPE
怎么說呢, 對我來說,只能怪自己腦洞不夠大了!
我們這兒還各個角度各種理論論證各種數(shù)據(jù)類型的區(qū)別呢,殊不知早有人在用著了。 當(dāng)然,我相信他們老大即便無意中發(fā)現(xiàn)了這個功能可以使用就順手用的時候, 也完全沒有想到在屋子外面有眾人會因為其背后的理論吵吵鬧鬧,扭作一團(tuán)。
也當(dāng)然啦, 他們的老大雖然早就掌握了在UDT數(shù)據(jù)元素中使用FB的技能,寫程序的方法仍然基于傳統(tǒng)方法的,雖然一直在謀求實現(xiàn)設(shè)備規(guī)格的標(biāo)準(zhǔn)化,但最終結(jié)果卻離標(biāo)準(zhǔn)化模塊化越來越遠(yuǎn),去年他們出廠的非標(biāo)設(shè)備類型統(tǒng)計下來達(dá)到了50個機(jī)型之后,PLC程序版本管理就完全失控了,設(shè)計人員開始疲于奔命,被一個接一個的項目推著走。 公司嚴(yán)重缺人手, 然而新招的人手短時間內(nèi)還不能承擔(dān)起工作任務(wù),完全惡性循環(huán)中。所以想到了要我來輔導(dǎo)實現(xiàn)設(shè)備程序設(shè)計的標(biāo)準(zhǔn)化。 對倍福的PLC,調(diào)試細(xì)節(jié)我不夠熟悉,但由于我N年前已經(jīng)完成了倍福PLC的標(biāo)準(zhǔn)化,所以對其標(biāo)準(zhǔn)化架構(gòu)還是比較了解的。 這是我敢承攬的主要原因。
同時也做一個預(yù)告,《三菱PLC標(biāo)準(zhǔn)化編程煙臺方法》的書稿已經(jīng)通過了出版社審核,預(yù)期會在年底之前出版發(fā)行。 而我計劃的下一本書,就會是針對倍福和CODESYS的。會在輔導(dǎo)的倍福標(biāo)準(zhǔn)化項目有點眉目的時候就同步開始攥寫。
書名會叫做《倍福/CODESYS PLC 標(biāo)準(zhǔn)化編程煙臺方法》, 既然倍福PLC是基于CODESYS平臺的, 那么在寫倍福時也就順便將CODESYS的內(nèi)容一起包含了。 如果還有其它的使用CODESYS平臺的PLC廠家希望搭便車, 在書中同時體現(xiàn), 請私下與我聯(lián)系。