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

相关推荐

  • WINCC6.2与6.0有什么不同?

    具体一点 最佳答案 价格不同 提问者对于答案的评价:精辟 专家置评 数据库的差别是一方面,还有:运行系统中可以 用户自定义菜单和工具栏;借助新的“保存报表”功能,WinC…

    SIMATIC WinCC 2019年6月11日
  • wincc隐藏

    wincc的VBS如何让inputbox输入的时候为星号 钻石用户推荐最佳答案 inputbox实现不了,只能用IO域形式:1.建立按钮,按钮点击事件脚本:#include&nbs…

    SIMATIC WinCC 2020年11月1日
  • WinCC flexible 的首页显示不了“项目名称”

    打开WinCC flexible 2007的首页,鼠标指向“打开最新编辑过的项目”选项时,右侧的“项目”下面的区域一片空白,最新创建的“项目名称”也不会显示在此…

    SIMATIC WinCC 2017年7月26日
  • wincc6.0激活出错

    我在使用WINCC6.0中文版时,在做完几个画面激活时,总是提示Text library runtime,进度条走到33左右就不动了,看控制中心里文本库运行系统…

    SIMATIC WinCC 2019年6月11日
  • 请问提示我这个授权有问题,我的授权是7.1的;哪里可以下载对于版本的授权呢?谢谢

    请问提示我这个授权有问题,哪里可以下载对于版本的授权呢?谢谢我的授权是7.1,(光盘已经没有了) 最佳答案 WINCC没有7.1版本的啊是不是7.0SP1的?关于授权的使用参考:W…

    SIMATIC WinCC 2021年7月5日
  • WinCC 新建用户

    小弟第一次接触WinCC,很多东西都不太明白,但是在论坛上得到了很多高人的指导,先感谢一下。小弟现在有个关于用户的问题想请高人指点迷津:我在用户管理器里面创建了一个用户,现在老板想…

    SIMATIC WinCC 2019年6月11日
  • 用户归档作报表怎么查询一定时间范围内的归档数据?

    我用用户归档作一个报表,定点归档数据,比如1分钟通过全局脚本将数据归档,同时将当前时间转为字符串存到字符串变量一同归档。我的问题是我如果要在图形编辑器里作一个查询画面,作两个输入输…

    SIMATIC WinCC 2019年6月11日
  • 博途V15.1编写TP1900触摸屏的程序,如何编写小窗口

    在屏幕上有很多电磁阀的按钮,每次点击按钮图标,会弹出小窗口,提示是否要打开(或者关闭)电磁阀。点击打开/关闭电磁阀按钮后,该小窗口消失。请问,这个比较方便的做法是什么,博途有没有现…

    SIMATIC WinCC 2021年7月5日
  • WINCC AlarmControl 信息只显示1000条

    WINCC  AlarmControl 中的报警信息最多显示1000条,只能查询3-5天的时间,报警已归档,归档组态下图,为什么查1月以前不行 问题补…

    2021年7月5日
  • wincc C脚本问题for循环

    需要从用户归档里取上百个数据放到静态文本控件进行显示,因为要用webux,只能显示到静态文本。想用for循环给每个控件赋值,但没找到如何将整型转为字符串,只有字符串转整型的函数,有…

    SIMATIC WinCC 2020年11月1日

发表回复

登录后才能评论