在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;}。
Wincc页面开发---C脚本的基础教程本教程将向您介绍如何在Wincc页面开发中使用C脚本。
Wincc是一个用于监控和控制系统的优秀软件,它提供了丰富的功能和灵活的脚本支持。
通过使用C脚本,您可以扩展Wincc的功能,实现更复杂的数据处理和业务逻辑。
1. 准备工作在开始编写C脚本之前,请确保您已经安装了Wincc软件,并且熟悉Wincc的基本操作。
此外,您还需要具备一定的C语言编程基础。
2. C脚本概述C脚本是一种特殊的脚本语言,它可以嵌入到Wincc项目中,用于实现特定的功能。
C脚本具有较高的灵活性和可扩展性,可以处理各种数据类型和运算符,还可以调用Wincc提供的API接口。
3. 创建C脚本在Wincc中创建C脚本非常简单。
请按照以下步骤操作:1. 打开Wincc项目,选择一个合适的文件夹。
2. 在文件夹中右键单击,选择“新建”>“C脚本”。
3. 输入脚本名称,点击“确定”。
4. C脚本基本语法C脚本的基本语法与C语言类似,主要包括以下几个部分:1. 变量声明:用于声明变量及其数据类型,如int、float、char 等。
2. 运算符:包括算术运算符、关系运算符、逻辑运算符等。
3. 控制结构:包括if语句、for循环、while循环等。
4. 函数:用于实现特定功能的自定义函数。
5. 编写C脚本以下是一个简单的C脚本示例,用于实现一个简单的计算功能:include <stdio.h>int main() {int a, b, result;// 输入两个整数printf("请输入两个整数,用空格分隔:"); scanf("%d %d", &a, &b);// 计算两数之和result = a + b;// 输出结果printf("两数之和为:%d\n", result);return 0;}在这个示例中,我们使用C语言的标准输入输出库,实现了从用户那里获取两个整数,计算它们的和,并将结果输出到控制台。
Wincc的脚本功能及其强大,可以通过C脚本实现各种功能,但是脚本比较繁琐,始终不得其道,经过对比研究,发现了一些规律
1.全局脚本的实现
打开全局脚本编辑器,在“动作”-“全局动作“-新建动作,出现脚本编辑器的正文
可以看到正文已经有一部分内容,这些内容包括自带的全局脚本的声明及注释内容,都需要更改,也更改不了。
在第一大括号后,我们可以自己编用户脚本了,用户脚本一般是这样的结构:首先对数据和变量进行声明,即对其数据类型进行声明;然后,对变量进行取属性,转换变量,用value1=GetTagDWord("AI0");(这是个例子),意思是把AI0的值取出给value1了,然后就可以对value1进行计算了,计算后再置属性,转换变量,用
SetTagDWord("AI0",value1);
其他的地方注意符号和空格,然后编译,编译过了之后保存,并生成头文件,然后就见证奇迹吧。
下图是依次点亮的脚本
下图是液位高高报警的脚本。
1.实例:访问图形编辑器中的对象可以使用 VBS WinCC 对所有图形编辑器对象进行访问,以使图形运行环境动态化。
根据变量或周期性(例如闪烁)情况,可在执行操作(例如在按钮上单击鼠标)时使图形对象动态化。
以下示例说明如何在鼠标单击后更改图形对象。
步骤在以下示例中,每次单击鼠标时运行系统中圆的半径都会设置为 20:Dim objCircleSet objCircle= ScreenItems("Circle1")objCircle.Radius = 202.实例:定义对象的颜图形对象的颜色通过 RGB 值(红/绿/蓝)定义。
可以设置或读出图形对象的颜色值。
步骤以下示例将“ScreenWindow1”的填充颜色定义为蓝色:Dim objScreenSet objScreen = HMIRuntime.Screens("ScreenWindow1")objScreen.FillStyle = 131075objScreen.FillColor = RGB(0, 0, 255)3.例:如何组态语言切换可使用 VBS 切换 WinCC 的运行系统语言。
最常用的是包含相应语言代码的按钮,这些按钮位于项目的起始页上。
在 VBS 中通过使用国家代码(例如,1031 表示德语 - 默认,1033 表示英语 - 美国等)指定运行系统语言。
有关所有国家代码的汇总,请参见标题为“区域方案 ID (LCID) 图”的主题下的 VBScript 基本知识。
步骤:使用按钮上的“Mouse click”事件创建 VBS 动作,输入以下动作代码将运行系统语言切换为德语:nguage = 10314.实例:禁用运行系统简介可以使用 VBS 终止 WinCC 运行系统,例如,通过鼠标单击,依靠变量值或其它事件(例如,启动运行系统时密码的多次错误输入)。
要执行的操作以下示例会终止 WinCC 运行系统:HMIRuntime.Stop5.实例:全局组态画面更改简介VBS 可用于启动全局画面更改,因而会在分布式系统的客户机上显示服务器中的画面。
Wincc画面生成技巧——C脚本详解介绍本文档旨在详细解释Wincc画面生成中的C脚本技巧,帮助读者更好地理解和应用这些技术。
C脚本简介C脚本是Wincc中用于编写逻辑和功能的一种脚本语言。
通过使用C脚本,我们可以实现画面的自动化操作和控制。
C脚本技巧以下是一些C脚本技巧,可以帮助您在Wincc画面生成中更高效地编写代码:1. 变量使用:合理使用变量可以提高代码的可读性和可维护性。
在使用变量时,应注意变量的作用范围和命名规范。
变量使用:合理使用变量可以提高代码的可读性和可维护性。
在使用变量时,应注意变量的作用范围和命名规范。
2. 条件语句:使用条件语句可以根据不同的情况执行不同的操作。
常见的条件语句包括if语句和switch语句。
条件语句:使用条件语句可以根据不同的情况执行不同的操作。
常见的条件语句包括if语句和switch语句。
3. 循环语句:使用循环语句可以重复执行某段代码。
常见的循环语句有for循环和while循环。
循环语句:使用循环语句可以重复执行某段代码。
常见的循环语句有for循环和while循环。
4. 函数封装:将常用的代码封装成函数,可以提高代码的重用性和可维护性。
在编写函数时,应注意函数的输入参数和返回值。
函数封装:将常用的代码封装成函数,可以提高代码的重用性和可维护性。
在编写函数时,应注意函数的输入参数和返回值。
5. 错误处理:在编写代码时,应考虑可能出现的错误,并进行相应的错误处理。
可以使用try-catch语句来捕捉和处理异常。
错误处理:在编写代码时,应考虑可能出现的错误,并进行相应的错误处理。
可以使用try-catch语句来捕捉和处理异常。
6. 调试技巧:在编写代码时,应养成良好的调试惯,通过使用断点、打印变量值等方式来调试代码,以确保代码的正确性。
调试技巧:在编写代码时,应养成良好的调试习惯,通过使用断点、打印变量值等方式来调试代码,以确保代码的正确性。
7. 代码优化:在编写代码时,应尽量优化代码结构和算法,以提高代码的执行效率。
Wincc制图过程中的C脚本应用Wincc是一款用于监控和控制系统的软件,而C脚本是Wincc中用于编写自定义功能的一种编程语言。
在制图过程中,使用C脚本可以实现更复杂的功能和逻辑,提高图形界面的交互性和灵活性。
以下是在Wincc制图过程中应用C脚本的一些常见用途:1. 数据处理和计算:使用C脚本可以对传感器数据进行处理和计算,实现实时数据的加工和分析。
例如,可以使用C脚本计算温度的平均值或者累积量。
2. 动态图形效果: C脚本可以控制图形元素的显示和动态效果。
例如,可以使用C脚本实现图形元素的闪烁、颜色变化或者位置移动等动态效果,以便更直观地展示系统状态。
3. 用户交互和控制: C脚本可以实现用户输入的处理和系统控制的反馈。
例如,可以使用C脚本获取用户输入的数值或选项,并根据用户的选择进行相应的操作。
4. 报警和通知:使用C脚本可以实现报警和通知功能。
例如,可以使用C脚本监测某个变量的数值,当其超过设定的阈值时触发报警或发送通知。
在应用C脚本时,需要注意以下几点:- 熟悉C语言语法:由于C脚本是基于C语言的,所以熟悉C 语言的语法和编程思想非常重要。
- 合理使用变量和函数:在编写C脚本时,应合理定义和使用变量和函数,以便实现代码的可读性和重用性。
- 错误处理和调试:在编写C脚本时,应注意错误处理和调试技巧,以确保代码的稳定性和可靠性。
总而言之,C脚本在Wincc制图过程中具有广泛的应用,可以实现更复杂的功能和逻辑,提高系统的交互性和灵活性。
熟练掌握C脚本编程技巧,将能更好地应用于Wincc制图中。
C脚本在Wincc画面制作中的角色Wincc作为一款功能强大的监控和控制软件,在画面制作中扮演着重要的角色。
而C脚本作为Wincc的脚本语言,更是在画面制作中发挥着重要的作用。
下面将简要介绍C脚本在Wincc画面制作中的角色。
1. 实现画面逻辑控制:C脚本可以用来实现画面之间的跳转和逻辑控制。
通过编写C脚本,我们可以根据特定的条件来决定画面的跳转路径,实现画面间的交互。
同时,C脚本还可以用来实现画面元素的显示和隐藏,根据不同的条件进行控制,提供更好的用户体验。
2. 实现数据处理和计算:在画面制作中,经常需要对采集到的数据进行处理和计算,以及显示处理结果。
C脚本提供了强大的编程能力,可以用来编写数据处理和计算的逻辑。
通过C脚本,我们可以对数据进行各种运算、判断和转换,得到需要的结果,并将结果显示在画面上。
3. 实现报警和事件处理:画面制作中,报警和事件处理是非常重要的功能。
C脚本可以用来监测特定的条件,并在满足条件时触发相应的报警和事件处理逻辑。
通过编写C脚本,我们可以实现报警信息的生成和显示,以及相应的声音和图像提示,及时提醒操作人员。
4. 实现用户界面定制:Wincc的画面制作是为了满足不同用户的需求,提供个性化的界面。
C脚本可以用来实现用户界面的定制化,通过编写C脚本,我们可以根据用户的需求,改变画面元素的样式、位置和行为,实现更加灵活和可定制的用户界面。
总之,C脚本在Wincc画面制作中扮演着重要的角色,它可以实现画面逻辑控制、数据处理和计算、报警和事件处理,以及用户界面定制等功能。
通过合理利用C脚本,我们可以实现更加灵活和强大的画面制作,提高监控和控制系统的效率和可靠性。