WINCC动画脚本动态实例

合集下载

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是一款用于人机界面设计的软件,通过使用C脚本,可以实现更加复杂的功能和交互。

本文将介绍如何在Wincc界面设计中实践C脚本的使用。

C脚本基础在开始使用C脚本之前,需要了解C语言的基础知识。

C脚本是一种用于编写Wincc界面逻辑的脚本语言,其语法和C语言相似。

熟悉C语言的人员可以更快地上手C脚本的编写。

C脚本实践以下是一些常见的C脚本实践示例:1. 按钮点击事件void Button_Click(){// 点击按钮后执行的代码// ...}在Wincc界面中,可以为按钮添加点击事件。

当按钮被点击时,会调用`Button_Click`函数,可以在该函数中编写相应的逻辑代码。

2. 数据处理double CalculateAverage(double[] data, int length){double sum = 0;for (int i = 0; i < length; i++){sum += data[i];}return sum / length;}在Wincc界面中,可以使用C脚本进行数据处理。

上述示例代码演示了如何计算一组数据的平均值。

可以根据实际需求编写相应的数据处理函数。

3. 界面更新void UpdateLabel(){double value = GetSensorValue();Label.SetText(value);}C脚本还可以用于更新界面元素的内容。

上述示例代码演示了如何根据传感器的值来更新标签的文本。

通过调用相应的函数或方法,可以实现界面元素的动态更新。

总结通过使用C脚本,可以在Wincc界面设计中实现更加复杂的功能和交互。

本文介绍了C脚本的基础知识以及一些常见的实践示例。

在实际应用中,可以根据需求灵活运用C脚本,提升Wincc界面的设计和交互体验。

winCC动态画面案例(风机旋转)

winCC动态画面案例(风机旋转)

winCC动态画面案例(风机旋转)
winCC动态画面案例(风机旋转)
看了很多关于winCC制作动态画面的帖子,由于是初学者,对脚本的使用,画面编辑器的使用不太清楚。

请问哪位能给发一份动态画面的winCC文件,如果有相关资料,也请分享下。

/p>
问题补充:
最佳答案
其实最简单的办法就是做闪烁交替,占用资源很小,不会提示错误
用C脚本可能会引起触发器的问题
我也是在网络上找到的一篇内容,几何旋转
选择多边形去做,要有出发布尔量,不清楚楼主看过没有,愿对你有帮助
几何-起始角度
{
staticDWORDf=20;
if(GetTagBit(“DI电机运行信号”))
{
f=f+30;
if(f==360)(f=0);
}
returnf;
}
几何-结束角度
{
staticDWORDi=80;
if(GetTagBit(“DI电机运行信号”)){ i=i+30;
if(i==360)(i=0);
}
returni; }。

WINCC动画脚本

WINCC动画脚本

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_mda y);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));}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_ICONQUEST ION|MB_APPLMODAL);if (上位启动信号==IDCANCEL) (printf("User selected NO button\r\n"));else{if (上位启动信号==IDYES) (SetTagByte("上位启动信号",1));else (SetTagByte("上位启动信号",0));}}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;}}**显示层按钮**SubX6309X94AE2X0000X0000_X6309X94AE2X0000X60C5_X6309X94AE2X0000X653E_OnLButtonDown (ByVal Item, ByVal Flags, ByVal x, ByVal y)Dim objScreenDim CountLayerSet objScreen = HMIRuntime.Screens("layer")For CountLayer=1 To 32 Step 1yers(CountLayer).Visible = vbFalseNextyers(n).Visible = vbTrueEnd Subn=层数+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脚本优化Wincc画面制作

利用C脚本优化Wincc画面制作

利用C脚本优化Wincc画面制作摘要本文档旨在介绍如何利用C脚本优化Wincc画面制作。

通过使用C脚本,可以实现更高效的画面制作,降低开发和维护成本。

引言Wincc是一款功能强大的人机界面软件,可以用于监控和控制系统。

在画面制作过程中,使用C脚本可以增强画面的交互性和自动化程度,提高用户体验。

优化策略以下是一些利用C脚本优化Wincc画面制作的简单策略:1. 自定义功能按钮:通过C脚本,可以实现自定义功能按钮的创建和操作。

例如,通过按钮触发C脚本,实现特定功能,如数据查询、报表生成等。

自定义功能按钮:通过C脚本,可以实现自定义功能按钮的创建和操作。

例如,通过按钮触发C脚本,实现特定功能,如数据查询、报表生成等。

2. 动态元素显示:利用C脚本,可以根据系统状态或用户输入动态改变元素的显示状态。

例如,根据传感器数值,动态显示温度或湿度等信息。

动态元素显示:利用C脚本,可以根据系统状态或用户输入动态改变元素的显示状态。

例如,根据传感器数值,动态显示温度或湿度等信息。

3. 数据处理和计算:C脚本可以用于对数据进行处理和计算,从而提供更加精确和实时的信息。

例如,通过C脚本计算平均值、最大值或最小值等统计数据。

数据处理和计算:C脚本可以用于对数据进行处理和计算,从而提供更加精确和实时的信息。

例如,通过C脚本计算平均值、最大值或最小值等统计数据。

4. 报警和通知:通过C脚本,可以实现报警和通知功能。

例如,当系统出现异常情况时,通过C脚本触发报警,并发送邮件或短信通知相关人员。

报警和通知:通过C脚本,可以实现报警和通知功能。

例如,当系统出现异常情况时,通过C脚本触发报警,并发送邮件或短信通知相关人员。

