像DCS一样为输出IO域带上曲线

已锁定

龟仙人

西门子1847工业学习平台

  • 帖子

    939
  • 精华

    15
  • 被关注

    147

论坛等级:奇侠

注册时间:2006-12-15

钻石 钻石 如何晋级?

像DCS一样为输出IO域带上曲线

4648

29

2022-03-28 10:31:03

star star star star star

如果在操作画面时想查看某个变量的变化趋势,如果去趋势画面查看要进行翻页,还要选择相应的曲线查询,如果在画面中直接点击输入输出域就能弹出曲线控件是不是就操作更方便了,我看到某个厂家的DCS就可以配置这项功能,于是我就琢磨一下,还真给实现了。

主要思路就是在画面中放一个趋势曲线控件,默认不显示,鼠标点击趋势曲线时,趋势曲线控件移动到鼠标附件,并加载对应的归档变量以及标题等信息,程序中做了判断如果当前IO域对应趋势曲线处于显示状态,再次点击时关闭显示。

下图为编辑模式:

运行模式:



输入输出域脚本如下:

#include "apdefap.h"

void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{

#pragma option(mbcs)

// WINCC:TAGNAME_SECTION_START

// syntax: #define TagNameInAction "DMTagName"

// next TagID : 1

// WINCC:TAGNAME_SECTION_END


// WINCC:PICNAME_SECTION_START

// syntax: #define PicNameInAction "PictureName"

// next PicID : 1

// WINCC:PICNAME_SECTION_END

int cmpvalue;

cmpvalue=strcmp(GetPropChar(lpszPictureName,"Trend","TagName"),"Archive\1TE201A_RT");//判断趋势曲线是否时当前输出域的曲线

if((cmpvalue==0)&&(GetVisible(lpszPictureName,"Trend")==1))//如果趋势曲线是当前曲线,且趋势曲线显示状态为真

SetVisible(lpszPictureName,"Trend",FALSE);//隐藏趋势曲线控件

else

{

SetVisible(lpszPictureName,"Trend",FALSE);//隐藏趋势曲线控件

SetPropChar(lpszPictureName,"Trend","Name","窑顶温度1TE201A");//设定曲线名称

SetPropChar(lpszPictureName,"Trend","TagName","Archive\1TE201A_RT");//设定归档变量

SetPropChar(lpszPictureName,"Trend","Caption","窑顶温度1TE201A");//设定趋势控件标题

SetPropChar(lpszPictureName,"Trend","Label","1TE201A");//设定曲线标签

SetLeft(lpszPictureName,"Trend",x-GetWidth(lpszPictureName,"Trend")/2);//设定趋势控件x方向显示位置

SetTop(lpszPictureName,"Trend",y+40);//设定趋势控件y方向显示位置

SetVisible(lpszPictureName,"Trend",TRUE);//显示趋势曲线控件

}

}


像DCS一样为输出IO域带上曲线 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有31502条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。