- 西門子WinCC從入門到精通
- 王前厚等編著
- 2062字
- 2020-04-29 17:31:22
3.3 通信外部變量管理
在WinCC和PLC建立通信之后,便需要根據控制功能的需要,從約定的PLC地址空間讀取數據,即所謂的建立變量表。
一般來說,如果PLC程序與WinCC程序是不同的設計人員分頭設計,那么PLC的編程人員需要整理一個完整的變量表的文檔,比如EXCEL表格,提供給WinCC設計人員,后者通過參照這個整理好的列表,在WinCC中建立變量表。
而如果是一個小項目,即便PLC程序與WinCC程序都是同一個人編制的,通常也會整理這樣的一個文檔,一方面作為兩項工作間交接的接口,同時也作為項目文檔的一部分,后期審核整理的時候一目了然。
有了這個接口文檔,在WinCC中工作的時候,就不再需要打開PLC的程序,甚至電腦上都不需要安裝PLC的編程軟件,也一樣可以完成WinCC的設計工作。接口文檔模板如表3-2所示。
表3-2 接口文檔模板

PLC地址表中的位號,可以直接用作WinCC變量的名字。所以在和PLC設計人員對接之前需要先約定好命名規范,盡量不要使用中文,非法符號不能使用,點(.)不能使用。請參考筆者在西門子網站發表的科普文章。
[故事][萬泉河]S7與WinCC變量命名規范(網址見附錄)
知乎上說,這是一個嚴肅的問題。
嗯,確實這也是一個長久以來困擾我們所有工控人的問題。
我們可以參考下IT界的變量命名規范,如:如何優雅地為程序中的變量和函數命名?(分享自@知乎)
查百度百科:變量命名規則,然后我們也可以從中了解到一些匈牙利命名法、google風格等稱謂,但即便你把這些規則全讀懂了,也會發現,好像對于工控項目來說,能參考的地方不多,因為他們用到的變量跟我們相比,數量根本不在一個數量級!
工控項目用到的硬件點數幾百點是很平常的,規模稍微大一點就是幾千點甚至上萬點。而除了硬點之外,還要有一些通信和上位控制的虛點,加起來數量就更多了。這些點全都相當于高級編程語言里的全局變量。任何一個高級語言編出來的程序,功能可能比我們做到的復雜,但全局變量絕不可能用到這么多。除非那是個新手,不懂得要模塊化編程。
所以,最終工控項目的變量命名規范,我們能參考的經驗只有,用英文!
即便英語不夠好,也得堅持用英文。因為,中文實在不方便作為變量名字,沒法簡略,太長,還不容易輸入。其次也不可以使用漢語拼音。完整的拼音也太長,而且同音詞太多引發歧義多,不能精確描述。而簡化了使用拼音首字母的連拼,寫出來后簡直是天書,除了作者自己,別人根本不可能看懂說的是什么。而且即便作者自己,時間稍微一長,回過頭來也可能不明白啥意思了。
其實一個規范的工程項目,所有設備都應該有位號,所以在變量命名的時候,最簡單的方式是使用位號來命名,而同一位號之下的各種輸入輸出,手動、自動、啟動、停止、打開、關閉、運行反饋、故障、開度、頻率等,就可以統一規范地使用英文了,畢竟這點英文單詞數量還不算多。
而具體到位號的命名以及鏈接了后面的功能點的命名,就不可避免要出現鏈接符號,綜合S7的符號表的命名規則和WinCC的變量的命名規則,很多符號是禁止使用或者使用中有風險的。比如:/\<>!+,;等基本都不能使用。
作為分隔符來說,點(.)是最方便的。但可惜的是,WinCC已經缺省當作是結構變量的分隔符了。如果鏈接S7-200/S7-1200的變量,不能使用結構變量,直接通過OPC傳輸的變量,則無法再使用點(.)。
減號(?),現實的文檔中經常用,但有風險的恰恰就是它。在它上面筆者曾經吃過虧,一個晚上幾個小時,翻來覆去倒騰好幾次變量,都是因為這個減號。這里,我只需要提兩件事大家可以測試一下。
你在單獨起變量名字的時候,不管在S7中還是WinCC中,都是合法的可以使用的,但如果使用WinCC V7.2的變量表復制粘貼功能,你從WinCC復制到EXCEL還是可以的,但倒過來復制的時候,所有變量名里面的減號都給變成了下劃線(_)。
還有就是,如果是模擬量需要進行變量歸檔,如果又使用了壓縮歸檔,那么在壓縮以后,不知道啥時候變量名也給變成了下劃線(_)。
是的。原來最好用的是下劃線。其實也只有下劃線最好用,所以大家在命名的時候都喜歡用它,最終一個完整的位號加功能鏈接起來后的變量就會到泛濫的程度,這就又出現問題了。比如:LS_DT_8_LEAK_F,LS_DT_9_LEAK_F,LS_DT_12_LEAK_F,LS_DT_13_LEAK_F。
這些變量名在WinCC中使用是沒有問題的,但如果我要用到變量前綴功能呢?如果WinCC程序處理中需要通過變量的分隔符來確定位號和功能,這么多下劃線可就亂套了。
在去年年底的一個項目中,我曾經非常痛苦地每天晚上花4~5個小時來處理幾千個變量的變量表,配合方每發來一次更新的變量表,我就要處理一次,以達到程序可用的規范。更換掉不可以使用的字符,更換掉不合適的使用了下劃線的變量。
直到最后,項目已經完工了,突然想到了一個更容易的解決方案,既然濫用下劃線,那索性更濫用好了,分隔符的地方,使用連續兩個下劃線(_ _)可好?
比如上面的變量名就變成:LS_DT_8__LEAK_F,LS_DT_9__LEAK_F,LS_DT_12__LEAK_F,LS_DT_13__LEAK_F。
我只要和配合方在遞交變量點表的時候提前約定這樣一個規范不就可以了嗎?
后來,又一個WinCC報表項目,我查了下項目中的變量的命名方式,直接提出了這樣的要求,所以變量名字就變成了:FT-2128__L,FT-2128__S,FT-2128__D,FT-2128__M,FT-BCEG01__L,FT-BCEG01__S,FT-BCEG01__D,FT-BCEG01__M。
當然朋友在做的時候是一頭霧水,不明白為啥要這樣,現在看到這里,應該也明白了吧。
至于變量名中還有的減號,因為變量已經建立,已經既成事實,就只好將錯就錯了。