PART 01WINCC全局脚本动作-隐藏控件#include "apdefap.h"intgscAction(void){// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_ENDintvalue;value=GetTagBit("IM_in");//"IM_in"为触发的变量。if(value==1) { SetVisible("lianxi.pdl","按钮8",TRUE);//lianxi.pdl为控制对象所在画面名,“按钮8”为对象名称}else{ SetVisible("lianxi.pdl","按钮8",FALSE);//lianxi.pdl}// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_ENDreturn0;}=====================================================说明:在触发器里选择变量IM_in
PART 02wincc全局脚本动作—提示框#include "apdefap.h"intgscAction(void){// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_ENDintvalue;value=GetTagBit("IM_in");if(value==1){ MessageBox(NULL,"请确认三厅相关门是否关好,或者请解锁。","提示框",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL); }// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_ENDreturn0;}=============================说明:在触发器中选择变量触发。
PART 03趋势面板
char * str_a = NULL;int Hi;int Lo;str_a = GetTagChar("TrendTagName1");Lo= GetTagSWord("TrendLo");Hi= GetTagSWord("TrendHi");SetPropWord(lpszPictureName,"qushi","TrendIndex",0);SetPropChar(lpszPictureName,"qushi","TrendTagName",str_a);SetPropWord(lpszPictureName,"qushi","ValueAxisBeginValue",Lo);SetPropWord(lpszPictureName,"qushi","ValueAxisEndValue",Hi);
PART 04获取位号SetTagChar("TrendTagName1","ProcessValueArchive\\PT111"); //Return-Type: BOOL SetTagSWord("TrendHi",200);SetTagSWord("TrendLo",0);SetTagByte("Trenden",1);
PART 05调用登录函数#pragma code("useadmin.dll")#include"PWRT_API.H"#pragma code()if (strcmp(GetTagChar("@CurrentUser"),"")==0){PWRTLogin('c');
PART 06踏雪寻梅时 静待一春归void SetCpuTime() {#pragma code("kernel32.dll"); void GetLocalTime(SYSTEMTIME *lpst);#pragma code(); SYSTEMTIME time BOOL ret;//printf("Start function SetCpuTime\r\n"); GetLocalTime(&time); ret= SetTagMultiWait("%d%d%d%d%d%d%d", "data_FLAG",1 ) }
-------------------------------------
PART 07对话框调用BOOL A;BOOL B;HWND hwnd=NULL;int RetMsg;A=GetTagBit("TJ_ANNIU"); //Return-Type: BOOL hwnd=FindWindow(NULL,"WinCC-运行系统 - ");if (A==0){ RetMsg =MessageBox (hwnd, "确定要停机?", "停机警告", MB_OKCANCEL|MB_SYSTEMMODAL|MB_SETFOREGROUND);if (RetMsg==IDOK) { SetTagBit("TJ_ANNIU",1); MessageBox (hwnd, "停机", "停机警告", MB_OK|MB_SYSTEMMODAL|MB_SETFOREGROUND); SetTagBit("TJ_ANNIU",0); }else B=0;}else{}------------------------------------------
PART 08声音报警#pragma code("Winmm.dll") VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwflag);#pragma code()
if(GetTagFloat("LIST555")>500) PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\Horn_Attention.wav",NULL,1);if(GetTagFloat("LIST555")<300) PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\alsndmgr.wav",NULL,1);-----------------------------------------------
PART 09水平移动建立内部变量BOOL-Q,无符号32位-P全局动作int a;int a1;a=GetTagBit("Q");a1=GetTagDWord("P");if(a==1){a1=a1+10;}if(a1>=100) { a1=0;}SetTagDWord("P",a1);然后用一个按钮控制二进制变量Q,为启动信号。物体的X位置对应的是变量P,设置为模拟量。当P为1的时候对应的X位置。P为2的时候对应X的位置,以此类推,就可以做出物体移动画面了,要做全局脚本-----------------------------------------------
PART 10wincc调用SQL语言1、创建一个 SQL文件,此文件在ISQL中建立,文件内包含所要执行的SQL语句。Windows对话框实现。具体如下:2、在WinCC中用C Script 调用上述SQL文件,如下所示:#include"apdefap.h"voidOnLButtonDown(char* lpszPictureName,char* lpszObjectName,char* lpszPropertyName,UINT nFlags,int x,int y){char*a="c:siemenscommonSQLANYISQL-q-b-cUID=DBA;PWD=SQL;DBF=E:testsqltestsqlRT.DB;DBN=CC_testsql_99-12-03-12:48:26R;READE:testsqltest.sql";Printf("%srn",a);ProgramExcute(a);}下面是一个简单的SQL文件内容:select *from pde#hd#t#test;output to e:test2.txt FORMAT ascii注意:文件名及路径中不要带空格。
PART 11设置或重置一个变量voidOnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){BOOL z;z=GetTagBit("MyBitVariable");//获得变量值if (z==0) SetTagBit("MyBitVariable",1); //设置变量值elseSetTagBit("MyBitVariable",0); }
PART 12运行时图形产生动态旋转
#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){staticint x=25,y,z;//x为半径的初始值为25,y为切换变量,z为搅拌机运行状态变量z=GetTagBit("202搅拌机运行"); //取得PLC搅拌机的运行状态if(z!=0){switch(y){case0:x=x-4;if(x<=0)y=1;break;default :x=x+4;if(x>=25)y=0;break;}}return x;}
PART 13wincc如何在程序中动态修改用户密码1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC数据源管理器 2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称 3、在脚本中加入以下代码:#pragma code("UseGen.dll") #include"USEGENAP.H"#pragma code() LPCMN_ERROR err; //定义的LPCMN_ERROR型变量,在函数调用中需使用 if (PWGENConnect("CC_ass_04-09-21_16:35:22",err)) //建立与数据库的联接,其中CC_ass_04-09-21_16:35:22用第二步中记下的名称取代 { if (PWGENChangePassword(GetTagChar("user"),GetTagChar("oldpassword"),GetTagChar("password"),err)) //修改密码,user,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集 { //密码修改成功后的操作,如给用户提示等 } } PWGENDisconnect(err); //断开与数据库的联接 4、编译运行程序 5、工作完成 6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。
PART 14wincc如何实现鼠标OnMouseover事件用WINDOWAPI函数GetCusorPos获取当前鼠标位置,用GetWindowRect函数获取窗口位置,两值相减得鼠标在WINCC frame上的相对位置。用全局脚本(设定为1s定时刷新),然后获取要OnMouseOver事件的物体的位置,并与鼠标位置相比较,如一致则触发自己定义的动作。#include"apdefap.h"intgscAction( void ){ #pragma code("user32.dll"); BOOL GetCusorPos(POINT lpPoint); //获取鼠标的位置(绝对位置-对应屏幕分辨率) BOOL GetWindowRect(HWND hwnd,LPRECT lpRect); //获取窗体位置 #pragma code(); POINT pPos; RECT rRec; HWND hwnd; BOOL bRet,bRet2; long lLeft,lTop,lWidth,lHeight; long lX,lY; char szStr[100];hwnd=FindWindow(NULL,"WinCC-Runtime - "); //如语言为中文应为"WinCC 运行系统-"if (hwnd==0) {printf("rnError! WinCc Handle is %d",hwnd);goto over;}bRet=GetCursorPos(&pPos); if (bRet==0) goto over;bRet2=GetWindowRect(hwnd,&rRec); if (bRet2==0) goto over; lX=pPos.x-rRec.left; //鼠标 对{置 lY=pPos.y-rRec.top; //鼠标 位置 //如果为非全屏模式,需将上述数值中的高height判断减去标题栏的宽度 //printf("The Current Cusor Pos is x:%d,y:%drn",pPos.x,pPos.y); //printf("The Cusor Pos in Window is x:%d,y:%drn",pPos.x-lLeft2,pPos.y-lTop2); lLeft=GetLeft("NewPdl0.Pdl","Text1"); //Return - Type :long int lTop=GetTop("NewPdl0.Pdl","Text1"); //Return - Type :long int lWidth=GetWidth("NewPdl0.Pdl","Text1"); //Return - Type :long int lHeight=GetHeight("NewPdl0.Pdl","Text1"); //Return - Type :long intif ((lX>=lLeft)&&(lY>=lTop)&&(lX<=lLeft+lWidth)&&(lY<=lTop+lHeight)) {sprintf(szStr,"%d,%d",lX,lY); SetText("NewPdl0.Pdl","Text1",szStr); //Return - Type :char*} //printf("The Text1 Pos is x:%d,y:%drn",lLeft2,lTop-lTop2); over: return0; }———————————————————————————————————————
PART 15如何在退出wincc监控时直接关闭电脑
1.利用动态向导
2.在脚本中加入 DMExitWinCCEx(DM_SDMODE_SYSTEM);也可以
PART 16过wincc API函数独处当前报警消息1、使用GMsgFunction中读出当前报警信息的ID(dwMsgNr);2、使用MSRTGetMsgCSData函数读出该报警信息ID对应文本库TEXTLIB中的文本ID(dwTextID1);3、使用MSRTGetMsgText函数读出该文本ID的文本。信息到达处理:如果读取文本成功,则置文本变量MSG。信息离去处理:如果MsgNr与上一次相同,则复位MSG,如果不是,则继续保持信息。具体函数说明请看ODK文档 BOOL GMsgFunction( char* pszMsgData) { #pragma code("msrtcli.dll") #i nclude "msrtapi.h"#pragma code();MSG_TEXT_STRUCT tMeld; MSG_CSDATA_STRUCT sM; CMN_ERROR err; BOOL bRet; DWORD dwTextID1; DWORD dwMsgNum; char szMsg[255]; #define TAG_MSG "MSG"MSG_RTDATA_STRUCT mRT; memset( &mRT, 0, sizeof( MSG_RTDATA_STRUCT ) );if( pszMsgData != NULL ) {printf( "Meldung : %s rn", pszMsgData ); sscanf( pszMsgData, "%ld,%ld,%04d.%02d.%02d,%02d:%02d:%02d:%03d,%ld, %ld, %ld, %d,%d", &mRT.dwMsgNr, // Meldungsnummer &mRT.dwMsgState, // Status MSG_STATE_COME, .._GO, .._QUIT, .._QUIT_SYSTEM &mRT.stMsgTime.wYear, // Tag &mRT.stMsgTime.wMonth, // Monat &mRT.stMsgTime.wDay, // Jahr &mRT.stMsgTime.wHour, // Stunde &mRT.stMsgTime.wMinute, // Minute &mRT.stMsgTime.wSecond, // Sekunde &mRT.stMsgTime.wMilliseconds, // Millisekunde &mRT.dwTimeDiff, // Zeitdauer der anstehenden Meldung &mRT.dwCounter, // Interner Meldungsz?hler &mRT.dwFlags, // Flags( intern ) &mRT.wPValueUsed, &mRT.wTextValueUsed );//**************************************************************************************code for dcount if (mRT.dwMsgState==MSG_STATE_COME)//信息到达处理 { dwMsgNum=mRT.dwMsgNr; printf("rnThe Alarm Message No is %d !rn",dwMsgNum); bRet=MSRTGetMsgCSData(dwMsgNum,&sM,&err); if (bRet==TRUE) { dwTextID1=sM.dwTextID[0]; printf("rnThe TextID of The MessageNr %d is %d !rn",dwMsgNum,dwTextID1); bRet=MSRTGetMsgText(1,dwTextID1,&tMeld,&err); if (bRet==TRUE) { sprintf(szMsg,"%s",tMeld.szText); printf("rnThe Text of TextID %d is %s !rn",dwTextID1,szMsg); }
}} if (mRT.dwMsgState==MSG_STATE_GO)//信息离去处理 { dwMsgNum=mRT.dwMsgNr; if (dwMsgNum==GetTagDWord(TAG_MSG_NR)) SetTagChar(TAG_MSG,"");} //**************************************************************************************code for dcount// Meldungsdaten einlesen// Prozesswerte lesen, falls gew???????§???1nscht }printf("Nr : %d, St: %x, %d-%d-%d %d:%d:%d.%d, Dur: %d, Cnt %d, Fl %drn" , mRT.dwMsgNr, mRT.dwMsgState, mRT.stMsgTime.wDay, mRT.stMsgTime.wMonth, mRT.stMsgTime.wYear, mRT.stMsgTime.wHour, mRT.stMsgTime.wMinute, mRT.stMsgTime.wSecond, mRT.stMsgTime.wMilliseconds, mRT.dwTimeDiff, mRT.dwCounter, mRT.dwFlags ) ;SetTagChar(TAG_MSG,szMsg);return( TRUE ); }
PART 17实现用户登录日志(wincc中用c脚本实现)用户登陆日志:(包括用户的登陆退出信息,以便查询在什么时间段是哪个用户在使用这个监控软件)#i nclude "apdefap.h"int gscAction( void ) { #pragma code("kernel32.dll") VOID GetLocalTime(LPSYSTEMTIME lpSystemTime); #pragma code()char* username; char buf[128]; static char preuser[128]; unsigned a,b,c,d,e,f; FILE* fp; SYSTEMTIME sysTime;//读取系统时间,并且复制给变量a,b,c,d,e,f GetLocalTime(&sysTime);a=sysTime.wHour; b=sysTime.wMinute; c=sysTime.wSecond; f=sysTime.wYear; e=sysTime.wMonth; d=sysTime.wDay;//得到当前用户名称 username = GetTagChar("@CurrentUser"); fp= fopen("c:wincclog.txt", "a+"); if(strcmp(username, preuser)!=0) //如果当前用户名称和前一个用户名不同 { if((strcmp(username, "") != 0)&&(strcmp(preuser, "") == 0)) //如果当前用户名称不空同时前一个用户名为空
{ sprintf(buf, "用户:%st登陆时间是:t %d-%d-%d,%d-%d-%dn", username,a,b,c,d,e,f); fputs(buf, fp); } else{ if((strcmp(username, "") == 0)&&(strcmp(preuser, "") != 0)) //如果当前用户名称为空同时前一个用户名不空
{ sprintf(buf, "用户:%st退出时间是:t %d-%d-%d,%d-%d-%dn", preuser,a,b,c,d,e,f); fputs(buf, fp); }else{ sprintf(buf, "用户:%st退出时间是:t %d-%d-%d,%d-%d-%dn", preuser,a,b,c,d,e,f); fputs(buf, fp); sprintf(buf, "用户:%st登陆时间是:t %d-%d-%d,%d-%d-%dn", username,a,b,c,d,e,f); fputs(buf, fp); } } }strcpy(preuser, username); fclose(fp);return0; }
PART 18全局脚本声音报警#pragma code("Winmm.dll") VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwflag);#pragma code()if (GetTagBit("XY")==0) {if(GetTagFloat("LIST555")>500) //热井液位 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\热井液位高1.wav",NULL,0); }if(GetTagFloat("LIST555")<300) //热井液位 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\热井液位低1.wav",NULL,0); }if(GetTagFloat("TE421A")>100 || GetTagFloat("TE421B")>100 || GetTagFloat("TE423A")>100 || GetTagFloat("TE423B")>100 || GetTagFloat("TE425")>100 || GetTagFloat("TE427")>100 || GetTagFloat("TE442")>100) //轴瓦温度 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\轴瓦温度高1.wav",NULL,0); }if(GetTagFloat("TIE485")>45) //冷油器出口油温 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\冷油器出口油温高.wav",NULL,0); }if(GetTagFloat("PT091")<0.5) //进汽压力 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\蒸汽压力低.wav",NULL,0); }if(GetTagFloat("PT109")>40) //真空低 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\排汽压力高.wav",NULL,0); }if(GetTagFloat("PT131")<0.13) //润滑油压力低 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\润滑油压力低1.wav",NULL,0); }if(GetTagFloat("PDT213")>0.05 || GetTagFloat("PDT215")>0.05 || GetTagBit("PDS071")==0 || GetTagBit("PDS073")==0) //滤油器差压 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\滤油器差压高.wav",NULL,0); }if(GetTagFloat("PT121")<0.65) //主油泵出口压力 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\主油泵出口压力低.wav",NULL,0); }if(GetTagFloat("LIST551")<-190) //油箱油位 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\油箱油位低.wav",NULL,0); }if(GetTagFloat("VE735A")>52 | GetTagFloat("VE737A")>52 | GetTagFloat("VE745A")>52 || GetTagBit("XE202")==1 || GetTagBit("XE204")==1 || GetTagBit("XE206")==1) //振动大 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\轴瓦振动高.wav",NULL,0); }if(GetTagFloat("ZE769")>0.4 || GetTagFloat("ZE769")<-0.4 || GetTagBit("ZE208")==1) //汽机转子轴向位移 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\轴相位移高.wav",NULL,0); }if(GetTagFloat("ZDE785")>3 || GetTagFloat("ZDE785")<-2 || GetTagBit("VE209")==1) //汽机转子胀差 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\胀差高.wav",NULL,0); }if(GetTagFloat("AI_0094")>3240) //转速 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\汽轮机转速高.wav",NULL,0); }
if(GetTagBit("DI_0175")==1 || GetTagBit("DI_0180")==1) //保护跳闸 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\发电机保护跳闸.wav",NULL,0); }if(GetTagBit("DI_0177")==1 || GetTagBit("DI_0181")==1 ) //定子转子一点接地 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\发电机转子接地.wav",NULL,0); }if(GetTagBit("DI_0176")==1) //过负荷 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\发电机过负荷.wav",NULL,0); }if(GetTagBit("DI_0182")==1) //失磁 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\发电机失磁.wav",NULL,0); }if(GetTagBit("SOE_15")==1) //ETS动作 { PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\ETS动作.wav",NULL,0); } }----------------------------------------------------------------------------------------------
PART 19闪烁边框图片的脚本Flash - 简短描述使用Flash组中的函数可以修改或调用各种闪烁属性。1.longintGetBackFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的闪烁背景色读出闪烁颜色的实例{longint flashcol_on;//获得背景闪烁颜色 Flash col_on = GetBackFlashColorOn(lpszPictureName,"Group 1");//自定义代码//在那里用户可以使用返回值做某事}GetBackFlashColorOn函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。2). 执行处理返回值的自定义代码。
2. longintGetBackFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的背景闪烁颜色。读出闪烁颜色的实例{longint flashcol_on;//获得背景闪烁颜色 Flash col_on = GetBackFlashColorOn(lpszPictureName,"Group 1");//自定义代码//在那里用户可以使用返回值做某事}GetBackFlashColorOn函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。2). 执行处理返回值的自定义代码。
3. longintGetBorderFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的边框或线闪烁颜色。读出闪烁颜色的实例{longint flashcol_on;//获得背景闪烁颜色 flashcol_on = GetBackFlashColorOn(lpszPictureName,"Group 1");//自定义代码//在那里用户可以使用返回值做某事}GetBackFlashColorOn函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。
4. longintGetBorderFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的边框或线闪烁颜色。读出闪烁颜色的实例{longint flashcol_on;//获得背景闪烁颜色 flashcol_on = GetBackFlashColorOn(lpszPictureName,"Group 1");//自定义代码//在那里用户可以使用返回值做某事}GetBackFlashColorOn函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。
5. BOOL GetFlashBackColor(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否激活背景闪烁。读出“闪烁背景激活”属性的实例{BOOL bflash_col;//了解闪烁是开还是关 bflash_col = GetFlashBackColor(lpszPictureName,"Group 1");if(bflash_col){// 自定义代码// 闪烁是否被激活}else{// 自定义代码// 闪烁是否被取消激活}}GetFlashBackColor函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。1). 读出背景色闪烁是否被激活以及bflash_col中的缓冲区。2). 根据该函数的返回值执行自定义代码。
PART 20I/O脚本使用i_o组中的函数可以修改或调用影响输入和输出值的各种属性。1.char* GetAssignments(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于列表,分配文本给数值范围
2.BOOL GetAssumeOnExit(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定退出该域时是否应用输入的数值。
3.BOOL GetAssumeOnFull(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定完成输入时是否应用输入的数值。
4.longint GetBitNumber(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用列表类型“位”时,它指定输出值中相关的位。读出布尔型属性的实例{BOOL bHiddenInput;//获得隐藏输入的状态 bHiddenInput = GetHiddenInput(lpszPictureName,"IO Field 1");if(bHiddenInput){ // 自定义代码 // 隐藏输入是否被激活}else{// 自定义代码 // 隐藏输入是否被取消激活}}GetHiddenInput函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“IO Field1”是该对象的名称。1). 读出文本是否是粗体字以及bHiddenInput中的缓冲区。2). 根据该函数的返回值执行自定义代码。5.BOOL GetClearOnError(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定错误输入后是否激活删除内容。
6.longint GetDataFormat(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它指定域内容的数据类型。读出布尔型属性的实例{BOOL bHiddenInput;//获得隐藏输入的状态 bHiddenInput = GetHiddenInput(lpszPictureName,"IO Field 1");if(bHiddenInput){// 自定义代码// 隐藏输入是否被激活}else{// 自定义代码// 隐藏输入是否被取消激活}}
PART 21tag脚本使用来自Tag组的函数可以设置或调用变量。1.BOOL GetTagBitStateWait(Tag Tag_Name, PDWORD lp_dwstate)函数,建立数据类型“二进制变量”的过程变量的数值。直接从PLC读取该数值。也返回变量的状态。读出二进制类型变量的实例{DWORD dwstate;BOOL bValue;dwstate = 0xFFFFFFFF;//获得该变量值 //dwstate是变量状态 bValue = GetTagBitStateWait("gs_tag_bit",&dwstate);//创建包含该变量值的字符串if (bValue){// 自定义代码// 该变量的数值是否是true..}else{// 自定义代码 // 该变量的数值是否是false}}GetTagBitStateWait函数参数:“gs_tag_bit”是该变量的名称。“&dwstate”是应在其中存储变量状态的变量地址。1). 读出该变量值以及bstate中的缓冲区。该函数将变量状态存储在dwstate中。2). 根据该函数的返回值执行自定义代码。
PART 22wincc项目脚本使用来自WinCC组的函数可以在运行系统中定义各种设置。使用System子组中的函数可以操作WinCC运行系统。1.BOOL DeactivateRTProject()函数,取消激活该项目。取消激活WinCC运行系统的实例{//取消激活运行系统DeactivateRTProject ();}该函数取消激活WinCC运行系统。
2.BOOL ExitWinCC()函数,终止WinCC
3.退出WinCC的实例{//退出winccExitWinCC ();}该函数终止WinCC。WinCC组包含影响整个WinCC系统的函数。1.BOOL GetHWDiag(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties)函数 运行时该函数可实现诊断的直接启动,由事件触发。必须在对象上组态、运用该事件。 如果该事件发生,硬件诊断功能从关联PLC的STEP7被启动。 为了使用该功能,必须满足下列条件: • WinCC项目,带有从其进行访问的画面,而且STEP7项目必须在同一台计算机上。 • 必须将WinCC项目存储为STEP7项目(STEP7 Projekt\wincproj\WinCC Projekt)的子目录。 • 已将S7变量映射到WinCC。2.BOOL GetHWDiagLevel(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties, DWORD dwLevel)函数 根据在dwLevel下面指定的用户管理员功能号为激活的用户执行用户配置文件级测试。 之后,运行时诊断被直接启动并由事件触发,须在对象上组态该事件。 如果该事件发生,硬件诊断功能从关联PLC的STEP7被启动。 为了使用该功能,必须满足下列条件: • 在WinCC中激活的用户必须有必要的用户配置文件级。 • WinCC项目,带有从其进行访问的画面,而且STEP7项目必须在同一台计算机上。 • 必须将WinCC项目存储为STEP7项目(STEP7 Projekt\wincproj\WinCC Projekt)的子目录. • 已将S7变量映射到WinCC。3.BOOL GetKopFupAwl(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties)函数 该函数执行WinCC Step7编辑器“KFA”的网络激活。 执行该函数,完成两项子任务: • 建立从WinCC访问网络所需要的数据。 • 将该数据传送到Step 7并使用AUTAPI定位Step 7程序中操作数的利用点。4.BOOL GetKopFupAwlLevel(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName,LPCTSTR lpProperties, DWORD dwLevel)函数 根据在dwLevel下面指定的用户管理员功能号为激活的用户执行用户配置文件级测试,然后访问Step 7编辑器“KFA”。 作为三项子任务执行该函数: • 建立从WinCC进行网络访问所需要的数据。 • 在WinCC中为激活的用户执行用户配置文件级测试。 • 将该数据传送到Step 7并使用AUTAPI定位Step 7程序中操作数的利用点。5.void OnDeactivateExecute()函数 终止WinCC时调用该函数。 由于它是标准函数,可以插入指令,然后执行它们。6.void OnErrorExecute(CCAPErrorExecute ErrorExecute)函数 执行动作或函数而发生错误时由系统调用OnErrorExecute。 此函数能够确定出错的准确原因。 由系统调用该函数,并且不要求附加的调用命令。 由于包括作为标准函数的此函数,可以改变输出的类型。7.void OnTime(CCAPTime time)函数 OnTime只能由系统调用。该函数给出所有动作的运行时间或确定哪个动作的运行时间超出了指定时间。通过APDIAG可以激活和取消激活时间测量。 由于此函数是一个标准函数,所以可以通过修改函数代码来改变输出的类型。 结构定义CCAPTimetypedefstruct { DWORD dwCurrentThreadID; 当前线程的线程ID DWORD dwCode; 代码BOOL bCycle; 周期/非周期char* szApplicationName;应用程序的名称char* szFunctionName; 函数的名称 LPVOID lpParam; 指向动作堆栈的指针 DWORD dwParamSize; 动作堆栈的大小double dblTime; DWORD dwFlags; 标记 } CCAPTime; 组成部分 dwCode dwCode结构元素提供OnTime调用信息: dwCode = 113 用每个动作的时间调用 dwCode = 114 用一个动作的超时调用 dwFlags dwFlags结构元素提供输出类型的信息: dwFlags = TRUE 结果被输出到文件中。 dwFlags = FALSE 结果被输出到诊断窗口中
PART 23Alarm脚本Alarm组包含控制WinCC报警控件的函数。标准函数可用于工具栏中的每一个按钮。这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。使用标准函数操作WinCC报警控件的实例 {//确认选择的报警记录消息AcknowledgeMessage(GetTagWord("U08i_MsgNr"));}指定待确认的消息号。在本例中是从变量读取的。
2.BOOL AXC_OnBtnArcLong(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
3.BOOL AXC_OnBtnArcShort(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。4.BOOL AXC_OnBtnComment(char* lpszPictureName, char* pszMsgWin)函数外部消息窗口操作,该函数显示先前所选消息的注释。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
5.BOOL AXC_OnBtnEmergAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,此函数打开确认对话框(紧急确认/复位)。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
6.BOOL AXC_OnBtnHornAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数确认蜂鸣器信号。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
7.BOOL AXC_OnBtnInfo(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数显示信息文本。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
8.BOOL AXC_OnBtnLock(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数打开“设置锁定”对话框。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
9.BOOL AXC_OnBtnLockUnlock(char* lpszPictureName, char* pszMsgWin),函数,该函数锁住在消息窗口中选择的消息。之后,不再归档该消息。该函数释放在锁定列表中选择的消息。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
10.BOOL AXC_OnBtnLockWin(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作.该函数调用锁定列表。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
11.BOOL AXC_OnBtnLoop(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,此函数触发所选消息的“报警回路”函数。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
12.BOOL AXC_OnBtnMsgFirst(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表的开始处。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
13.BOOL AXC_OnBtnMsgLast(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表的结束处。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的最后一条消息AXC_OnBtnMsgLast("gs_alarm_00","Control1");}AXC_OnBtnMsgLast函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
14.BOOL AXC_OnBtnMsgNext(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表中的下一条消息。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
15.BOOL AXC_OnBtnMsgPrev(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表中的前一条消息。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
16.BOOL AXC_OnBtnMsgWin(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数调用过程消息窗口。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
17.BOOL AXC_OnBtnPrint(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,打印机打印出符合在报警控件中定义的选择标准的全部消息。WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
18.BOOL AXC_OnBtnScroll(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数激活水平和垂直滚动功能。使用标准函数操作WinCC报警控件的实例 {// 激活/取消激活滚动功能AXC_OnBtnScroll("gs_alarm_00","Control1");}AXC_OnBtnScroll函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
19.BOOL AXC_OnBtnSelect(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数打开“设置选择”对话框。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
20.BOOL AXC_OnBtnSinglAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数确认当前所选的消息。使用标准函数操作WinCC报警控件的实例{// 确认激活的消息AXC_OnBtnSinglAckn("gs_alarm_00","Control1");}AXC_OnBtnSinglAckn函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。21.BOOL AXC_OnBtnVisibleAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,确认消息窗口中可见的全部消息(组确认)。使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。Control 1是WinCC报警控件的对象名。
22BOOL AXC_SetFilter(char* lpszPictureName, char* lpszObjectName, LPMSG_FILTER_STRUCT lpMsgFilter, LPCMN_ERROR, lpError)函数,外部消息窗口操作,该函数为WinCC报警控件设置过滤器,以便根据指定的过滤标准筛选出可用的消息。使用标准函数操作WinCC报警控件的实例{BOOL ret;MSG_FILTER_STRUCT Filter;CMN_ERROR Error;//重新设置过滤器结构 memset( &Filter, 0, sizeof( MSG_FILTER_STRUCT ) ); //设置过滤器名称 strcpy( Filter.szFilterName, "Control1");// 挑选选择元素 Filter.dwFilter = MSG_FILTER_NR_FROM | MSG_FILTER_NR_TO;// 消息号来自 Filter.dwMsgNr[0] = 2;// 消息号来自 Filter.dwMsgNr[1] = 2;ret = AXC_SetFilter("gs_alarm_00","Control1",&Filter,&Error);}1. 命名该过滤器。2. 选择过滤器的类型。3. 指定过滤器标准。4. 设置过滤器。常规使用注释过滤器类型和过滤器标准必须适合使用;在过滤器结构中描述所有其它的过滤器类型。使用标准函数操作WinCC报警控件的实例{BOOL ret;MSG_FILTER_STRUCT Filter;CMN_ERROR Error;//删除整个过滤器结构 memset( &Filter, 0, sizeof( MSG_FILTER_STRUCT ) ); //设置空的过滤器结构 AXC_SetFilter("gs_alarm_00","Control 1",&Filter,&Error);}1. 删除该过滤器结构。2. 用空值填充过滤器结构。结构定义MSG_FILTER_STRUCTtypedefstruct {CHAR szFilterName[MSG_MAX_TEXTLEN+1];WORD dwFilter;SYSTEMTIME st[2];DWORD dwMsgNr[2];DWORD dwMsgClass;DWORD dwMsgType[MSG_MAX_CLASS];DWORD dwMsgState;WORD wAGNr[2];WORD wAGSubNr[2];DWORD dwArchivMode;char szTB[MSG_MAX_TB][MSG_MAX_TB_CONTENT+1]DWORD dwTB;Double dPValue[MSG_MAX_PVALUE][2];DWORD dwPValue[2];DWORD dwMsgCounter[2];DWORD dwQuickSelect;}MSG_FILTER_STRUCT;描述在该结构中定义过滤标准。组成部分dwFilter通过下列常数从“m_global.h”文件定义过滤条件:MSG_FILTER_DATE_FROM 从日期MSG_FILTER_DATE_TO 到日期MSG_FILTER_TIME_FROM 从时间MSG_FILTER_TIME_TO 到时间MSG_FILTER_NR_FROM 从消息号MSG_FILTER_NR_TO 到消息号MSG_FILTER_CLASS 消息等级MSG_FILTER_STATE 消息状态MSG_FILTER_AG_FROM 从AG号MSG_FILTER_AG_TO 到AG号MSG_FILTER_AGSUB_FROM 从AG子号MSG_FILTER_AGSUB_TO 到AG子号MSG_FILTER_TEXT 消息文本MSG_FILTER_PVALUE 过程值MSG_FILTER_COUNTER_FROM 从内部消息计数器MSG_FILTER_COUNTER_TO 到内部消息计数器MSG_FILTER_PROCESSMSG 过程消息MSG_FILTER_SYSMSG 系统消息MSG_FILTER_BEDMSG 事件消息MSG_FILTER_DATE 日期从...到...MSG_FILTER_TIME 日期从...到...MSG_FILTER_NR 消息号从...到...st日期/时间从...到...在这种情况下,st[0]是开始时间(从),st[1]是结束时间(到)为过滤标准填充这些域:MSG_FILTER_DATE,MSG_FILTER_DATE_FROM,MSG_FILTER_DATE_TO, MSG_FILTER_TIME,MSG_FILTER_TIME_FROM和MSG_FILTER_TIME_TO如果传送SYSTEMTIME参数要求当前时间,使用GetLocalTime函数而非GetSystemTime。通常这两个函数之间的时间差别很大。dwMsgNr消息号从...到...在这种情况下,dwMsgNr[0]是开始号(从),dwMsgNr[1]是结束号(到)为过滤标准填充这些域:MSG_FILTER_NR,MSG_FILTER_NR_FROM和MSG_FILTER_NR_TOdwMsgClass位代码消息等级为过滤标准填充这个域:MSG_FILTER_CLASSdwMsgType每个消息等级的位代码消息类型为过滤标准填充这个域:MSG_FILTER_CLASSdwMsgState位代码消息状态为过滤标准填充这个域:MSG_FILTER_STATEwAGNrAG号从...到...为过滤标准填充这些域:MSG_FILTER_AG_FROM和MSG_FILTER_AG_TOwAGSubNrAGSubNr从...到为过滤标准填充这些域:MSG_FILTER_AGSUB_FROM和MSG_FILTER_AGSUB_TOdwArchivMode归档/协议识别必须用0填充。szTB文本块文本为过滤标准填充这个域:MSG_FILTER_TEXTdwTB文本块激活(从...到...,位代码)为过滤标准填充这个域:MSG_FILTER_TEXTdPValue过程值从...到...为过滤标准填充这个域:MSG_FILTER_PVALUEdwPValue过程值激活(从...到... 位代码)为过滤标准填充这个域:MSG_FILTER_PVALUEdwMsgCounter内部消息计数器从...到...为过滤标准填充这些域:MSG_FILTER_COUNTER_FROM,MSG_FILTER_COUNTER_TOdwQuickSelect快速选择小时,天,月为以后扩展而保留该参数,并且必须用0预定义。为过滤标准填充这个域:MSG_FILTER_QUICKSELECTLOWORD类型:MSG_FILTER_QUICK_MONTH 快速选择后n个月MSG_FILTER_QUICK_DAYS 快速选择后n天MSG_FILTER_QUICK_HOUR 快速选择后n个小时HIWORD号:1...n快速选择函数的结束时间与本地计算机的当前系统时间有关。开始时间是n * (往回计算月,日,小时)。结构定义CMNERRORstructCMNERRORSTRUCT {DWORD dwError1,DWORD dwError2,DWORD dwError3,DWORD dwError4,DWORD dwError5;TCHAR szErrorText[MAX_ERROR_LEN];}CMNERROR描述扩展的错误结构包含错误代码和与发生的错误相关的错误文本。每个应用程序可以使用该错误结构评价或发出错误消息。组成部分dwError1 .. dwError5可按API函数的要求使用这些条目。API描述包含出错时条目的各自数值。否则,错误代码在dwError1中。szErrorText错误代码的文本描述缓冲区从资源建立该内容,因此依赖于语言。BOOL GMsgFunction(char* pszMsgData)函数该函数提供消息数据。表示单个消息的全局函数。为每个消息调用全局函数,为每个消息设置“触发动作”参数。最好在项目函数中解释消息数据,从GMsgFunction调用项目函数。参数pszMsgData指向在其中存储消息数据的缓冲区的指针。返回值TRUE已执行函数,无错。FALSE出错。注意请注意,WinCC安装会重写已修改的标准函数,所以被改变的函数丢失
PART 24graphics脚本
Graphics组包含用于编程图形系统的函数。1.char* GetLinkedVariable(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)函数,提供与指定的对象属性链接的变量的名称。 读出直接连接的变量名的实例。 {char* pszVarName = NULL;char szVarName[_MAX_PATH+1];//获得变量名 pszVarName = GetLinkedVariable("gs_stand_graph_00","Static Text 6","Visible");//复制字符串if (pszVarName != NULL) { strncpy(szVarName,pszVarName,_MAX_PATH); }//自定义代码//在那里用户可以使用返回值做某事 ...} GetLinkedVariable函数参数: “gs_stand_graph_00”是在其中组态该对象的画面的名称。 “Static Text 6”是该对象的名称。 “Visible”是链接到变量的属性。1). 将函数GetLinkedVariable的返回值缓冲存储在pszVarName中。2). 如果返回有效数值,将该返回值存储在szVarName中。最多存储_MAX_PATH个字符。3). 执行处理返回值的自定义代码。2.char* GetLocalPicture(char* lpszPictureName)函数,返回指向画面名的指针。在这种情况下,画面名就是该文件名,不带扩展名“.PDL”。 读出本地画面的实例。 {char* pszPicName = NULL;char szPicName[_MAX_PATH+1];//获得本地画面 pszPicName = GetLocalPicture(lpszPictureName);//复制字符串if (pszPicName != NULL) { strncpy(szPicName,pszPicName,_MAX_PATH); }//自定义代码//在那里用户可以使用返回值做某事 ... }1). 将函数GetLocalPicture的返回值缓冲存储在pszPicName中。2). 如果返回有效数值,将该返回值存储在szPicName中。最多存储_MAX_PATH个字符。3). 执行处理返回值的自定义代码。3.char* GetParentPicture(char* lpszPictureName)函数,返回指向画面名称的指针。在这种情况下,画面名就是该文件名,不带扩展名“.PDL”。 读出画面名称路径的实例 {char* pszPicName = NULL;char szPicName[_MAX_PATH+1];//获得母画面 pszPicName = GetParentPicture(lpszPictureName);//复制字符串if (pszPicName != NULL) {strncpy(szPicName,pszPicName,_MAX_PATH); }//自定义代码//在那里用户可以使用返回值做某事 ...}1). 将该函数GetParentPicture的返回值缓冲存储在pszPicName中。2). 如果返回有效数值,将该返回值存储在szPicName中。。。。。. 最多存储_MAX_PATH个字符。3). 执行处理返回值的自定义代码。4.char* GetParentPictureWindow(char* lpszPictureName)函数,返回指向画面窗口的名称的指针。 实例: 基本画面“Picture_1”有画面窗口“Picture Window_1”,在其中调用画面“Picture_2”。 画面“Picture_2”有画面窗口“Picture Window_2”,在其中调用画面“Picture_3”。 该函数调用 GetParentPictureWindow(lpszPictureName) 指向画面窗口名称的指针: “Picture_2”,是否从画面“Picture_3”调用该函数。 “Picture Window_1”,是否从画面“Picture_2”调用该函数。 “Picture_1”,是否从画面“Picture_1”调用该函数。5.void OpenPicture(Picture Name)函数,用设置的画面名打开画面。6.char* Registry2(char* mode, char* String0, char* String1)函数,该函数管理字符串对(String0,String1)的列表。
PART 25踏雪寻梅时 静待一春归Report组包含用来启动打印作业的打印预览或打印输出本身的函数。1.void ReportJob(LPSTR lpJobName, LPSTR lpMethodName)函数,根据参数lpMethodName的数值,决定启动打印作业或打印预览。 RPTJobPreview和RPTJobPrint, 打印作业被启动和打印作业的预览被启动2.BOOL RPTJobPreview(LPSTR lpJobName)函数,打印作业的预览被启动。 启动作业预览的实例 {//启动指定打印作业的打印预览 RPTJobPreview("Documentation Text Library"); } RPTJobPreview函数参数: @Text library (compact)是打印作业的名称。3.BOOL RPTJobPrint(LPSTR lpJobName)函数,打印作业被启动。 启动打印作业的实例 {//打印输出指定的打印作业 RPTJobPrint("@Text library (compact)"); } RPTJobPrint函数参数: @Text library (compact)是打印作业的名称。4.void RptShowError(LPCSTR pszFailedFunction, CMN_ERRORA* pCmnErrorA)函数,该函数提供对失败的打印作业的错误描述。该函数调用是标准函数RptJobPrint和RptJobPreview的组成部分,因此不要求单个调用命令。 结构定义CMNERRORstructCMNERRORSTRUCT { DWORD dwError1, DWORD dwError2, DWORD dwError3, DWORD dwError4, DWORD dwError5; TCHAR szErrorText[MAX_ERROR_LEN]; }CMNERROR描述 扩展的错误结构包含错误代码和与发生的错误相关的错误文本。每个应用程序可以使用该错误结构评价或发出错误消息。 组成部分 dwError1 .. dwError5 可按API函数的要求使用这些条目。 API描述包含出错时条目的各自数值。否则,错误代码在dwError1中。 szErrorText 错误代码的文本描述缓冲区 从资源建立该内容,因此依赖于语言
PART 26TagLog脚本
TagLog函数包含控制WinCC表格控件和WinCC趋势控件的函数。 Template子组包含调用某些控制值的函数。 Toolbar Buttons子组包含用于工具栏中每个按钮的标准函数。这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。1.intTlgGetColumnPosition(char* lpszTemplate)函数,以表格窗口中的列指针的当前位置作为列索引。 使用标准函数操作WinCC表格控件的实例 {char text[5];longint columns//获得列数 columns = GetNumberOfColumns("TableControl_01");//转换长整型为字符 sprintf (text,"%d",columns);//在Text Field 5 SetText上设置文本 (lpszPictureName,"Static Text 5",text); } TlgGetNumberOfColumns函数参数: “Table Control_01”是WinCC表格控件的名称。1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。2). 将返回值缓冲存储在String text中。3). 在静态文本域中发出返回值。2.intTlgGetNumberOfColumns(char* lpszTemplate)函数,在表格窗口中给出列的数量。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。 使用标准函数操作WinCC表格控件的实例 {char text[5];longint columns//获得列数 columns = GetNumberOfColumns("TableControl_01");//转换长整型为字符 sprintf (text,"%d",columns);//在Text Field 5 SetText上设置文本 (lpszPictureName,"Static Text 5",text); } TlgGetNumberOfColumns函数参数: “Table Control_01”是WinCC表格控件的名称。1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。2). 将返回值缓冲存储在String text中。3). 在静态文本域中发出返回值。3.intTlgGetNumberOfRows(char* lpszTemplate)函数,在表格窗口中给出行的数量。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。 使用标准函数操作WinCC表格控件的实例 {char text[5];longint rows;//获得行数 rows = TlgGetNumberOfRows("TableControl_01");//转换长整型为字符 sprintf (text,"%d",rows);//在Text Field 5 SetText上设置文本 (lpszPictureName,"Static Text 5",text); } TlgGetNumberOfRows函数参数: Table Control_01是WinCC表格控件的名称。1). 将函数TlgGetNumberOfRows的返回值缓冲存储在rows中。2). 将返回值缓冲存储在String text中。3). 在静态文本域中发出返回值。4.intTlgGetNumberOfTrends(char* lpszTemplate)函数,在趋势窗口中给出趋势的数量。用参数lpszTemplate传递相应WinCC在线趋势控件窗口的名称。 使用标准函数操作WinCC表格控件的实例 {char text[5];longint columns//获得列数 columns = GetNumberOfColumns("TableControl_01");//转换长整型为字符 sprintf (text,"%d",columns);//在Text Field 5 SetText上设置文本 (lpszPictureName,"Static Text 5",text); } TlgGetNumberOfColumns函数参数: “Table Control_01”是WinCC表格控件的名称。1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。2). 将返回值缓冲存储在String text中。3). 在静态文本域中发出返回值。5.intTlgGetRowPosition(char* lpszTemplate)函数,在表格窗口中给出行指针的当前位置。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。 使用标准函数操作WinCC表格控件的实例 {char text[5];longint columns//获得列数 columns = GetNumberOfColumns("TableControl_01");//转换长整型为字符 sprintf (text,"%d",columns);//在Text Field 5 SetText上设置文本 (lpszPictureName,"Static Text 5",text); } TlgGetNumberOfColumns函数参数: “Table Control_01”是WinCC表格控件的名称。1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。2). 将返回值缓冲存储在String text中。3). 在静态文本域中发出返回值。
6.char* TlgGetRulerArchivNameTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中这个标尺位置上给出带编号nTrend的趋势的归挡名称。用参数lpszTemplate传递相应WinCC在线趋势控件窗口的名称。 使用标准函数操作WinCC趋势控件的实例 {char* pszVarName = NULL;char szVarName[20];//获得标尺变量名 pszVarName = TlgGetRulerVariableNameTrend("TrendControl_01",0);if (pszVarName != NULL) {// 复制字符串 strncpy (szVarName,pszVarName,19); }//输出变量名 SetText (lpszPictureName,"Static Text 6",szVarName); } TlgGetRulerVariableNameTrend函数参数: “Trend Control_01”是WinCC趋势控件的名称。 “0”是该趋势的编号。1). 将函数TlgGetRulerVariableNameTrend的返回值缓冲存储在pszVarName中。2). 如果返回有效数值,将返回值复制到szVarName中。3). 在静态文本域中发出返回值。7.SYSTEMTIME TlgGetRulerTimeTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中这个标尺位置上给出带编号nTrend的趋势的时间。用参数lpszTemplate传递相应WinCC在线趋势控件窗口。 使用标准函数操作WinCC趋势控件的实例 {SYSTEMTIME systime; WORD wHour; WORD wMin; WORD wSec;char szTime[10];//获得当前系统时间 systime = TlgGetRulerTimeTrend("TrendControl_01",0);//获得小时 wHour = systime.wHour;//获得分钟 wMin = systime.wMinute;//获得秒 wSec = systime.wSecond;// sprintf(szTime,"%d:%d:%d",wHour,wMin,wSec);//输出变量名 SetText (lpszPictureName,"Static Text 7",szTime); }1). 读出当前系统时间。2). 从SYSTEMTIME结构读出小时、分和秒。3). 创建包含该时间的字符串。4). 读出当前时间。8.doubleTlgGetRulerValueTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中这个标尺位置上给出带编号nTrend的趋势的数值。用参数lpszTemplate传递相应WinCC在线趋势控件窗口。 使用标准函数操作WinCC表格控件的实例 {char text[5];longint columns//获得列数 columns = GetNumberOfColumns("TableControl_01");//转换长整型为字符 sprintf (text,"%d",columns);//在Text Field 5 SetText上设置文本 (lpszPictureName,"Static Text 5",text); } TlgGetNumberOfColumns函数参数: “Table Control_01”是WinCC表格控件的名称。1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。2). 将返回值缓冲存储在String text中。3). 在静态文本域中发出返回值。9.char* TlgGetRulerVariableNameTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中给出编号为nTrend的趋势的变量名。用参数lpszTemplate传递相应WinCC在线趋势控件窗口。 使用标准函数操作WinCC趋势控件的实例 {char* pszVarName = NULL;char szVarName[20];//获得标尺变量名 pszVarName = TlgGetRulerVariableNameTrend("TrendControl_01",0);if (pszVarName != NULL) {// 复制字符串 strncpy (szVarName,pszVarName,19); }//输出变量名 SetText (lpszPictureName,"Static Text 6",szVarName); } TlgGetRulerVariableNameTrend函数参数: “Trend Control_01”是WinCC趋势控件的名称。 “0”是该趋势的编号。1). 将函数TlgGetRulerVariableNameTrend的返回值缓冲存储在pszVarName中。2). 如果返回有效数值,将返回值复制到szVarName中。3). 在静态文本域中发出返回值。10.char* TlgGetTextAtPos(char* lpszTemplate, int nColumn, int nLine)函数,为过程变量归档和用户归档提供表格窗口的单元格内容作为文本。单元由nColumn和nLine指定。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。 使用标准函数操作WinCC趋势控件的实例 {char* pszVarName = NULL;char szVarName[20];//获得标尺变量名 pszVarName = TlgGetRulerVariableNameTrend("TrendControl_01",0);if (pszVarName != NULL) {// 复制字符串 strncpy (szVarName,pszVarName,19); }//输出变量名 SetText (lpszPictureName,"Static Text 6",szVarName); } TlgGetRulerVariableNameTrend函数参数: “Trend Control_01”是WinCC趋势控件的名称。 “0”是该趋势的编号。1). 将函数TlgGetRulerVariableNameTrend的返回值缓冲存储在pszVarName中。2). 如果返回有效数值,将返回值复制到szVarName中。3). 在静态文本域中发出返回值。11.BOOL TlgTableWindowPressEditRecordButton(char* lpszWindowName)函数,锁住或释放表格窗口的编辑(切换功能)。如果允许编辑,将停止更新表格窗口。即使因为使用另一个函数而使编辑被禁止,表格窗口更新将仍保持停止状态。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。12.BOOL TlgTableWindowPressFirstButton(char* lpszWindowName)函数,显示表格窗口中显示区域的第一个数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。13.BOOL TlgTableWindowPressHelpButton(char* lpszWindowName)函数,显示表格窗口的在线帮助 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。14.BOOL TlgTableWindowPressInsertRecordButton(char* lpszWindowName)函数,插入数据记录。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。15.BOOL TlgTableWindowPressLastButton(char* lpszWindowName)函数,显示表格窗口中显示区域的最后一个数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。16.BOOL TlgTableWindowPressNextButton(char* lpszWindowName)函数,显示表格窗口中当前显示区域后面的数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。17.BOOL TlgTableWindowPressNextItemButton(char* lpszWindowName)函数,表格窗口的列将向左移动一列,最左边的列移到右边。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。18.BOOL lgTableWindowPressOpenArchiveVariableSelectionDlgButton(char* lpszWindowName)函数,打开用来链接表格列与归档和变量的对话框。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。19.BOOL TlgTableWindowPressOpenDlgButton(char* lpszWindowName)函数,打开用来在线组态表格窗口的对话框。 使用标准函数操作WinCC趋势控件的实例 {//打开属性对话框 TlgTrendWindowPressOpenDlgButton("TrendControl_01"); } TlgTrendWindowPressOpenDlgButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。20.BOOL TlgTableWindowPressOpenItemSelectDlgButton(char* lpszWindowName)函数,打开用来选择表格窗口的可见列和第一列的对话框。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。21.BOOL TlgTableWindowPressPrevButton(char* lpszWindowName)函数,显示表格窗口中当前显示区域前面的数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。22.BOOL TlgTableWindowPressPrevItemButton(char* lpszWindowName)函数,表格窗口的列将向右移动一列,最右边的列移到左边。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。23.BOOL TlgTableWindowPressRemoveRecordButton(char* lpszWindowName)函数,删除数据记录。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。24.BOOL TlgTableWindowPressStartStopButton(char* lpszWindowName)函数,打开或关闭表格窗口的更新(切换功能)。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。25.BOOL TlgTrendWindowPressFirstButton(char* lpszWindowName)函数,显示趋势窗口中显示区域的首要数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。26.BOOL TlgTrendWindowPressHelpButton(char* lpszWindowName)函数,显示趋势窗口的在线帮助。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。27.BOOL TlgTrendWindowPressLastButton(char* lpszWindowName)函数,显示趋势窗口中显示区域的最后一个数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。28.BOOL TlgTrendWindowPressLinealButton(char* lpszWindowName)函数,显示或隐藏趋势窗口标尺(切换功能)。使用“光标向左”和“光标向右”键可以移动标尺。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。29.BOOL TlgTrendWindowPressNextButton(char* lpszWindowName)函数,显示趋势窗口中当前显示区域后面的数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。30.BOOL TlgTrendWindowPressNextItemButton(char* lpszWindowName)函数,将趋势窗口中所有趋势向前移动一个层面。前面的那个趋势将被移到后面。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。31.BOOL TlgTrendWindowPressOneToOneButton(char* lpszWindowName)函数,该趋势窗口被重新设置为激活缩放功能前的状态。缩放被取消激活。使用鼠标才可以选中待缩放的区域(参考TlgTrendWindowPressZoomInButton)。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。32.BOOL lgTrendWindowPressOpenArchiveVariableSelectionDlgButton(char* lpszWindowName)函数,打开链接趋势与归档和变量的对话框。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。33.BOOL TlgTrendWindowPressOpenDlgButton(char* lpszWindowName)函数,打开趋势窗口的在线组态对话框。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。34.BOOL TlgTrendWindowPressOpenItemSelectDlgButton(char* lpszWindowNumber)函数,打开用来选择可见趋势以及要在前景中显示的趋势的对话框。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。35.BOOL TlgTrendWindowPressOpenTimeSelectDlgButton(char* lpszWindowNumber)函数,打开定义显示时间段的对话框。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。36.BOOL TlgTrendWindowPressPrevButton(char* lpszWindowName)函数,在趋势窗口中显示当前显示区域前面的数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。37.BOOL TlgTrendWindowPressPrevItemButton(char* lpszWindowName) 函数,将趋势窗口中所有趋势向后移动一个层面。后面的那个趋势将被移到前面。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。38.BOOL TlgTrendWindowPressStartStopButton(char* lpszWindowName)函数,打开或关闭趋势窗口的更新(切换功能)。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止 TlgTrendWindowPressStartStopButton("TrendControl_01"); } TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。39.BOOL TlgTrendWindowPressZoomInButton(char* lpszWindowName)函数,将打开趋势窗口中的放大镜。只能用鼠标选择比例缩放区域。 使用标准函数操作WinCC趋势控件的实例 {//放大 TlgTrendWindowPressZoomInButton("TrendControl_01"); } TlgTrendWindowPressZoomInButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。40.BOOL TlgTrendWindowPressZoomOutButton(char* lpszWindowName)函数,恢复趋势窗口到缺省大小(1:1)。 使用标准函数操作WinCC报警趋势控件的实例 {// 缩小 TlgTrendWindowPressZoomOutButton("TrendControl_01"); } TlgTrendWindowPressZoomOutButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。
PART 27Windows脚本Windows组包含Execute Program函数。 该函数可用来执行任何功能。1.unsigned intExecute(char* Program_Name)函数,用指定的名称启动该程序。 从WinCC启动程序的实例 {//启动程序calc.exe 执行程序 ("C:\\Winnt\\system32\\calc.exe"); } 指定带路径的文件为参数。
PART 28内部函数脚本内部函数用来画图形对象和使归档动态化,并用于项目函数、标准函数和全局脚本动作中。 在整个项目中都识别内部函数。 既不能创建新的内部函数,也不能修改已存在的内部函数。1. allocate保留和释放工作存储器空间的函数void SysFree(void* lpFree)函数,通过SysMalloc函数释放保留的存储器区域。 参数lpFree,指向通过SysMalloc函数保留的存储器区域的指针。2.void* SysMalloc(unsignedlongint size)函数,为动作保留存储器空间。存储器区域被分配给该动作。已完成动作和已传送结果时,系统再次释放存储器。 SysFree函数可用来过早释放保留的存储器空间。 参数size,按字节计算的存储器区域的大小。3. c_bib函数组c_bib包含来自C库的C函数 Graphics - 简短描述 使用Graphics组中的函数可以修改或调用WinCC对象的图形属性。 Axes - 简短描述 Axes组中的函数仅用于棒图对象。 该函数可用来修改或调用各种棒图对象属性。1.BOOL GetAlignment(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指明文本在棒图的左面还是右面。 读出棒图对象的布尔型属性的实例 {BOOL bscaling;//获得标尺状态 bscaling = GetScaling(lpszPictureName,"Bar1");if (bscaling) {// 自定义代码// 棒图对象有一个附加的标尺 ... }else {// 自定义代码// 棒图对象没有附加的刻度 ... } } GetScaling函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。1). 读出棒图刻度是否可见以及bscaling中的缓冲区。2). 根据该函数的返回值执行自定义代码。2.double GetAxisSection(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定两个邻近轴标签之间的数值差。3.BOOL GetExponent(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定轴标签对应于小数或指数形式。 读出棒图对象的布尔型属性的实例 {BOOL bscaling;//获得标尺状态 bscaling = GetScaling(lpszPictureName,"Bar1");if (bscaling) {// 自定义代码// 棒图对象有一个附加的标尺 ... }else {// 自定义代码// 棒图对象没有附加的刻度 ... } } GetScaling函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。1). 读出棒图刻度是否可见以及bscaling中的缓冲区。2). 根据该函数的返回值执行自定义代码。4.longint GetLeftComma(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定轴标签中的整数数量。 参数lpszPictureName 画面名lpszObjectName 对象名 返回值,轴标签中的整数数量5.BOOL GetLongStrokesBold(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定以粗体还是常规形式显示标尺上的主要刻度线。 读出棒图对象的布尔型属性的实例 {BOOL bscaling;//获得标尺状态 bscaling = GetScaling(lpszPictureName,"Bar1");if (bscaling) {// 自定义代码// 棒图对象有一个附加的标尺 ... }else {// 自定义代码// 棒图对象没有附加的刻度 ... } } GetScaling函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。1). 读出棒图刻度是否可见以及bscaling中的缓冲区。2). 根据该函数的返回值执行自定义代码。6.longint GetLongStrokesSize(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定主要刻度线的长度。7.longint GetLongStrokesTextEach(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定主要刻度线标签的间隔长度。8.longint GetRightComma(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定坐标轴标签中的小数位数。9.longint GetScaleTicks(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它将标尺单位定义为标尺分段的数量。一个标尺分段对应于两条主要刻度线之间的范围10.BOOL GetScaling(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图时,它指定激活还是取消激活标尺。 读出棒图对象的布尔型属性的实例 {BOOL bscaling;//获得标尺状态 bscaling = GetScaling(lpszPictureName,"Bar1");if (bscaling) {// 自定义代码// 棒图对象有一个附加的标尺 ... }else {// 自定义代码// 棒图对象没有附加的刻度 ... } } GetScaling函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。1). 读出棒图刻度是否可见以及bscaling中的缓冲区。2). 根据该函数的返回值执行自定义代码。11.longint GetScalingType(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定棒图标尺的类型。 Color - 简短描述 使用Color组中的函数可以修改或调用对象的颜色属性。1.longint GetBackColor(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定对象的背景色为数字值。 读出颜色值的实例 {longint bk_color;// linkinfo.szLinkName是变量名。 // linkinfo.dwCycle是更新周期 // linkinfo.LinkType是该连接的类型//自定义代码//在那里用户可以使用返回值做某事 ... } GetBackColor函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。1). 读出当前背景色和bk_color中的缓冲区。2). 执行处理返回值的自定义代码。2.longint GetBackColor2(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定棒图的颜色为数字值。 读出颜色值的实例 {longint bk_color;// linkinfo.szLinkName是变量名。 // linkinfo.dwCycle是更新周期 // linkinfo.LinkType是该连接的类型//自定义代码//在那里用户可以使用返回值做某事 ... } GetBackColor函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。3.longint GetBackColor3(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定棒图的背景色为数字值。 读出颜色值的实例 {longint bk_color;// linkinfo.szLinkName是变量名。 // linkinfo.dwCycle是更新周期 // linkinfo.LinkType是该连接的类型//自定义代码//在那里用户可以使用返回值做某事 ... } GetBackColor函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。 Fill - 简短描述 Fill组中的函数控制对象的动态填充。1.BOOL GetFilling(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否激活背景色动态填充。 读出“动态填充”属性的实例 {BOOL bfilling;//获得动态填充的实际状态 bfilling = GetFilling(lpszPictureName," Rectangle 1");if(bfilling) {// 自定义代码// 动态填充是否被激活 ... }else {// 自定义代码// 动态填充是否被取消激活 ... } } GetFilling函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Rectangle1”是该对象的名称。1). 读出动态填充是否激活以及bfilling中的缓冲区。2). 根据该函数的返回值执行自定义代码。2.longint GetFillingIndex(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定当前填充量。 读出填充索引的实例 {longint filling_index;//获得该对象的实际填充索引 filling _index = GetFillingIndex(lpszPictureName," Rectangle 1");//自定义代码//在那里用户可以使用返回值做某事 ... } GetFillingIndex函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Rectangle1”是该对象的名称。1). 读出该对象的当前填充索引以及filling_index中的缓冲区。2). 执行处理返回值的自定义代码。 Flash - 简短描述 使用Flash组中的函数可以修改或调用各种闪烁属性。1.longint GetBackFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的闪烁背景色 读出闪烁颜色的实例 {longint flashcol_on;//获得背景闪烁颜色 flashcol_on = GetBackFlashColorOn(lpszPictureName,"Group 1");//自定义代码//在那里用户可以使用返回值做某事 ... } GetBackFlashColorOn函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。2). 执行处理返回值的自定义代码。2.longint GetBackFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的背景闪烁颜色。 读出闪烁颜色的实例 {longint flashcol_on;//获得背景闪烁颜色 flashcol_on = GetBackFlashColorOn(lpszPictureName,"Group 1");//自定义代码//在那里用户可以使用返回值做某事 ... } GetBackFlashColorOn函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。2). 执行处理返回值的自定义代码。3.longint GetBorderFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的边框或线闪烁颜色。 读出闪烁颜色的实例 {longint flashcol_on;//获得背景闪烁颜色 flashcol_on = GetBackFlashColorOn(lpszPictureName,"Group 1");//自定义代码//在那里用户可以使用返回值做某事 ... } GetBackFlashColorOn函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。4.longint GetBorderFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的边框或线闪烁颜色。 读出闪烁颜色的实例 {longint flashcol_on;//获得背景闪烁颜色 flashcol_on = GetBackFlashColorOn(lpszPictureName,"Group 1");//自定义代码//在那里用户可以使用返回值做某事 ... } GetBackFlashColorOn函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。5.BOOL GetFlashBackColor(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否激活背景闪烁。 读出“闪烁背景激活”属性的实例 {BOOL bflash_col;//了解闪烁是开还是关 bflash _col = GetFlashBackColor(lpszPictureName,"Group 1");if(bflash_col) {// 自定义代码// 闪烁是否被激活 ... }else {// 自定义代码// 闪烁是否被取消激活 ... } } GetFlashBackColor函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。1). 读出背景色闪烁是否被激活以及bflash_col中的缓冲区。2). 根据该函数的返回值执行自定义代码。 Focus - 简短描述 使用Focus组中的函数,可以设置焦点或轮询哪个对象有焦点。1.char* Get_Focus()函数,指定当前或最后聚焦的对象的名称。 要求当前在哪一个对象上设置焦点的实例 {char* pszValue = NULL;char szValue[_MAX_PATH+1];//获得具有焦点的对象 pszValue = Get_Focus();//复制字符串if (pszValue != NULL) { strncpy(szValue,pszValue,_MAX_PATH); }//自定义代码//在那里用户可以使用返回值做某事 ... }1). 读出在其上设置焦点的对象以及pszValue中的缓冲区。2). 如果返回有效数值,将该函数的返回值存储在本地字符串szValue中。最多存储_MAX_PATH个字符。3). 执行处理返回值的自定义代码。 Font - 简短描述 使用Font组中的函数可以修改或调用影响文本的各种属性。1.longint GetAlignmentLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义水平文本对齐(左对齐、居中、右对齐)。 读出字体大小的实例 {longint fontsize;//获得实际字体大小 fontsize = GetFontSize(lpszPictureName,"Static Text 1");//自定义代码//在那里用户可以使用返回值做某事 ... } GetFontSize函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。1). 读出当前字体大小和fontsize中的缓冲区。2). 执行处理返回值的自定义代码。2.longint GetAlignmentTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义垂直文本对齐(上对齐、居中、下对齐)。 读出字体大小的实例 {longint fontsize;//获得实际字体大小 fontsize = GetFontSize(lpszPictureName,"Static Text 1");//自定义代码//在那里用户可以使用返回值做某事 ... } GetFontSize函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。3.BOOL GetFontBold(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义字体样式是否为“粗体字”。 读出静态文本域的布尔型属性的实例 {BOOL bbold;//了解文本是否是粗体字 bbold = GetFontBold(lpszPictureName,"Static Text 1");if(bbold) {// 自定义代码// 字体是否是粗体字 ... }else {// 自定义代码// 字体是否不是粗体字 ... } } GetFontBold函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。4.char* GetText(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,为对象,例如静态文本、复选框和单选框,指定“文本”属性的数值。 读出文本的实例 {char* pszValue = NULL;char szValue[13];//获得实际设置的文本 pszValue = GetText(lpszPictureName," Static Text 1");if(pszValue != NULL) {//复制字符串 strncpy(szValue,pszValue,12); }//自定义代码//在那里用户可以使用返回值做某事 ... } GetText函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。5.longint GetLayer(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定该对象所在的画面层。 参数lpszPictureName 画面名lpszObjectName Geometry - 简短描述 使用Geometry组中的函数可以修改或调用对象的大小、位置和其它几何属性。1.longint GetActualPointLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定多边形或折线中当前位置的X轴数值。 读出对象位置的实例 {long lPos;//获得对象的X轴位置 lPos = GetLeft(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetLeft函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。1). 读出对象的当前X轴位置以及lPos中的缓冲区。2). 执行处理返回值的自定义代码。2.longint GetActualPointTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定多边形或折线中当前顶点的Y轴数值。 读出对象位置的实例 {long lPos;//获得对象的Y轴位置 lPos = GetTop(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetTop函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。3.longint GetBoxCount(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定复选框和单选框的数字域。 参数lpszPictureName 画面名lpszObjectName4.longint GetDirection(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指出棒图的方向。 参数lpszPictureName 画面名lpszObjectName5.longint GetEndAngle(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName) 函数,指定部分圆和部分椭圆以及圆弧和椭圆弧的结束角度。6.BOOL GetGrid(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否在图形编辑器的图形域中激活网格。7.longint GetGridHeight(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定在图形编辑器的图形域中网格的高度。8.longint GetGridWidth(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定在图形编辑器的图形域中网格的宽度。9.longint GetHeight(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定构成对象的矩形的高度。 读出对象位置的实例 {long lHeight;//获得对象的高度 lHeight = GetHeight(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetHeight函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。1). 读出对象的当前高度以及lHeight中的缓冲区。2). 执行处理返回值的自定义代码。10.longint GetLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义构成对象的矩形左上角的X轴位置。 读出对象位置的实例 {long lPos;//获得对象的X轴位置 lPos = GetLeft(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetLeft函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。11.longint GetPointCount(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定多边形或折线的角的数量。12.longint GetRadius(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName); 函数,定义圆、部分圆或圆弧的半径。 读出对象位置的实例 {long lHeight;//获得对象的高度 lHeight = GetHeight(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetHeight函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。1). 读出对象的当前高度以及lHeight中的缓冲区。2). 执行处理返回值的自定义代码。13.longint GetRadiusHeight(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定椭圆、部分椭圆或椭圆弧的垂直半径。 读出对象位置的实例 {long lHeight;//获得对象的高度 lHeight = GetHeight(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetHeight函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。14.longint GetRadiusWidth(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定椭圆、部分椭圆或椭圆弧的水平半径。15.longint GetReferenceRotationLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用线、多边形和折线时,它指定旋转位置(围绕其旋转对象的中心坐标轴)的X轴数值。 读出对象位置的实例 {long lPos;//获得对象的X轴位置 lPos = GetLeft(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetLeft函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。16.longint GetReferenceRotationTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用线、多边形和折线时,它指定旋转位置(围绕其旋转对象的中心坐标轴)的Y轴数值。17.longint GetRotationAngle(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义围绕中心坐标轴旋转线、多边形和折线的角度。18.longint GetStartAngle(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定部分圆和部分椭圆以及圆弧和椭圆弧的起始角度。 读出对象位置的实例 {long lHeight;//获得对象的高度 lHeight = GetHeight(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetHeight函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。19.longint GetTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定构成对象的矩形左上角的Y轴位置。 读出对象位置的实例 {long lPos;//获得对象的Y轴位置 lPos = GetTop(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetTop函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。20.longint GetWidth(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定构成对象的矩形的宽度。 读出对象位置的实例 {long lWidth;//获得对象的宽度 lWidth = GetWidth(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetWidth函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。21.longint GetZeroPoint(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它显示零点。 读出对象位置的实例 {long lHeight;//获得对象的高度 lHeight = GetHeight(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事 ... } GetHeight函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “WinCCLogo”是该对象的名称。 i_o - 简短描述 使用i_o组中的函数可以修改或调用影响输入和输出值的各种属性。1.char* GetAssignments(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于列表,分配文本给数值范围2.BOOL GetAssumeOnExit(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定退出该域时是否应用输入的数值。3.BOOL GetAssumeOnFull(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定完成输入时是否应用输入的数值。4.longint GetBitNumber(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用列表类型“位”时,它指定输出值中相关的位。 读出布尔型属性的实例 {BOOL bHiddenInput;//获得隐藏输入的状态 bHiddenInput = GetHiddenInput(lpszPictureName,"IO Field 1");if(bHiddenInput) {// 自定义代码// 隐藏输入是否被激活 ... }else {// 自定义代码// 隐藏输入是否被取消激活 ... } } GetHiddenInput函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “IO Field1”是该对象的名称。1). 读出文本是否是粗体字以及bHiddenInput中的缓冲区。2). 根据该函数的返回值执行自定义代码。5.BOOL GetClearOnError(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定错误输入后是否激活删除内容。6.longint GetDataFormat(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它指定域内容的数据类型。 读出布尔型属性的实例 {BOOL bHiddenInput;//获得隐藏输入的状态 bHiddenInput = GetHiddenInput(lpszPictureName,"IO Field 1");if(bHiddenInput) {// 自定义代码// 隐藏输入是否被激活 ... }else {// 自定义代码// 隐藏输入是否被取消激活 ... } } GetHiddenInput函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “IO Field1”是该对象的名称。7.BOOL GetHiddenInput(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它指定是否激活隐藏输入。 读出布尔型属性的实例 {BOOL bHiddenInput;//获得隐藏输入的状态 bHiddenInput = GetHiddenInput(lpszPictureName,"IO Field 1");if(bHiddenInput) {// 自定义代码// 隐藏输入是否被激活 ... }else {// 自定义代码// 隐藏输入是否被取消激活 ... } } GetHiddenInput函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “IO Field1”是该对象的名称。8.double GetInputValueDouble(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它定义数据类型为“双精度型”的输入值。9.longint GetListType(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName) 函数,指定“文本列表”对象的列表类型。 读出布尔型属性的实例 {BOOL bHiddenInput;//获得隐藏输入的状态 bHiddenInput = GetHiddenInput(lpszPictureName,"IO Field 1");if(bHiddenInput) {// 自定义代码// 隐藏输入是否被激活 ... }else {// 自定义代码// 隐藏输入是否被取消激活 ... } } GetHiddenInput函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “IO Field1”是该对象的名称。10.longint GetNumberLines(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定“文本列表”对象的可见行数。 读出布尔型属性的实例 {BOOL bHiddenInput;//获得隐藏输入的状态 bHiddenInput = GetHiddenInput(lpszPictureName,"IO Field 1");if(bHiddenInput) {// 自定义代码// 隐藏输入是否被激活 ... }else {// 自定义代码// 隐藏输入是否被取消激活 ... } } GetHiddenInput函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “IO Field1”是该对象的名称。11.char* GetOutputFormat(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它指定输出格式。12.char* GetOutputValueChar(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它建立数据类型为“字符”的输出值。当I/O域的内容为数据类型“字符串”时,才使用该函数。 Limits - 简短描述 使用Limits组中的函数可以修改或调用影响限值的各种属性。1.double GetAlarmHigh(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指出报警上限。 读出数字值的实例 {double dAlarmHigh;//获得报警上限 dAlarmHigh = GetAlarmHigh(lpszPictureName,"Bar 1");//自定义代码//在那里用户可以使用返回值做某事 ... } GetAlarmHigh函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。1). 读出报警上限和dAlarmHigh中的缓冲区。2). 执行处理返回值的自定义代码。2.double GetAlarmLow(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指出报警下限。 读出数字值的实例 {double dAlarmHigh;//获得报警上限 dAlarmHigh = GetAlarmHigh(lpszPictureName,"Bar 1");//自定义代码//在那里用户可以使用返回值做某事 ... } GetAlarmHigh函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。3.BOOL GetCheckAlarmHigh(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定是否监控报警上限。 读出布尔型属性的实例 {BOOL bmarker;//获得该标记的状态 bmarker = GetMarker(lpszPictureName,"Bar 1");if(bmarker) {// 自定义代码// 标记是否被激活 ... }else {// 自定义代码// 标记是否被取消激活 ... } } GetMarker函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。4.BOOL GetCheckLimitHigh4(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定是否监控上限值Reserve 4。 读出布尔型属性的实例 {BOOL bmarker;//获得该标记的状态 bmarker = GetMarker(lpszPictureName,"Bar 1");if(bmarker) {// 自定义代码// 标记是否被激活 ... }else {// 自定义代码// 标记是否被取消激活 ... } } GetMarker函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。 Link - 简短描述 使用Link组中的函数可以创建或调用变量链接属性。1.BOOL GetLink(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName LPCTSTR lpszPropertyName, LPLINKINFO *pLink)函数,指定对象属性的当前变量链接。 读出变量链接的实例 { LINKINFO linkinfo;//获得已链接的变量 GetLink(lpszPictureName,"Bar 1","Process",&linkinfo);// linkinfo.szLinkName是变量名// linkinfo.dwCycle是更新周期// linkinfo.LinkType是连接的类型//自定义代码//在那里用户可以使用返回值做某事 ... } GetLink函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。 “Process”是链接到变量的属性。 “&linkinfo”是结构linkinfo的地址。1). 用该变量链接上的信息填充传送的linkinfo结构。2). 根据该函数的返回值执行自定义代码。 Miscs - 简短描述 使用Miscs组中的函数可以修改或调用对象的属性。1.BOOL GetAdaptBorder(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName) 函数,对于静态文本、I/O域、复选框和单选框,它指定域边框是否将动态适应文本的大小。 读出布尔型属性的实例 {BOOL bVisible;//获得可见性 bVisible = GetVisible(lpszPictureName,"Graphic Object 1");if(bVisible) {// 自定义代码// 该对象是否可见 ... }else {// 自定义代码// 该对象是否不可见 ... } } GetVisible函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Graphic Object 1”是该对象的名称。2.BOOL GetAdaptPicture(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于画面窗口,它指定画面是否将适应窗口的大小。 读出布尔型属性的实例 {BOOL bVisible;//获得可见性 bVisible = GetVisible(lpszPictureName,"Graphic Object 1");if(bVisible) {// 自定义代码// 该对象是否可见 ... }else {// 自定义代码// 该对象是否不可见 ... } } GetVisible函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Graphic Object 1”是该对象的名称。3.BOOL GetAdaptSize(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName) 函数,对于画面窗口,它指定是否改变窗口。 读出布尔型属性的实例 {BOOL bVisible;//获得可见性 bVisible = GetVisible(lpszPictureName,"Graphic Object 1");if(bVisible) {// 自定义代码// 该对象是否可见 ... }else {// 自定义代码// 该对象是否不可见 ... } } GetVisible函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Graphic Object 1”是该对象的名称。4.BOOL GetAverage(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于棒图对象,指定是否激活平均值计算。 读出布尔型属性的实例 {BOOL bVisible;//获得可见性 bVisible = GetVisible(lpszPictureName,"Graphic Object 1");if(bVisible) {// 自定义代码// 该对象是否可见 ... }else {// 自定义代码// 该对象是否不可见 ... } } GetVisible函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Graphic Object 1”是该对象的名称。5.BOOL GetCaption(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定画面或应用程序窗口是否有标题。 读出布尔型属性的实例 {BOOL bVisible;//获得可见性 bVisible = GetVisible(lpszPictureName,"Graphic Object 1");if(bVisible) {// 自定义代码// 该对象是否可见 ... }else {// 自定义代码// 该对象是否不可见 ... } } GetVisible函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Graphic Object 1”是该对象的名称。6.BOOL GetLanguageSwitch(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用“文本列表”对象时,它指定用一种还是多种语言组态文本列表。 读出布尔型属性的实例 {BOOL bVisible;//获得可见性 bVisible = GetVisible(lpszPictureName,"Graphic Object 1");if(bVisible) {// 自定义代码// 该对象是否可见 ... }else {// 自定义代码// 该对象是否不可见 ... } } GetVisible函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Graphic Object 1”是该对象的名称。 SET启动1.BOOL OpenHomePicture()函数, 打开定义的启动画面。2.BOOL OpenNextPicture()函数 WinCC存储用户在运行时打开的画面的名称以及打开画面的顺序。 在“画面缓冲区大小”下面的计算机属性标签控件“图形运行系统”中的WinCC资源管理器内,可以定义用此方式所能存储的画面名的最大数目。 OpenNextPicture函数打开由OpenPrevPicture函数打开的最后一个画面。3.BOOL OpenPrevPicture()函数,WinCC存储用户在运行时打开的画面的名称以及打开画面的顺序。 在“画面缓冲区大小”下面的计算机属性标签控件“图形运行系统”中的WinCC资源管理器内,可以定义用此方式所能存储的画面名的最大数目。 OpenPrevPicture函数打开当前画面的前一个画面。4.BOOL OpenStoredPicture()函数,打开使用Store Picture函数存储的画面。5.BOOL StorePicture()函数,存储当前画面;存储后,使用OpenStoredPicture函数可以打开该画面。 tag - 简短描述 使用来自Tag组的函数可以设置或调用变量。1.BOOL GetTagBitStateWait(Tag Tag_Name, PDWORD lp_dwstate)函数, 建立数据类型“二进制变量”的过程变量的数值。直接从PLC读取该数值。 也返回变量的状态。 读出二进制类型变量的实例 { DWORD dwstate;BOOL bValue; dwstate = 0xFFFFFFFF;//获得该变量值//dwstate是变量状态 bValue = GetTagBitStateWait("gs_tag_bit",&dwstate);//创建包含该变量值的字符串if (bValue) {// 自定义代码// 该变量的数值是否是true ... }else {// 自定义代码// 该变量的数值是否是false ... } } GetTagBitStateWait函数参数: “gs_tag_bit”是该变量的名称。 “&dwstate”是应在其中存储变量状态的变量地址。1). 读出该变量值以及bstate中的缓冲区。 该函数将变量状态存储在dwstate中。2). 根据该函数的返回值执行自定义代码。 WinCC简短描述 使用来自WinCC组的函数可以在运行系统中定义各种设置。 使用System子组中的函数可以操作WinCC运行系统。1.BOOL DeactivateRTProject()函数,取消激活该项目。 取消激活WinCC运行系统的实例 {//取消激活运行系统 DeactivateRTProject (); } 该函数取消激活WinCC运行系统。2.BOOL ExitWinCC()函数,终止WinCC 退出WinCC的实例 {//退出wincc ExitWinCC (); } 该函数终止WinCC。3. DWORD GetLanguage()函数,建立当前运行系统语言。 读出当前运行系统语言的实例 { DWORD rt_language;//获得当前语言 rt _language = GetLanguage ();//自定义代码//在那里用户可以使用返回值做某事 ... }1). 读出当前运行系统语言并缓冲存储在rt_language中。2). 执行处理返回值的自定义代码。4. DWORD* InquireLanguage(DWORD* dwCount)函数,建立为运行系统而在文本库中组态的全部语言。使用dwCount定义建立的语言数量应该存储在哪里。 读出已组态的运行系统语言 { DWORD count; DWORD* language;int i;//计算已安装的语言 language = InquireLanguage(&count); printf("##################### INQUIRE LANGUAGE ####################");//打印输出语言的计数 printf ( "\r\nCount Languages=%d\r\n", count );//打印输出安装了哪些语言for (i=1;i<=count; i++) { printf ("\r\n%d.language=%x", i,*language++); } }1). 建立为该运行系统组态的语言。这些语言ID缓冲存储在语言中。语言的数量缓冲存储在计数中。2). 发出已建立的语言的数量。3).显示所有已建立的语言ID。5.BOOL SetLanguage(DWORD dwLocaleID)函数,改变运行系统中的语言设置。 定义运行系统语言的实例 {//德语 SetLanguage(0x0407); } 该运行系统语言被设置为德语。6.void FillDiagnoseInTags(BOOL bfill)函数,激活或取消激活在变量中存储诊断信息。由于填充变量表示附加系统负载,只应为了诊断信息才激活它。7.void GetServerTagPrefix(char** ppszServerPrefix, char** ppszTagPrefix, char** ppszWindowPrefix)函数,为了从分布式系统中的多客户机访问相关服务器中的变量,必须通过添加服务器前缀和变量前缀来扩展变量名。如果使用函数GetTagxx或SetTagxx访问变量,该动作控件提供必要的扩展名。如果WinCC API函数被用来获得访问,必须由用户扩展变量名。在这种情况下,GetServerTagPrefix函数提供必要的前缀。 分别为服务器前缀、变量前缀和窗口前缀返回一个“字符”类型的指针。 用户既不修改(不包括strcat)也不释放存储器。 读出服务器前缀的实例 {char* pszServerPrefix;char* pszTagPrefix;char* pszWindowPrefix;//获得服务器前缀和变量前缀 GetServerTagPrefix (&pszServerPrefix, &pszTagPrefix, &pszWindowPrefix);//自定义代码//在那里用户可以使用返回值做某事 ... } GetServerTagPrefix函数参数: “pszServerPrefix”是在其中写入服务器前缀的变量。 “pszTagPrefix”是在其中写入变量前缀的变量。 “pszWindowPrefix”是在其中写入窗口前缀的变量。1). 读出服务器前缀、变量前缀和窗口前缀。2). 返回的服务器前缀缓冲存储在pszServerPrefix中。3). 返回的变量前缀缓冲存储在pszTagPrefix中。4). 返回的窗口前缀缓冲存储在pszWindowPrefix中。5). 执行处理返回值的自定义代码。 读出服务器前缀的实例 {char* pszServerPrefix;char* pszTagPrefix;char* pszWindowPrefix;int nServerPrefixLen = 0;int nTagPrefixLen = 0;int nTagLen = 0;char myTagName[MAX_DM_VAR_NAME+1];//初始化返回值 memset(myTagName,0,MAX_DM_VAR_NAME + 1);//获得服务器前缀、变量前缀和窗口前缀 GetServerTagPrefix (&pszServerPrefix, &pszTagPrefix, &pszWindowPrefix);//是否存在服务器前缀 if (pszServerPrefix) {//获得该字符串的长度 nServerPrefixLen = strlen(pszServerPrefix); }else { printf("No server prefix was returned.");return; }//是否存在变量前缀if (pszTagPrefix) {//获得该字符串的长度 nTagPrefixLen = strlen(pszTagPrefix); }//获得该变量的长度 nTagLen = strlen("TagName");//检查长度//ServerPrefix+TagPrefix+VarName + the double points < MAX_DM_VAR_NAMEif (nServerPrefixLen + nTagPrefixLen + nTagLen+2 < MAX_DM_VAR_NAME) { sprintf(myTagName,"%s::%s%s",pszServerPrefix,pszTagPrefix,"TagName");//自定义代码//在那里用户可以使用返回值做某事 ... }else { printf("The resulting string is too long.");return; } }1). 初始化myTagName变量。2). 读出服务器前缀、变量前缀和窗口前缀。3). 如果未返回服务器前缀,发出文本,并且该函数被终止。4). 如果返回服务器前缀,建立其长度并将其存储在nServerPrefixLen中。5). 如果返回变量前缀,建立其长度并将其存储在nTagPrefixLen中。6). 确定变量名的长度和nVarLen中的缓冲区。7). 如果变量名的长度太长,发出文本,并且该函数被终止。8). 如果变量名的长度不太长,组成多客户机环境要求的变量名。9). 执行处理返回值的自定义代码。8.void TraceText(DWORD dwTraceLevel, char* pszFormat, <Parameter>)函数,达到定义的诊断标准时,在<参数>中指定的数值被记录在APDiag内。9.void TraceTime(DWORD dwTraceLevel, char* pszFormat, <Parameter>)函数,达到定义的诊断标准时,在<参数>中指定的数值被记录在APDiag内。 此外,为了允许性能测评,发布从AP开始诊断的时间(毫秒)。
|