WinCC上可以很方便的编写VB脚本和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是一款用于人机界面设计的软件,通过使用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常用C脚本

wincc常用C脚本

1.用户注销:#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);SetTagBit("DISPLAY_NO",0); //Return-Type: BOOLSetTagBit("DISPLAY_COMMENT",0);}else{SetTagBit("COLSE_DISPLAY",1);SetTagBit("DISPLAY_NO",1); //Return-Type: BOOLSetTagBit("DISPLAY_COMMENT",0);}8.开阀确认:BOOL a;a=GetTagBit("30T制水启动"); //Return-Type :short intif (a==0){if(MessageBox(NULL,"真的要启动制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6){ SetTagBit("30T制水启动",1);//Return-Type :BOOL}}else{if(MessageBox(NULL,"真的要停止制水吗?","操作提示",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,是--不显示,否--显示。

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提供了丰富的内置对象,如变量、趋势图、报警等。

利用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脚本实践简介本文档旨在介绍Wincc界面设计中使用C脚本的实践方法。

通过使用C脚本,可以为Wincc界面添加更多的功能和交互性,提升用户体验。

C脚本的基本语法C脚本是一种通用的编程语言,可以用于Wincc界面设计中。

以下是C脚本的基本语法:- 变量声明和赋值- 条件语句(if-else语句)- 循环语句(for循环、while循环)- 函数定义和调用C脚本在Wincc界面设计中的应用1. 控件事件处理通过在控件上绑定事件,并使用C脚本编写相应的事件处理函数,可以实现控件的交互功能。

例如,点击按钮后执行某个操作,或者在文本框中输入内容后进行验证。

2. 数据处理与显示使用C脚本可以对Wincc界面上的数据进行处理和显示。

通过编写相应的C脚本函数,可以实现数据的计算、格式化和转换,然后将结果显示在相应的控件上。

3. 数据库操作C脚本还可以用于与数据库进行交互。

通过使用数据库相关的C库函数,可以实现数据的读取和写入,从而实现与数据库的连接和操作。

4. 系统调用在Wincc界面设计中,有时需要与操作系统进行交互,例如执行外部程序或者访问系统资源。

使用C脚本可以调用系统相关的API函数,实现与操作系统的交互。

注意事项在使用C脚本进行Wincc界面设计时,需要注意以下事项:- 确保C脚本的正确性和安全性,避免出现漏洞和错误。

- 确保C脚本与Wincc界面的兼容性,避免出现冲突和不兼容的情况。

- 在使用C脚本时,应遵循良好的编程惯,保持代码的可读性和可维护性。

结论通过使用C脚本,可以为Wincc界面设计增加更多的功能和交互性。

合理利用C脚本,可以提升用户体验,使Wincc界面更加便捷和高效。

VBscript在工控系统WINCC中应用

VBscript在工控系统WINCC中应用

VBscript在工控系统WINCC中应用摘要目前,宝钢集团八钢公司第一座256烧结系统中,工控系统中HMI(人机界面)使用的是西门子的产品WINCC。

在实际操作过程中,操作员的操作失误引起设备故障的追诉,存在着缺失记录的情况,无法在时间和过程中来分析原因和采取规避措施。

因此,有必要对操作员的操作方法进行监控和记录,同时为操作员标准化操作起到推进作用。

本文介绍了基于WINCC中vbscript语言的强大功能来实现这一需求。

关键词 WINCC vbscript 监控记录一、引言改革开放以来,我国钢铁工业企业发展日新月异,规模日益壮大,先进设备广泛应用,工艺科技含量越来越高。

在生产中,自动化技术已经普及到各个领域、各个车间,这充分说明我国民族工业的逐渐强大。

操作员的标准化操作是保障高科技设备正常运行的关键环节。

操作员在设备故障状态的操作,是非常关键的问题,需要科学地对待设备事故的处理,优化处理设备事故的方式。

设备事故状态下的操作方式,直接关系着设备事故是扩大化、还是减少到最低程度。

所以对操作员的操作记录是事后分析和优化的重要资料。

二、HMI(WinCC)软件的简介工控组态软件WinCC是一个集成的人机界面(HMI)系统和监控管理系统,它是西门子公司在过程自动化领域中的先进技术和微软公司强大软件功能的产物。

WinCC是视窗控制中心(Windows Control Center)的简称,它包括图形设计器、报警记录、标记记录、报告设计器、全局脚本(C script和vbscrip)、控制中心、用户管理等功能,使其具有高性能的过程耦合、快速的画面更新、以及可靠的数据管理。

三、WINCC中vbscript的简介VBScript是微软开发的一种脚本语言,可以看做是VB语言的简化版,与VBA的关系也非常密切。

