wincc常用C脚本.docx

上传人:b****5 文档编号:7636973 上传时间:2023-01-25 格式:DOCX 页数:14 大小:17.87KB
下载 相关 举报
wincc常用C脚本.docx_第1页
第1页 / 共14页
wincc常用C脚本.docx_第2页
第2页 / 共14页
wincc常用C脚本.docx_第3页
第3页 / 共14页
wincc常用C脚本.docx_第4页
第4页 / 共14页
wincc常用C脚本.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

wincc常用C脚本.docx

《wincc常用C脚本.docx》由会员分享,可在线阅读,更多相关《wincc常用C脚本.docx(14页珍藏版)》请在冰豆网上搜索。

wincc常用C脚本.docx

wincc常用C脚本

.用户注销:

*pragmacode("useadmin.dll")

*include"PWRT_api.h"

*pragmacode()

PWRTLogout();

2.用户登录:

*pragmacode("useadmin.dll")

*include"PWRT_api.h"

*pragmacode()

PWRTLogin('c');

3.关闭工程并退出wincc:

E*itWinCC();

4.退出运行到wincc资源管理器:

DeactivateRTProject();

按钮变三种颜色

*include"apdefap.h"

long_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)

{

*pragmaoption(mbcs)

if(GetTagWord("T*/ZSH001")==1)

return0*0000ff00;

else

if(GetTagWord("T*/ZSL001")==1)

return0*000000ff;

else

return0*00c0c0c0;

}

一个调用按钮变色

*include"apdefap.h"

long_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)

{

*pragmaoption(mbcs)

if(GetTagWord("NewTag")==0)

return0*0000ff00;

else

return0*00ffffff;

}

5.完毕监控并关闭计算机〔会弹出确认对话框〕

HWNDhWnd=NULL;//Author:

Smartsys

intiRet;

hWnd=FindWindow(NULL,"WinCC-运行系统-");

iRet=MessageBo*(hWnd,"完毕监控并关闭计算机",

"关闭操作站",MB_YESNO|MB_ICONWARNING|MB_APPLMODAL);

if(iRet==IDYES)

  DME*itWinCCE*(DM_SDMODE_POWEROFF);

6.点击事件弹出对话框,通过点击弹出对话框确实定和取消按钮实现对变量的置位或取消:

intr;

r=MessageBo*(NULL,"YES为开,NO为关","确定开命令:

",MB_YESNO|MB_SYSTEMMODAL);

if(r==IDYES)

SetTagBit("TAGNAME",TRUE);

else

SetTagBit("TAGNAME",FALSE);

7.开显示关显示:

〔要在部变量中建立三个二进制变量COLSE_DISPLAY、DISPLAY_NO和DISPLAY_MENT〕

//Funktion:

BitinDoppelwortsetzen;

if(GetTagBitWait("COLSE_DISPLAY")==1)

{SetTagBit("COLSE_DISPLAY",0);

SetTagBit("DISPLAY_NO",0);//Return-Type:

BOOL

SetTagBit("DISPLAY_MENT",0);

}

else   

{SetTagBit("COLSE_DISPLAY",1);

SetTagBit("DISPLAY_NO",1);//Return-Type:

BOOL

SetTagBit("DISPLAY_MENT",0);

}

8.开阀确认:

BOOLa;

a=GetTagBit("30T制水启动");//Return-Type:

shortint

if(a==0)

{

if(MessageBo*(NULL,"真的要启动制水吗?

","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL)==6)

{SetTagBit("30T制水启动",1);

//Return-Type:

BOOL

}

}

else

{if(MessageBo*(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.显示或不显示〔其中hiddVte*t为部的二进制变量〕

if(GetTagBit("hiddVte*t")==0)//Return-Type:

BOOL

{

SetTagBit("hiddVte*t",TRUE);//Return-Type:

BOOL

//Return-Type:

BOOL

}

else

{SetTagBit("hiddVte*t",FALSE);

}

10.翻开编辑画面的脚本

*pragmaoption(mbcs)

*ifdefRUN_ON_WEBNAVIGATOR

*else

  HWNDhE*plorerWindow=NULL;

  HWNDhRuntimeWindow=NULL;

  hE*plorerWindow=FindWindow("WinCCE*plorerFrameWndClass",NULL);

  hRuntimeWindow=FindWindow("PDLRTisAliveAndWaitsForYou",NULL);

  if(hE*plorerWindow)

     {

     ShowWindow(hE*plorerWindow,SW_MINIMIZE);//ThisentryisonlynecessaryforWindows2000

     ShowWindow(hE*plorerWindow,SW_SHOWNORMAL);

     SetForegroundWindow(hE*plorerWindow);

  }

  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*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;

}

**物料水平右移动〔几何---位置*〕〔停车后,物料回到原点〕**

*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;

}

物料水平右移动〔几何---位置*〕〔停车后,物料停在该点〕

*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,int*,inty)

{

*pragmacode("useadmin.dll")

*include"PWRT_API.H"

*pragmacode()

PWRTSilentLogin("用户名","口令");

}

**显示登陆对话框无须热键〔按钮操作〕**

*include"apdefap.h"

voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,int*,inty)

