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. 引言本文档旨在详细解读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提供了丰富的内置对象,如变量、趋势图、报警等。
Wincc画面制作中C脚本的应用分析

Wincc画面制作中C脚本的应用分析Wincc是一种用于人机界面(HMI)开发的软件,它提供了丰富的功能和工具,以便于用户制作交互性强的画面。
在Wincc画面制作中,C脚本是一种常用的编程语言,用于实现画面的特定功能和逻辑。
1. C脚本的基本概念和语法C脚本是一种类似于C语言的编程语言,它具有简单易学的特点。
在Wincc画面制作中,C脚本用于处理各种事件和操作,例如按钮点击、数据读写、画面切换等。
C脚本的语法与C语言基本相同,包括变量声明、条件语句、循环语句、函数定义等。
通过使用C脚本,用户可以根据自己的需求编写特定的逻辑代码,实现画面的自定义功能。
2. C脚本在Wincc画面制作中的应用场景2.1 数据处理和计算在Wincc画面制作中,常常需要对实时数据进行处理和计算,例如计算平均值、最大值、最小值等。
通过使用C脚本,可以方便地实现这些功能,提高画面的实用性和可读性。
2.2 事件处理和交互操作用户在与画面进行交互时,往往需要对按钮点击、鼠标移动等事件进行处理。
通过使用C脚本,可以捕捉这些事件,并编写相应的逻辑代码,实现画面的交互操作。
2.3 画面切换和导航在复杂的画面系统中,用户可能需要进行画面之间的切换和导航。
通过使用C脚本,可以实现画面之间的跳转和导航,提高用户的操作效率和便捷性。
3. C脚本的优势和注意事项3.1 灵活性和可扩展性C脚本作为一种编程语言,具有很高的灵活性和可扩展性。
用户可以根据自己的需求编写特定的逻辑代码,实现画面的自定义功能。
3.2 需要一定的编程知识使用C脚本进行画面制作需要一定的编程知识和经验。
对于不熟悉编程的用户来说,和掌握C脚本可能需要一定的时间和精力投入。
3.3 注意安全性和稳定性在使用C脚本进行画面制作时,需要注意安全性和稳定性。
编写的代码应该经过充分的测试和验证,以确保其能够正常运行并不会对系统造成不良影响。
4. 结论C脚本在Wincc画面制作中具有广泛的应用,可以实现画面的自定义功能和逻辑。
Wincc界面制作:C脚本的实际操作

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脚本,我们可以实现更多的自定义功能和交互,提升界面的灵活性和用户体验。
请注意,本文档仅提供实际操作步骤的概述,并不包含具体的代码示例。
具体的代码编写需要根据具体需求进行定制。
wincc常用C脚本功能

