wincc置位复位按钮c动作
- 格式:docx
- 大小:126.62 KB
- 文档页数:3
w i n c c置位复位按钮c动作标准化工作室编码[XX968T-XX89628-XJ668-XT689N]Wincc中做个按钮鼠标点击下置位,再点下复位,用c动作完成,简单语句如下(大家一起交流共同进步):#include"apdefap.h"voidOnClick(char*lpszPictureName,char*lpszObje ctName,char*lpszPropertyName){BOOLZ;Z=GetTagBit("TAG");if(Z==0)SetTagBit("TAG",1);elseSetTagBit("TAG",0);}**TAG:要置位复位的变量用鼠标左键点击按钮弹出提示对话框(如比较重要的设备的启停,要用户二次确认),用c动作完成,简单语句如下:#include"apdefap.h"voidOnLButtonDown(char*lpszPictureName,char*lp szObjectName,char*lpszPropertyName,UINTnFlags, intx,inty){if(MessageBox(NULL,"确认要停机吗?","警告", MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_S YSTEMMODAL)==IDYES){SetTagBit("TAG",1);}return;}***"确认要停机吗?":提示语句,自己可以随意更改"警告":标题栏名称,自己随意更改。
WINCC试题(1)劳动技能竞赛WINCC试题第⼀部分1.新建⼀个wincc项⽬框架(5分)试题要求:新建⼀个项⽬名为“Project_<姓名>”的WINCC项⽬,类型为单⽤户项⽬,并使⽤OS项⽬编辑器快速创建HMI机框架,然后在图形编辑器中新建名为“Picture1.PDL”、“Picture2.PDL”的两个画⾯,并在画⾯树管理器中建⽴名为“场景演⽰”、“报警”的画⾯容器,把画⾯“Picture1.PDL”分配给“演⽰”画⾯容器、画⾯“Picture2.PDL”分配给“报警趋势”画⾯容器。
2.新建⼀个S7驱动程序,建⽴变量,完成HMI与PLC之间通讯。
(15分)试题要求:在变量管理中添加S7驱动程序,组态TCP/IP通道单元与S7 300进⾏通讯,并建⽴变量名为Start、Stop、Run三个⼆进制变量,在“Picture1.PDL”画⾯中添加两个按钮,并从wincc图库中添加电动机,编辑按钮事件和电动机符号外观,并在PLC程序中编简单的电机启停程序,通过HMI启动/停⽌按钮控制电动机启停,⽤颜⾊反映电机的起停状态。
StartRun状态Stop3.变量模拟器(5分)试题要求:在变量管理器的内部变量中建⽴名为Analog 浮点型变量,通过变量模拟量改变Analog的值,并在在“Picture1.PDL”画⾯添加输⼊/输出域、棒图显⽰变量值。
Analog数字显⽰Analog棒图显⽰4.变量记录(5分)试题要求:将Analog浮点型变量加⼊变量记录中(循环归档,每隔3秒归档⼀次),在“Picture2.PDL”画⾯中添加趋势控件,并结合变量模拟器进⾏仿真。
5.报警记录。
(15分)试题要求:在变量管理器的内部变量中建⽴名为warn、alarm⼆进制变量和warn_value、alarm_value浮点型变量。
在“Picture1.PDL”中利⽤IO域连接warn_value、alarm_value 设定警告和报警值,当Analog的值⼤于warn_value或alarm_value设定值时将warn或alarm置位,同时由warn或alarm触发报警记录,在“Picture2.PDL”画⾯中添加报警控件,在并结合变量模拟器进⾏仿真。
一、组态软件 、 C 语言基础中的语言WinCC 语言由C 脚本(C-script )和B 脚本(VB-script )组成。
WINCC 中 C 脚本:(1)C 动作(在画布中编辑的程序代码)。
(2)全局脚本编辑器:项目函数、标准函数和内部函数。
项目函数:自定义本项目(保护性) 标准函数:编辑好供C 动作调用 内部函数:(微软)自定义编辑函数在项目函数中 例如: #pragma ()(int a; in b )中的(Tag )变量------变量:C 变量、WINC (变量C 变量:int (数值型)、char (字符型)、BOOL 布尔型)---也就是二进制(为常用) WINC (变量:word (数值型)、char (字符型)、Bit (布尔型)(为常用) 常用变量如下: 布尔型: 数值型: 字符型: 参数 1 : 举例 1 二进制变量“启动”控制电机启停 BOOL a; a=GetTagBit ( “启动” ); if (a==0) SetTagBit ( “启动”, 1); 举例 2二进制变量“启动”控制电机启停 BOOL a;static int i=0;( 类似 int i; i=0;) a= GetTagBit ( “启动” ); if (a==0) i++;两者区别: 不加 static 启动一次 i=1 启动二次 i=1int NEW_Add {int c;c=a+b; return c;程序使用的变量(书上 P31--35 )SetTagBit ( 参数 1,参数 2) 、GetTagBit ( 参数)SetTagWord (参数 1,参数 2)、GetTagWord 参数) SetTagChar (参数 1,参数 2)、GetTagChar (参数) 变量名。
参数 2:具体要求。
例如参数 1 为液位,参数 2 为 a 加 static 启动一次 i=1 启动二次 i=2启动三次 i=1 启动四次 i=1 中的运算符启动三次 i=3 启动四次 i=4中的常用语句三、变量组态WINCC 中的变量分为: 内部变量、外部变量和 C 动作(函数中的变量) 1. 利用变量进行增减计数步骤 1:进行画面构建,需要两个按钮和一个输入输出域(属性调整 -)(变量、有变化时、 输出)。
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试题第一部分1.新建一个wincc项目框架(5分)试题要求:新建一个项目名为“Project_<姓名>”的WINCC项目,类型为单用户项目,并使用OS项目编辑器快速创建HMI机框架,然后在图形编辑器中新建名为“Picture1.PDL”、“Picture2.PDL”的两个画面,并在画面树管理器中建立名为“场景演示”、“报警”的画面容器,把画面“Picture1.PDL”分配给“演示”画面容器、画面“Picture2.PDL”分配给“报警趋势”画面容器。
2.新建一个S7驱动程序,建立变量,完成HMI与PLC之间通讯。
(15分)试题要求:在变量管理中添加S7驱动程序,组态TCP/IP通道单元与S7 300进行通讯,并建立变量名为Start、Stop、Run三个二进制变量,在“Picture1.PDL”画面中添加两个按钮,并从wincc图库中添加电动机,编辑按钮事件和电动机符号外观,并在PLC程序中编简单的电机启停程序,通过HMI启动/停止按钮控制电动机启停,用颜色反映电机的起停状态。
StartRun状态Stop3.变量模拟器(5分)试题要求:在变量管理器的内部变量中建立名为Analog 浮点型变量,通过变量模拟量改变Analog的值,并在在“Picture1.PDL”画面添加输入/输出域、棒图显示变量值。
Analog数字显示Analog棒图显示4.变量记录(5分)试题要求:将Analog浮点型变量加入变量记录中(循环归档,每隔3秒归档一次),在“Picture2.PDL”画面中添加趋势控件,并结合变量模拟器进行仿真。
5.报警记录。
(15分)试题要求:在变量管理器的内部变量中建立名为warn、alarm二进制变量和warn_value、alarm_value浮点型变量。
在“Picture1.PDL”中利用IO域连接warn_value、alarm_value 设定警告和报警值,当Analog的值大于warn_value或alarm_value设定值时将warn或alarm置位,同时由warn或alarm触发报警记录,在“Picture2.PDL”画面中添加报警控件,在并结合变量模拟器进行仿真。
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退出运行系统的确定选择按钮”:时间:2021.02.12 创作人:欧阳化图一步骤:1、在画面添加按钮,按钮文本为“退出系统”。
2、双击按钮,对按钮进行C动作编辑,C代码如下所示:long Ret = IDNO;Ret = MessageBox(NULL, "您确实要退出 WinCC 运行系统么?","请确认", MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2 | MB_SYSTEMMODAL);if (Ret == IDYES)DeactivateRTProject ();当确定按钮按下后,将退出Wincc运行系统。
下面针对下图解释每个代码的作用:MB_SYSTEMMODAL对应上图;MB_YESNO对应上图中;MB_ICONQUESTION|对用上图中;另外由动态向导可自动生成以下C代码:步骤:1、在画面中添加按钮,选中按钮,点击动态向导中的“显示错误框”。
弹出组态对话框:“下一步”:“完成”。
这时打开按钮可见已对鼠标左键组态C动作,代码如下:MessageBox(NULL,"您确定要退出wincc运行系统吗?","Wincc_Deactivated?",MB_YESNO|MB_ICONQUESTION |MB_SETFOREGROUND|MB_SYSTEMMODAL);在此基础上添加相关判断语句,并添加退出WINCC运行系统的C代码即可实现图一的效果。
二、组态按钮调用“用户管理器”。
需实现效果如下:步骤:1、添加按钮到画面,按钮文本为“用户管理”。
2、添加C代码如下:WinExec( "Passcs.exe", SW_SHOWNORMAL );这里Passcs.exe才是用户管理器的可执行文件。
2、用户登陆界面制作:3、报警确认按钮制作:“OneLineMessage”为报警控件名称。
查看文章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置位复位按钮c
动作
Document number【AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG】
Wincc中做个按钮鼠标点击下置位,再点下复位,用c动作完成,简单语句如下(大家一起交流共同进步):
#include"apdefap.h"
voidOnClick(char*lpszPictureName,char*lpszObje ctName,char*lpszPropertyName)
{
BOOLZ;
Z=GetTagBit("TAG");
if(Z==0)SetTagBit("TAG",1);
else
SetTagBit("TAG",0);
}
**TAG:要置位复位的变量
用鼠标左键点击按钮弹出提示对话框(如比较重要的设备的启停,要用户二次确认),用c动作完成,简单语句如下:
#include"apdefap.h"
voidOnLButtonDown(char*lpszPictureName,char*lp szObjectName,char*lpszPropertyName,UINTnFlags, intx,inty)
{
if(MessageBox(NULL,"确认要停机吗?","警告", MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_S YSTEMMODAL)==IDYES)
{
SetTagBit("TAG",1);
}
return;
}
***"确认要停机吗?":提示语句,自己可以随意更改"警告":标题栏名称,自己随意更改。