{

*pragmacode("useadmin.dll")

*include"PWRT_api.h"

*pragmacode()

 PWRTLogin('c');

}

退出WINCC运行〔按钮操作〕

*include"apdefap.h"

voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,int*,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);

elseMessageBo*(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);

elseMessageBo*(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(0*0);

}

**询问框〔最好用于单机启动,组启也可,2个按钮,NO不操作〕**

*include"apdefap.h"

voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,int*,inty)

{

HWNDhWnd=NULL;

int上位启动信号;

hWnd=FindWindow(NULL,"WinCCC-Course");

if(GetTagBit("DI备妥"))

{

上位启动信号=MessageBo*(hWnd,"电源已备妥,您现在确定要启动吗?

","启动!

",

               MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL);

printf("\r\nE*ample3\r\n");

   if(上位启动信号==IDNO)  (printf("UserselectedNObutton\r\n"));

   else(SetTagByte("上位启动信号",1));

}

else

MessageBo*(hWnd,"电源未备妥,请查证后重试!

","启动!

",

          MB_OK|MB_ICONHAND|MB_APPLMODAL);

}

**询问框〔最好用于单机启动,组启也可,3个按钮,NO复位〕**

*include"apdefap.h"

voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,int*,inty)

{

HWNDhWnd=NULL;

int上位启动信号;

hWnd=FindWindow(NULL,"WinCCC-Course");

if(GetTagBit("DI备妥"))

{

上位启动信号=MessageBo*(hWnd,"电源已备妥,您现在确定要启动吗?

","启动!

",

                       MB_YESNOCANCEL|MB_ICONQUESTION|MB_APPLMODAL);

   if(上位启动信号==IDCANCEL)  (printf("UserselectedNObutton\r\n")); 

   else

        {

         if (上位启动信号==IDYES) (SetTagByte("上位启动信号",1));

         else (SetTagByte("上位启动信号",0));

         }

}

else

MessageBo*(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;

}

}

 **搅拌器左侧扇页〔几何—位置*,右侧扇页没有位置变化〕**

*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;

}

}

**显示层按钮**

Sub*6309*94AE2*0000*0000_*6309*94AE2*0000*60C5_*6309*94AE2*0000*653E_OnLButtonDown(ByValItem,ByValFlags,ByVal*,ByValy)        

DimobjScreen

DimCountLayer

SetobjScreen=HMIRuntime.Screens("layer")

ForCountLayer=1To32Step1

objScreen.Layers(CountLayer).Visible=vbFalse

Ne*t

objScreen.Layers(n).Visible=vbTrue

EndSub

n=层数+1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1