wincc普通C脚本.doc

举报
资源描述
.\ .用户注销: #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* lpszObjectName, char* lpszPropertyName) { #pragma option(mbcs) if(GetTagWord("TX/ZSH001")==1) return 0x0000ff00; else if(GetTagWord("TX/ZSL001")==1) return 0x000000ff; else return 0x00c0c0c0; } 一个调用按钮变色 #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma option(mbcs) if(GetTagWord("NewTag")==0) return 0x0000ff00; else return 0x00ffffff; } 5.结束监控并关闭计算机(会弹出确认对话框) HWND hWnd = NULL;//Author:Smartsys int iRet; hWnd = FindWindow(NULL,"WinCC-运行系统 - "); iRet=MessageBox(hWnd,"结束监控并关闭计算机", "关闭操作站",MB_YESNO|MB_ICONWARNING|MB_APPLMODAL); if(iRet==IDYES) DMExitWinCCEx (DM_SDMODE_POWEROFF); 6.点击事件弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消: int r; r=MessageBox(NULL, "YES为开,NO为关", "确定开命令:", MB_YESNO |MB_SYSTEMMODAL); if (r==IDYES) SetTagBit("TAGNAME",TRUE); else SetTagBit("TAGNAME",FALSE); 7.开显示关显示:(要在内部变量中建立三个二进制变量COLSE_DISPLAY、DISPLAY_NO和DISPLAY_COMMENT) // Funktion: Bit in Doppelwort setzen; if (GetTagBitWait("COLSE_DISPLAY")==1 ) {SetTagBit("COLSE_DISPLAY",0); SetTagBit("DISPLAY_NO",0); //Return-Type: BOOL SetTagBit("DISPLAY_COMMENT",0); } else {SetTagBit("COLSE_DISPLAY",1); SetTagBit("DISPLAY_NO",1); //Return-Type: BOOL SetTagBit("DISPLAY_COMMENT",0); } 8.开阀确认: BOOL a; a=GetTagBit("30T制水启动"); //Return-Type :short int if (a==0) { if(MessageBox(NULL,"真的要启动制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6) { SetTagBit("30T制水启动",1); //Return-Type :BOOL } } else {if(MessageBox(NULL,"真的要停止制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6) { SetTagBit("30T制水停止",1); }} 9.将WinCC运行画面最小化 HWND WinCCHwnd; WinCCHwnd=FindWindow(NULL,"WinCC-Runtime - "); //如果运行语言为英文 if (WinCCHwnd==0) WinCCHwnd=FindWindow(NULL,"WinCC-运行系统 - "); //如果运行语言为中文 CloseWindow(WinCCHwnd); 10.显示或不显示(其中hiddVtext为内部的二进制变量) if(GetTagBit("hiddVtext")==0) //Return-Type: BOOL { SetTagBit("hiddVtext",TRUE); //Return-Type: BOOL //Return-Type: BOOL } else {SetTagBit("hiddVtext",FALSE); } 10.打开编辑画面的脚本 #pragma option(mbcs) #ifdef RUN_ON_WEBNAVIGATOR #else HWND hExplorerWindow= NULL; HWND hRuntimeWindow= NULL; hExplorerWindow= FindWindow("WinCCExplorerFrameWndClass",NULL); hRuntimeWindow= FindWindow("PDLRTisAliveAndWaitsForYou",NULL); if(hExplorerWindow) { ShowWindow(hExplorerWindow, SW_MINIMIZE); // This entry is only necessary for Windows 2000 ShowWindow(hExplorerWindow, SW_SHOWNORMAL); SetForegroundWindow(hExplorerWindow); } else printf("rn SetForeground failed"); #endif 11.如何在WINCC中制作一个保持型按钮 方法1: if( GetTagBit("M10") ) SetTagBit("M10",0); else SetTagBit("M10",1); 方法2: SetTagBit("M1.0",(SHORT)!GetTagBit("M1.0")); 求反指令,如果为1点击变为0, 如果为0点击变为1 方法3: 或者做两个按钮, 按钮一:显示,直接连接m1.0,是--不显示,否--显示 。事件,直接连接,源,常数1,变量M1.0; 按钮二:事件,直接连接,源,常数0,变量M1.0; 用按钮一覆盖按钮二 12变量每秒加1 DWORD a; a=GetTagDWord("Tank"); a+=1; if(a>100) (a=0); SetTagDWord("Tank",a); return 0; } WINCC动画脚本 电机风扇旋转(几何---起始角度): #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static DWORD f=20; if (GetTagBit("DI电机运行信号")) { f= f+30; if (f==360) (f=0); } return f; } 电机风扇旋转(几何---结束角度): #include "apdefap.h" 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 "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int a=350; if (GetTagBit("DI电机运行信号") && (a<=730)) { a+=20; if (a>=720) (a=350); } if (!GetTagBit("DI电机运行信号")) (a=350); return a; } 物料水平右移动(几何---位置X)(停车后,物料停在该点) #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int a=350; if (GetTagBit("DI电机运行信号") && (a<=730)) { a+=20; if (a>=720) (a=350); } return a; } 物料向上移动(几何---位置Y)(停车后,物料停在该点) #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int b=450; if (GetTagBit("DI电机运行信号") && (b>=290)) { b-=10; if (b<=280) (b=450); } return b; } 年月日(静态文本) #include "apdefap.h" char* _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,"%04d/%02d/%02d",ptm->tm_year-100+2000,ptm->tm_mon+1,ptm->tm_mday); return(p); } 时分秒(静态文本) #include "apdefap.h" char* _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); } 登陆到指定的用户名无须手动输入(按钮操作) #include "apdefap.h" void 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.h" void OnLButtonDown(char* lpszPictureName, 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.h" void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) { { DeactivateRTProject (); } } 单位递增按钮(到上限不提示出错) #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { DWORD value; value=GetTagDWord("AI标签"); if (value>90) (value=上限); else value=value+10; SetTagDWord("AI标签",value); } 单位递减按钮(到下限不提示出错) #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { DWORD value; value=GetTagDWord("AI标签"); if (value<10) (value=下限); else value=value-10; SetTagDWord("AI标签",value); } **单位递增按钮(到上限提示出错)** #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { DWORD value; HWND hWnd=NULL ; hWnd=FindWindow(NULL,"Wincc-运行系统- "); value=GetTagDWord("AI标签"); if (value<=90) (value=value+10); else MessageBox(hWnd,"已到达上限值!","错误",MB_OK|MB_ICONWARNING|MB_APPLMODAL); SetTagDWord("AI标签",value); } **单位递减按钮(到下限提示出错)** #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { DWORD value; HWND hWnd=NULL ; hWnd=FindWindow(NULL,"Wincc-运行系统- "); value=GetTagDWord("AI标签"); if (value>0) (value=value-10); else MessageBox(hWnd," 已到达下限值!"," 错误",MB_OK|MB_ICONWARNING|MB_APPLMODAL); SetTagDWord("AI标签",value); } **自动登陆到指定的用户(画面属性--其它—授权)** #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma code("useadmin.dll") #include "PWRT_API.H" #pragma code() PWRTSilentLogin("用户名", "口令"); return(0X0); } **询问框(最好用于单机启动,组启也可,2个按钮,NO不操作)** #include "apdefap.h" 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 (GetTagBit("DI备妥")) { 上位启动信号=MessageBox(hWnd,"电源已备妥,您现在确定要启动吗?","启动!", MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL); printf("\r\nExample 3\r\n"); if (上位启动信号==IDNO) (printf("User selected NO button \r\n")); else (SetTagByte("上位启动信号",1)); } else MessageBox(hWnd,"电源未备妥,请查证后重试!","启动!", MB_OK|MB_ICONHAND|MB_APPLMODAL); } **询问框(最好用于单机启动,组启也可,3个按钮,NO复位)** #include "apdefap.h" 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 (GetTagBit("DI备妥")) { 上位启动信号=MessageBox(hWnd," 电源已备妥,您现在确定要启动吗?","启动!", MB_YESNOCANCEL|MB_ICONQUESTION|MB_APPLMODAL); if (上位启动信号==IDCANCEL) (printf("User selected NO button \r\n")); else { if (上位启动信号==IDYES) (SetTagByte("上位启动信号",1)); else (SetTagByte("上位启动信号",0)); } } else MessageBox(hWnd," 电源未备妥,请查证后重试!","启动!", MB_OK|MB_ICONHAND|MB_APPLMODAL); } **搅拌器左侧扇页(几何—宽度)** #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int h=50; static int u=0; if (GetTagBit("DI电机运行信号")) { if ((h>0)&&(h<=50)) { (h-=2); return h; } if ((u>=0)&&(u<50)) { (u+=2); return u; } u=0; h=50; return h; return u; } if (!GetTagBit("DI电机运行信号")){ h=50; u=0; return h; return u; } } **搅拌器左侧扇页(几何—位置X,右侧扇页没有位置变化)** #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int h=75; static int u=125; if (GetTagBit("DI电机运行信号")) { if ((h>=75)&&(h<125)) { (h+=2); return h; } if ((u<=125)&&(u>75)) { (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 objScreen Dim CountLayer Set objScreen = HMIRuntime.Screens("layer") For CountLayer=1 To 32 Step 1 objScreen.Layers(CountLayer).Visible = vbFalse Next objScreen.Layers(n).Visible = vbTrue End Sub n=层数+1 初始画面程序(画面空地--属性--事件--其它--打开画面--动作) **打印按钮** #include "apdefap.h" void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) { WinExec("PRTSCR.EXE -hardcopy",SW_SHOWNORMAL); } **一个圈代表电机两种状态** #include "apdefap.h" 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;
展开阅读全文
温馨提示:
得力文库 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 教育专区 > 教案示例


本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com