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