wincc趋势曲线显示问题的请教

我按照《上_下位机数据高速通讯方法及其在大型锻压机中的应用》这篇期刊论文里的思路做一个高速数据采集系统,前面的各个部分在学习查资料及各位大佬的问答帮助下顺利完成,但到了使用wincc function trend control显示趋势曲线时,论文里是通过编写c脚本来显示趋势曲线的(论文没给出具体的程序,只是告诉用那几个函数可以达到效果)。我编写了程序,在各位大佬的帮助下终于将脚本错误修改完了,也能显示趋势曲线了(虽然曲线有点怪但这个问题我会解决的,图片如下),但是我还是想向论文显示的曲线靠近(论文中信号源周期T=1s时的趋势曲线如下图)。我想不明白,论文中同样是每次从plc300中传送采集的100个数据到wincc的原始数据类型变量中(plc中ob35周期为10ms,采集周期为1s的正弦波,100个数据正好组成一个周期的正弦波),再通过编写全局脚本对原始数据类型变量进行解包,将数据储存在对应的100个内部变量中。
只有那100个数据作为y轴数据,x轴数据还要自己定义,论文是怎么编写的c脚本能做到连续显示多个周期的曲线呢?它的x轴又是怎么设置的呢?我的程序如下图,我这个程序只能显示出一个周期的曲线,怎么做才能达到论文效果呢?不知道大佬们能理解我的意思吗,请求大佬们回答一下,非常感谢。

问题补充:
非常感谢RENHQ大佬,又是您来回答,非常感谢。但是可能我表达的不好,您没有理解我的问题(可以的话大佬再仔细看一看问题)。首先我必须要用DB_VAR1至DB_VAR100这100个内部变量(这是要求),我的采集数据在里面,将内部变量按顺序插入就可以得到曲线,我的程序不就可以达到这个效果吗,虽然不知道什么原因显示图形有些怪,但大不了我再模仿您给的程序用变体类型VARIANT来显示,我也会修改。
因为plc300中ob35周期为10ms,采集的正弦波周期为1s,所以要显示一个周期的曲线要100个数据,正好100个内部变量能装满,正好显示一个周期的曲线,对于周期小于1s的正弦波信号显示一个以上的周期的曲线也没问题。但我还要采集一个周期为2s和周期为4s的正弦波,那我的程序就无法一次显示整个周期的曲线。因此我才想像论文一样能一次显示出5个周期为1s的曲线(如我发的论文显示曲线图效果),但怎么做呢,我的程序和大佬您给的程程序都无法做的(一次没有那么多数据),求大佬帮帮我,非常非常感谢。

图片说明:

wincc趋势曲线显示问题的请教    wincc趋势曲线显示问题的请教    wincc趋势曲线显示问题的请教   

最佳答案

我的天呐,你还没搞定啊
我没事做了一个用这个显示正玄波的曲线,全部脚本:
#define TRENDNAME  "TREND_OLDXY" //曲线控件名称
 double Y_Values[90] ; // Y轴数据
 VARIANT vtDataX, vtDataY;
 int i;
 SetOperation(lpszPictureName,lpszObjectName,FALSE); //本按钮不允许操作
 for(i=0;i<90;i++)  //生产正玄波曲线,采用90个点
 {
  Y_Values[i]=50.0+50.0*sin(3.1815926/180.0*i*4);
 }
 //初始化variant.变量
 VariantInit( &vtDataX );
 VariantInit( &vtDataY );
 // 设置曲线索引,并清除曲线数据
 SetPropBOOL( lpszPictureName, TRENDNAME, "Index", 0);
 SetPropBOOL(lpszPictureName,TRENDNAME,"DeleteData",TRUE);
 // X坐标属性设置
 SetPropBOOL(lpszPictureName,TRENDNAME,"AutorangeX",FALSE);
 SetPropDouble(lpszPictureName,TRENDNAME,"BeginX",0);
 SetPropDouble(lpszPictureName,TRENDNAME,"EndX",360);

 // Y坐标属性设置
 SetPropBOOL(lpszPictureName,TRENDNAME,"AutorangeY",FALSE);
 SetPropDouble(lpszPictureName,TRENDNAME,"BeginY",0);
 SetPropDouble(lpszPictureName,TRENDNAME,"EndY",100);
 //开始插入输入
 for( i =0; i < 90; i++ )
 {
  // 填充X轴和Y轴的数据
  vtDataX.vt = VT_R8;
  vtDataX.u.dblVal = i*4.0; // X-value
  vtDataY.vt = VT_R8;
  vtDataY.u.dblVal = Y_Values[i]; // Y-value

  // 设置X轴数据属性
  PDLRTSetPropEx( PDLRT_AM_DEFAULT, lpszPictureName, TRENDNAME, "DataX", VT_VARIANT, (void*)&vtDataX, NULL, NULL, 0, NULL, NULL );

  // 设置Y轴数据属性
  PDLRTSetPropEx( PDLRT_AM_DEFAULT, lpszPictureName, TRENDNAME, "DataY", VT_VARIANT, (void*)&vtDataY, NULL, NULL, 0, NULL, NULL );

  // 插入X/Y轴数据
  SetPropBOOL( lpszPictureName, TRENDNAME, "InsertData", TRUE );
  //清空内容
  VariantClear( &vtDataX );
  VariantClear( &vtDataY );
 }
 // 设置本按钮可操作
 SetOperation(lpszPictureName,lpszObjectName,TRUE);

