首页 wincc常用C脚本

wincc常用C脚本

举报
开通vip

wincc常用C脚本.用户注销:#pragmacode("useadmin.dll")#include"PWRT_api.h"#pragmacode()PWRTLogout();2.用户登录:#pragmacode("useadmin.dll")#include"PWRT_api.h"#pragmacode()PWRTLogin('c');3.关闭项目并退出wincc:ExitWinCC();4.退出运行到wincc资源管理器:Deacti...

wincc常用C脚本
.用户注销:#pragmacode("useadmin.dll")#include"PWRT_api.h"#pragmacode()PWRTLogout();2.用户登录:#pragmacode("useadmin.dll")#include"PWRT_api.h"#pragmacode()PWRTLogin('c');3.关闭项目并退出wincc:ExitWinCC();4.退出运行到wincc资源管理器:DeactivateRTProject();按钮变三种颜色#include"apdefap.h"long_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName){#pragmaoption(mbcs)if(GetTagWord("TX/ZSH001")==1)return0x0000ff00;elseif(GetTagWord("TX/ZSL001")==1)return0x000000ff;elsereturn0x00c0c0c0;}一个调用按钮变色#include"apdefap.h"long_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName){#pragmaoption(mbcs)if(GetTagWord("NewTag")==0)return0x0000ff00;elsereturn0x00ffffff;}5.结束监控并关闭计算机(会弹出确认对话框)HWNDhWnd=NULL;//Author:SmartsysintiRet;hWnd=FindWindow(NULL,"WinCC-运行系统-");iRet=MessageBox(hWnd,"结束监控并关闭计算机","关闭操作站",MB_YESNO|MB_ICONWARNING|MB_APPLMODAL);if(iRet==IDYES)   DMExitWinCCEx(DM_SDMODE_POWEROFF);6.点击事件弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消:intr;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:BitinDoppelwortsetzen;if(GetTagBitWait("COLSE_DISPLAY")==1){SetTagBit("COLSE_DISPLAY",0);SetTagBit("DISPLAY_NO",0);//Return-Type:BOOLSetTagBit("DISPLAY_COMMENT",0);}else   {SetTagBit("COLSE_DISPLAY",1);SetTagBit("DISPLAY_NO",1);//Return-Type:BOOLSetTagBit("DISPLAY_COMMENT",0);}8.开阀确认:BOOLa;a=GetTagBit("30T制水启动");//Return-Type:shortintif(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运行画面最小化HWNDWinCCHwnd;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.打开编辑画面的脚本#pragmaoption(mbcs)#ifdefRUN_ON_WEBNAVIGATOR#else   HWNDhExplorerWindow=NULL;   HWNDhRuntimeWindow=NULL;   hExplorerWindow=FindWindow("WinCCExplorerFrameWndClass",NULL);   hRuntimeWindow=FindWindow("PDLRTisAliveAndWaitsForYou",NULL);   if(hExplorerWindow)      {      ShowWindow(hExplorerWindow,SW_MINIMIZE);//ThisentryisonlynecessaryforWindows2000      ShowWindow(hExplorerWindow,SW_SHOWNORMAL);      SetForegroundWindow(hExplorerWindow);   }   else      printf("rnSetForegroundfailed");#endif11.如何在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变量每秒加1DWORDa;a=GetTagDWord("Tank");a+=1;if(a>100)(a=0);SetTagDWord("Tank",a);return0;}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);}returnf;}电机风扇旋转(几何---结束角度):#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);}returni;}**物料水平右移动(几何---位置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);  returna;}物料水平右移动(几何---位置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);}    returna;} 物料向上移动(几何---位置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);}    returnb;}年月日(静态文本)#include"apdefap.h" char*_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName){time_t timer;structtm*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;structtm*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"voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty){#pragmacode("useadmin.dll")#include"PWRT_API.H"#pragmacode()PWRTSilentLogin("用户名","口令");} **显示登陆对话框无须热键(按钮操作)**#include"apdefap.h"voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty){#pragmacode("useadmin.dll")#include"PWRT_api.h"#pragmacode() PWRTLogin('c');} 退出WINCC运行(按钮操作)#include"apdefap.h"voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty){ { DeactivateRTProject();}}单位递增按钮(到上限不提示出错)#include"apdefap.h"voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName){DWORDvalue;value=GetTagDWord("AI标签"); if(value>90)(value=上限);elsevalue=value+10;SetTagDWord("AI标签",value);   }单位递减按钮(到下限不提示出错)#include"apdefap.h"voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName){DWORDvalue;value=GetTagDWord("AI标签"); if(value<10)(value=下限);elsevalue=value-10;SetTagDWord("AI标签",value);   }**单位递增按钮(到上限提示出错)**#include"apdefap.h"voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName){DWORDvalue;HWNDhWnd=NULL; hWnd=FindWindow(NULL,"Wincc-运行系统-");value=GetTagDWord("AI标签"); if(value<=90)(value=value+10);elseMessageBox(hWnd,"已到达上限值!","错误",MB_OK|MB_ICONWARNING|MB_APPLMODAL);SetTagDWord("AI标签",value);   } **单位递减按钮(到下限提示出错)**#include"apdefap.h"voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName){DWORDvalue;HWNDhWnd=NULL; hWnd=FindWindow(NULL,"Wincc-运行系统-");value=GetTagDWord("AI标签"); if(value>0)(value=value-10);elseMessageBox(hWnd,"已到达下限值!","错误",MB_OK|MB_ICONWARNING|MB_APPLMODAL);SetTagDWord("AI标签",value);   }**自动登陆到指定的用户(画面属性--其它—授权)**#include"apdefap.h" long_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName){#pragmacode("useadmin.dll")#include"PWRT_API.H"#pragmacode()PWRTSilentLogin("用户名","口令");return(0X0);} **询问框(最好用于单机启动,组启也可,2个按钮,NO不操作)**#include"apdefap.h"voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty){HWNDhWnd=NULL;int上位启动信号;hWnd=FindWindow(NULL,"WinCCC-Course");if(GetTagBit("DI备妥")){上位启动信号=MessageBox(hWnd,"电源已备妥,您现在确定要启动吗?","启动!",               MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL);printf("\r\nExample3\r\n");   if(上位启动信号==IDNO)  (printf("UserselectedNObutton\r\n"));   else(SetTagByte("上位启动信号",1));}elseMessageBox(hWnd,"电源未备妥,请查证后重试!","启动!",          MB_OK|MB_ICONHAND|MB_APPLMODAL);}**询问框(最好用于单机启动,组启也可,3个按钮,NO复位)**#include"apdefap.h"voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty){HWNDhWnd=NULL;int上位启动信号;hWnd=FindWindow(NULL,"WinCCC-Course");if(GetTagBit("DI备妥")){上位启动信号=MessageBox(hWnd,"电源已备妥,您现在确定要启动吗?","启动!",                       MB_YESNOCANCEL|MB_ICONQUESTION|MB_APPLMODAL);   if(上位启动信号==IDCANCEL)  (printf("UserselectedNObutton\r\n"));    else        {         if (上位启动信号==IDYES) (SetTagByte("上位启动信号",1));         else (SetTagByte("上位启动信号",0));         }}elseMessageBox(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);returnh;}if((u>=0)&&(u<50)){(u+=2);returnu;}u=0;h=50;returnh;returnu;}if(!GetTagBit("DI电机运行信号")){h=50;u=0;returnh;returnu;}}    **搅拌器左侧扇页(几何—位置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);returnh;} if((u<=125)&&(u>75)){(u-=2);returnu;}u=125;h=75;returnh;returnu;}if(!GetTagBit("DI电机运行信号")){h=75;u=125;returnh;returnu;}}**显示层按钮**SubX6309X94AE2X0000X0000_X6309X94AE2X0000X60C5_X6309X94AE2X0000X653E_OnLButtonDown(ByValItem,ByValFlags,ByValx,ByValy)        DimobjScreenDimCountLayerSetobjScreen=HMIRuntime.Screens("layer")ForCountLayer=1To32Step1objScreen.Layers(CountLayer).Visible=vbFalseNextobjScreen.Layers(n).Visible=vbTrueEndSub n=层数+1初始画面程序(画面空地--属性--事件--其它--打开画面--动作) **打印按钮**#include"apdefap.h"voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty){WinExec("PRTSCR.EXE-hardcopy",SW_SHOWNORMAL);} **一个圈代表电机两种状态**#include"apdefap.h"voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName){char*opentag="DI1电机运行信号";      char*closetag="DI2电机运行信号";      BOOLopen,close;      open=GetTagBit(opentag);      close=GetTagBit(closetag);      if(open)       returnCO_GREEN;       if(close)      returnCO_BLUE;
本文档为【wincc常用C脚本】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥17.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
先知先明
暂无简介~
格式:doc
大小:97KB
软件:Word
页数:15
分类:互联网
上传时间:2019-08-30
浏览量:39