在WinCC中如何使用间接变量

各位高手! 请教一个问题:
  我在WinCC中用WinCC Online Trend Control  组态了一个历史曲线的画面,在控件上设置了8个趋势,名称分别为 Pen1~Pen8,并为8个趋势连接8个内部变量Pen1PV~Pen8PV,我有组态了另一张制成画面,上面有很多变量,我需要实现的功能是当我点击制成画面上某个变量(a)连接的方框时,会弹出一个按钮,当我点击这个按钮时,就把制成画面上的变量(a)传给历史曲线上对应的变量 Pen1PV~Pen8PV   中的一个变量(假设Pen1PV),在历史曲线的画面上可以显示制成画面上变量(a)的曲线,请各位高手不吝赐教,谢谢!

问题补充:
谢谢两位的回答,我根据dcount107的回答修改了一下代码,修改后的代码如下:
 char szArchiveName[255];
 BOOL bRet;
 LINKINFO plink;
 int iRet;

 bRet = GetLink("HistoryTrend.pdl","TrendChart","OutputValue",&plink);
 sprintf(szArchiveName,"MEPSystem\\MEP1-F10-5C-TET0020-PV",plink.szLinkName);
 iRet=MessageBox(NULL,"是否设置?","提示",MB_OKCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
 if (iRet==IDOK)
 {
   SetPropWord("HistoryTrend.pdl","TrendChart","Index",0);
   SetPropChar("HistoryTrend.pdl","TrendChart","TagName",szArchiveName);
 }
 其中"HistoryTrend.pdl"是WinCC Online Trend Control 所在的画面名称,"TrendChart"是WinCC Online Trend Control 名称,MEPSystem\ 是归档名称,MEP1-F10-5C-TET0020-PV是我定义的内部变量,现有几个问题还想请教一下各位:
 1、当我点击执行此段代码的按钮时,HistoryTrend.pdl画面必须在画面中可见时才可以将内部变量MEP1-F10-5C-TET0020-PV加入历史曲线中显示,而实际操作时需要HistoryTrend.pdl画面是不可见的(即是在制成画面操作的)。
 2、当将内部变量MEP1-F10-5C-TET0020-PV加入历史曲线中显示,离开历史曲线的画面又重新进入时,前面加的内部变量MEP1-F10-5C-TET0020-PV又消失了,如何才能保持住?
 3、在实际操作时"MEPSystem\\MEP1-F10-5C-TET0020-PV"需要用变量取代(此变量的值要求是在执行此按钮前就已赋值了),请问该如何处理?

     以上三个问题,还请高手赐教,谢谢!

最佳答案

控制趋势控件主要是设置其Index和TagName属性。

  char szArchiveName[255];
  BOOL bRet;
  LINKINFO plink;
  int iRet;

  bRet = GetLink(lpszPictureName,lpszObjectName,"OutputValue",&plink);
  sprintf(szArchiveName,"ProcessValueArchive\\%s",plink.szLinkName);
  iRet=MessageBox(NULL,"是否设置?","提示",MB_OKCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
  if (iRet==IDOK)
  {
    SetPropWord(lpszPictureName,"TrendControl1","Index",0);
    SetPropChar(lpszPictureName,"TrendControl1","TagName",szArchiveName);
  }
  ------------------------------
 1、添加SetVisible使其可见。
 2、这个实现起来比较困难,需要将每个Index所对应的TagName都记录下来,然后在HistoryTrend.pdl打开时全部重载。
 3、szArchiveName既是变量,你的问题在于你所改写后的szArchiveName始终是MEPSystem\\MEP1-F10-5C-TET0020-PV,而不是MEPSystem\\XXXXXX。
 保存到变量用SetTagChar函数。

提问者对于答案的评价:
谢谢!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc274222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