它具有原语言容易学习的特性。

目前这种语言广泛应用于网页和ASP程序制作中,同时还可以直接作为一个可执行程序。

WINCC脚本技巧

WINCC脚本技巧

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. 数据处理脚本可以实现简单的数据处理,如对数据进行格式化、计算等。

通过获取界面中的数据,使用脚本进行相应的处理并显示结果,方便用户进行数据分析和决策。

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

WinCC上可以很方便的编写VB脚本和C脚本,但是调试起来还是比较费劲的。

下面介绍一下个人的应用体会。

1,VB,最好安装VB6,先在VB6里面编写程序,然后再放到WinCC的脚本中,事半功倍,毕竟VB的调试非常方便。

a,插入引用注意选择OLE Automation 和WinCC *****;b,可以直接在VB里面调用WinCC的全部变量,部,外部全可以:如下:c,在VB里面监视WinCC的变量:d,调试完毕,程序拷贝到WinCC 的脚本中。

2,C语言系统提供了一个应用程序窗口,如下,只要把他拖到画面窗口即可:2,使用Printf函数,把需要调试的容打印出来;3,效果如下:希望对大家有点用处。

下面容来自网络,感原文作者。

wenku.baidu./link?url=vEykUwJBHY3kamu6EGqrO8WX1XVc6_IMzRfnfkcwe5 JpmjmPLUHmsod1xIDeQUpd1MJgUMD9IlS8bcIsH6GWpHwjuq76wAjG6NjSk ndSrQKVbs 操作wincc画面脚本总结一:不使用变量单纯的操作界面1.操作某个画面中控件的属性如Home1.Pdl(总窗体)下的画面窗口2(画面窗口)Sub OnClick(ByVal Item)Dim objCircleDim screennameDim pwnameSet objCircle= ScreenItems("圆1" )objCircle.Radius = 60Set screenname=HMIRuntime.Screens("Home1") //获取要操作的窗体Set pwname=screenname.ScreenItems("画面窗口2") //获取要操作的控件,这里填入你要操作的控件名MsgBox(objCircle.Radius) //输出圆的半径MsgBox (pwname.Picturename) //输出当前画面窗口2的名字End Sub注意当调用某窗体下的某控件的某个属性时,需要声明两个对象,一个接纳这个控件,一个接纳值例如Dim objectDim valueSet object =HMIRuntime.Screens("Home1").ScreenItems("画面窗口2")Set value=object.picturename2.更改画面窗口的对象Sub OnClick(Byval Item)Dim opObjectSet opObject=HMIRuntime.Screens ("Home1").ScreenItems("画面窗口2")opObject.PictureName="Page1.Pdl"End Sub3.设置文本Set titleTxt=HMIRuntime.Screens ("Home1").ScreenItems("静态文本2") titleTxt.Text =titleTxt.Text+"EF" //获取文本的值并追加字符4.vb 字符串函数VB的字符串截取函数有Left(字符串,n),返回字符串前N 个字符;Mid(字符串,p,n),从第p个字符开始,向后截取N个字符;right (字符串,n),返回字符串的最后n个字符。

/s/blog_4aee288a0102vavt.html用WinCC读取VB的数据的方法一(DDE)VB6.0中的步骤:1、新建一个“标准EXE”工程2、设置窗体Form1的LinkMode属性为1 - Source, 一定要设定为13、在Form1上添加一个文本框控件Text1,将其Text属性设为text14、保存工程:工程名为VBDDE.vbp5、生成VBDDE.exeWinCC的步骤:1、新建一单用户项目2、在变量管理器中添加Windows DDE驱动3、在DDE下新建连接NewConnection,在其属性对话框中:Computer Name:不设置Application:VBDDETopic:Form1(VB中窗体名)其它不作改动4、在此连接下新建一有符号16位整型变量Tag1,在其地址选择框中:条目名称:Text1 窗体控件名称数据类型(Data Type):SWORD(要与变量类型一致)5、新建一个画面:DDE_Test.Pdl6、在画面中添加一个IO域:与Tag1动态连接,更新周期为:根据变化,输出格式为s99997、保存画面联机调试:1、先运行VBDDE.EXE(或者在VB设计器中运行工程)2、后激活WinCC项目3、此时IO域值与Text1值总是保持一致(无论你在哪一方改动)用WinCC读取VB的数据的方法二(OLE)VB文本框的代码:private sub text1_change()Dim wincc As Object '定义wincc为对象Dim Var As Integer '定义wincc变量Set wincc = CreateObject("WinCC-Runtime-Project") '创建wincc运行对象Call wincc.SetValue("Var", text1.text) '将VB变量值写入WINCC变量,变量名称要与WINCC变量名称完全一致,要区分大小写end sub在WINCC中建立部变量var,类型要与VB一致,在画面中加入IO显示即可。

