在WinCC 精致和WinCC 高级版本中,如何使用脚本动态化对象
- 格式:pdf
- 大小:256.03 KB
- 文档页数:6
如何使用VBScript WinCC Flexible提纲如何创建报警系统如何使用VBScript如何配方概述组态脚本调试如何配方如何创建报警系统如何使用VBScriptWinCC Flexible如何使用VBScript概述系统函数及其使用脚本及其使用运行脚本的基本信息使用函数列表如何配方如何创建报警系统如何使用VBScriptWinCC Flexible——运行脚本的基本信息WinCC flexible 提供了预定义的系统函数提供了预定义的系统函数,,以用于常规的组态任务任务。
可以用它们在运行系统中完成许多任务可以用它们在运行系统中完成许多任务,,而无需编程技巧。
当然也可以用运行脚本来解决更复杂的问题当然也可以用运行脚本来解决更复杂的问题。
运行脚本具有编程接口编程接口,,可以在运行时访问部分项目数据可以在运行时访问部分项目数据。
运行脚本的使用是针对具有Visual Basic (VB)和Visual Basic Script (VBS)知识的项目设计者的项目设计者的。
概述系统函数的使用如何使用VBScript如何配方如何创建报警系统如何使用VBScriptWinCC Flexible——运行脚本的基本信息概述运行脚本的使用可以从OP 270/TP 270获得运行脚本获得运行脚本,,因此也可从WinCC flexible (标准版)获得获得。
它支持VBScript 编程语言编程语言。
使用运行脚本允许灵活地实现组态允许灵活地实现组态。
在运行时需要额外功能时可以创建运行脚本,例如例如::数值转换可以在不同度量单位之间使用脚本来转换数值可以在不同度量单位之间使用脚本来转换数值,,例如温度例如温度。
生产过程的自动化脚本可以通过将生产数据传送至PLC 控制生产过程控制生产过程。
如果需要,可以使用返回值检查状态和启动相应的措施可以使用返回值检查状态和启动相应的措施。
可以在脚本中保存自己的VB 脚本代码脚本代码。
wincc vbs模块方法WinCC VBScript模块方法是用于编程和自动化WinCC项目的一种功能强大的工具。
它可以帮助用户在WinCC界面中实现各种功能和任务,包括数据处理、图表生成、报警处理等等。
在本文中,我们将一步一步回答关于WinCC VBScript模块方法的主题。
1. 什么是WinCC VBScript模块方法?WinCC VBScript模块方法是一种用于编程和自动化WinCC项目的工具。
它基于Visual Basic Scripting语言(VBScript),可以让用户通过编写脚本来实现各种功能和任务。
这些功能包括数据处理、图表生成、报警处理等等。
2. 如何使用WinCC VBScript模块方法?使用WinCC VBScript模块方法需要以下几个步骤:- 打开WinCC开发环境:首先,您需要打开WinCC开发环境,启动WinCC Explorer和VBScript编辑器。
- 创建VBScript模块:在VBScript编辑器中,您可以创建一个新的VBScript模块。
这个模块将成为您编写脚本的地方。
- 编写脚本:在VBScript模块中,您可以使用VBScript语法编写脚本。
您可以利用WinCC提供的函数和方法来实现各种功能和任务。
- 脚本调用:一旦您编写完脚本,您可以在WinCC项目的各个部分中调用脚本。
您可以在按钮的点击事件或某个对象的属性变化事件中调用脚本。
3. WinCC VBScript模块方法的应用场景有哪些?WinCC VBScript模块方法可以应用于各种场景和任务,包括但不限于以下几个方面:- 数据处理:您可以使用VBScript模块方法来处理和计算在WinCC项目中采集到的数据。
例如,您可以编写一个脚本来实现数据的加工、过滤和处理等操作。
- 图表生成:使用VBScript模块方法,您可以生成各种类型的图表,例如曲线图、柱状图和饼图等。
这些图表可以帮助您更好地可视化和分析数据。
WinCC 是 Siemens 的一种工业自动化控制系统。
WinCC 提供了 WScriptShell 对象,可以用来在脚本中执行 Windows 操作系统的一些命令。
在 WinCC 的脚本中使用 WScriptShell 对象,你可以执行一些系统操作,例如运行外部程序、创建快捷方式、访问网络资源等。
以下是一个简单的示例,展示如何使用 WScriptShell 对象在 WinCC 脚本中执行一个外部程序:
vbs复制代码
Dim shell
Set shell = CreateObject("WScriptShell")
' 执行外部程序
shell.Run "C:\Path\to\your\program.exe", 1, True
在这个示例中,我们首先创建了一个 WScriptShell 对象。
然后,使用 Run 方法来执行指定的外部程序。
Run 方法的第一个参数是要运行的程序路径,第二个参数是窗口样式(1 表示窗口最大化,0 表示隐藏窗口),第三个参数 True 表示程序执行完毕后自动关闭。
除了 Run 方法,WScriptShell 对象还有其他一些方法可以用于执行系统操作。
你可以根据具体需求选择适当的方法。
请注意,使用 WScriptShell 对象时需要谨慎处理输入参数和输出结果,确保脚本的安全性和稳定性。
另外,由于涉及系统操作,请确保你了解相关操作的风险和后果,并在测试和部署脚本时格外小心。
Wincc界面制作:C脚本的实际操作本文档将介绍Wincc界面制作中使用C脚本的实际操作步骤。
步骤一:了解C脚本基础知识在开始之前,我们需要了解一些C脚本的基础知识。
C脚本是一种编程语言,常用于Wincc界面制作中的自定义功能和交互。
熟悉C脚本语法和常用函数对于实际操作非常重要。
步骤二:创建C脚本文件在Wincc界面制作软件中,我们可以创建一个C脚本文件来实现自定义功能。
在界面中选择适当的位置,右键点击,然后选择“创建脚本”选项。
给脚本文件起一个有意义的名称,并确保选择C 脚本语言。
步骤三:编写C脚本代码打开创建的C脚本文件,在其中编写所需的代码。
根据具体需求,可以使用各种C脚本语法和函数来实现不同的功能。
注意编写清晰、简洁的代码,以便后续维护和修改。
步骤四:调用C脚本在Wincc界面制作软件中,我们可以通过不同的方式来调用C脚本。
例如,在按钮的点击事件中调用C脚本,或者在某个对象的属性中设置C脚本作为其值。
根据具体需求,选择合适的调用方式,并将C脚本与相应的界面元素关联起来。
步骤五:测试和调试在完成C脚本的编写和调用后,进行测试和调试是非常重要的。
通过模拟用户操作,检查C脚本是否按预期执行,并修复可能存在的错误。
确保C脚本在不同情况下都能正常工作。
步骤六:文档记录最后,完成实际操作后,我们应该记录下所有的C脚本代码和相关的操作步骤。
这样可以方便日后的维护和修改,并为其他团队成员提供参考。
以上是Wincc界面制作中使用C脚本的实际操作步骤。
通过正确的使用C脚本,我们可以实现更多的自定义功能和交互,提升界面的灵活性和用户体验。
请注意,本文档仅提供实际操作步骤的概述,并不包含具体的代码示例。
具体的代码编写需要根据具体需求进行定制。
利用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画面制作1. 打开Wincc软件,选择“新建项目”,填写项目名称,选择项目的存放路径,点击“确定”。
2. 在项目浏览器中,右键点击“HMI”,选择“新建”,然后选择“屏幕”。
3. 在弹出的新建屏幕窗口中,填写屏幕名称、选择屏幕类型(如趋势、报警等)以及屏幕的初始显示方式,点击“确定”。
4. 在屏幕设计界面,可以通过工具箱中的各种控件(如按钮、文本框、趋势图等)来设计屏幕。
5. 双击控件,在属性窗口中可以设置控件的属性,如字体、颜色、大小等。
6. 在屏幕设计完成后,点击“文件”菜单中的“另存为”,选择保存路径,为屏幕文件命名,点击“保存”。
二、C脚本编写1. 打开C语言编程环境(如Visual Studio、Code::Blocks等),创建一个新的C文件。
2. 在C文件中,编写相应的代码,实现所需功能。
例如,读取实时数据、计算数据、将数据发送到Wincc等。
3. 编写完成后,保存C文件,并确保Wincc可以调用该脚本。
一般情况下,将C文件放置在Wincc的系统目录下的“scripts”文件夹中。
三、Wincc与C脚本的关联1. 在Wincc中,打开需要与C脚本关联的屏幕。
2. 在屏幕设计界面,选择一个控件(如文本框),右键点击,选择“属性”。
3. 在属性窗口中,找到“对象”标签页,点击“...”按钮,打开“变量浏览器”。
4. 在变量浏览器中,选择“脚本”分类,然后选择“C脚本”,点击“添加”按钮,选择已经编写好的C脚本文件。
5. 将C脚本添加到变量浏览器后,返回属性窗口,可以看到已经关联的C脚本。
在属性窗口中,可以设置C脚本的执行周期、输入输出参数等。
6. 完成关联后,点击“确定”按钮,保存屏幕设计。
7. 运行Wincc项目,查看屏幕与C脚本的关联是否成功。
如果成功,屏幕上的控件将根据C脚本中的逻辑进行数据的动态显示和交互。
在WinCC上使用C脚本的基本方法wq 去学PLC技术一、创建、编辑动作WinCC有3个编辑脚本动作的入口:(1)画面对象的属性任务;(2)画面对象的事件任务;(3)全局脚本编辑器。
3者都能进入脚本编辑界面,但却各有不同之处。
1、画面对象的属性任务和事件任务画面对象的属性任务和事件任务都可以组态成'C动作',二者的不同之处在于:•用'C动作'实现'属性任务',需要为动作指定'触发器',否则该动作不会执行;•用'C动作'组态'事件任务',则无需指定'触发器',事件本身即为该动作的触发器。
2、'全局脚本编辑器'下编辑动作在'全局脚本编辑器'下,编写的'C动作'也需要指定'触发器'后,动作才能执行,方法见图2所示。
另外,与画面对象的'属性任务'及'事件任务'不同,在全局脚本编辑器中编写的动作用于处理独立于画面的后台任务,如打印日常报表、监控变量或执行计算等。
'属性任务'和'事件任务'虽然也能处理上述工作,但最常见的用法是用于和画面对象相关的操作。
此外,'全局脚本编辑器'里的动作,要想执行,还需要在'计算机属性'的'启动'选项卡中,将'全局脚本运行系统'使能。
'C动作'本质上是一段C代码,语法遵循C语言的语法规则。
我们可以自己写代码,也可以调用已存在的项目函数、标准函数及内部函数等。
二、'全局脚本编辑器'中动作的特点'属性任务'和'事件任务'中的C脚本比较好理解,下面重点介绍'全局脚本编辑器'下的动作的特点有哪些?1、'动作'是有用户创建、编辑的一段C代码,为了防止未经授权的人员修改和查看,可以为动作设置'口令保护',如图4所示。
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;}**显示层按钮**Sub X6309X94AE2X0000X0000_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;}。
WINCC脚本技巧WinCC(Windows Control Center)是西门子公司开发的一款用于监控与控制系统的人机界面软件。
在WinCC中,脚本技巧是一种非常重要的技术,可以实现自动化控制和数据处理等功能。
本文将介绍一些WinCC脚本技巧,帮助您更好地使用和开发WinCC系统。
一、脚本语言简介在WinCC中,脚本语言主要使用VBScript(Visual Basic Scripting Edition)编写。
VBScript是一种微软开发的轻量级脚本语言,易于学习和使用。
通过编写脚本,可以实现界面操作、数据处理、报警管理等功能。
二、脚本的基本语法1. 变量和常量在脚本中,可以定义变量来存储数据,如:```Dim ii = 10```此处定义了一个名为i的变量,并将其赋值为10。
在脚本中,还可以使用常量来存储固定值,如:```Const PI = 3.14159```此处定义了一个名为PI的常量,并将其值设置为3.14159。
2. 条件语句条件语句可以根据特定条件来执行不同的操作,如:```If i > 0 ThenMsgBox "i大于0"ElseIf i = 0 ThenMsgBox "i等于0"ElseMsgBox "i小于0"End If```此处根据变量i的值来执行不同的提示。
3. 循环语句循环语句可以重复执行一段代码,如:```For i = 1 To 10MsgBox iNext```此处使用循环语句输出1到10的数字。
三、常用的脚本技巧1. 控件操作脚本可以实现对界面中的控件进行操作,如修改文本框内容、显示隐藏控件等。
通过控件的名称和属性,可以使用脚本进行相应的操作,提高人机交互的效果。
2. 数据处理脚本可以实现简单的数据处理,如对数据进行格式化、计算等。
通过获取界面中的数据,使用脚本进行相应的处理并显示结果,方便用户进行数据分析和决策。
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;}。