WINCC函数.docx

上传人:b****8 文档编号:9872275 上传时间:2023-02-07 格式:DOCX 页数:23 大小:410.78KB
下载 相关 举报
WINCC函数.docx_第1页
第1页 / 共23页
WINCC函数.docx_第2页
第2页 / 共23页
WINCC函数.docx_第3页
第3页 / 共23页
WINCC函数.docx_第4页
第4页 / 共23页
WINCC函数.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

WINCC函数.docx

《WINCC函数.docx》由会员分享,可在线阅读,更多相关《WINCC函数.docx(23页珍藏版)》请在冰豆网上搜索。

WINCC函数.docx

WINCC函数

1.切换画面按钮

#include"apdefap.h"

voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty)

{

SetPictureName(lpszPictureName,"PictureWindow1","HS_MODE.Pdl");//设定PictureWindow1填充为页面HS_MODE.Pdl

SetTagChar("TT","操作模式");//Return-Type:

BOOL//设定字符串变量TT当前值为“操作模式”以显示页眉

}

2.设定BIT变量当前值

SetTagBit("N3_VALVE_RESET",0);

3.取当前登陆用户@CurrentUser

4.取硬盘剩余容量

5.以图像模式显示(灯、钮)等

智能对象\状态显示

选透明颜色

6.自定义对象

C动作

#include"apdefap.h"

voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty)

{

Valve(lpszPictureName,lpszObjectName);//Return-Type:

void

}

全局脚本\项目函数

voidValve(char*lpszPictureName,char*lpszObjectName)

{

char*Tagname=GetPropChar(lpszPictureName,lpszObjectName,"ObjectName");//设TAGNAME当前值为N3_HS_A

char*TitleName=GetPropChar(lpszPictureName,lpszObjectName,"TITLE");//设TITLENAME当前值为热风炉自动

char*Name=GetPropChar(lpszPictureName,lpszObjectName,"PICNAME");//设NAME当前值为QD_BUTTON

char*DIS=GetPropChar(lpszPictureName,lpszObjectName,"DIS");//设DIS是否显示,本变量空用于下面的阀函数

staticBOOLvisble;//声明BOOL量VISBLE

longlLeft;//声明常整数1LEFT,用于弹出框的左上角

longlTop;

BOOLBool=TRUE;//声明BOOL量BOO1为真

LINKINFOlinkinfo;//Structuredefinition结构定义

visble=TRUE;//设VISBLE当前值为真

//lLeft=599;

//lTop=327;

lLeft=GetLeft(lpszPictureName,lpszObjectName)+50;//1LEFT当前值为当前页面的当前对象的左坐标+50,注意不是VALUE的值而是当前对象按钮“热风炉自动”

lTop=GetTop(lpszPictureName,lpszObjectName);//1TOP当前值为当前页面的当前对象的上坐标

if(lLeft<20)//限制坐标范围

{

lLeft=20;

}

if(lLeft>1240)

{

lLeft=1240;

}

if(lTop>200)

{

lTop=200;

}

if(lTop<20)

{

lTop=20;

}

SetLeft(lpszPictureName,"value",lLeft);//设定当前页面中画面窗口VALUE的左上角坐标

SetTop(lpszPictureName,"value",lTop);

SetPictureName(lpszPictureName,"value",".PDL");//设定当前页面中画面窗口VALUE填充页面为.PDL

PDLRTSetPropEx(0,lpszPictureName,"value","Visible",VT_BOOL,&visble,NULL,NULL,0,NULL,NULL);//设定VALUE的一些属性,帮助里未查到,待查

SetPropChar(lpszPictureName,"value","CaptionText",TitleName);//设定VALUE的CAPTIONTEXT为热风炉自动

SetPropChar(lpszPictureName,"value","TagPrefix",Tagname);//为VALUE中所有变量增加前缀N3_HS_A

SetPropChar(lpszPictureName,"value","PictureName",Name);//为VALUE填充页面为QD_BUTTON

SetPropChar(Name,"text","Text",Tagname);//为当前页面名字叫TEXT的TEXT属性设定为TAGNAME的当前值,本项目用于阀函数

SetPropChar(Name,"Button4","Visible",DIS);//为当前页面名字叫BUTTON4的VISIBLE属性设定为DIS的当前值,本项目用于阀函数,下同

SetPropChar(Name,"Button5","Visible",DIS);

SetPropChar(Name,"Button10","Visible",DIS);

SetPropChar(Name,"Button11","Visible",DIS);

}

画面窗口定义如下:

QD_BOTTON页面定义如下:

其中确定按钮定义如下:

动作按下置1,抬起置0

取下按钮为关闭当前窗口

阀门

自定义对象

C脚本

#include"apdefap.h"

voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty)

