- 西門子WinCC從入門到精通
- 王前厚等編著
- 4612字
- 2020-04-29 17:31:23
4.2 動態對象設計
所謂動態對象,就是可以鏈接到系統的運行變量,把系統的運行狀態以數字或者圖像變化的方式顯示到畫面上,或者在畫面上有一個輸入接口,操作者可以把一些操作指令或者給定值輸入,然后再通過變量送給PLC系統,控制設備啟停或者修改系統參數。
我們可以參照Windows系統軟件本身的操作功能,最常用的大概有:輸入框、按鈕、棒圖、滾動條、單選框、復選框等。入門篇挑選最基本的控件進行介紹。
這些動態對象分組在對象選項板的智能對象組和窗口對象組中。
(1)輸入/輸出域
所謂輸入輸出域,也稱I/O域,就是既可以輸入,用于輸入數值,又可以輸出,用于顯示運行數值。
對于畫面中的I/O域以及所有后面章節插入的動態對象,點擊右鍵中的組態對話框命令,見圖4-11,可以彈出常用的與動態數據本身相關的屬性集中設置的界面,比如圖4-12,I/O域的組態對話框的界面。

圖4-11 屬性

圖4-12 I/O域組態
變量從變量表中選擇,更新則基本可以保持默認即可。
類型,如果是用于輸入,則一般情況是選擇輸出和輸入,因為你輸入新數值之后,還要回顯回來以看到效果。
而如果數值是只用于顯示,不允許修改,則可以設置為輸出。
為了便于用戶識別這兩種不同模式的數值框,通常設置兩種不同的背景顏色,比如參考Windows系統的習慣,輸入數據為白色,輸出數據背景為灰色或彩色。
背景顏色的屬性不在組態對話框中,可以在選中對象的情況下,直接在工具欄左側的顏色欄中選取即可。
在設定完畢之后,打開控件的屬性,可以看到,綁定了變量和程序的屬性項,字體變成了黑體,因而順著黑體字可以很方便地找到綁定變量的參數的位置,見圖4-13。

圖4-13 對象屬性
除了少數參數在組態對話框中直觀地設置外,更多細節的參數還是需要在這里設置,其中比較重要的是數據的輸出格式。需要估量實際數據的范圍,來指定數據顯示的整數位和小數位,必須足夠長而不浪費。比如缺省的999.999。即便是整數1,也顯示1.000,而只要超過1000,這里顯示不下了,就會顯示為***。控件在這方面的自動適應性還是不夠強大。
屬性之后的靜態列中為設置的屬性。而動態列中凡是白色燈泡的為可以動態綁定程序,而沒有燈泡的,比如數據格式后面沒有燈泡,則代表這個屬性不可以動態。
(2)棒圖
插入棒圖后,調出組態對話框的界面,見圖4-14。

圖4-14 棒圖組態
綁定變量后,在屬性頁中的顯示,見圖4-15。

圖4-15 對象屬性
(3)滾動條
滾動條的組態對話框及屬性設置與棒圖非常相似。但區別是它可以作為輸入接口,通過拖動滾動條,來給PLC設定數據。
(4)狀態顯示
其實本意是根據狀態值的變化,顯示不同的圖形。在某些另外的軟件里會叫做圖形列表。在使用這個對象之前,我們應該準備一批圖形系列,或自己繪制,或網上下載,或提前儲備。如圖4-16所示(圖形為彩色,真實效果更明顯)。

圖4-16 圖形素材
幾個圖像分別代表了閥門關閉、打開、正關閉、正打開以及錯誤的各種狀態,見圖4-17。

圖4-17 狀態顯示組態
在畫面中插入了狀態顯示之后,先增加1、2、4、8狀態,然后把圖像拖給各狀態對應的基本畫面。
畫面建立OK之后,運行中可以通過修改所綁定的內部變量的值來觀察運行效果了。
(5)選項組(單選框)
單選框的每一個選擇框,對應的是一個字的每一個位,所對應的字的數值恰恰就是1、2、4、8,可以用來選擇方式輸入值。這里正好演示做操控上面的圖形顯示的對象。見圖4-18。

圖4-18 對象屬性
插入對象后,先在幾何組中把框數量由缺省的3改為4,然后在字體中逐步修改索引從1到4,逐個修改每條文本的內容。
將過程值綁定到和狀態顯示同一個的WinCC變量,見圖4-19。

圖4-19 變量綁定
后面的“更新”,可以改為“有變化時”。因為這里是人工操作的接口,響應快一點,可以令操作人員操作起來更舒適。
整體運行后效果如圖4-20所示。