..用户注销:#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.关闭项目并退出winccExitWinCC ();wincc资源管理器:退出运行到4.DeactivateRTProject ();按钮变三种颜色#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma option(mbcs)if(GetTagWord(TX/ZSH001)==1)文档Word.return 0x0000ff00;elseif(GetTagWord(TX/ZSL001)==1)return 0x000000ff;elsereturn 0x00c0c0c0;}一个调用按钮变色#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma option(mbcs)if(GetTagWord(NewTag)==0)return 0x0000ff00;elsereturn 0x00ffffff;}文档Word.5.结束监控并关闭计算机(会弹出确认对话框)HWND hWnd = NULL;//Author:Smartsysint iRet;- ); 运行系统hWnd = FindWindow(NULL,WinCC-,结束监控并关闭计算机剩瑥?獥慳敧潂?坨摮尬,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.: )DISPLAY_NO和DISPLAY_COMMENT、COLSE_DISPLAY// Funktion: Bit in Doppelwort setzen;if (GetTagBitWait(COLSE_DISPLAY)==1 ){SetTagBit(COLSE_DISPLAY,0);文档Word.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;); //Return-Type :short int a=GetTagBit(T制水启动if (a==0){操作提示?晩?獥慳敧潂?啎?尬真的要启动制水吗?,MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SY STEMMODAL) == 6),1); { SetTagBit(T制水启动//Return-Type :BOOL}}else操作提示?真的要停止制水吗?楻?敍獳条?硯丨??文档Word.,MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTE MMODAL) == 6),1); 制水停止{ SetTagBit(T}}运行画面最小化将WinCC9.HWND WinCCHwnd;如果运行语WinCCHwnd=FindWindow(NULL,WinCC-Runtime - ); //言为英文运行if (WinCCHwnd==0)WinCCHwnd=FindWindow(NULL,WinCC- 如果运行语言为中文系统- ); //CloseWindow(WinCCHwnd);hiddVtext为内部的二进制变量)10.显示或不显示(其中if(GetTagBit(hiddVtext)==0) //Return-Type: BOOL{SetTagBit(hiddVtext,TRUE); //Return-Type: BOOL//Return-Type: BOOL}else{SetTagBit(hiddVtext,FALSE);}文档Word.打开编辑画面的脚本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 2000 ShowWindow(hExplorerWindow, SW_SHOWNORMAL); SetForegroundWindow(hExplorerWindow);}elseprintf(n SetForeground failed);#endif中制作一个保持型按钮11.如何在WINCC :1方法文档Word .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动画脚本电机风扇旋转(几何---起始角度):#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_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,"%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));}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_X630 9X94AE2X0000X653E_OnLB uttonDown(ByV al Item, ByV al Flags, ByV al x, ByV al y)Dim objScreenDim CountLayerSet objScreen = HMIRuntime.Screens("layer")For CountLayer=1 To 32 Step 1/doc/b84310496.html,yers(CountLaye r).Visible = vbFalseNext/doc/b84310496.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动作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,是--不显示,否--显示。
Wincc常用C脚本及常用功能

