wincc 常用脚本
- 格式:doc
- 大小:36.50 KB
- 文档页数:4
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"对象,将其隐藏。
—————-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中,常用的VB指令有很多,以下是一些常见的示例:
1. **ScreenItems**:这个函数用于获取屏幕上的项目。
例如,你可以使用`ScreenItems(圆1)`来获取名为"圆1"的项目。
2. **HMIRuntime.Screens**:这个函数用于获取要操作的窗体。
例如,你可以使用`HMIRuntime.Screens(Home1)`来获取名为"Home1"的窗体。
3. **Set**:这个函数用于设置对象的属性。
例如,你可以使用`Set objCircle= ScreenItems(圆1)`来获取名为"圆1"的项目并将其赋值给`objCircle`变量。
4. **InStr**和**InStrRev**:这两个函数都在主字符串中搜索子字符串,并返回找到的子字符串在主字符串中出现的位置。
不同之处在于,InStr从左到右搜索,而InStrRev从右到左搜索。
以上只是WinCC中VB指令的一部分,还有很多其他的指令和函数可供使用,具体取决于你的需求和场景。
查看文章wincc常用C动作2010-06-27 10:311.用户注销:#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 ();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("\r\n 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,是--不显示,否--显示。
W i n c c的V B S脚本使用------------------------------------------作者xxxx------------------------------------------日期xxxx变量读写: Write和Read方法的语法:读:1 Dim objTag Set objTag=HMIRunTime.Tags("变量名")2 HMIRunTime.Tags("变量名").Read写:1 Dim objTag Set objTag=HMIRunTime.Tags("变量名")objTag.Write 1 '向变量写入数值12 HMIRunTime.Tags("变量名").Write 1中间变量的值写入:Dim objTag,valSet objTag=HMIRunTime.Tags("变量名")objTag.Readval=objTag.Value '中间变量val存放了变量的值VBS语言使用方法概述:VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC 脚本版).正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言.我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.vbs的源程序, 用户就能执行了.一、入门: 1) 注释(以REM或'开头)行在程序中不起作用, 但能让别人更容易读懂你的程序. 2) 变量好像一个盒子, 或一个代号, 可以代表你想代表的东西. 变量赋值使用"="3)以""包裹起来的字符称之为"字符串"4)函数像一个"黑箱", 有参数和返回值, 用"="左边的变量可以接住返回值5) Inputbox函数弹出一个输入对话框,Msgbox则用于输出例:REM 输入并回显你的名字'使用InputBox和Msgbox函数Dim name,msgmsg="请输入你的名字:"name=Inputbox(msg,"名称")Msgbox(name)上例中,Dim用来声明一个变量, 在VBS中, 变量类型并不是那么重要, 就是说VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫"浮点数"), 也不用考虑是不是字符串(一串字符, 比如:"Hello World"), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变.常量:格式是:const 常量名=常量值.例如: const PI=3.1415926 const NAME="记忆碎片"二、进阶数据类型转换:1)Dim a,b,ca=inputbox("a是:","输入半径")b=Inputbox("b是:","输入半径")c=a*2+b*2Msgbox(c)这个输入1、2时是62)Dim a,b,ca=inputbox("a是:","输入半径")b=Inputbox("b是:","输入半径")c=(a+b)*2Msgbox(c)这个输入1、2时是24为什么会不一样呢? 在数学上c=(a+b)*2 和 c=a*2+b*2是等价的, 在VBS中也是如此. 问题出在"+"上, 在VBS中, +不仅仅是加号的意思还表示把两个字符串连接起来, 例如"Hello"+"World"="HelloWorld" have you understood? 你还记得InoutBox函数的返回值吗? 是字符串! 这就看出问题了吧, 在编程中"1"不等于(<>)1, "1"是一个字符, 而1是一个数, 所以a,b都是字符串变量, "1"+"2"="12", 这就好像我们小时跟伙伴开玩笑问他们1+1=?一样, 我们总是笑着说"错啦,应该是11".但为什么, a可以*2却不发生错误呢? 这时VBS比较智能的一个表现, 如果这个字符串的内容是一个数且对他进行数学运算, 则把字符串强制转换成数参与运算如果字符串代表一个数, 但不参加数学运算, 而是参加字符串运算(合并)则当作字符串处理, 所以你看到a+b=12, 这时候a+b的结果是一个字符串, 当它要乘以2的时候就被强制转换成了数字12, 这样我就得到了结果24怎么修改这个程序呢? 我们需要用到另一个内建的函数:int, int函数的功能是将输入值转成整数值, 我们这样修改: c=(int(a)+int(b))*2四、循环结构for....nextdim i,jfor i=1 to 9for i=1 to 9str=str & i * j & " " '&是和并字符串的符号next '每个next对应一个fornext1)do..loop和exit do的用法2) while当表达式true的时候执行循环体,until反之3) for...next是计数循环, 每次执行计数器递加4) 嵌套循环的作用和写法 4.5) &用于连接字符串5) vbCrLf相当于键盘上的回车键五、数组定义:dim 数组名(元素数量), 这里大家要注意一点, 这里定义的元素数量总是比你要的要少一个, 因为一个数组的起点是0号数据而不是1, 所以大家一定要小心: 你需要10个数据, 就定义"9"。
WINCCVBS脚本文件操作WinCC VBS脚本中的文件操作主要涉及文件的创建、读取、写入和删除等操作。
下面是一个超过1200字的文章,介绍了WinCC VBS脚本中常用的文件操作方法和示例。
在WinCC VBS脚本中,可以使用FileSystemObject对象来进行文件操作。
首先,需要创建一个FileSystemObject对象:```Dim fsoSet fso = CreateObject("Scripting.FileSystemObject")```接下来,可以使用FileSystemObject对象的属性和方法来操作文件。
下面是常用的文件操作方法示例:1.创建文件夹:```fso.CreateFolder "C:\TestFolder"```2.创建文件:```Dim fileSet file = fso.CreateTextFile("C:\TestFile.txt", True)file.WriteLine "This is a test file."file.Close```3.打开文件:```Dim fileSet file = fso.OpenTextFile("C:\TestFile.txt")MsgBox file.ReadAllfile.Close```4.写入文件:```Dim fileSet file = fso.OpenTextFile("C:\TestFile.txt", 8) file.WriteLine "This is a new line."file.Close```5.读取文件:```Dim fileSet file = fso.OpenTextFile("C:\TestFile.txt")MsgBox file.ReadLinefile.Close```6.复制文件:```fso.CopyFile "C:\SourceFile.txt", "C:\DestinationFile.txt"```7.移动文件:```fso.MoveFile "C:\SourceFile.txt","C:\NewLocation\SourceFile.txt"```8.删除文件:```fso.DeleteFile "C:\TestFile.txt"```9.删除文件夹:```fso.DeleteFolder "C:\TestFolder"```以上示例中的文件路径可以根据实际情况进行修改。
WINCC C脚本的标准函数标准函数该系统包含标准函数。
可以按需要修改这些函数。
此外,还可以自己创建标准函数。
该系统包括一个标准函数集。
一、Alarm - 简短描述Alarm组包含控制WinCC报警控件的函数。
标准函数可用于工具栏中的每一个按钮。
这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。
1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。
使用标准函数操作WinCC报警控件的实例{//确认选择的报警记录消息AcknowledgeMessage(GetTagWord("U08i_MsgNr"));}指定待确认的消息号。
在本例中是从变量读取的。
2.BOOL AXC_OnBtnArcLong(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。
使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。
3.BOOL AXC_OnBtnArcShort(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。
使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。
切换按钮001 SetTagBit("TE_BOOL",!GetTagBit("TE_BOOL"));002 BOOL AA=GetTagBit("TE_BOOL");if(A) SetTagBit("TE_BOOL",0);Else SetTagBit("TE_BOOL",1);003 SetTagBit("TE_BOOL ",1-GetTagBit("TE_BOOL "));I O 域处的格式化输入输出在I/O域的输出值事件处的动作Float F_TAG;F_TAG =GetTagFloat("TE_FLOAT");return(F_TAG /100);WINCC运行画面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow("PDLRTisAliveAndWaitsForYou",NULL);CloseWindow(WinCCHwnd);WINDOWS中提供的标准对话框{ BOOL bool1;HWND Hwnd;int iRet;Hwnd = FindWindow(NULL,"WinCC-运行系统- ");if (!Hwnd) Hwnd = FindWindow(NULL,"WinCC-运行系统- ");if (!Hwnd) printf("\r\nGetWinCC Handle Failed!");iRet=MessageBox(Hwnd,"确认合闸","确认对话框",MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);switch (iRet){case IDYES: printf("user do YES\r\n");SetTagBit("TE_QUEST",1);break;case IDNO: printf("user do NO\r\n");SetTagBit("TE_QUEST",0);break;case IDCANCEL: printf("user do CANCEL\r\n");break;}}本画框的功能是点击按钮的时候弹出windows询问对话框其中“确认合闸”为对话内容,对话框的名称为“确认对话框”用户不同显示不同的按钮你可以在用户管理器给每个用户不同的权限,使他们对按钮有不同的操作权,这是最简便的。
WinCC脚本之For语句一、内容介绍WinCC脚本之For语句主要使用WinCC全局脚本编写For语句的函数例程,二、使用材料系统环境: Windows 10 64bit 企业版组态软件: WinCC v7.5三、创建变量变量名称数据类型长度连接C1 无符号的16 位值 2 内部变量C2 无符号的16 位值 2 内部变量C3 无符号的16 位值 2 内部变量C4 无符号的16 位值 2 内部变量C5 无符号的16 位值 2 内部变量C6 无符号的16 位值 2 内部变量C7 无符号的16 位值 2 内部变量C8 无符号的16 位值 2 内部变量C9 无符号的16 位值 2 内部变量C10 无符号的16 位值 2 内部变量C11 无符号的16 位值 2 内部变量C12 无符号的16 位值 2 内部变量C13 无符号的16 位值 2 内部变量C14 无符号的16 位值 2 内部变量C15 无符号的16 位值 2 内部变量C16 无符号的16 位值 2 内部变量C17 无符号的16 位值 2 内部变量C18 无符号的16 位值 2 内部变量C19 无符号的16 位值 2 内部变量C20 无符号的16 位值 2 内部变量创建了C1-C20,20个数据类型为无符号的16 位值的WinCC内部变量四、创建脚本4.1 For语句例程例程主要读取WinCC变量10个变量值,将使用For语句,IF语句进行循环比较,选择出10个值中的最小值和最大值;例程需要声明一个数组c[20],将winCC变量值存储到数组中;声明Data_MAX和Data_MIN用来存储计算出的最大值和最小值,还需要声明循环数字int i;通过i值完成数组中每个值的比较;程序详见图1。
图1注:Data_MAX和Data_MIN需要初始化Data_MAX = C[1];Data_MIN = C[1];。
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制图中。
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中常用的vb指令-回复WinCC中常用的VB指令是一系列用于编写自定义脚本的命令。
这些指令可以帮助用户实现各种功能和操作,提高系统的灵活性和扩展性。
本文将详细介绍WinCC中常用的VB指令,并逐步解释其用法和应用场景。
第一步:导入VB库在开始之前,必须先导入VB库以启用VB脚本功能。
为此,请打开WinCC 软件并创建一个新项目。
然后,转到“项目设置”选项,找到“VB工程”选项卡,并勾选“启用VB脚本”选项。
第二步:创建VB脚本一旦VB库被导入,就可以开始创建VB脚本了。
在WinCC软件中,可以通过多种方式创建VB脚本。
最常见的方法是使用“脚本编辑器”或通过“双击”控件打开控件事件。
无论使用哪种方法,都需要选择VB脚本语言作为编程语言。
第三步:常用VB指令WinCC中有许多可用的VB指令,这里将介绍其中一些常用的指令和其应用场景。
1. MsgBox指令MsgBox指令用于显示消息框,并接收用户的响应。
它可以用于向用户显示提示、警告或错误消息,并根据用户的选择执行不同的操作。
示例:MsgBox("这是一个提示消息。
")2. SetQuality指令SetQuality指令用于设置变量或标记的质量。
它可以将变量或标记的质量设置为“Good”、“Bad”、“Uncertain”或“Unknown”,以指示变量或标记的可信度。
示例:SetQuality(Tag1, "Good")3. GetTagValue指令GetTagValue指令用于获取指定变量或标记的当前值。
它可以用于读取变量或标记的值,并在需要时进行处理。
示例:Value = GetTagValue(Tag2)4. SetTagValue指令SetTagValue指令用于设置指定变量或标记的值。
它可以用于修改变量或标记的值,并触发相应的操作或事件。
示例:SetTagValue(Tag3, 10)5. WriteLogMessage指令WriteLogMessage指令用于将指定的文本写入WinCC日志文件。
Wincc界面制作:C脚本的实际操作概述本文档介绍了在Wincc界面制作中使用C脚本的实际操作。
通过使用C脚本,您可以实现更复杂的逻辑和功能,提升Wincc界面的灵活性和交互性。
C脚本的基本语法C脚本是一种编程语言,用于控制Wincc界面的行为和响应。
以下是C脚本的基本语法:- 代码块使用花括号({})包围。
- 使用分号(;)表示语句的结束。
- 使用双斜杠(//)表示注释,注释的内容将被忽略。
在Wincc界面中使用C脚本在Wincc界面制作中,您可以将C脚本与各种控件和事件关联,以实现特定的功能和行为。
以下是一些常见的C脚本应用示例:控件事件响应您可以为控件(如按钮、文本框等)添加事件响应函数,以实现用户交互时的相应操作。
例如,当用户点击按钮时,可以触发相应的事件处理函数。
数据处理与逻辑控制通过C脚本,您可以对Wincc界面中的数据进行处理和控制。
例如,您可以编写代码来验证用户输入的数据是否合法,并根据结果做出相应的处理。
界面切换与导航使用C脚本,您可以实现界面之间的切换和导航功能。
例如,当用户点击某个按钮时,可以通过编写代码来切换到另一个界面。
数据库和文件操作通过C脚本,您可以实现对数据库和文件的读写操作。
例如,您可以编写代码来从数据库中检索数据,并将其显示在Wincc界面上。
实际操作示例以下是一个简单的实际操作示例,展示了如何使用C脚本实现一个简单的功能:// 定义一个变量,用于存储按钮点击次数int clickCount = 0;// 按钮点击事件处理函数void OnButtonClick(){// 每次点击增加计数clickCount++;// 更新界面上的文本显示SetText("label1", "按钮点击次数:" + clickCount);}在上述示例中,我们定义了一个变量`clickCount`,并在按钮点击事件处理函数`OnButtonClick`中对其进行增加,并通过`SetText`函数更新界面上的文本显示。
wincc vbs 英文语言代码WinCC (Windows Control Center) 是 Siemens 的一款SCADA (Supervisory Control and Data Acquisition) 系统。
你可以通过使用 WinCC 的脚本功能来创建自定义的VBS (Visual Basic Script) 代码,这些代码可以用于执行各种任务,包括修改语言设置。
在 WinCC 中更改语言设置通常需要更改系统环境变量或设置系统参数。
在 VBS 脚本中,可以使用 WScript.Shell 对象来更改这些设置。
以下是一个示例 VBS 脚本,用于将 WinCC 的语言更改为英文:vbscript复制代码:Dim objShell Set objShell = CreateObject("WScript.Shell") ' 设置系统环境变量,将语言更改为英文objShell.Environment("Process")("LANG") = "en-US"' 重启 WinCC 以便更改生效 objShell.Run "net stop wincc" objShell.Run "net start wincc"请注意,此脚本需要以管理员权限运行,因为更改系统环境变量需要管理员权限。
另外,你可能需要根据你的具体情况修改脚本中的语言代码。
Set objShell = CreateObject("WScript.Shell") '设置系统环境变量,将语言更改为英文objShell.Environment("Process")("LANG") = "en-US" ' 重启 WinCC 以便更改生效 objShell.Run "net stop wincc" objShell.Run "net start wincc"请注意,此脚本需要以管理员权限运行,因为更改系统环境变量需要管理员权限。
DeactivateRTProject ();//退出系统#pragma code("useadmin.dll")#include"PWRT_api.h"#pragma code()char* CUser=NULL;CUser=GetTagChar("@CurrentUser");if (strlen(CUser)==0){PWRTSilentLogin("operator","123456");//用户“operator",密码"123456”登录}OpenPicture("@MAIN.pdl");}在画面中结合不同按钮来组态下面 C 操作LoginAction for login (for example, "mouse click" event):#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogin('c');LogoutAction for logout (for example, "mouse click" event):#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogout();PWRTLogin 参数必须是CHAR 字符。
它指定了显示对话框的监视器。
如果只使用一个监视器,那么保留默认参数“c”或者指定“1”。
注意可以使用PASSLoginDialog 函数来代替PWRTLogin 或者PWRTLogout 函数。
这个函数需要和函数PWRTLogin 相同的参数。
PWRTLogin 和PASSLoginDialog 函数可以调用登录界面,在上面可以登录或者注销。
函数PWRTLogout 被正确执行并且不调用登录界面。
正确执行后这两个函数都返回“1”。
然而,登录不会等到显示对话框之后。
注意如果使用多个显示器,为了能使登录对话框显示在合适的显示器上,需要WinCC Basic Process Control (OS项目编辑器)。
不使用WinCC Basic Process Control 时,可以指定显示器编号,但登录对话框始终显示在第一个显示器上。
#include"apdefap.h"//调用函数代码void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){SetVisible(lpszPictureName,"@ERROR",FALSE); //当前画面上有一个名称为"@ERROR"对象,将其隐藏。
FALSE或者0都可以SetOperation(lpszPictureName,"@LoginIn",TRUE); //函数SetOperation是控制画面对象的可操作性SetOperation(lpszPictureName,"@PasswordIn",TRUE);SetOperation(lpszPictureName,"@OK",TRUE);Set_Focus(lpszPictureName,"@LoginIn"); //次函数表示将光标重新聚焦到当前画面中,名称为“@Loginin”对象中SetVisible(lpszPictureName,lpszObjectName,FALSE);SetVisible函数是用来执行是否显示的函数在利用画面窗口实现画面切换中使用了SetPictureName函数实现画面属性的更改使用了SetPropChar函数SetPictureName("@MAIN.pdl", "Alarm", "AlarmList.pdl"); //调用MAIN中Alarm画面中的AlarmList画面SetProp是一种函数,功能是增加一个新项,修改一个现有项。
实现画面属性的更改使用了SetPropChar函数SetPropChar("@MAIN.pdl","Alarm","CaptionText","报警清单"); //更改MAIN中Alarm画面中标题属性为报警清单SetPropBOOL("@MAIN.Pdl","Alarm","Visible",1);} // MAIN画面中中Alarm对象属性被设置为1SetVisible("@MAIN.pdl","LoginWindow",TRUE);}void Open_AI_Pannel(char *AI_Num,char *TagName,char *Unit) //定义变量//void *可以指向任何类型的数据//Open_AI_Pannel名称{char AI_TemplateName[80]; //80为最大字符长度char str_Title[80];char str_Unit[80];char str_Loop_Name[80];strcpy(AI_TemplateName,"AI_Template");//strcpy复制地址strcat(AI_TemplateName,AI_Num); //strcat两个char类型链接strcpy(str_Title,TagName);strcat(str_Title," AI Loop Control Pannel");SetPropChar("@MAIN.pdl",AI_TemplateName,"CaptionText",str_Title); //置为变量SetPropBOOL("@MAIN.pdl",AI_TemplateName,"Visible",0); //To make the Picture window NO visible //不显示SetPropChar("@MAIN.pdl",AI_TemplateName,"TagPrefix",TagName); //Set the ObjectName as TagPrefix -???¨???¨?oSetPropBOOL("@MAIN.pdl",AI_TemplateName,"Visible",1); //To make the Picture window visible ?-¨strcpy(str_Unit , TagName);strcpy(str_Loop_Name,TagName);//SetPropChar("PID_Pannel.pdl","PidTitle","Text",TagName); //Set the title to the oject name//SetText("PID_Pannel.pdl","Unit01",Unit);//Unit_VL//SetText("PID_Pannel.pdl","Unit02",Unit);//Unit_VLstrcat(str_Unit,"._LOOP_UNIT"),SetTagChar(str_Unit,Unit);//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMin",PID_Zero);//strcat(str_Zero,"._PID_ZERO");//SetTagWord(str_Zero,PID_Zero);//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMax",PID_Span);//strcat(str_Span,"._PID_SPAN");//SetTagWord(str_Span,PID_Span);//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMin",PID_Zero);//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMax",PID_Span);strcat(str_Loop_Name,"._LOOP_NAME");SetTagChar(str_Loop_Name,TagName); //str_Loop_Name=TagName}DOL电机脚本:void Open_Motor_Pannel(char *Pannel_Num,char * Motor_Name){//char pannel_name[80];char tagname[80];char str_Title[80];strcpy(pannel_name,"Motor_Template");strcat(pannel_name,Pannel_Num);//SetPropBOOL("@MAIN.Pdl",pannel_name,"Visible",0);strcpy(tagname,Motor_Name);strcat(tagname,"._MOTOR_NAME"); //._MOTOR_NAME模版变量名SetTagChar(tagname,Motor_Name);SetPropChar("@MAIN.pdl",pannel_name,"TagPrefix",Motor_Name); //TagPrefix变量前缀SetPropChar("@MAIN.pdl",pannel_name,"PictureName","Motor_Pannel.pdl");//画面名称strcpy(str_Title,Motor_Name);strcat(str_Title," MOTOR Control Pannel");SetPropChar("@MAIN.Pdl", pannel_name,"CaptionText",str_Title);SetPropBOOL("@MAIN.Pdl",pannel_name,"Visible",1); //让画面窗口可见PID模版void Open_PID_Pannel(char *PID_Num,char *TagName,char *Unit){char PID_TemplateName[80];char str_Title[80];char str_Unit[80];char str_Loop_Name[80];strcpy(PID_TemplateName,"PID_Template");strcat(PID_TemplateName,PID_Num);strcpy(str_Title,TagName);strcat(str_Title," PID Loop Control Pannel");SetPropChar("@MAIN.pdl",PID_TemplateName,"CaptionText",str_Title); //±êìa??±? SetPropBOOL("@MAIN.pdl",PID_TemplateName,"Visible",0); //To make the Picture window NOvisible ?-??2??é??£??é2?ó?SetPropChar("@MAIN.pdl",PID_TemplateName,"TagPrefix",TagName); //Set the ObjectName as TagPrefix -??μ?±?á??ó?°×oSetPropBOOL("@MAIN.pdl",PID_TemplateName,"Visible",1); //To make the Picture window visible ?-é??strcpy(str_Unit , TagName);strcpy(str_Loop_Name,TagName);//SetPropChar("PID_Pannel.pdl","PidTitle","Text",TagName); //Set the title to the oject name//SetText("PID_Pannel.pdl","Unit01",Unit);//Unit_VL//SetText("PID_Pannel.pdl","Unit02",Unit);//Unit_VLstrcat(str_Unit,"._LOOP_UNIT"),SetTagChar(str_Unit,Unit);//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMin",PID_Zero);//strcat(str_Zero,"._PID_ZERO");//SetTagWord(str_Zero,PID_Zero);//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMax",PID_Span);//strcat(str_Span,"._PID_SPAN");//SetTagWord(str_Span,PID_Span);//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMin",PID_Zero);//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMax",PID_Span);strcat(str_Loop_Name,"._LOOP_NAME");SetTagChar(str_Loop_Name,TagName); //str_Loop_Name=TagName。