圖4-20 運行
可以看到,隨著選擇不同內容,變量數值變化,畫面顯示的圖像也同步變化,很好地實現了動態化。
(6)復選框
用單選框操作時,會發現有一個缺點,就是不能選擇變量值為0了,所以為狀態顯示設計的0值時的圖像不能顯示了。而如果用復選框就可以了。使用方法與單選框類似。而復選框的更主要的特點是可以同時選中多個選項,如果用來控制狀態圖像顯示,最終是顯示了最大值對應的圖像。
(7)文本列表
文本列表的功能與圖形列表(狀態顯示)類似,但不知道為什么,其組態對話框卻更接近于I/O域,見圖4-21。

圖4-21 文本列表組態
所以文本序列需要在屬性中輸入,見圖4-22。

圖4-22 對象屬性
通過雙擊分配屬性,彈出具體的分配窗口中,輸入文本序列和其對應的值。
在運行中,如果只是為了顯示對象,那我們知道它可以隨著數字的變化而顯示不同的文本。而如果是要作為輸入接口,就可以通過選擇文本,而內核對應的是數字的選擇告訴了PLC。這個時候可以把樣式\作為下拉列表框顯示的屬性設置為是,就看到它就真的像Windows里面的下拉框了,見圖4-23。

圖4-23 運行
(8)動態對話框
我們回過頭來看對前面的所有控件的動態綁定的結果,都是白燈變成了綠燈,代表直接綁定了變量。點擊右鍵,見圖4-24。其實是有4個:動態對話框、C動作、VBS動作和變量。原來綠燈只是這四種編程形式之中的最后一種。

圖4-24 對象屬性
信息系統中的描述見表4-1。
表4-1 燈含義描述

簡單提一下變量連接:前面用到的變量都是在動態對話框中指定的,而實際上也可以在屬性中直接輸入鏈接變量。
比如棒圖的上下范圍、限制值的范圍,都可以直接鏈接到PLC中實現同步的動態化。每個初學者自行摸索測試一下,即可掌握。這里不再詳細講解。
需要注意的是,每一個屬性性質不同,需要鏈接的變量類型也不同,比如bool型、數值型和字符型,需要自行辨認好。
C動作和VBS動作:兩種編程語言分別需要ANSI C和VB Script的基礎。一般來說,同一個任務,掌握其中的任何一種都可以實現。但是,有太多的WinCC使用者,甚至是頗有經驗的使用者,可能在入門的環節過早地學會了這兩種語言,導致明明簡單組態就可以實現的問題,搞得異常復雜。自己內心也把使用WinCC的門檻抬高了,甚至莫名其妙對用好WinCC都有了恐懼感。
所以本書的特色是,在入門階段,這兩種編程語言一概不涉及,教給讀者,用最簡單的組態的方式,就可以實現基本的功能。
除了前面講到的各種控件的使用方式之外,還有一個重點就是這里要講的:動態對話框,見圖4-25。

圖4-25 動態值范圍
動態對話框的最經典的應用是對顏色的設定。比如根據變量的數值,設定不同的背景顏色。如圖4-25中所示。
對于bool類型的屬性,可以直接讀取一個字變量的某一個位的狀態,見圖4-26。

圖4-26 位數據
另外,對變量的讀取也可以用表達式/公式表達,可以用變量、函數、操作數(+-*/)等各種自由組合,見圖4-27。

圖4-27 公式
比如可以用一套復雜的計算,得出來結果,通過范圍選擇來確定狀態。或者可以直接采用計算值返回給屬性。見圖4-28。

圖4-28 直接數據
總之,動態對話框的功能非常強大,也非常方便實用,必須結合WinCC信息系統的幫助內容全面學習。
一個對入門者超綱的例子:
針對一個圓的背景顏色的編程,見圖4-29。

圖4-29 復雜公式
B1,B2,B3,B4分別為4個bool變量;
表達式:('B1'&'B2') | ('B3'&'B4');
功能:在B1與B2同時為1或者B3與B4同時為1時,顏色為紅色,否則為灰色。
這里,&=與;|=或,還可以分別替換&為*,|為+,表達式因此變換為('B1'*'B2')+('B3'*'B4'),也可以實現同樣的功能。
再比如上面關于狀態顯示的節中,比如所使用的變量W1是一個完整的狀態字,除了低位的bit0~bit3分別代表了閥門的狀態之外,高位的其他位也被賦予了其他的信息,那么直接使用變量,就不可用了。解決的方案就是轉化為用動態對話框實現。
公式為:W1' & 0xF或者’W1' & 15;
就成功地把一個字中的低4位提取出來了。
是不是太復雜了,有點超出了入門者的理解能力了?別太糾結,如果不能理解也沒多大問題,最多在PLC里面多做點編程處理,最終都能達到同樣效果。
這里只是給讀者展示了能實現的功能而已,實戰中用的并不多。
(9)按鈕
插入按鈕后的組態對話框,見圖4-30。

