wincc常用C脚本
WINCC C脚本
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)函数,使用棒图对象时,它指出棒图的方向。
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脚本对于刚刚学习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"对象,将其隐藏。
wincc几个常用的小功能的C代码
wincc几个常用的小功能的C代码1:在WINCC运行后的画面总貌上加了计算器功能:方便操作人员用。
做一个按扭后,添加 C脚本:{HWND Hwnd;BOOL bRet;Hwnd=FindWindow(NULL,"Calculator");if (!Hwnd){ProgramExecute("CALC.exe");Hwnd=FindWindow(NULL,"Calculator");if (Hwnd){printf("\r\n%d",Hwnd);bRet=SetWindowPos(Hwnd,HWND_TOPMOST,300,300,200, 200,SWP_NOSIZE);if (!bRet) printf("\r\nSetWindowPos Error!");}}}如果在C脚本中仅仅有一句ProgramExecute("CALC.exe")则运行后点击该按扭则出来计算器,此时不关计算器就切换画面,则计算器都在后台运行。
最初我这样做关闭WINCC运行画面后发现后面有几十个计算器都没关。
所以在脚本中加入使计算器必须显示在WINDOW的激活层上。
二:当对按钮操作需要二次确认时得自己一个个做小窗口,很麻烦。
直接在需要二次确认的按钮添加脚本:{HWND Hwnd;Hwnd = FindWindow(NULL,"WinCC-运行系统 - "); //英文版变为"WinCC-Runtime - "if (!Hwnd) Hwnd = FindWindow(NULL,"WinCC-Runtime - ");if (!Hwnd) printf("\r\nGetWinCC Handle Failed!");MessageBox(Hwnd,"Error Text","My ErrorBox",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUN D|MB_SYSTEMMODAL);}WINDOWS中提供的标准对话框我知道的有三种MessageBox(Hwnd,"Error Text","My ErrorBox",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUN D|MB_SYSTEMMODAL);MB_OK///MB_YESNO///MB_YESNOCANCEL分别是错误框,询问框和YES/NO/CANCEL三按钮询问窗口功能可以分别自己尝试,把相应的控制功能和按钮结合起来就可以。
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 ();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常用 脚本
11、在画面中显示用户名
1.组态静态文本
2.字体属性中的文本,连接系统变量@CurrentUser
----------------------------------------------
(2)新密码设置(C)
SetOutputValueChar(lpszPictureName,lpszObjectName,GetInputValueChar(lpszPictureName,lpszObjectName));
注:字符串格式的输入输出域》事件》属性主题》输出/输入》输出值》更改》以上代码。
{
MessageBox (Handle, "新密码和旧密码不能相同 !", "请重新输入密码", MB_OK |
MB_ICONEXCLAMATION | MB_SYSTEMMODAL);
}
else
{
// this 2 lines are necessary to get the DSN-Name of the project
a=MsgBox("hello!",vbYesNo)
If vbYes=a Then
objCon2.text="ok" '如点击是,则按钮文本变为ok
Else
objCon2.text="no" '如点击否,则按钮文本变为no
End If
注:放置按钮,起名按钮1.
----------------------------------------------
WINCC几个常用C语言编程
WINCC几个常用C语言编程全局脚本编程(按钮连续增减)说明:1、建立全局脚本函数2、建立全局动作C脚本3、在启动画面的打开画面中调用全局脚本函数4、在计算机的启动选项中选中全局脚本全局脚本函数InitAction ()extern char tagname[30] = " ";extern SHORT count = 0;extern FLOAT low = 0;extern FLOAT high = 0;extern FLOAT step = 0;void InitAction()按钮左键按下连续增加extern char tagname[30];extern SHORT count;extern FLOAT low;extern FLOAT high;extern FLOAT step;strcpy(tagname,"S32i_varia_but_04");count = 1;low = 0;high =1400;step =0.5;按钮左键按下连续减少extern char tagname[30];extern SHORT count;extern FLOAT low;extern FLOAT high;extern FLOAT step;strcpy(tagname,"S32i_varia_but_04"); count = 2;low = 0;high =1400;step =0.5;按钮左键松开停止增减extern SHORT count;count=0;全局动作C脚本(counter.pas)#include "apdefap.h"int gscAction( void ){extern char tagname[30];extern SHORT count;extern FLOAT low;extern FLOAT high;extern FLOAT step;FLOAT value;if ((count==1)||(count==2)) {//get current valuevalue = GetTagFloat (tagname);if (count==1){ //incvalue = value+step;if (value>high) (value=high); //high limit}//ifif (count==2){ //decvalue = value-step;if (value<low) (value=low); //low limit}//ifSetTagFloat (tagname,value);}//ifreturn(0);}全局脚本函数(InitAction)文件:C脚本(counter.pas)文件:按钮左键连续增加文件:按钮左键松开文件:C脚本编程(按钮按击增减)1、直接调用C动作方式实现:#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPr opertyName, UINT nFlags, int x, int y){FLOAT value;value=GetTagFloat("S32i_varia_but_00"); //get tag valueif (value>1300) (value=1400); //check limitelse value=value+100; //inc valueSetTagFloat("S32i_varia_but_00",value); //set new value2、调用函数方式实现(incdecvalue):FLOAT value;value=GetTagFloat ("S32i_varia_but_04");IncDecValue(&value,0,1400,100,1);SetTagFloat ("S32i_varia_but_04",value);项目函数(incdecvalue)void IncDecValue(FLOAT *value,FLOAT low,FLOAT high,FLOAT step,DWOR D a){FLOAT v;v=*value; //get current valueswitch (a){case 0: {if (v<step) (v=0); //low limitelse v=v-step; //decrement} //case 0break;case 1:{if (v>(high-step))(v=high); //high limitelse v=v+step; //increment}//case 1break;}//switch*value=v; //return}项目函数(incdecvalue)文件:C脚本编程(按钮切换开关):#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPr opertyName, UINT nFlags, int x, int y){BOOL state; //flip tagstate = !GetTagBit("BINi_varia_but_16"),SetTagBit("BINi_varia_but_16",(SHORT)state);}按钮切换开关文件:。
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动作
#pragma option(mbcs) #ifdef RUN_ON_WEBNAVIGATOR #else
HWND 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); } else printf("\r\n SetForeground failed"); #endif 11.如何在 WINCC 中制作一个保持型按钮
// Funktion: Bit in Doppelwort setzen; if (GetTagBitWait("COLSE_DISPLAY")==1 ) {SetTagBit("COLSE_DISPLAY",0); SetTagBit("DISPLAY_NO",0); //Return-Type: BOOL
方法 1: if( GetTagBit("M10") )
SetTagBit("M10",0); else
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动作
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 ();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脚本实践简介本文档旨在介绍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界面更加便捷和高效。
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 <pwrt_api.h>#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;int i,j;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){return;}else{rewind(fp);while(!feof(fp)){fgets(tmp,ChrNumLine,fp);SetTagChar(shuzhu[i],tmp);i++;}}fclose(fp);}画面窗口显示界面切换SetPictureName(lpszPictureName,"PicWindow_button","produce_manage_button.pdl"); SetVisible(lpszPictureName,"PicWindow_button",1);注:PicWindow_button是画面窗口名称;produce_manage_button.pdl是要显示的子画面。
WINCC C语言脚本
PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\发电机转子接地.wav",NULL,0);
}
if(GetTagBit("DI_0176")==1) //过负荷
{
PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\发电机过负荷.wav",NULL,0);
}
if(GetTagFloat("PT091")<0.5) //进汽压力
{
PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\蒸汽压力低.wav",NULL,0);
}
if(GetTagFloat("PT109")>40) //真空低
{
PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\排汽压力高.wav",NULL,0);
{
PlaySoundA("D:\\DCSDATA\\CG_wincc\\Horn\\热井液位低1.wav",NULL,0);
}
if(GetTagFloat("TE421A")>100 || GetTagFloat("TE421B")>100 || GetTagFloat("TE423A")>100 || GetTagFloat("TE423B")>100 || GetTagFloat("TE425")>100 || GetTagFloat("TE427")>100 || GetTagFloat("TE442")>100) //轴瓦温度
wincc常用C脚本
按钮开头#include "apdefap.h" //通过该文件,向C动作预告所有项目的函数.标准函数以及内部函数。
C动作标题的第二部分为函数标题。
该函数标题提供有关C动作的返回值和可以在C动作中使用的传送参数的信息。
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)//将三个参数传送给C动作。
它们是画面名称(Lpsz PictureName),对象名(lpszObjectName)和属性名(lpszPropertyName)不要更改。
.{}用户注销:#pragma code ("useadmin.dll")/wincc内部动态库,登陆和注销等内部变量#include "PWRT_api.h"//登陆与注销的内部变量#pragma code() //#pragma code是调用windows标准API 函数库中的哪个函数。
PWRTLogout();2.用户登录:#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogin('c');3.#pragma code("useadmin.dll")#include "PWRT_API.H"#pragma code()if (strcmp(GetTagChar("@CurrentUser"),"")==0){PWRTLogin('1');}else{OpenPicture("登陆画面.Pdl");}}这段话的意思是如果当前没有登录用户则弹出登陆窗口有登录用户就打开“登陆画面”。
WINCC-C脚本大全
WINCC C脚本的标准函数 12009-08-06 17:04标准函数该系统包含标准函数。
可以按需要修改这些函数。
此外,还可以自己创建标准函数。
该系统包括一个标准函数集。
一、Alarm - 简短描述Alarm组包含控制WinCC报警控件的函数。
标准函数可用于工具栏中的每一个按钮。
这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。
1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。
使用标准函数操作WinCC报警控件的实例{//确认选择的报警记录消息AcknowledgeMessage(GetTagWord("U08i_Msg Nr"));}指定待确认的消息号。
在本例中是从变量读取的。
2.BOOL AXC_OnBtnArcLong(char* lpszPi ctureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。
使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Contro l1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。
3.BOOL AXC_OnBtnArcShort(char* lpszPic tureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。
使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Contro l1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。
Wincc常用C脚本及常用功能
打开用户管理器ProgramExecute("");取消激活#include ""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-运行系统- "); 01-1",".A01-0",".A00-2",".A00-3",".A00-6",".A21-2",".A21-1",".T1",".T2",".T3",".T4",".steady_time ",".overfeed_time",".A01-3",".A01-4",".A30-1",".A30-2",".A30-3",".A30-4",".A30-5",".A30-6",".A30-7",".A30-8",".A30-9",".A30-10",".A3 0-11",".A30-12",".A31-1",".A31-2",".A31-3",".A31-4",".A31-5",".A31-6",".A31-7",".A31-8",".A31-9",".A31-10",".A3 1-11",".A31-12"};char *chr_current;char *pos;HWND hWnd=NULL;hWnd=FindWindow(NULL,"WinCC-运行系统- ");chr_current=SysMalloc(30); //Return-Type: void*pos=SysMalloc(10); //Return-Type: void*pos=GetTagChar("current");//--------------Get Value-----------------------------------if(GetTagWord("current")>=1){for(i=0;i<39;i++){strcpy(chr_current,"stru_pos_");strcat(chr_current,pos);strcat(chr_current,houzui[i]);mid_value[i]=GetTagFloat(chr_current);}//-------------------------muti send---------------------------------------start_flag=GetTagWord("start");end_flag=GetTagWord("end");if(start_flag<=end_flag){for(i=start_flag;i<=end_flag;i++){SetTagWord("mid_pos",i);pos=GetTagChar("mid_pos");for(j=0;j<39;j++){strcpy(chr_current,"stru_pos_");strcat(chr_current,pos);strcat(chr_current,houzui[j]);SetTagFloat(chr_current,mid_value[j]);}}MessageBoxA(hWnd,"群设置完成!","Multi Send",MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);}elseMessageBoxA(hWnd,"起始位需小于等于结束位!","Warning",MB_OK|MB_ICONWARNING|MB_APPLMODAL);}elseMessageBoxA(hWnd,"当前位号输入错误!","Warning",MB_OK|MB_ICONWARNING|MB_APPLMODAL);}。
Wincc界面制作:C脚本的实际操作
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 C脚本
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)函数,使用棒图对象时,它指出棒图的方向。
WINCC-C脚本大全
WINCC C脚本的标准函数 12009-08-06 17:04标准函数该系统包含标准函数。
可以按需要修改这些函数。
此外,还可以自己创建标准函数。
该系统包括一个标准函数集。
一、Alarm - 简短描述Alarm组包含控制WinCC报警控件的函数。
标准函数可用于工具栏中的每一个按钮。
这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。
1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。
使用标准函数操作WinCC报警控件的实例{//确认选择的报警记录消息AcknowledgeMessage(GetTagWord("U08i_Msg Nr"));}指定待确认的消息号。
在本例中是从变量读取的。
2.BOOL AXC_OnBtnArcLong(char* lpszPi ctureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。
使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Contro l1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。
3.BOOL AXC_OnBtnArcShort(char* lpszPic tureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。
使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Contro l1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
#pragmaoption(mbcs)
if(GetTagWord("NewTag")==0)
return0x0000ff00;
else
return0x00ffffff;
#pragmacode()
PWRTSilentLogin("用户名","口令");
}
**显示登陆对话框无须热键(按钮操作)**
#include"apdefap.h"
voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty)
{
#pragmaoption(mbcs)
if(GetTagWord("TX/ZSH001")==1)
return0x0000ff00;
else
if(GetTagWord("TX/ZSL001")==1)
return0x000000ff;
else
return0x00c0c0c0;
}
一个调用按钮变色
#include"apdefap.h"
8.开阀确认:BOOLa;a=GetTagBit("30T制水启动");//Return-Type:shortintif(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);}}
6.点击事件弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消:intr;r=MessageBox(NULL,"YES为开,NO为关","确定开命令:",MB_YESNO|MB_SYSTEMMODAL);if(r==IDYES)SetTagBit("TAGNAME",TRUE);elseSetTagBit("TAGNAME",FALSE);
1.用户注销:#pragmacode("useadmin.dll")#include"PWRT_api.h"#pragmacode()PWRTLogout();
2.用户登录:#pragmacode("useadmin.dll")#include"PWRT_api.h"#pragmacode()PWRTLogin('c');
9.将WinCC运行画面最小化
HWNDWinCCHwnd;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);}
{
time_t?timer;
structtm*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);
10.打开编辑画面的脚本#pragmaoption(mbcs)#ifdefRUN_ON_WEBNAVIGATOR#else???HWNDhExplorerWindow=NULL;???HWNDhRuntimeWindow=NULL;???hExplorerWindow=FindWindow("WinCCExplorerFrameWndClass",NULL);???hRuntimeWindow=FindWindow("PDLRTisAliveAndWaitsForYou",NULL);???if(hExplorerWindow)??????{??????ShowWindow(hExplorerWindow,SW_MINIMIZE);//ThisentryisonlynecessaryforWindows2000??????ShowWindow(hExplorerWindow,SW_SHOWNORMAL);??????SetForegroundWindow(hExplorerWindow);???}???else??????printf("rnSetForegroundfailed");#endif
??a+=20;
if?(a>=720)?(a=350);
}????
returna;
}
物料向上移动(几何---位置Y)(停车后,物料停在该点)
#include"apdefap.h"
?long_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)
}
5.结束监控并关闭计算机(会弹出确认对话框)HWNDhWnd=NULL;//Author:SmartsysintiRet;hWnd=FindWindow(NULL,"WinCC-运行系统-");iRet=MessageBox(hWnd,"结束监控并关闭计算机","关闭操作站",MB_YESNO|MB_ICONWARNING|MB_APPLMODAL);if(iRet==IDYES)???DMExitWinCCEx(DM_SDMODE_POWEROFF);
{
static?int?a=350;
if?(GetTagBit("DI电机运行信号")?&&(a<=730))?{?
??a+=20;
if(a>=720)?(a=350);
}
if(!GetTagBit("DI电机运行信号"))?(a=350);??
returna;
}
物料水平右移动(几何---位置X)(停车后,物料停在该点)
7.开显示关显示:(要在内部变量中建立三个二进制变量COLSE_DISPLAY、DISPLAY_NO和DISPLAY_COMMENT)//Funktion:BitinDoppelwortsetzen;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);}
11.如何在WINCC中制作一个保持型按钮方法1:if(GetTagBit("M10"))???SetTagBit("M10",0);else???SetTagBit("M10",1);方法2:SetTagBit("M1.0",(SHORT)!GetTagBit("M1.0"));求反指令,如果为1点击变为0,如果为0点击变为1方法3:或者做两个按钮,按钮一:显示,直接连接m1.0,是--不显示,否--显示。事件,直接连接,源,常数1,变量M1.0;按钮二:事件,直接连接,源,常数0,变量M1.0;用按钮一覆盖按钮二
{
static?DWORD?f=20;
if?(GetTagBit("DI电机运行信号"))?{????
f=f+30;
if(f==360)(f=0);
}
returnf;
}
电机风扇旋转(几何---结束角度):
#include"apdefap.h"
?long_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)
return(p);
}
时分秒(静态文本)
#include"apdefap.h"