运行结果看附图
参考的是:
自定义 XY 轴的多功能曲线的实现方法
https://support.industry.siemens.com/cs/cn/zh/view/77467629
补充:
你参考一下这个文档:
WinCC 高速数据采集的实现
https://support.industry.siemens.com/cs/cn/zh/view/79544473

提问者对于答案的评价:
感谢大佬了,只可惜我这个必须用plc300做,plc300没有sfb37(AR_Send)系统功能块,这些我在前期查资料时就知道了,不过还是感谢大佬的热心回答,我自己再摸索下吧。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午2:02
下一篇 2021年7月5日 上午2:02

相关推荐

  • 关于用户归档表格和在线表格控件的问题

    本人接触wincc时间不长,正在做的项目需要对一些变量进行归档(按钮触发能实现么?方法如何?),以及归档后显示(表格显示),所以需要用到表格控件。但是在设计时软件中只有wincc&…

    SIMATIC WinCC 2019年6月11日
  • STEP 7集成的WINCC项目打不开?

    请教各位STEP 7集成的WINCC项目打不开,提示the project was created with an&nb…

    SIMATIC WinCC 2021年7月5日
  • WINCC online table/trend control控件异常

    异常主要表现在: 1、 这两个控件只在一个项目中不好用,在别的项目中就可以正常使用。(同一台电脑,所以wincc控件安装是没有问题的) 2、打开时很慢…

    SIMATIC WinCC 2019年6月11日
  • WINCC EXCLE报表例子

    有WINCC EXCLE报表例子吗,我想试验一下,能给我传一个吗,我的油箱是huanghong198122@sina.com 最佳答案 这里有一个例子可供参考 …

    SIMATIC WinCC 2019年6月11日
  • wincc和STEP7的安装

    各位老大,小弟我为什么装了WINCC再装STEP7结果连操作系统都进不去,反过来也是一样。要是单独安装一个用着都没问题,就因为这系统也换过,还是不行。难道是笔记本的原因?要说电脑配…

    SIMATIC WinCC 2019年6月11日
  • wincc 日月年报表

    大家好! 有个项目,组态软件用wincc7.3,客户对报表的要如下:有三种报表格式,分别是日报表、月报表、年报表。    &nbs…

    SIMATIC WinCC 2021年7月5日
  • Wincc7.5打不开项目,报找不到服务器,急!

    wincc7.5 打开Wincc7.2项目,打不开。移植的时候报是最新的,不需要移植。 钻石用户推荐最佳答案 按下列步骤检查,没准你第一步就没完成哦: &nbs…

    SIMATIC WinCC 2020年11月1日
  • WINCC的VBS的按钮代码分析

    一个新手编的2个按钮代码: 第一个按钮按下去后出现小画面,再按第二个按钮,给B赋1;松开0; 第一个按钮: Dim  motor_…

    SIMATIC WinCC 2019年6月10日
  • wicc中的结构变量是咋回事?

    wicc 中的结构变量如何使用?有什莫优点? 最佳答案 举个例子,您需要添加20台电机,每台电机有3个输入(启动按钮、停车按钮、过载信号),2个输出(电机接触器、运行指示…

    SIMATIC WinCC 2019年6月11日
  • 上载子程序还是显示不一致

    用博图软件在线,发现不一致的子程序,上载后还是出线不一致的图标,上载时发生冲突,什么使用不同名称插入 图片说明:       钻石用户推荐最…

    2020年11月1日

发表回复

登录后才能评论