5. 用户交互:C脚本可以用于实现用户输入的验证和处理。

例如,通过C脚本验证用户输入的数据格式是否正确,并给出相应的提示。

用户交互:C脚本可以用于实现用户输入的验证和处理。

例如,通过C脚本验证用户输入的数据格式是否正确,并给出相应的提示。

Wincc屏幕设计---C脚本的行业应用

Wincc屏幕设计---C脚本的行业应用

Wincc屏幕设计---C脚本的行业应用1. 引言Wincc(Windows Control Center)是一款由西门子开发的用于监控和配置工业过程的优秀软件。

在众多的行业应用中,C脚本因其强大的功能和灵活性,成为了Wincc屏幕设计的重要工具。

本文将详细介绍C脚本在Wincc屏幕设计中的行业应用,帮助读者深入了解C脚本在实际工程项目中的优势和应用场景。

2. C脚本概述C脚本是一种基于C语言的脚本语言,可用于Wincc屏幕设计中的自定义功能实现。

它具有以下特点:- 强大的功能:C脚本可以实现数据处理、数学计算、逻辑判断等复杂功能。

- 灵活性:C脚本可以与Wincc中的各种数据类型和对象进行交互,满足各种工程需求。

- 跨平台:C脚本可在不同操作系统上运行,具有较好的兼容性。

3. C脚本在Wincc屏幕设计中的应用场景3.1 数据处理与计算在工业过程中,经常需要对实时数据进行处理和计算。

例如,计算流量、温度、压力等参数的平均值、最大值、最小值等。

利用C脚本,可以方便地实现这些功能,并在Wincc屏幕上展示。

3.2 逻辑判断与控制在工业控制过程中,需要根据实时数据进行逻辑判断,以控制设备的启停、切换等。

C脚本可以实现复杂的逻辑判断功能,例如:- 如果温度超过设定值,则启动冷却系统;- 如果压力低于设定值,则停止泵送系统。

3.3 动态显示与动画C脚本可以实现动态显示和动画效果,使Wincc屏幕更具互动性和可视性。

例如,根据实时数据动态显示液位高度、设备运行状态等。

3.4 数据记录与报警利用C脚本,可以实现数据的记录和报警功能。

例如,记录设备运行参数的历史数据,当参数超过设定范围时触发报警。

4. 行业应用案例以下是一些C脚本在Wincc屏幕设计中的行业应用案例:4.1 石油化工行业在石油化工行业中,C脚本可用于实时监测生产设备的状态,如温度、压力、流量等参数,并根据这些数据进行逻辑判断,以实现自动控制。

wincc脚本全集

wincc脚本全集

——————1、wincc全局脚本动作-------隐藏控件——————#include "apdefap.h"int gscAction( void ){// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_ENDint value;value=GetTagBit("IM_in");//"IM_in"为触发的变量。

if(value==1){SetVisible("lianxi.pdl","按钮8",TRUE);//lianxi.pdl为控制对象所在画面名,“按钮8”为对象名称}else{SetVisible("lianxi.pdl","按钮8",FALSE);//lianxi.pdl}// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_ENDreturn 0;}=====================================================说明:在触发器里选择变量IM_in——————2、wincc全局脚本动作----提示框——————#include "apdefap.h"int gscAction( void ){// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_ENDint value;value=GetTagBit("IM_in");if(value==1){MessageBox(NULL,"请确认三厅相关门是否关好,或者请解锁。

WINCC脚本实例

WINCC脚本实例

1、问:如何触发计算机扬声器的声音?答:编写如下C-Action:#pragma code("kernel32.dll");BOOL Beep(DWORD dwFreq,DWORD dwDuration);#pragma code();Beep(500,500);2、问:如何通过C脚本来确定报警信息?答:首先必须在画面中插入报警控件,可以用如下两种方式来确认信息:(1)、确认单条信息4版本和高于此版本的WinCCBOOL OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName)5版本和高于此版本的WinCCBOOL AXC_OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName)(2)、确认报警窗口所有可见的报警4版本和低于此版本的WinCCBOOL OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName)5版本和高于此版本的WinCCBOOL AXC_OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName)3、问:如何在WinCC中读取系统时间?答:通过如下C-Action:#pragma code("kernel32.dll");Void GetLocalTimes(SYSTEMTIME*lpst);#pragma code();SYSTEMTIME time;字串7GetLocalTime(&time);SetTagWord("Varname",time.wYear);SetTagWord("Varname",time.wMonth);SetTagWord("Varname",time.wDayOfWeek);SetTagWord("Varname",time.wDay);SetTagWord("Varname",time.wHour);SetTagWord("Varname",time.wMinute);SetTagWord("Varname",time.wSecond);SetTagWord("Varname",time.wMilliseconds);4、问:如何经Windows对话框设置日期时间?答:通过调用Windows对话框实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WINCC动画脚本动态实例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,"d/d/d",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,"d:d:d",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));}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);}**搅拌器左侧扇页(几何—宽度)**#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;}**显示层按钮**SubX6309X94AE2X0000X0000_X6309X94AE2X0000X60C5_X6309X9 4AE2X0000X653E_OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y) Dim objScreenDim CountLayerSet objScreen = HMIRuntime.Screens("layer")For CountLayer=1 To 32 Step 1/doc/836877149.html,yers(CountLayer).Visi ble = vbFalseNext/doc/836877149.html,yers(n).Visible = vbTrueEnd Subn=层数+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;}。

相关文档
最新文档