wincc-全集脚本情况分析总结.doc
《wincc-全集脚本情况分析总结.doc》由会员分享,可在线阅读,更多相关《wincc-全集脚本情况分析总结.doc(72页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1、wincc 全局脚本动作全局脚本动作-隐藏控件隐藏控件#include “apdefap.h“ int gscAction( void ) / WINCC:TAGNAME_SECTION_START / syntax: #define TagNameInAction “DMTagName“ / next TagID : 1 / WINCC:TAGNAME_SECTION_END int value; value=GetTagBit(“IM_in“);/“IM_in“为触发的变量。if(value=1)SetVisible(“lianxi.pdl“,“按钮8“,TRUE);/lianxi.p
2、dl 为控制对象所在画面名, “按钮 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_in2、wincc 全局脚本动作全局脚本动作-提示框提示框#include “apdefap.h“ int gscAction( void
3、 ) / WINCC:TAGNAME_SECTION_START / syntax: #define TagNameInAction “DMTagName“ / next TagID : 1 / WINCC:TAGNAME_SECTION_END int value;value=GetTagBit(“IM_in“); if(value=1) MessageBox(NULL,“请确认三厅相关门是否关好,或者请解锁。“,“提示框“,MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL); / WINCC:PICNAME_SECTION_S
4、TART / syntax: #define PicNameInAction “PictureName“ / next PicID : 1 / WINCC:PICNAME_SECTION_END return 0; = 说明:在触发器中选择变量触发。3、趋势面板、趋势面板char * str_a = NULL; int Hi; int Lo; str_a = GetTagChar(“TrendTagName1“); Lo= GetTagSWord(“TrendLo“); Hi= GetTagSWord(“TrendHi“); SetPropWord(lpszPictureName,“qushi
5、“,“TrendIndex“,0); SetPropChar(lpszPictureName,“qushi“,“TrendTagName“,str_a); SetPropWord(lpszPictureName,“qushi“,“ValueAxisBeginValue“,Lo); SetPropWord(lpszPictureName,“qushi“,“ValueAxisEndValue“,Hi); 4、获取位号、获取位号SetTagChar(“TrendTagName1“,“ProcessValueArchivePT111“);/Return-Type: BOOL SetTagSWord(“
6、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);#p
7、ragma code();SYSTEMTIME timeBOOL ret;/printf(“Start function SetCpuTimern“);GetLocalTime(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、对话框调用
8、、对话框调用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, “停机“, “停机警告“
9、, 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:DCSDATACG_winccHornHorn_Attention.wav“,NULL,1); if(GetTagFlo
10、at(“LIST555“)=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 文件,如下所示: #includeapdefap
11、.h void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags,int x,int y) char*a=c:siemenscommonSQLANYISQL-q-b-c UID=DBA;PWD=SQL;DBF=E:testsqltestsqlRT.DB; DBN=CC_testsql_99-12-03-12:48:26R;READ E:testsqltest.sql; Printf(%srn,a); ProgramExcute(a); 下面是一个简单的 S
12、QL 文件内容: select *from pde#hd#t#test; output to e:test2.txt FORMAT ascii 注意:文件名及路径中不要带空格。 11、设置或重置一个变量设置或重置一个变量void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) BOOL z; z=GetTagBit(MyBitVariable);/获得变量值 if (z=0) SetTagBit(MyBitVariable,1); /设置变量值 else SetTagBit(MyBitVa
13、riable,0); 12、运行时图形产生动态旋转运行时图形产生动态旋转#include apdefap.h long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) static int x=25,y,z;/x 为半径的初始值为 25,y 为切换变量,z 为搅拌机运行状态变量z=GetTagBit(202 搅拌机运行); /取得 PLC 搅拌机的运行状态 if(z!=0) switch(y) case 0: x=x-4; if(x=0) y=1; break; default : x=x+4
14、; if(x=25) y=0; break; return x; 13、WINCC-如何在程序中动态修改用户密码如何在程序中动态修改用户密码 1、点击“开始”- “设置”- “控制面板”- “管理工具”- “数据源(ODBC) ”,打开 ODBC 数 据源管理器 2、在用户 DSN 页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目 名_项目建立日期时间”,记下该项的名称 3、在脚本中加入以下代码: #pragma code(“UseGen.dll“) #include “USEGENAP.H“ #pragma code() LPCMN_ERROR err; /定义的 LPCM
15、N_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“),GetTagCha r(“password“),err) /修改密码,user,oldpassword,password 分别为存贮用户名,原密码,新密 码的内部变量,类型为文本变量 8 位字符集 /密码修改成功后的
16、操作,如给用户提示等 PWGENDisconnect(err); /断开与数据库的联接 4、编译运行程序 5、工作完成 6、与用户管理相关的函数定义存贮在 APPLIB 目录下的 USEGENAP.H 文件中,可根据 上面示例自行完成添加用户,修改权限等功能。 14、WinCC 如何实现鼠标如何实现鼠标 OnMouseOVer 事件事件 用 WINDOWAPI 函数 GetCusorPos 获取当前鼠标位置,用 GetWindowRect 函数获取窗口位 置,两值相减得鼠标在 WINCC frame 上的相对位置。用全局脚本(设定为1s 定时刷新) , 然后获取要 OnMouseOver 事件
17、的物体的位置,并与鼠标位置相比较,如一致则触发自己定 义的动作。#include “apdefap.h“ int gscAction( 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,lWidt
18、h,lHeight; long lX,lY; char szStr100; hwnd=FindWindow(NULL,“WinCC-Runtime - “); /如语言为中文应为“WinCC 运行系统-“ if (hwnd=0) printf(“rnError! WinCc Handle is %d“,hwnd);goto over; bRet=GetCursorPos( if (bRet=0) goto over; bRet2=GetWindowRect(hwnd, if (bRet2=0) goto over; lX=pPos.x-rRec.left; /鼠标 对置 lY=pPos.y-r
19、Rec.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“); /Retur
20、n - Type :long int lWidth=GetWidth(“NewPdl0.Pdl“,“Text1“); /Return - Type :long int lHeight=GetHeight(“NewPdl0.Pdl“,“Text1“); /Return - Type :long int if (lX=lLeft) if(GetTagFloat(“LIST555“)100 | GetTagFloat(“TE421B“)100 | GetTagFloat(“TE423A“)100 | GetTagFloat(“TE423B“)100 | GetTagFloat(“TE425“)100
21、 | GetTagFloat(“TE427“)100 | GetTagFloat(“TE442“)100) /轴瓦温度 PlaySoundA(“D:DCSDATACG_winccHorn轴瓦温度高 1.wav“,NULL,0); if(GetTagFloat(“TIE485“)45) /冷油器 出口油温 PlaySoundA(“D:DCSDATACG_winccHorn冷油器出口油温高. wav“,NULL,0); if(GetTagFloat(“PT091“)40) /真空低 PlaySoundA(“D:DCSDATACG_winccHorn排汽压力高.wav“,NULL,0); if(Ge
22、tTagFloat(“PT131“)0.05 | GetTagFloat(“PDT215“)0.05 | GetTagBit(“PDS071“)=0 | GetTagBit(“PDS073“)=0) /滤油器差压 PlaySoundA(“D:DCSDATACG_winccHorn滤油器差压高.wav“,NULL,0); if(GetTagFloat(“PT121“)52 | GetTagFloat(“VE737A“)52 | GetTagFloat(“VE745A“)52 | GetTagBit(“XE202“)=1 | GetTagBit(“XE204“)=1 | GetTagBit(“XE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- wincc 全集 脚本 情况 分析 总结
限制150内