{

Valve(lpszPictureName,lpszObjectName);//Return-Type:

void

}

页面VALVE_FUNCTION_STAME如下

其中设备名称定义为TEXT,取的即为OBJECTNAME,本例中为N3_SV101

其中远程等状态灯显示为结构变量后缀.XXX

其中打开、关闭等按钮(未知是否需要确定取消),本例中是这样实现的,以打开按钮为例:

实际上本例中打开按钮有2个重叠在一起

下面的打开按钮(黑色边框)控制实际的IO后缀:

上面的打开按钮的可见性由DIS变量的当前值确定,若DIS为真,则蓝色边框打开按钮可见,蓝打开按钮(BOTTON4)控制PIC1可见

8

PIC1填充为OPEN页面

OPEN页面如下:

其中确定按钮为BOTTON8,因所有变量前缀已赋值,则确定按钮仍连接实际IO后缀,同黑色打开按钮。

7.OK返回值

本例中如此操作有些繁琐,对于需要确认的按钮可以用OK返回值实现,则简便许多,代码如下:

#include"apdefap.h"

voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)

{

intret_val;

ret_val=MessageBox(NULL,"你确定要顺启流程吗?

","请确认此动作",MB_OKCANCEL|MB_SETFOREGROUND|MB_SYSTEMMODAL);

if(ret_val==1)SetTagBit("FLOW.STR_FM",1);

}

8.小键盘

,有时候操作人员不希望用键盘操作而是希望用鼠标操作,如图:

其中绿色为输出值:

1、2、3~.按钮的C脚本一样就是对象名称不同,对象名称为当前按钮:

C脚本如下:

#include"apdefap.h"

voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)

{

char*A=GetPropChar(lpszPictureName,"TAG","TEXT");

char*B=GetPropChar(lpszPictureName,lpszObjectName,"ObjectName");

strcat(A,B);

SetPropChar(lpszPictureName,"TAG","TEXT",A);

}

空白域定义为TAG,无脚本

确定按钮将TAG赋给SP,C脚本如下:

#include"apdefap.h"

voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)

{

char*A=GetPropChar(lpszPictureName,"TAG","TEXT");

SetTagChar(".SP",A);

SetPropChar(lpszPictureName,"DIS","OutputValue","1");

}

取消按钮清空TAG,代码如下:

#include"apdefap.h"

voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)

{

SetPropChar(lpszPictureName,"TAG","TEXT","");

}

9.PID传递页面C脚本

附录PID传递页面C脚本:

voidPID(char*lpszPictureName,char*lpszObjectName)

{

char*Tagname=GetPropChar(lpszPictureName,lpszObjectName,"ObjectName");

char*TitleName=GetPropChar(lpszPictureName,lpszObjectName,"TITLE");

char*Name=GetPropChar(lpszPictureName,lpszObjectName,"PICNAME");

char*MAX=GetPropChar(lpszPictureName,lpszObjectName,"MAX");

char*MIX=GetPropChar(lpszPictureName,lpszObjectName,"MIX");

char*UNIT=GetPropChar(lpszPictureName,lpszObjectName,"UNIT");

char*PV=GetPropChar(lpszPictureName,lpszObjectName,"PV");

char*SP=GetPropChar(lpszPictureName,lpszObjectName,"SP");

char*Out=GetPropChar(lpszPictureName,lpszObjectName,"OUT");

char*In=GetPropChar(lpszPictureName,lpszObjectName,"IN");

char*MANUAL_SP=GetPropChar(lpszPictureName,lpszObjectName,"MANUAL_SP");

//char*PID=GetPropChar(lpszPictureName,lpszObjectName,"PID");

staticBOOLvisble;

longlLeft;

longlTop;

BOOLBool=TRUE;

LINKINFOlinkinfo;

visble=TRUE;

lLeft=50;

lTop=50;

//lLeft=GetLeft(lpszPictureName,lpszObjectName)+50;

//lTop=GetTop(lpszPictureName,lpszObjectName);

//if(lLeft<20)

//{

//lLeft=20;

//}

//if(lLeft>840)

//{

//lLeft=840;

//}

//if(lTop>500)

//{

//lTop=500;

//}

//if(lTop<20)

//{

//lTop=20;

//}

SetLeft(lpszPictureName,"value",lLeft);

SetTop(lpszPictureName,"value",lTop);

SetPictureName(lpszPictureName,"value",Name);

PDLRTSetPropEx(0,lpszPictureName,"value","Visible",VT_BOOL,&visble,NULL,NULL,0,NULL,NULL);

SetPropChar(lpszPictureName,"value","CaptionText",TitleName);

SetPropChar(lpszPictureName,"value","TagPrefix",Tagname);

SetPropChar(lpszPictureName,"value","PictureName",Name);

SetPropChar(Name,"text","Text",Tagname);

SetPropChar(Name,"IO1","OutputValue",MAX);

SetPropChar(Name,"IO2","OutputValue",MIX);

SetPropChar(Name,"IO3","OutputValue",UNIT);

SetPropChar(Name,"IO4","OutputValue",PV);

SetPropChar(Name,"IO5","OutputValue",SP);

SetPropChar(Name,"IO6","OutputValue",Out);

SetPropChar(Name,"IO7","OutputValue",In);

SetPropChar(Name,"IO8","OutputValue",MANUAL_SP);

}

