當(dāng)前位置: 首頁(yè) > 工業(yè)控制產(chǎn)品 > 自動(dòng)化控制 > 工業(yè)軟件 > 組態(tài)軟件
發(fā)布日期:2022-04-27 點(diǎn)擊率:72 品牌:西門子_Siemens
這是一個(gè)長(zhǎng)久以來(lái)困擾我們所有工控人的問(wèn)題。我們可以參考下IT界的變量命名規(guī)范,如:如何優(yōu)雅地為程序中的變量和函數(shù)命名?然后我們也可以從中了解到一些匈牙利命名法、google風(fēng)格等稱謂,但即便你把這些規(guī)則全讀懂了,也會(huì)發(fā)現(xiàn),好像對(duì)于我們工控項(xiàng)目來(lái)說(shuō),能參考的地方不多,因?yàn)椋麄冇玫降淖兞扛覀兿啾龋瑪?shù)量根本不在一個(gè)數(shù)量級(jí)!工控項(xiàng)目,用到的硬件點(diǎn)數(shù)幾百點(diǎn)是很平常的,稍微規(guī)模大一點(diǎn),就是幾千點(diǎn)甚至上萬(wàn)點(diǎn)。而除了硬點(diǎn)之外,還要有一些通訊和上位控制的虛點(diǎn),加起來(lái)數(shù)量就更多了。這些點(diǎn),全都相當(dāng)于高級(jí)編程語(yǔ)言里的全局變量。任何一個(gè)高級(jí)語(yǔ)言編出來(lái)的程序,功能可能比我們做到的復(fù)雜,但全局變量,絕不可能用到這么多。除非那是個(gè)新手,不懂得要模塊化編程。所以,最終工控項(xiàng)目的變量的命名規(guī)范,我們能參考到的可借鑒的經(jīng)驗(yàn)只有,用英文!即便英語(yǔ)不夠好,也得堅(jiān)持用英文。因?yàn)椋形膶?shí)在不方便作為變量名字,沒(méi)法簡(jiǎn)略,太長(zhǎng),還不容易輸入。其次也不可以使用漢語(yǔ)拼音。完整的拼音也是太長(zhǎng),而且同音詞太多引發(fā)歧義多,不能精確描述。而簡(jiǎn)化了使用拼音首字母的連拼,寫出來(lái)后簡(jiǎn)直是天書,除了作者自己,別人根本不可能看懂說(shuō)的是什么。而且即便作者自己,時(shí)間稍微一放,回過(guò)頭來(lái)就不明白啥意思了。其實(shí)一個(gè)規(guī)范的工程項(xiàng)目,所有設(shè)備,都應(yīng)該有位號(hào),所以在變量命名的時(shí)候,最簡(jiǎn)單的方式是使用位號(hào)來(lái)命名,而同一位號(hào)之下的各種輸入輸出,手動(dòng)、自動(dòng)、啟動(dòng)、停止、打開(kāi)、關(guān)閉、運(yùn)行反饋、故障、開(kāi)度、頻率等等,就可以統(tǒng)一規(guī)范的使用英文了,畢竟這點(diǎn)英文單詞數(shù)量還不算多。而具體到位號(hào)的命名以及鏈接了后面的功能點(diǎn)的命名,就不可避免要出現(xiàn)鏈接符號(hào),綜合S7的符號(hào)表的命名規(guī)則和WINCC的變量的命名規(guī)則,很多符號(hào)是禁止使用或者使用中有風(fēng)險(xiǎn)的。比如:/<>!+,;等基本都不能使用。作為分隔符來(lái)說(shuō),點(diǎn)(.)是最方便的。但可惜的是,WINCC已經(jīng)缺省當(dāng)作是結(jié)構(gòu)變量的分隔符了,如果如鏈接S7-200,S7-1200的變量,不能使用結(jié)構(gòu)變量,直接通過(guò)OPC傳輸?shù)淖兞浚瑒t無(wú)法再使用點(diǎn)(.)減號(hào)(-),現(xiàn)實(shí)的文檔中經(jīng)常用,但我說(shuō)有風(fēng)險(xiǎn)的恰恰就是它。在它上面我曾經(jīng)吃過(guò)虧,一個(gè)晚上幾個(gè)小時(shí),翻來(lái)覆去倒騰好幾次變量,都是因?yàn)檫@個(gè)減號(hào)。這里,我只需要提兩件事大家可以測(cè)試一下:你在單獨(dú)起變量名字的時(shí)候,不管在S7中還是WINCC中,都是合法的可以使用的,但如果使用WINCC7.2的變量表復(fù)制粘貼功能,你從WINCC復(fù)制到EXCEL還是可以的,但倒過(guò)來(lái)復(fù)制的時(shí)候,所有變量名里面的減號(hào)都給變成了下劃線(_)。還有是,如果是模擬量需要進(jìn)行變量歸檔,如果又使用了壓縮歸檔,那么在壓縮以后,不知道啥時(shí)候變量名也給變成了下劃線(_)!是的。原來(lái)最好用的是下劃線。其實(shí)也只有下劃線最好用,所以所有人在命名的時(shí)候本來(lái)也都喜歡用它,最終一個(gè)完整的位號(hào)加功能鏈接起來(lái)后的變量就會(huì)到泛濫的程度,這就就又出現(xiàn)問(wèn)題了。比如:LS_DT_8_LEAK_FLS_DT_9_LEAK_FLS_DT_12_LEAK_FLS_DT_13_LEAK_F這些變量名,在WINCC中使用是沒(méi)有問(wèn)題的,但如果我要用到變量前綴功能呢?如果WINCC程序處理中需要通過(guò)變量的分隔符來(lái)確定位號(hào)和功能,這么多下劃線可就亂套了。在去年年底的一個(gè)項(xiàng)目中,我曾經(jīng)非常痛苦的每天晚上花4-5個(gè)小時(shí)來(lái)處理幾千個(gè)變量的變量表,配合方每發(fā)來(lái)一次更新的變量表,我就要處理一次,以達(dá)到程序可用的規(guī)范。更換掉不可以使用的字符,更換掉不合適的使用了下劃線的變量。直到最后,項(xiàng)目已經(jīng)完工了,突然想到了一個(gè)更容易的解決方案,既然濫用下劃線,那索性更濫用好了,分隔符的地方,使用連續(xù)兩個(gè)下劃線(__)可好?比如上面的變量名就變成:LS_DT_8__LEAK_FLS_DT_9__LEAK_FLS_DT_12__LEAK_FLS_DT_13__LEAK_F我只要和配合方在遞交變量點(diǎn)表的時(shí)候提前約定這樣一個(gè)規(guī)范不就OK了么!然后轉(zhuǎn)過(guò)年來(lái),又一個(gè)WINCC報(bào)表項(xiàng)目,我查了下項(xiàng)目中的變量的命名方式,直接提出了這樣的要求,所以變量名字就變成了:FT-2128__LFT-2128__SFT-2128__DFT-2128__MFT-BCEG01__LFT-BCEG01__SFT-BCEG01__DFT-BCEG01__M當(dāng)然朋友在做的時(shí)候是一頭霧水,不明白為啥要這樣,現(xiàn)在看到這里,應(yīng)該也明白了吧!至于變量名中還有的減號(hào),因?yàn)樽兞恳呀?jīng)建立,已經(jīng)既成事實(shí),就只好將錯(cuò)就錯(cuò)了。
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV