wincc常用C脚本功能.docx
- 文档编号:24693193
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:18
- 大小:18.82KB
wincc常用C脚本功能.docx
《wincc常用C脚本功能.docx》由会员分享,可在线阅读,更多相关《wincc常用C脚本功能.docx(18页珍藏版)》请在冰豆网上搜索。
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;
else
if(GetTagWord("TX/ZSL001")==1)
return0x000000ff;
else
return0x00c0c0c0;
}
一个调用按钮变色
#include"apdefap.h”
long_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)
{
#pragmaoption(mbcs)
if(GetTagWord("NewTag")==0)
return0x0000ff00;
else
return0x00ffffff;
}
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);
else
SetTagBit("TAGNAME",FALSE);
7.开显示关显示:
(要在内部变量中建立三个二进制变量
COLSE_DISPLAYDISPLAY_NO和DISPLAY_COMMENT)
//Funktion:
BitinDoppelwortsetzen;
if(GetTagBitWait("COLSE_DISPLAY")==1)
(SetTagBit("COLSE_DISPLAY",0);
世甜羽淋二
}es|e((100日:
edAi-ujniey//昭目顷10£)}旧阮gas}(9==(iVaOIAIIAImis人S—SIAlleNnoaomaOzlimS一日lAllNOLLSmnONO。
「日lAllONSm人一日lAlt世甜羽裕二[铀W卸取目查国章「linhDxo
雷6ess9|/\|)j}(O==e)J!
}U!
/US:
edAi-ujniey//J(..昭目顷10£.)1旧阮geQK毛
1009:
MBfeWS
(KOA.lNAIAIIAIOO-AVIdSia..)!
旧能gas1009:
edAi-
ujniey//XlAQhT人VldSICL)}旧能ges:
(L二人v1dSI
CTmSI06)1旧阮ges}es|e(KOA.lNAIAIIAIOO-
AVIdSia..)!
旧能gas1009:
edAi-ujniey//XoLOhT人
VldSICL)}旧能ges"MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTE
MMODAL)==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);//RetuType:
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");
#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
DWORDa;
a=GetTagDWord("Tank");
a+=1;
if(a>100)(a=0);
SetTagDWord("Tank",a);
return0;
}
WINCC动画脚本
电机风扇旋转(几何---起始角度):
#include"apdefap.h”
long_main(char*IpszPictureName,char*IpszObjectName,char*lpszPropertyName)
{
staticDWORDf=20;
f=f+30;
if(f==360)(f=0);
}
returnf;
}
电机风扇旋转(几何---结束角度):
#include"apdefap.h"
long_main(char*IpszPictureName,char*IpszObjectName,char*lpszPropertyName)
{
staticDWORDi=80;
if(GetTagBit("DI电机运行信号")){
i=i+30;
if(i==360)(i=0);
}
returni;
}
”物料水平右移动(几何---位置X)(停车后,物料回到原点)
#include"apdefap.h"
long_main(char*IpszPictureName,char*IpszObjectName,char*lpszPropertyName)
{
staticinta=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)
(
staticinta=350;
a+=20;
if(a>=720)(a=350);
}
returna;
}
物料向上移动(几何---位置Y)(停车后,物料停在该点)
#include"apdefap.h"
long_main(char*IpszPictureName,char*IpszObjectName,char*lpszPropertyName)
{
staticintb=450;
if(GetTagBit("DI电机运行信号")&&(b>=290)){b-=10;
if(b<=280)(b=450);
}
returnb;
}
年月日(静态文本)
#include"apdefap.h
char*_main(char*IpszPictureName,char*IpszObjectName,char*lpszPropertyName)
{
time_ttimer;
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)
timettimer;
structtm*ptm;
char*p;
time(&timer);
ptm=localtime(&timer);
p=SysMalloc(9);
sprintf(p,"%02d:
%02d:
%02d”,ptm->tm_hour,ptm->tm_min,pt
m->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*IpszPictureName,char*IpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty)
{
#pragmacode("useadmin.dll")
#include"PWRT_api.h"
#pragmacode()
PWRTLogin('c');
}
退出WINCC运行(按钮操作)
#include"apdefap.h
voidOnLButtonDown(char*IpszPictureName,char*
IpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty)
{
{
DeactivateRTProject();
)
}
单位递增按钮(到上限不提示出错)
#include"apdefap.h"
voidOnClick(char*IpszPictureName,char*IpszObjectName,char*
IpszPropertyName)
{
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);
}
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*IpszPictureName,char*
IpszObjectName,char*IpszPropertyName,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");
1));
if(上位启动信号==IDNO)(printf("UserselectedNObutton\r\n"));
else(SetTagByte("上位启动信号’
else
MessageBox(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));
}
}
else
MessageBox(hWnd:
电源未备妥,请查证后重试!
","启动!
MB_OK|MB_ICONHAND|MB_APPLMODAL);
}
(
staticinth=50;
staticintu=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;
}
staticintu=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;
}
}
ForCountLayer=1To32Step1
objScreen.Layers(CountLayer).Visible=vbFalse
Next
objScreen.Layers(n).Visible=vbTrue
EndSub
n=层数+1
初始画面程序(画面空地--属性-事件--其它--打开画面-动作)
**一个圈代表电机两种状态**
#include"apdefap.h”
voidOnClick(char*IpszPictureName,char*IpszObjectName,char*IpszPropertyName)
{
char*opentag="DI1电机运行信号';
char*closetag="DI2电机运行信号';
BOOLopen,close;
open=GetTagBit(opentag);
close=GetTagBit(closetag);
if(open)
returnCO_GREEN;
if(close)
returnCO_BLUE;
**单位递减按钮(到下限提示出错)**
#include"apdefap.h"
voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)
{
DWORDvalue;
HWNDhWnd=NULL;
hWnd=FindWindow(NULL,"Wincc-运行系统-");
**搅拌器左侧扇页(几何一宽度)**
#include"apdefap.h"
long_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)
**搅拌器左侧扇页(几何一位置X,右侧扇页没有位置变化)**
#include"apdefap.h"
long_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)
(
staticinth=75;
**显示层按钮**
Sub
X6309X94AE2X0000X0000_X6309X94AE2X0000X60C5_X6309X94
AE2X0000X653E_OnLButtonDown(ByValItem,ByValFlags,ByValx,ByValy)
DimobjScreen
DimCountLayer
SetobjScree
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- wincc 常用 脚本 功能