10.将变量B的值赋给变量A(无符号16位)

#include"apdefap.h"

voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)

{

SetTagWord("A",GetTagWord("B"));

SetTagWord("TOPP2_E_TOP_SYS_STOP",0);

SetTagWord("TOPP2_E_TOP_SYS_RUN",1);

}

11.乒乓键

#include"apdefap.h"

voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)

{

//Return-Type:

BOOL

BOOLbstate;

//Getthecurrentstateofthetag

bstate=GetTagBit("TOPP2_E_r_SEL");

if(bstate)

{

SetTagBit("TOPP2_E_r_SEL",0);

}

else

{

SetTagBit("TOPP2_E_r_SEL",1);

}

}

另一种:

SetTagBit("DEN_20",1-GetTagBit("DEN_20"));

12.C脚本、脉冲延时

在wincc 实现延时,比较浪费资源,不建议这么做。

按钮按下输出个3秒的脉冲

void delay(int tm)

{

time_t t1,t2;

double tt;

time(&t1);

for(;;)

 {

 time(&t2);

 tt=difftime(t2,t1);

 if (tt>=tm)

  break;

 }

}

在C脚本调用

SetTagBit("变量",1);

delay(60);//60为时间 自己设定

SetTagBit("变量",0);

13.CONFIGURATIONTOOOL

功能:

修改结构变量、EXCEL导入报警、趋势标签,WINCC安装盘自带。

14.用“笔组”实现一张页面做趋势

增加内部标签(支持多项目复制、粘贴)

TagTrendType:

用于替换笔组当前值

CurrentPage、PreviousPage:

用于显示当前页面及后退到上幅页面,和本例关系不大

复制全局脚本VBSGlobal.bmo,支持多项目复制粘贴

查找字符串“mainscreen”,替换为自己项目的主页面名

在自己项目的主页面增加页面窗体PictureWindow4\PictureWindow5,填充页面为空,将主窗体页面重命名为PictureWindow3

拷贝趋势页面S_Trend.PDL到当前工程。

定义笔组,如:

IfObjTag.Value="Speed_Strand1"Then

AddTrendTrendObj,"1.Strand4ActualCastingSpeed","WD_Act_Speed_4",RGB(0,0,0),0,5

AddTrendTrendObj,"2.Strand45#WithdrawalActualPressure","WD5_Pressure_Actual_4",RGB(255,0,0),0,20

AddTrendTrendObj,"3.Strand45#WithdrawalActualGap","WD5_Gap_Actual_4",RGB(0,128,0),200,450

AddTrendTrendObj,"4.Strand45#WithdrawalSetGap","WD5_Gap_Set_4",RGB(0,0,255),200,450

EndIf

上例中,笔组名称为"Speed_Strand1",其中包括4只笔,以第一只为例,其中

"1.Strand4ActualCastingSpeed"为WINCC显示的描述项,支持中文。

"WD_Act_Speed_4":

为变量标签。

RGB(0,0,0):

为笔颜色,三原色

0,5:

为WINCC显示时Y轴量程,X时间轴不需要定义,在S_TREND中已有。

笔组最少一只笔,最多9只笔。

在画面增加按钮调用笔组"Speed_Strand1":

SubOnClick(ByValItem)

MyShowTrend("Speed_Strand1")

EndSub

另:

VBS中多段代码取当前登陆用户名,若为空则MESSAGEBOX,故使用时需用个用户名登陆。

因使用了全局脚本,故测试时只运行当前页面则无法实现趋势功能,必须整个项目运行且勾选“全局脚本运行系统”才能看到效果

15.滑竿,SLIDERCONTROL的使用

1、在控件里调用WINCCSLIDERCONTROL,界面比较友好,但不能直接关联TAG变量,需要脚本如下:

DimSlider

SetSlider=ScreenItems("SliderCtrl")

HMIRuntime.Tags("tag").WriteSlider.Position

把代码写在控件的“事件”下的“对象事件”下的“change”事件里便可以改变了!

其中SliderCtrl是OCX控件WINCCSLIDERCONTROL的名称,tag是wincc变量

2、使用标准\窗口对象\滚动条对象,可直接关联变量标签

16.切换语言

SETLANGUE(0X0404);中文

SETLANGUE(0X0409);英文

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1