wincc常用C脚本功能

合集下载

wincc 全局脚本c程序功能

wincc 全局脚本c程序功能

wincc 全局脚本c程序功能
wincc全局脚本c程序实现什么功能
尤其是其中的变量d、及s_state作用。

问题补充:还有一个疑问:“当时间大于2013年9月1日后,画面将产生报警dataalm,报警dataalm2,故障fault,然后再清楚报警dataalm,dataalm2,但是故障将一直有。


中的fault会对系统正常运行有影响吗?
图片说明:1,wincc 全局脚本c程序解读
最佳答案
d是一个解锁密码,d为1时,清楚所有报警和故障。

s_state变量是wincc的一个变量,就是d。

当d为0时,有一个内部状态机,状态值为e,该值为0,1,2,反复循环。

当e为2时,自动清楚两个报警;
当e为1时,时间大于2013年7月1日,将产生报警dataalm;
当e为1时,时间大于2013年9月1日,将再产生一个报警dataalm2和故障fault;
也就是说,时间大于2013年7月1日,画面将反复产
生dataalm报警,然后再清楚该报警;
当时间大于2013年9月1日后,画面将产生报警dataalm,报警dataalm2,故障fault,然后再清楚报警dataalm,dataalm2,但是故障将一直有。

Wincc画面制作中C脚本的应用分析

Wincc画面制作中C脚本的应用分析

Wincc画面制作中C脚本的应用分析简介本文档旨在分析Wincc画面制作中C脚本的应用。

Wincc是一款用于监控和控制系统的软件,而C脚本是一种编程语言,用于在Wincc中实现自定义功能和逻辑。

C脚本的优势C脚本在Wincc画面制作中具有以下优势:1. 灵活性:C脚本可以通过编程实现各种复杂的逻辑和功能,使得用户能够根据自己的需求进行定制。

2. 功能丰富:C脚本提供了丰富的函数和方法,可以实现数据处理、图像操作、用户交互等各种功能。

3. 高效性:C脚本可以直接访问Wincc的内部对象和属性,因此可以快速地完成任务而无需额外的开发工作。

C脚本的应用场景C脚本在Wincc画面制作中可以应用于以下场景:1. 数据处理:通过C脚本可以对Wincc中的数据进行处理和转换,例如计算数据的平均值、最大值、最小值等。

2. 图像操作:C脚本可以实现图像的显示、隐藏、切换等操作,使得用户能够根据需要动态控制画面的内容。

3. 用户交互:C脚本可以响应用户的操作,例如点击按钮时执行特定的功能,弹出对话框等。

4. 报警处理:C脚本可以监测系统中的报警信息,并根据用户定义的逻辑进行相应的处理,例如发送邮件、生成报表等。

C脚本的注意事项在使用C脚本时,需要注意以下事项:1. 熟悉语法:了解C脚本的语法和基本概念是使用它的前提,只有掌握了基础知识才能更好地应用。

2. 错误处理:编写C脚本时要考虑到可能出现的错误情况,并进行合理的错误处理,以保证程序的稳定性和可靠性。

3. 代码维护:在编写C脚本时,要注重代码的可读性和可维护性,使用合适的命名和注释,方便后续的修改和调试工作。

结论C脚本在Wincc画面制作中具有广泛的应用,可以实现各种复杂的功能和逻辑。

在使用C脚本时,需要熟悉其语法和基本概念,并注意错误处理和代码维护,以提高程序的稳定性和可维护性。

通过充分发挥C脚本的优势,用户可以实现定制化的画面制作,并满足自己的特定需求。

Wincc画面制作---C脚本的使用

Wincc画面制作---C脚本的使用

Wincc画面制作---C脚本的使用相关介绍,请参考我的百度文库其它文章:Step7及Wincc新手入门教程:介绍西门子Step7和Wincc通讯方法Wincc画面制作--窗口的使用:介绍画面切换及弹出框Wincc画面制作--动态变化:动态跟踪等Wincc画面制作—报警:WinccAlarmControl及语音报警本文介绍Wincc画面编辑使用的一些C脚本,相关框架都基于上述文章,这里不再赘述。

1.调用同一个窗口画面实现不同的指令功能例如现在有3个阀,对每个阀的操作都是打开关闭,我们新建一个窗口画面来实现此功能。

我们先新建一个画面ValveConfirm.PDL,添加两个按钮如下:在HMI3上添加2个阀及一个画面窗口,画面窗口连接到ValveConfirm.PDL如下:对画面窗口设置如下:名称为Confirm,写脚本需要设置打开的窗口可否移动,大小,边框,标题等连接画面ValveConfirm.PDL标题连接内部变量,实现动态变化创建3个内部变量如下,Valve_Name用于打开画面窗口的标题,Valve_Open用于阀打开指令,Valve_Close用于阀关闭指令。