/s/blog_6e70b2d5010198x7.htmlWinCC脚本应用脚本的应用给WinCC项目带来了极大的灵活性和开放性。

通过使用脚本可以完成一些WinCC 基本组态无法实现的功能。

从版本V6起,WinCC同时提供了C 和VB 两套脚本系统,使脚本功能更加丰富、易用。

首先C脚本功能实在是太强大了,除了系统提供的标准函数和系统函数外,还可以直接调用API函数,再加上可以直接使用ODK函数,,就连VBS中的Method 调用也可以通过特别的办法实现,可谓是无所不能。

当然缺点也是有的,不支持自动列出函数或者方法,编写程序多有不便。

自版本V6起又增加了VB脚本,它使用起来较为简单,而且入门很快。

VBS自身的功能并不强,除了一些基本的函数和WinCC自身的对象(比如HMIRuntime.Tags),剩下的功能全部都得通过COM组件进行扩展,比如我们很熟悉的Excel、fso、ws cript.shell等等,通过这些组件使得WinCC访问Windows 的接口得以增加,但是访问WinCC底层东西却没有(比如用户登陆、报表打印等),这是VBS美中不足的地方,希望下一版本能够改进,^_^。

VBS的另外一个弱点就是无法直接调用API函数,只能通过其他的方法解决。

网上常见的方法应该是通过dynwrap.dll先注册再调用,比如:Dim UserWrapSet UserWrap = CreateObject("DynamicWrapper")' Call MessageBoxA(), first register the API functionUserWrap.Register "USER32.DLL", "MessageBoxA", "I=HsSu", _"f=s", "R=l"' now call the functionUserWrap.MessageBoxA Null, "MessageBox (ANSI)", _"From DynaWrap Object", 3dynwrap的下载地址我已经找不到了,大家可以上网搜索。

另外安装DriveMonitor后就会有这个文件,详细用法在DriveMonitor帮助信息中也可以找到。

另外我试过利用Excel代为声明,VBS调用Excel的宏来实现,这是一篇我写的关于VBS结合EXCEL调用API函数的心得总结,容太长我就不贴了,直接见附件,附件DOC附有本文档用到的Excel文件、VBS文件以及C函数。

全局C脚本里面对PLC的值进行读取和更新,有对数据库的操作,但有的时候发现设备不动作,点击按钮进入状态界面(用于显示PLC的状态),观察PLC 的值。

此时设备就会继续动作,按钮中未写任何脚本,只是用直接连接来给一个部变量赋值以用于切换画面?怀疑是全局脚本中对数据库的操作阻塞了脚本的运行,不知道是不是原因啊?为什么点击按钮后又能解除呢?恳请高人帮忙啊?[/quote]不知道您使用的是全局脚本项目函数,还是全局动作呢?如果在画面中调用的是全局项目函数,应该属于画面的脚本线程,切换画面的时候,重新启动新的画面周期,执行该画面中的脚本,前一画面中未执行的脚本队列被释放。

如果您怀疑是数据库的操作阻塞了进程,您可以在脚本中屏蔽掉操作数据库的代码,观察是否还出现阻塞的现象;也可以在您的全局脚本中加入printf函数,输出到GSC诊断窗口中,判断是否发生阻塞。

一般来说,如果您在一个项目中组态的动作(包括全局动作或画面中周期调用的动作)不能被正确或及时地处理,例如,动作的触发周期为2秒钟,但是执行该脚本所需要的时间为5秒钟,这样大量动作累积起来,不能处理的动作被输入队列。

如果在脚本队列中的任务数目达到了5000,那么路径“:\Siemens\WinCC\Diagnose”下的WinCC“ WinCC_Sys_xx.log”的诊断文件可能会显示错误消息“s cript: More than 5000 actions in work”。

详细信息请参见如下:support.automation.siemens./CN/view/zh/2357302或者support.automation.siemens./CN/view/zh/14612355。

另外,关于WinCC对C脚本的诊断方法有很多,以下几种仅供参考,在WinCC 的帮助文档中可以找到更多详细的容:1.GSC运行系统:提供关于所有(全局脚本)动作的动态特性信息。

2.GSC诊断:按调用的顺序输出printf 指令,可以将变量的数值和错误信息等输出到诊断窗口。

3.ApDiag工具:WinCC 自带的诊断工具“ApDiag.exe”对故障和性能问题进行了详细的分析,关于如何使用诊断工具“APDiag”来调试C脚本,请参见如下:support.automation.siemens./CN/view/zh/22892912。

相关文档
最新文档