我们在做WINCC程序的时候对一些通用设备一般都做一个公共画面,比如说电机、阀门、变频器等。公共画面的做法较多,我总结了一下有4种方法:
1.变量前缀,我们在做公共画面的时候,画面中连接变量只使用后缀名称,如:PV(过程值变量),Drv(驱动输出变量)。为调试方便,可以先在内部变量中建立Pv、Drv变量。当我们在主画面中使用时,先放入一个Picture window对象,设置对象属性画面名称为公共画面的名称。然后再画面电机图形上生成按钮点击事件输入如下代码:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
SetVisible(lpszPictureName,"vfd_window",1);//显示Picture window
SetText("Std_Vfd.PDL","InstanceName1","MF1102");
SetTagPrefix(lpszPictureName,"pic_window", "MF1102_MM440_ST. ");//这里MF1102_MM440_ST定义成结构变量
}
2.使用Setlink函数,在做公共画面时,公共画面里的对象不连接变量,当主画面调用公共画面时给公共画面名称(静态文本)赋设备名称文件:
以下代码放在公共画面名称对象的属性改成事件中
void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, char* value)
{
char TagName[260];
char PropertyName[260];
char FilterSQL[260];
int index;
LINKINFO linkinfo;
linkinfo.LinkType = 1;
linkinfo.dwCycle = 3;
strcpy(TagName, GetText(lpszPictureName,"TagName"));
sprintf(linkinfo.szLinkName, "%s.EventState", TagName);
SetLink(lpszPictureName, "GroupDisplay", "CollectValue", &linkinfo);
sprintf(linkinfo.szLinkName, "%s.MW", TagName);
SetLink(lpszPictureName, "MEETW", "OutputValue", &linkinfo);
}
一贴太长了,分开发了,呵呵,不是为了挣积分哦