再创建6个变量连接PLC,如下,Valve1OpnCmd, Valve1ClsCmd, Valve1Opned用于阀1打开指令,关闭指令以及打开反馈信号,同理对阀2建立变量。

对阀1添加鼠标事件:y=GetTop(lpszPictureName,lpszObjectName)+35; x=GetLeft(lpszPictureName,lpszObjectName)+15; SetTop(lpszPictureName,"Confirm",y);SetLeft(lpszPictureName,"Confirm",x); SetVisible(lpszPictureName,"Confirm",1); SetVisible(lpszPictureName,"Confirm",1);SetTagChar("Valve_Name","阀1");SetTagChar("Valve_Open","Valve1OpnCmd"); SetTagChar("Valve_Close","Valve1ClsCmd");此段代码调整弹出框的位置,我们让它弹出的位置在阀的下方在当前画面HMI3显示对象名称为”Confirm”的画面;对象名称”Confirm”连接的就是ValveConfirm.PDL画面把内部变量“Valve_Name”赋值为“阀1”把内部变量“Valve_Open”赋值为“Valve1OpnCmd”; “Valve_Close”赋值为“Valve1ClsCmd”同样的,对阀2添加鼠标事件:同样的,在对阀2操作时,我们就把内部变量“Valve_Name”赋值为“阀2”;内部变量“Valve_Open”赋值为“Valve2OpnCmd”;“Valve_Close”赋值为“Valve2ClsCmd”接下来对ValveConfirm.PDL上的打开关闭按钮添加鼠标事件:阀1打开按钮按左键C代码阀1打开按钮释放左键C代码SetTagBit(GetTagChar("Valve_Open"),1);这段代码是先获取“Valve_Open”的值,然后再把获取的值置1,因此当打开阀1时,获取的Valve_Open值就是Valve1OpnCmd,最终就是把Valve1OpnCmd置;当打开阀2时,获取的Valve_Open 值就是Valve2OpnCmd,最终就是把Valve2OpnCmd置1SetTagBit(GetTagChar("Valve_Open"),0);同上当打开阀1时,最终把Valve1OpnCmd置0;当打开阀2时,最终把Valve2OpnCmd置0,通过以上2行代码,实现点击按钮给PLC发一次打开脉冲指令同样对关闭按钮添加C代码:若打开阀1,把Valve1ClsCmd置1;若打开阀2,把Valve2ClsCmd置1;若打开阀1,把Valve1ClsCmd置0;若打开阀2,把Valve2ClsCmd置0;再对阀背景颜色连接变量,打开是显示绿色:这个是阀1连接的变量,阀2同样处理最后PLC 侧编写代码:画面效果如下:阀1打开关闭阀2打开关闭1.弹出框在阀图标的下方2.点击打开,程序中M3.0来了下脉冲,模拟的反馈信号M3.7置1,阀图标变绿色同样的,点击阀2,弹出框会显示在阀2图标的下方2. 对按钮做密码保护实现功能为点击按钮需在弹出框输入正确密码才能打开画面。

WINCC基本的画面C脚本

WINCC基本的画面C脚本

WINCC基本的画面C脚本对于刚刚学习WINCC的人,希望有用。

SetVisible函数是用来执行是否显示的函数。

lpszPictureName:表示当前画面lpszObjectName:表示当前对象SetVisible(lpszPictureName,lpszObjectName,0); //Return-Type :BOOL以上面函数为例。

假如你点击一个按钮,代码如上,则点击后按钮隐藏。

同理,SetVisible(lpszPictureName,"@ERROR",FALSE)表示当前画面上有一个名称为"@ERROR"对象,将其隐藏。

FALSE或者0都可以。

Set_Focus(lpszPictureName,"@LoginIn");次函数表示将光标重新聚焦到当前画面中,名称为“@Loginin”对象中,比如一个输入域。

修改变量前缀————SetPropChar(lpszPictureName,"PW","Tagprefix","F40708.") ;重设画面窗口的画面名称————SetPictureName(lpszPictureName,"PW","P1_FFU.pdl");SetVisible表示可见度———SetVisible(“画面名称”,“对象名称\画面窗口”,1或0);——利用画面窗口显示画面1 OpenPicture("index.Pdl"); 打开“index.Pdl”画面;————(middle*为画面窗口)SetPictureName("index.Pdl","middle","CR.Pdl"); 使“CR.Pdl”画面在“index.Pdl”中“middle”画面窗口中打开SetPictureName("index.Pdl","middle9","lift2.Pdl");使“lift2.Pdl”画面在“index.Pdl”中“middle”画面窗口中打开#pragma option(mbcs)2.单个设备的控制面板(不唯一):P1_FFU.pdlSetVisible( lpszPictureName,"PW",0);表示当前画面上有一个名称为"PW"对象,将其隐藏。

