wincc按鈕畫面調(diào)用參數(shù)連接
劉玉蓉
發(fā)布于2014-11-12 17:39
6
0
標(biāo)簽:
問題:
1、wincc主畫面多設(shè)備調(diào)用同一按鈕畫面,按鈕畫面中有啟動(dòng)和停止按鈕。
通過C語(yǔ)言設(shè)置變量:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#define PW_FP "Top"
#define FP "1FM"
#define TagPrefix "DJ01"
if (y>512)
SetTop(lpszPictureName,PW_FP,y-10);
else
SetTop(lpszPictureName,PW_FP,y-10);
SetTagPrefix(lpszPictureName,PW_FP,TagPrefix);
SetPictureName(lpszPictureName,PW_FP,FP);
if (x<640)
SetLeft(lpszPictureName,PW_FP,x-20);
else
SetLeft(lpszPictureName,PW_FP,x-300);
SetPropChar(lpszPictureName,PW_FP,"CaptionText",GetPropChar(lpszPictureName,lpszObjectName,"ObjectName"));
SetVisible(lpszPictureName,PW_FP,1);
SetText(FP,"StaticTopic",TagPrefix);
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
和畫面中按鈕直接連接變量:_OpenValve1開閥;_CloseValve1關(guān)閥
即實(shí)現(xiàn)通過變量DJ1__OpenValve1開閥和DJ1_CloseValve1關(guān)閥,
好像沒有問題?!
2、現(xiàn)在的問題是:現(xiàn)在想采用被調(diào)用的畫面中如果只通過設(shè)置一個(gè)按鈕置位和復(fù)位來控制開閥和關(guān)閥,按鈕畫面中按鈕如何用C語(yǔ)言實(shí)現(xiàn)變量連接:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
BOOL Z;
Z=GetTagBit("TAG");
if(Z==0) SetTagBit("TAG",1);
else
SetTagBit("TAG",0);
中TAG如何設(shè)置?需要添加那些語(yǔ)句函數(shù)?
問題補(bǔ)充:
關(guān)于問題2中,被調(diào)用按鈕有3個(gè),
第1組調(diào)用對(duì)應(yīng)變量:m1_start_stop;m2_start_stop;m3_start_stop
第2組調(diào)用對(duì)應(yīng)變量:m4_start_stop;m5_start_stop;m6_start_stop
第3組調(diào)用對(duì)應(yīng)變量:m7_start_stop;m8_start_stop;m9_start_stop
如何實(shí)現(xiàn)變量傳送?
佳答案
這個(gè),有兩種方法可以實(shí)現(xiàn)。
1、建立項(xiàng)目函數(shù),并在項(xiàng)目函數(shù)里面建立全局變量,實(shí)現(xiàn)變量參數(shù)的傳遞。這個(gè)比較麻煩,不再詳述。
2、這個(gè)方法是通過建立一個(gè)內(nèi)部8位文本型變量Tag1,用來傳遞變量參數(shù),這個(gè)比較容易實(shí)現(xiàn)。具體步驟如下:
a、在打開需要調(diào)用的畫面的按鈕里面加上以下腳本:SetTagChar("Tag1","Start_Stop"); Start_Stop是變量名稱,即為控制閥門開啟和關(guān)閉的BOOL變量名稱?,F(xiàn)在變量Tag1的內(nèi)容是“Start_Stop”;
2、在公共畫面中建立一個(gè)按鈕,寫上如下腳本:
char *st;
int a;
st=GetTagChar("Tag1");
a=GetTagBit(st);
a=!a;
SetTagWord(st,a);
該腳本即可實(shí)現(xiàn)變量“Start_Stop”的翻轉(zhuǎn)。
注意:再點(diǎn)擊煩閥門彈出控制畫面之前,務(wù)必按照步驟1將該閥門的實(shí)際變量寫到Tag1中去。此外,需要注意的是,此畫面不再需要變量前綴。
補(bǔ)充說明:如果變量不多的的話,完全可以參考上述方法,建立三個(gè)內(nèi)部字符型變量,然后將你需要操作的三個(gè)變量名稱寫進(jìn)這三個(gè)內(nèi)部變量里面就可以了!