1、wincc常用C脚本功能.用户注销:#pragma code ()#include #pragma code()PWRTLogout();2.用户登录:#pragma code ()#include #pragma code()PWRTLogin(c);3.关闭项目并退出wincc:ExitWinCC ();4.退出运行到wincc资源管理器:DeactivateRTProject ();按钮变三种颜色#include long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)#pragma o
2、ption(mbcs)if(GetTagWord(TX/ZSH001)=1)return 0x0000ff00;elseif(GetTagWord(TX/ZSL001)=1)return 0x000000ff;elsereturn 0x00c0c0c0;一个调用按钮变色#include long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)#pragma option(mbcs)if(GetTagWord(NewTag)=0)return 0x0000ff00;elsereturn 0x00
3、ffffff;5.结束监控并关闭计算机(会弹出确认对话框)HWND hWnd = NULL;击事件弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消:int r;r=MessageBox(NULL, YES为开,NO为关, 确定开命令:, MB_YESNO |MB_SYSTEMMODAL);if (r=IDYES)SetTagBit(TAGNAME,TRUE);elseSetTagBit(TAGNAME,FALSE);7.开显示关显示:(要在内部变量中建立三个二进制变量COLSE_DISPLAY、DISPLAY_NO和DISPLAY_COMMENT)阀确认:BOOL a;a=
4、GetTagBit(30T制水启动); WinCC运行画面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow(NULL,WinCC-Runtime - ); 示或不显示(其中hiddVtext为内部的二进制变量)if(GetTagBit(hiddVtext)=0) 开编辑画面的脚本#pragma option(mbcs)#ifdef RUN_ON_WEBNAVIGATOR#elseHWND hExplorerWindow= NULL;HWND hRuntimeWindow= NULL;hExplorerWindow= FindWindow(WinCCExplorerF
5、rameWndClass,NULL);hRuntimeWindow= FindWindow(PDLRTisAliveAndWaitsForYou,NULL);if(hExplorerWindow)ShowWindow(hExplorerWindow, SW_MINIMIZE); 何在WINCC中制作一个保持型按钮方法1:if( GetTagBit(M10) )SetTagBit(M10,0);elseSetTagBit(M10,1);方法2:SetTagBit(,(SHORT)!GetTagBit();求反指令,如果为1点击变为0,如果为0点击变为1方法3:或者做两个按钮,按钮一:显示,直接连
6、接,是-不显示,否-显示 。事件,直接连接,源,常数1,变量;按钮二:事件,直接连接,源,常数0,变量;用按钮一覆盖按钮二12变量每秒加1DWORD a;a=GetTagDWord(Tank);a+=1;if(a100) (a=0);SetTagDWord(Tank,a);return 0;WINCC动画脚本电机风扇旋转(几何-起始角度):#include long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)static DWORD f=20;if (GetTagBit(DI电机运行信号)
7、 f= f+30;if (f=360) (f=0);return f;电机风扇旋转(几何-结束角度):#include long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)static DWORD i=80;if (GetTagBit(DI电机运行信号) i = i+30;if (i=360) (i=0);return i;*物料水平右移动(几何-位置X)(停车后,物料回到原点)*#include long _main(char* lpszPictureName, char* lpszOb
8、jectName, char* lpszPropertyName)static int a=350;if (GetTagBit(DI电机运行信号) & (a=720) (a=350);if (!GetTagBit(DI电机运行信号) (a=350);return a;物料水平右移动(几何-位置X)(停车后,物料停在该点)#include long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)static int a=350;if (GetTagBit(DI电机运行信号) & (a=720)
9、(a=350);return a;物料向上移动(几何-位置Y)(停车后,物料停在该点)#include long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)static int b=450;if (GetTagBit(DI电机运行信号) & (b=290) b-=10;if (btm_year-100+2000,ptm-tm_mon+1,ptm-tm_mday);return(p);时分秒(静态文本)#include char* _main(char* lpszPictureName, c
10、har* lpszObjectName, char* lpszPropertyName)time_t timer ;struct tm *ptm;char *p;time(&timer);ptm =localtime(&timer);p =SysMalloc(9);sprintf(p,%02d:%02d:%02d,ptm-tm_hour,ptm-tm_min,ptm-tm_sec);return(p);登陆到指定的用户名无须手动输入(按钮操作)#include void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, cha
11、r* lpszPropertyName, UINT nFlags, int x, int y)#pragma code()#include #pragma code()PWRTSilentLogin(用户名, 口令);*显示登陆对话框无须热键(按钮操作)*#include void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)#pragma code ()#include #pragma code( )PWRTLogin(
12、c);退出WINCC运行(按钮操作)#include void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)DeactivateRTProject ();单位递增按钮(到上限不提示出错)#include void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)DWORD value;value=GetTagDWord(
13、AI标签);if (value90) (value=上限);else value=value+10;SetTagDWord(AI标签,value);单位递减按钮(到下限不提示出错)#include void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)DWORD value;value=GetTagDWord(AI标签);if (value10) (value=下限);else value=value-10;SetTagDWord(AI标签,value);*单位递增按钮(到上限提示出错)
14、*#include void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)DWORD value;HWND hWnd=NULL ;hWnd=FindWindow(NULL,Wincc-运行系统- );value=GetTagDWord(AI标签);if (value0) (value=value-10);else MessageBox(hWnd, 已到达下限值!, 错误,MB_OK|MB_ICONWARNING|MB_APPLMODAL);SetTagDWord(AI标签,value);
15、*自动登陆到指定的用户(画面属性-其它授权)*#include long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)#pragma code()#include #pragma code()PWRTSilentLogin(用户名, 口令);return(0X0);*询问框(最好用于单机启动,组启也可,2个按钮,NO不操作)*#include void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszP
16、ropertyName, UINT nFlags, int x, int y)HWND hWnd=NULL;int 上位启动信号;hWnd=FindWindow(NULL,WinCC C-Course);if (GetTagBit(DI备妥)上位启动信号=MessageBox(hWnd,电源已备妥,您现在确定要启动吗,启动!,MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL);printf(rnExample 3rn);if (上位启动信号=IDNO) (printf(User selected NO button rn);else (SetTagByte(上位启动信
17、号,1);elseMessageBox(hWnd,电源未备妥,请查证后重试!,启动!,MB_OK|MB_ICONHAND|MB_APPLMODAL);*询问框(最好用于单机启动,组启也可,3个按钮,NO复位)*#include void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)HWND hWnd=NULL;int上位启动信号;hWnd=FindWindow(NULL,WinCC C-Course);if (GetTag
18、Bit(DI备妥)上位启动信号=MessageBox(hWnd, 电源已备妥,您现在确定要启动吗,启动!,MB_YESNOCANCEL|MB_ICONQUESTION|MB_APPLMODAL);if (上位启动信号=IDCANCEL) (printf(User selected NO button rn);elseif (上位启动信号=IDYES) (SetTagByte(上位启动信号,1);else (SetTagByte(上位启动信号,0);elseMessageBox(hWnd, 电源未备妥,请查证后重试!,启动!,MB_OK|MB_ICONHAND|MB_APPLMODAL);*搅拌
19、器左侧扇页(几何宽度)*#include long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)static int h=50;static int u=0;if (GetTagBit(DI电机运行信号)if (h0)&(h=0)&(u=75)&(h125)(h+=2);return h;if (u75)(u-=2);return u;u=125;h=75;return h;return u;if (!GetTagBit(DI电机运行信号)h=75;u=125;return h;return
20、 u;*显示层按钮*Sub X6309X94AE2X0000X0000_X6309X94AE2X0000X60C5_X6309X94AE2X0000X653E_OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)Dim objScreenDim CountLayerSet objScreen = (layer)For CountLayer=1 To 32 Step 1(CountLayer).Visible = vbFalseNext(n).Visible = vbTrueEnd Subn=层数+1初始画面程序(画面空地-属性-事件-
21、其它-打开画面-动作)*打印按钮*#include void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)WinExec( -hardcopy,SW_SHOWNORMAL);*一个圈代表电机两种状态*#include void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)char* opentag=DI1电机运行信号;char* closetag=DI2电机运行信号;BOOL open,close;open = GetTagBit(opentag);close = GetTagBit(closetag);if (open)return CO_GREEN;if (close)return CO_BLUE;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1