wincc-全套脚本总结
- 格式:doc
- 大小:195.00 KB
- 文档页数:72
——————1、wincc全局脚本动作-------隐藏控件——————#include "apdefap.h"int gscAction( void ){// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_ENDint value;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_ENDreturn 0;}=====================================================说明:在触发器里选择变量IM_in——————2、wincc全局脚本动作----提示框——————#include "apdefap.h"int gscAction( void ){// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_ENDint value;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_ENDreturn 0;}=============================说明:在触发器中选择变量触发。
——————3、趋势面板——————————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","ValueAxisEndV alue",Hi); ——————————————————————————————4、获取位号————————SetTagChar("TrendTagName1","ProcessValueArchive\\PT111"); //Return-Type: BOOL SetTagSWord("TrendHi",200);SetTagSWord("TrendLo",0);SetTagByte("Trenden",1);——————————————————————————————5、调用登陆函数——————#pragma code("useadmin.dll")#include "PWRT_API.H"#pragma code()if (strcmp(GetTagChar("@CurrentUser"),"")==0){PWRTLogin('c');-------------------------------------——————6、时间同步——————void SetCpuTime(){#pragma code("kernel32.dll");void GetLocalTime(SYSTEMTIME *lpst);#pragma code();SYSTEMTIME timeBOOL ret;//printf("Start function SetCpuTime\r\n");GetLocalTime(&time);ret= SetTagMultiWait("%d%d%d%d%d%d%d","data_year",time.wYear-2000,"data_month",time.wMonth,"data_day",time.wDay,"data_hour",time.wHour,"data_MINUTE",time.wMinute,"data_SECOND",time.wSecond,"data_FLAG",1)}-------------------------------------——————7、对话框调用——————BOOL A;BOOL B;HWND hwnd=NULL;int RetMsg;A=GetTagBit("TJ_ANNIU"); //Return-Type: BOOLhwnd=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{}------------------------------------------——————8、声音报警——————#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);-----------------------------------------------——————9、水平移动——————建立内部变量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的位置,以此类推,就可以做出物体移动画面了,要做全局脚本-----------------------------------------------——————10、WinCC中调用SQL语言——————1、创建一个SQL文件,此文件在ISQL中建立,文件内包含所要执行的SQL语句。
Windows 对话框实现。
具体如下:2、在WinCC中用C Script 调用上述SQL文件,如下所示:#include"apdefap.h"void OnLButtonDown(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注意:文件名及路径中不要带空格。