1、ncc常用C脚本.用户注销:#pragma code (useadmin.dll)#include PWRT_api.h#pragma code()PWRTLogout();2.用户登录:#pragma code (useadmin.dll)#include PWRT_api.h#pragma code()PWRTLogin(c);3.关闭项目并退出wincc:ExitWinCC ();4.退出运行到wincc资源管理器:DeactivateRTProject ();按钮变三种颜色#include apdefap.h long _main(char* lpszPictureName, char
2、* lpszObjectName, char* lpszPropertyName)#pragma option(mbcs)if(GetTagWord(TX/ZSH001)=1)return 0x0000ff00;elseif(GetTagWord(TX/ZSL001)=1)return 0x000000ff;elsereturn 0x00c0c0c0;一个调用按钮变色#include apdefap.h long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)#pragma option(mb
3、cs)if(GetTagWord(NewTag)=0)return 0x0000ff00;elsereturn 0x00ffffff;5.结束监控并关闭计算机(会弹出确认对话框)HWND hWnd = NULL;/Author:Smartsysint iRet;hWnd = FindWindow(NULL,WinCC-运行系统 - );iRet=MessageBox(hWnd,结束监控并关闭计算机,关闭操作站,MB_YESNO|MB_ICONWARNING|MB_APPLMODAL);if(iRet=IDYES)DMExitWinCCEx (DM_SDMODE_POWEROFF);6.点击事件
4、弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消: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)/ Funktion: Bit in Doppelwort setzen;if (GetTagBitWait(COLSE_D
5、ISPLAY)=1 )SetTagBit(COLSE_DISPLAY,0);SetTagBit(DISPLAY_NO,0); /Return-Type: BOOLSetTagBit(DISPLAY_COMMENT,0);elseSetTagBit(COLSE_DISPLAY,1);SetTagBit(DISPLAY_NO,1); /Return-Type: BOOLSetTagBit(DISPLAY_COMMENT,0);8.开阀确认:BOOL a;a=GetTagBit(30T制水启动); /Return-Type :short intif (a=0)if(MessageBox(NULL,真
6、的要启动制水吗?,操作提示,MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) = 6) SetTagBit(30T制水启动,1);/Return-Type :BOOLelseif(MessageBox(NULL,真的要停止制水吗?,操作提示,MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) = 6) SetTagBit(30T制水停止,1);9.将WinCC运行画面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow(NULL,WinCC-
7、Runtime - ); /如果运行语言为英文if (WinCCHwnd=0) WinCCHwnd=FindWindow(NULL,WinCC-运行系统 - ); /如果运行语言为中文CloseWindow(WinCCHwnd);10.显示或不显示(其中hiddVtext为内部的二进制变量)if(GetTagBit(hiddVtext)=0) /Return-Type: BOOLSetTagBit(hiddVtext,TRUE); /Return-Type: BOOL/Return-Type: BOOLelseSetTagBit(hiddVtext,FALSE);10.打开编辑画面的脚本#pr
8、agma option(mbcs)#ifdef RUN_ON_WEBNAVIGATOR#elseHWND hExplorerWindow= NULL;HWND hRuntimeWindow= NULL;hExplorerWindow= FindWindow(WinCCExplorerFrameWndClass,NULL);hRuntimeWindow= FindWindow(PDLRTisAliveAndWaitsForYou,NULL);if(hExplorerWindow)ShowWindow(hExplorerWindow, SW_MINIMIZE); / This entry is o
9、nly necessary for Windows 2000ShowWindow(hExplorerWindow, SW_SHOWNORMAL);SetForegroundWindow(hExplorerWindow);elseprintf(rn SetForeground failed);#endif11.如何在WINCC中制作一个保持型按钮方法1:if( GetTagBit(M10) )SetTagBit(M10,0);elseSetTagBit(M10,1);方法2:SetTagBit(M1.0,(SHORT)!GetTagBit(M1.0);求反指令,如果为1点击变为0,如果为0点击变
10、为1方法3:或者做两个按钮,按钮一:显示,直接连接m1.0,是-不显示,否-显示 。事件,直接连接,源,常数1,变量M1.0;按钮二:事件,直接连接,源,常数0,变量M1.0;用按钮一覆盖按钮二12变量每秒加1DWORD a;a=GetTagDWord(Tank);a+=1;if(a100) (a=0);SetTagDWord(Tank,a);return 0; WINCC动画脚本电机风扇旋转(几何-起始角度):#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName, char* lpszProperty
11、Name)static DWORD f=20;if (GetTagBit(DI电机运行信号) f= f+30;if (f=360) (f=0);return f;电机风扇旋转(几何-结束角度):#include apdefap.hlong _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)(停车后,物料回到原点)
12、*#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)static int a=350;if (GetTagBit(DI电机运行信号) & (a=720) (a=350); if (!GetTagBit(DI电机运行信号) (a=350); return a;物料水平右移动(几何-位置X)(停车后,物料停在该点)#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName
13、, char* lpszPropertyName)static int a=350;if (GetTagBit(DI电机运行信号) & (a=720) (a=350); return a;物料向上移动(几何-位置Y)(停车后,物料停在该点)#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)static int b=450;if (GetTagBit(DI电机运行信号) & (b=290) b-=10;if (btm_year-100+2000,ptm-
14、tm_mon+1,ptm-tm_mday);return(p);时分秒(静态文本)#include apdefap.hchar* _main(char* lpszPictureName, char* 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);登
15、陆到指定的用户名无须手动输入(按钮操作)#include apdefap.hvoid OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)#pragma code(useadmin.dll)#include PWRT_API.H#pragma code()PWRTSilentLogin(用户名, 口令);*显示登陆对话框无须热键(按钮操作)*#include apdefap.hvoid OnLButtonDown(char* lp
16、szPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)#pragma code (useadmin.dll)#include PWRT_api.h#pragma code( ) PWRTLogin(c);退出WINCC运行(按钮操作)#include apdefap.hvoid OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int
17、x, int y) DeactivateRTProject ();单位递增按钮(到上限不提示出错)#include apdefap.hvoid OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)DWORD value;value=GetTagDWord(AI标签); if (value90) (value=上限);else value=value+10;SetTagDWord(AI标签,value); 单位递减按钮(到下限不提示出错)#include apdefap.hvoid OnClick
18、(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)DWORD value;value=GetTagDWord(AI标签); if (value10) (value=下限);else value=value-10;SetTagDWord(AI标签,value); *单位递增按钮(到上限提示出错)*#include apdefap.hvoid OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)DWORD val
19、ue;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); *自动登陆到指定的用户(画面属性-其它授权)*#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName,
20、 char* lpszPropertyName)#pragma code(useadmin.dll)#include PWRT_API.H#pragma code()PWRTSilentLogin(用户名, 口令);return(0X0);*询问框(最好用于单机启动,组启也可,2个按钮,NO不操作)*#include apdefap.hvoid OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)HWND hWnd=NULL;in
21、t 上位启动信号;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(上位启动信号,1);elseMessageBox(hWnd,电源未备妥,请查证后重试!,启动!, MB_OK|MB
22、_ICONHAND|MB_APPLMODAL);*询问框(最好用于单机启动,组启也可,3个按钮,NO复位)*#include apdefap.hvoid OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)HWND hWnd=NULL;int上位启动信号;hWnd=FindWindow(NULL,WinCC C-Course);if (GetTagBit(DI备妥)上位启动信号=MessageBox(hWnd, 电源已备妥,您现在
23、确定要启动吗?,启动!, MB_YESNOCANCEL|MB_ICONQUESTION|MB_APPLMODAL); if (上位启动信号=IDCANCEL) (printf(User selected NO button rn); else if (上位启动信号=IDYES) (SetTagByte(上位启动信号,1); else (SetTagByte(上位启动信号,0); elseMessageBox(hWnd, 电源未备妥,请查证后重试!,启动!, MB_OK|MB_ICONHAND|MB_APPLMODAL);*搅拌器左侧扇页(几何宽度)*#include apdefap.hlong
24、 _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 u;*显示层按钮*Sub X6309X94AE2X0000X0000_X6309X94AE2X0000X60C5_X6309X94AE2X0000X653E_OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y) Dim objScreenDim CountLayerSet objScreen = HMIRuntime.Screens(layer)For CountLayer=1 To 32 Step 1objScreen.Layers(CountLayer).Visible = vbFalseNext objScreen.Layers(n).Visible = vbTr
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1