技術頻道

      利用紫金橋軟件提高畫面組態速度

      概述

      編寫程序時,我們經常將相似的模塊組織成函數,以避免重復編碼,這樣維護起來也方便。同樣在工程組態時,也存在相似的功能,相似的表現形式,如果組織合理,同樣可以讓我們事半功倍。下面以紫金橋軟件為例,來說明如何減少重復工作。

      紫金橋軟件提供了間接變量,變量轉向、圖形模板、圖形樣板等多種手段來避免畫面組態的重復工作,下面就對這些手段予以詳細說明。

      間接變量的使用

      間接變量是一種特殊形式的中間變量,是能夠被動態指向其他變量的變量,或稱為指針變量,它類似于C語言中的指針。間接變量在初始狀態并不指向任何變量,它需要通過特殊的賦值語句來定向。其形式如下:

      INDIRVAR = &TAGETBAR

      其中INDIRVAR:代表間接變量;TAGETBAR表示目標變量,目標變量一般為數據庫變量。

      經過這種變量重定向后,變量INDIRVAR和TAGETBAR的數值將保持一致。改變INDIRVAR的數值就等于改變TAGETBAR的值,反之亦然。二者綁定到一起,這種綁定將一直保持,直到INDIRVAR 變量被重定向為其它變量。利用間接變量可以避免畫面上的大量重復的工作,舉例如下:

      例如,如上所示為燈光控制畫面,圖中紅色的為照明燈。鼠標單擊照明燈將出現照明設置對話框。

      圖中有9盞燈,每盞燈的設置框都類似,只是關聯的變量不同。如果做將設置對話框畫面畫好后,復制幾份,將變量分別替換為對應的照明燈的變量,倒也不費事。但是困難的是什么時候認為第一幅畫面已經定型,決定復制為第二幅。因為一旦幅之后,如果想對畫面進行調整,勢必兩幅畫面都要修改。

      對于這種情況,在畫面中可以使用間接變量。在單擊照明燈時,將間接變量重定向指向實際變量。例如在照明燈的鼠標動作中填寫如下腳本:

      第一盞燈:

      INDIRVAR = &LAMP1.PV;

      DISPLAY(“站臺照明設置”);

      第二盞燈:

      INDIRVAR = &LAMP2.PV;

      DISPLAY(“站臺照明設置”);

      其他類似。

      而在站臺照明設置窗口中,只使用間接變量INDIRVAR,這樣你只需要做一幅畫面就可以了,減少了畫面編輯和維護工作量。

      變量轉向功能

      間接變量只能重定向到畫面中已經存在的變量,這就無法讓間接變量指向數據庫動態加入新點。變量轉向功能正是為此目的而產生的。

      變量轉向是通過VarRedir函數實現的,該函數格式如下:

      VarRedir(Tag, NewTag)

      該函數有兩個含義:

      1)如果Tag為數據庫變量,則對其進行重定向,即改變變量的數據庫參數項,使其指向其他位號。

      2)如果Tag為間接變量,則改變間接變量的指向。

      參數

      Tag:字符串,數據庫變量或間接變量,必須是變量本身,不能為變量名稱字符串。

      NewTag:字符串,新位號名或變量名。數據庫位號要包括參數。

      在上面例子中可以將INDIRVAR = &LAMP1.PV替換為VarRedir(INDIRVAR, "LAMP1.PV")。

      通過間接變量,VarRedir都可以將變量轉向到數據庫變量、中間變量、窗口變量,那么是不是變量重定向函數可以完全代替間接變量呢?

      不是的。

      • 間接變量在組態時就對變量進行編譯、檢查,所以使用間接變量更安全些,同樣使用VarRedir更靈活,更適合于有規律的、重復度較高的替換。
      • 間接變量在組態時就對變量進行編譯、檢查,所以其替換是靜態的,速度比較快。

      圖形模板

      當多幅畫面圖像相同,僅僅是每幅畫面顯示的點不同時,可以使用圖形模板。

      注意這里說的是點不同,而不是變量不同。一個點可以有很多參數,每個”點.參數”對應一個變量。可以認為點是變量的集合。

      下面,我們通過一個簡單的例子來說明圖形模板對象的使用方法。此例子是使用一幅簡單的畫面來顯示點的NAME、DESC、EU、PV、EULO、EUHI六個基本參數。

      下面是點FI1001的基本參數畫面:

      點FI1002,FI1003等都有與點FI1001類似的基本參數畫面。如果簡單的復制,我們可以生成其他點的基本參數畫面,但是畫面需要調整時就很費事了。

      使用間接變量可以避免畫面復制的問題,對于上面的畫面我們至少要定義6個間接變量。變量轉向動作也要象下面這樣寫很多行。

      INDIR_NAME = &FI1001.NAME;

      INDIR_DESC = &FI1001.DESC;

      INDIR_EU = &FI1001.EU;

      INDIR_PV = &FI1001.PV;

      INDIR_EULO = &FI1001.EULO;

      INDIR_EUHI = &FI1001.EUHI;

      是不是看起來很麻煩!

      使用圖形模板就可以減少替換語句,只是替換點名即可。方法如下:

      在窗口中畫出如下圖素,并將其與圖形模板對象打成單元。

      圖中”TP”為圖形模板對象,運行時不可見。

      在文本輸出動作中,分別輸入變量T.NAME、T.DESC、T.EU,在數值輸出動畫中分別輸入T.PV、T.EULO、T.EUHI等。這些變量都定義為模板變量

      變量轉向動作只要象下面一行即可。

      #TMPL.ChangeTag("T1", "FI1001");

      TMPL為圖形模板對象名稱。

      圖形樣板

      以上講述的都是對變量或點的替換,而樣板是對圖形的替換。

      在實際繪圖中我們經常遇到這樣情況,要求畫面中相同的元素使用相同的顏色或字體,而在項目實施前一段時間內很難確定下來,即便確定下來在項目實施中難免有些改變。若是沒有確定好規則,就無法著手工作,如果已經繪制了大量的畫面,修改起來是非常繁瑣的事。尤其是對于單元中的圖元改動更為復雜(需要拆開單元,改后再合成單元)。

      樣板就是為了解決上述問題而誕生的。樣板用于規定線的顏色、寬度、線性、填充色、填充樣式、字體、字號以及圖形的形狀。利用樣板可以方便修改具有相同、相似屬性的圖元。

      例如規定燃油管線使用樣板A(綠色),蒸汽管線使用樣板B(白色),如果要將所有的燃油管線改為黃色,只需要重新定義樣板A的顏色屬性為黃色即可,樣板負責對所有畫面中的燃油管線顏色進行替換。

      結論

      紫金橋軟件提供了很多獨特的方法來減少組態工程師的工作,利用這些方法,可以大大減少重復性勞動,并使得工程易于維護,提高了工作效率。

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 亚洲电影国产一区| 爆乳无码AV一区二区三区| 亚洲午夜精品一区二区| 国产一区中文字幕| 亚洲字幕AV一区二区三区四区| 日韩精品人妻一区二区中文八零| 天堂一区人妻无码| 亚洲日韩国产一区二区三区在线| 日韩免费视频一区二区| 伊人精品视频一区二区三区| 无码精品前田一区二区| 国产成人无码aa精品一区 | 久久99国产精品一区二区| 一区国严二区亚洲三区| 国产麻豆剧果冻传媒一区| 无码人妻aⅴ一区二区三区| 极品少妇一区二区三区四区| 91精品乱码一区二区三区| 国产日本一区二区三区| 91在线一区二区| 亚洲av无码一区二区三区四区| 精品亚洲AV无码一区二区| 日韩一区二区视频| 精品国产高清自在线一区二区三区 | 亚洲一区欧洲一区| 欧美亚洲精品一区二区| 日本精品一区二区在线播放| 精品一区狼人国产在线| 一区二区免费电影| 中文无码精品一区二区三区| 亚洲AV无码一区东京热久久 | 亚洲色精品aⅴ一区区三区| 国产午夜精品一区二区| 久久国产一区二区三区| 亚洲午夜在线一区| 成人毛片无码一区二区| 国产成人无码精品一区在线观看| 久久久久人妻一区精品| 日韩免费无码一区二区三区| 亚洲欧美一区二区三区日产| 国产一区二区在线视频播放|