圖4-30 按鈕組態
在“單擊鼠標改變畫面”下面選擇一個已經設計的畫面PDL文件。
然后我們可以看看鼠標事件的鼠標動作中有了一個藍色閃電,代表已經組態了程序動作,見圖4-31。

圖4-31 鼠標動作
空白閃電代表未組態動作,而藍色閃電則代表組態了直接連接。
鼠標動作分左鍵和右鍵,其中左鍵動作可以先后觸發3個事件:動作、按下和釋放。而動作有3種:C動作、VBS動作和直接連接。
和前面的屬性設置一樣,在入門階段我們不涉及C動作和VBS,而僅僅是直接連接,就可以實現足夠強大的功能。
然后打開屬性對話框,找到事件的鼠標動作中,雙擊已經生成的動作,打開直接連接組態窗口,見圖4-32。

圖4-32 直接連接
可以看到,除了可以把一個以后的PDL畫面文件名送給畫面的名稱屬性之外,左側的源有三種:
●常數(不僅僅是畫面名,還可以是數值);
●屬性(畫面中某個對象的某個屬性的值);
●變量的值。
右側的目標也有三種:
●當前窗口;
●畫面中的對象(對象的某些屬性);
●變量的值。
直接連接的功能,可以從左邊的任意一個源取值,送到右邊的任意一個目標。
比如:
①可以把一個固定的數值,送給某一個WinCC變量;
②可以把某個WinCC變量的值,送給某一個WinCC變量;
③可以把畫面中的某個屬性值,送給某個WinCC變量;
④可以把某個固定的數值,送給畫面或畫面對象的某個屬性,比如顯示、閃爍、尺寸、位置等;
⑤可以把WinCC變量值,送給上述的屬性;
⑥可以把某個對象的相應屬性,送給另一個對象的上述屬性。
……
注意觀察還有個間接的選項,現在暫時不深入探討,但總的來說,不動用編程語言,僅僅使用直接連接,就可以組態出千變萬化的應用可能。
我們來看,按鈕除了有事件,也有屬性,屬性中除了可以設計靜態的樣式之外,還可以組態動態屬性。比如在特定的狀態下隱藏、閃爍、字體顏色或背景顏色變化等。與前面講的所有對象相同。
而與此同時,其實現在再回過頭去看,所有介紹過的靜態對象和動態對象,原來也曾經有過事件的頁面,大部分對象也都可以有鼠標事件、組態鼠標動作、編制程序等無數種可能性。
【萬泉河TIPS】如果一個按鈕的鼠標事件需要組態的動作有多個,如果在3個以內,可以分別在鼠標單擊、按下和抬起中分別組態直接連接,而仍然不需要編程。一次鼠標單擊,此三個事件會依次觸發。而如果要求多于3個,則只能用編程手段了。
【萬泉河TIPS】盡管WinCC提供了無數的組態的可能性,但在實際應用中最好還是把靜態對象和動態對象嚴格分清楚,凡是動態的程序組態到動態對象上,靜態的內容上只做背景的展示。除了畫面分層管理方便之外,用戶使用起來也更容易上手。
(10)庫中的開關按鈕
有很多時候,畫面上需要的操作按鈕不是窗口式的,而是一些更復雜的形式,這樣的按鈕在庫中可以找到,見圖4-33。

圖4-33 全局庫
這些大批的按鈕都應該熟悉并嘗試使用,可以極快地幫助你實現畫面的優美組態。
比如可以使用Incrdecr-Buttons文件夾中的增減按鈕,見圖4-34。

圖4-34 增減按鈕
在中文環境下插入庫按鈕時,竟然可以在黑三角下面隱隱地看到一組問號(????),而在英文下則是空白,說明西門子的庫在制作中不徹底。可以先修改其組態對話框,見圖4-35。

圖4-35 自定義對象
把按鈕的文本屬性添加到對象的對外顯示屬性中,然后就可以把文本屬性的問號修改為空格或者為空,修改之后如圖4-36所示。

圖4-36 對象屬性
把需要控制的WinCC變量綁定到Process屬性上即可。
作為電控系統的上位人機界面,有時候需要的按鈕是勒死電柜盤上的刀閘開關或者旋鈕等樣式,控制的對象也直接是電氣設備。這樣的按鈕在Toggle Buttons文件夾中,見圖4-37。

圖4-37 開關按鈕
選擇中意的開關樣式插入到畫面中,見圖4-38。

圖4-38 對象屬性
將需要控制的PLC控制位的bool型的WinCC變量綁定到Toggle屬性上即可。
事件屬性中有自然封裝的程序,自動從Toggle中讀取了變量名,并在操作中取反,實現了設備從停止到運轉及從運轉到停止的單鍵切換。