wincc几个常用的小功能的C代码

wincc几个常用的小功能的C代码

wincc几个常用的小功能的C代码1:在WINCC运行后的画面总貌上加了计算器功能:方便操作人员用。

做一个按扭后,添加 C脚本:{HWND Hwnd;BOOL bRet;Hwnd=FindWindow(NULL,"Calculator");if (!Hwnd){ProgramExecute("CALC.exe");Hwnd=FindWindow(NULL,"Calculator");if (Hwnd){printf("\r\n%d",Hwnd);bRet=SetWindowPos(Hwnd,HWND_TOPMOST,300,300,200, 200,SWP_NOSIZE);if (!bRet) printf("\r\nSetWindowPos Error!");}}}如果在C脚本中仅仅有一句ProgramExecute("CALC.exe")则运行后点击该按扭则出来计算器,此时不关计算器就切换画面,则计算器都在后台运行。

最初我这样做关闭WINCC运行画面后发现后面有几十个计算器都没关。

所以在脚本中加入使计算器必须显示在WINDOW的激活层上。

二:当对按钮操作需要二次确认时得自己一个个做小窗口,很麻烦。

直接在需要二次确认的按钮添加脚本:{HWND Hwnd;Hwnd = FindWindow(NULL,"WinCC-运行系统 - "); //英文版变为"WinCC-Runtime - "if (!Hwnd) Hwnd = FindWindow(NULL,"WinCC-Runtime - ");if (!Hwnd) printf("\r\nGetWinCC Handle Failed!");MessageBox(Hwnd,"Error Text","My ErrorBox",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUN D|MB_SYSTEMMODAL);}WINDOWS中提供的标准对话框我知道的有三种MessageBox(Hwnd,"Error Text","My ErrorBox",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUN D|MB_SYSTEMMODAL);MB_OK///MB_YESNO///MB_YESNOCANCEL分别是错误框,询问框和YES/NO/CANCEL三按钮询问窗口功能可以分别自己尝试,把相应的控制功能和按钮结合起来就可以。

Wincc图形界面制作---C脚本的详细解读

Wincc图形界面制作---C脚本的详细解读

Wincc图形界面制作---C脚本的详细解读1. 引言本文档旨在详细解读Wincc图形界面制作中C脚本的相关知识,以便于开发人员更好地理解和应用C脚本,提高Wincc项目开发效率。

本文档适用于具有一定Wincc使用经验和C脚本编程基础的用户。

2. C脚本概述在Wincc中,C脚本是一种扩展语言,用于实现图形界面与实际工程数据之间的交互。

通过编写C脚本,可以实现对Wincc内置对象的属性、方法和事件的操作,从而实现复杂的业务逻辑。

C脚本在Wincc项目中具有广泛的应用,例如:数据处理、界面动态刷新、定时任务等。

3. C脚本基本语法C脚本的基本语法与C语言类似,主要包括数据类型、变量、运算符、控制结构、函数等。

以下简要介绍C脚本的基本语法:3.1 数据类型C脚本支持以下数据类型:- 整型(int)- 浮点型(float)- 字符型(char)- 布尔型(bool)- 字符串型(string)- 枚举型(enum)3.2 变量C脚本中的变量分为全局变量和局部变量。

全局变量在脚本中定义,可在整个脚本中访问;局部变量仅在定义它们的函数内部有效。

变量声明时需指定数据类型。

3.3 运算符C脚本支持以下运算符:- 算术运算符:+、-、*、/、%- 关系运算符:==、!=、<、<=、>、>= - 逻辑运算符:&&、||、!- 位运算符:&、|、^、~、<<、>>3.4 控制结构C脚本支持以下控制结构:- 条件语句:if、if-else、switch- 循环语句:for、while、do-while- 跳转语句:break、continue、goto3.5 函数C脚本中的函数用于实现特定功能。

函数定义包括返回类型、函数名、参数列表和函数体。

函数调用时,需传递与参数列表匹配的实参。

4. Wincc内置对象和C脚本Wincc提供了丰富的内置对象,如变量、趋势图、报警等。

WINCC常用 脚本

WINCC常用 脚本
----------------------------------------------
11、在画面中显示用户名
1.组态静态文本
2.字体属性中的文本,连接系统变量@CurrentUser
----------------------------------------------
(2)新密码设置(C)
SetOutputValueChar(lpszPictureName,lpszObjectName,GetInputValueChar(lpszPictureName,lpszObjectName));
注:字符串格式的输入输出域》事件》属性主题》输出/输入》输出值》更改》以上代码。
{
MessageBox (Handle, "新密码和旧密码不能相同 !", "请重新输入密码", MB_OK |
MB_ICONEXCLAMATION | MB_SYSTEMMODAL);
}
else
{
// this 2 lines are necessary to get the DSN-Name of the project
a=MsgBox("hello!",vbYesNo)
If vbYes=a Then
objCon2.text="ok" '如点击是,则按钮文本变为ok
Else
objCon2.text="no" '如点击否,则按钮文本变为no
End If
注:放置按钮,起名按钮1.
----------------------------------------------

wincc常用C动作

wincc常用C动作

10.显示或不显示(其中hiddVtext为内部的二进制变量)
if(GetTagBit("hiddVtext")==0) //Return-Type: BOOL
{
SetTagBit("hiddVtext",TRUE); //Return-Type: BOOL
//Return-Type: BOOL
}
}
else
{if(MessageBox(NULL,"真的要停止制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6)
{ SetTagBit("30T制水停止",1);
}}
9.将WinCC运行画面最小化
wincc常用C动作
1.用户注销:
#pragma code ("useadmin.dll")
#include "PWRT_api.h"
#pragma code()
PWRTLogout();
2.用户登录:
#pragma code ("useadmin.dll")
#include "PWRT_api.h"
{
ShowWindow(hExplorerWindow, SW_MINIMIZE); // This entry is only necessary for Windows 2000
ShowWindow(hExplorerWindow, SW_SHOWNORMAL);
#pragma code()
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.用户注销:#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;elseif(GetTagWord("TX/ZSL001")==1)return 0x000000ff;elsereturn 0x00c0c0c0;}一个调用按钮变色#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma option(mbcs)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. 点击事件弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消: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_DISPLAY")==1 ){SetTagBit("COLSE_DISPLAY",0);世甜羽淋二<i^^pW#^$l>.t_imN)xoae6esse|A|)j!} es|e { { 100日:edAi-ujniey// 昭目顷10£)}旧阮gas } (9 == (iVaOIAIIAI mis 人S—SIAlleNnoaomaOzlimS 一日lAllNOLLSmnONO。

「日lAllONSm 人一日lAlt 世甜羽裕二[铀W卸取目查国章「linhDxo雷6ess9|/\|)j } (O==e) J!}U! /US: edAi-ujniey// J(..昭目顷10£..)1 旧阮geQK 毛1009 :MBfeWS{ KO^.lN^IAIIAIOO-AVIdSia..)!旧能gas 1009 :edAi-ujniey// XlAQhT人VldSICL)}旧能ges :(L 二人\/1 d SICTm SI 06)1 旧阮ges} es|e { KO^.lN^IAIIAIOO-AVIdSia..)!旧能gas 1009 :edAi-ujniey// XoLOhT人VldSICL)}旧能ges ”,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#elseHWND 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 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点击变为1方法3:或者做两个按钮,按钮一:显示,直接连接m1.0,是--不显示,否--显示。

事件,直接连接,源,常数1,变量M1.0;按钮二:事件,直接连接,源,常数0,变量M1.0;用按钮一覆盖按钮二12变量每秒加1DWORD a;a=GetTagDWord("Tank");a+=1;if(a>100) (a=0);SetTagDWord("Tank",a);return 0;}WINCC动画脚本电机风扇旋转(几何---起始角度):#include "apdefap.h"long _main(char* IpszPictureName, char* IpszObjectName, 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* IpszPictureName, char* IpszObjectName, 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* IpszPictureName, char* IpszObjectName, 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* IpszPictureName, char* IpszObjectName, 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.hvoid OnLButtonDown(char* IpszPictureName, char* IpszObjectName, 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);}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* IpszObjectName, char* IpszPropertyName, 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));elseMessageBox(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));}}elseMessageBox(hWnd,”电源未备妥,请查证后重试!","启动!MB_OK|MB_ICONHAND|MB_APPLMODAL);}(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;}}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;}}For CountLayer=1 To 32 Step 1yers(CountLayer).Visible = vbFalseNextyers(n).Visible = vbTrueEnd Subn=层数+1初始画面程序(画面空地--属性-事件--其它--打开画面-动作) ** 一个圈代表电机两种状态**#include "apdefap.h"void OnClick(char* IpszPictureName, char* IpszObjectName, 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;**单位递减按钮(到下限提示出错)**#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){DWORD value;HWND hWnd=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)(static int h=75;**显示层按钮**SubX6309X94AE2X0000X0000_X6309X94AE2X0000X60C5_X6309X94 AE2X0000X653E_OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)Dim objScreenDim CountLayerSet objScreen = HMIRuntime.Screens("layer")**打印按钮**#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){WinExec("PRTSCR.EXE -hardcopy”,SW_SHOWNORMAL);}。

相关文档
最新文档