Wincc常用C脚本及常用功能打开用户管理器ProgramExecute("Passcs.exe");取消激活#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){#pragma option(mbcs)HWND hwnd=NULL;int iRet;hwnd=FindWindow(NULL,"WinCC-运行系统- "); //获得句柄iRet=MessageBox(hwnd,"是否取消激活?","Deactivate",MB_OKCANCEL|MB_ICONW ARNING|MB_APPLMODAL);if(iRet==1)DeactivateRTProject (); //Return-Type: BOOL关闭计算机#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){#pragma option(mbcs)HWND hwnd=NULL;int iRet;hwnd=FindWindow(NULL,"WinCC-运行系统- ");iRet=MessageBox(hwnd,"是否关闭计算机?","ShutDown",MB_OKCANCEL|MB_ICONW ARNING|MB_APPLMODAL);if(iRet==1)DMExitWinCCEx(DM_SDMODE_SYSTEM);}====================================== ================================ 登陆代码: #pragma code(“useadmin.dll”)#include#pragma code()PWRTLogin (…e?);====================================取消激活(Deactivate)DeactivateRTProject();====================================== Wincc变量操作GetTagDWord(“变量名称”); 获取Wincc变量值SetTagDWord(“变量“,设定值);设置Wincc变量对文本读写操作写操作#include "apdefap.h"void OnLButtonUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){#pragma option(mbcs)FILE* lpFile;char*shuzhu[6]={"tag_1","tag_2","tag_3","tag_4","tag_5","tag_6"};char* lpszStr;lpszStr=SysMalloc(60); //Return-Type: void*lpFile = fopen("D:\\test.txt", "w+");for(i=0;i<6;i++){lpszStr=GetTagChar(shuzhu[i]);strcat(lpszStr,"\r\n");if(lpFile == NULL){ printf("can not open file\r\n"); return;}fprintf(lpFile, lpszStr);}SysFree(lpszStr);fclose(lpFile);}读操作#include "apdefap.h"void OnLButtonUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){#pragma option(mbcs)char*shuzhu[6]={"tag_1","tag_2","tag_3","tag_4","tag_5","tag_6"};char tmp[255];int i=0;int ChrNumLine=38;FILE *fp;fp=fopen("D:\\test.txt","r");if (fp==NULL){}else{rewind(fp);while(!feof(fp)){fgets(tmp,ChrNumLine,fp);SetTagChar(shuzhu[i],tmp);i++;}}fclose(fp);}画面窗口显示界面切换SetPictureName(lpszPictureName,"PicWindow_button","pro duce_manage_button.pdl");SetVisible(lpszPictureName,"PicWindow_button",1);注:PicWindow_button是画面窗口名称;produce_manage_button.pdl是要显示的子画面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Geometry -简短描述使用Geometry组中的函数可以修改或调用对象的大小、位置和其它几何属性。
1. long int GetActualPointLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定多边形或折线中当前位置的X轴数值。
读出对象位置的实例{long lPos;//获得对象的X轴位置lPos= GetLeft(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetLeft函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称。
1).读出对象的当前X轴位置以及lPos中的缓冲区。
2).执行处理返回值的自定义代码。
2. long int GetActualPointTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定多边形或折线中当前顶点的Y轴数值。
读出对象位置的实例{long lPos;//获得对象的Y轴位置lPos= GetTop(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetTop函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称。
3. long int GetBoxCount(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定复选框和单选框的数字域。
参数lpszPictureName画面名lpszObjectName4. long int GetDirection(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指出棒图的方向。
参数lpszPictureName画面名lpszObjectName5. long int GetEndAngle(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定部分圆和部分椭圆以及圆弧和椭圆弧的结束角度。
6. BOOL GetGrid(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否在图形编辑器的图形域中激活网格。
7. long int GetGridHeight(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定在图形编辑器的图形域中网格的高度。
8. long int GetGridWidth(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定在图形编辑器的图形域中网格的宽度。
9. long int GetHeight(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定构成对象的矩形的高度。
读出对象位置的实例{long lHeight;//获得对象的高度lHeight= GetHeight(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetHeight函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称。
1).读出对象的当前高度以及lHeight中的缓冲区。
2).执行处理返回值的自定义代码。
10. long int GetLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义构成对象的矩形左上角的X轴位置。
读出对象位置的实例{long lPos;//获得对象的X轴位置lPos= GetLeft(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetLeft函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称。
11. long int GetPointCount(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定多边形或折线的角的数量。
12. long int GetRadius(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName);函数,定义圆、部分圆或圆弧的半径。
读出对象位置的实例{long lHeight;//获得对象的高度lHeight= GetHeight(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetHeight函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称。
1).读出对象的当前高度以及lHeight中的缓冲区。
2).执行处理返回值的自定义代码。
13. long int GetRadiusHeight(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定椭圆、部分椭圆或椭圆弧的垂直半径。
读出对象位置的实例{long lHeight;//获得对象的高度lHeight= GetHeight(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetHeight函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称。
14. long int GetRadiusWidth(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定椭圆、部分椭圆或椭圆弧的水平半径。
15. long int GetReferenceRotationLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用线、多边形和折线时,它指定旋转位置(围绕其旋转对象的中心坐标轴)的X轴数值。
读出对象位置的实例{long lPos;//获得对象的X轴位置lPos= GetLeft(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetLeft函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称。
16. long int GetReferenceRotationTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用线、多边形和折线时,它指定旋转位置(围绕其旋转对象的中心坐标轴)的Y轴数值。
17. long int GetRotationAngle(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义围绕中心坐标轴旋转线、多边形和折线的角度。
18. long int GetStartAngle(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定部分圆和部分椭圆以及圆弧和椭圆弧的起始角度。
读出对象位置的实例{long lHeight;//获得对象的高度lHeight= GetHeight(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetHeight函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称。
19. long int GetTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定构成对象的矩形左上角的Y轴位置。
读出对象位置的实例{long lPos;//获得对象的Y轴位置lPos= GetTop(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetTop函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称。
20. long int GetWidth(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定构成对象的矩形的宽度。
读出对象位置的实例{long lWidth;//获得对象的宽度lWidth= GetWidth(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetWidth函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称。
21. long int GetZeroPoint(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它显示零点。
读出对象位置的实例{long lHeight;//获得对象的高度lHeight= GetHeight(lpszPictureName,"WinCCLogo");//自定义代码//在那里用户可以使用返回值做某事...}GetHeight函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。
“WinCCLogo”是该对象的名称本篇文章来源于能动信息网http:http:12.html。