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 勾选报警记录和变量记录就无法激活

    现场WINCC5.1+STEP5.2,新装的系统,勾选如上两个选项就无法激活。。 已经安装STEP7盘里的WINCC HOTFIX,现场工程中不存在中文字符。 …

    SIMATIC WinCC 2019年6月11日
  • 触摸屏能与wincc上位机直接通信吗?

    想在触摸屏上通过设置按钮或者相应的操作来直接调用上位机wincc中存储的数据信息并在屏上显示,可以直接实现吗,还是必须得通过plc才能实现通信和数据传输 最佳答案 不可以直接实现,…

    SIMATIC WinCC 2021年7月5日
  • wincc智能对象中没有“画面窗口”对象,怎么办

    wincc智能对象中没有“画面窗口”对象,怎么办?想做一个小画面的 问题补充:其他的都有的  控件 OLE元素 输入输出域—–组显示 …

    SIMATIC WinCC 2019年6月11日
  • wincc 7.0 用位取反做报警

    wincc 7.0 sp1,用无符号32位变量其中的一个位来表示限位开关的开到位,我现在准备在报警空间里做关到位报警,怎么做才简便,求各位大神指点 最佳答案 请…

    2021年7月5日
  • wincc连接故障错误代码410E

    两台上位机与315-2DP通讯,原来一台上位机与315通讯一点问题没有,后来新加了一台上位机,两台机器都是走MPI与315通讯,新加的这台通讯总是时断时续,查看wincc连接故障错…

    SIMATIC WinCC 2019年6月11日
  • WinCC 画面复制出现??

    在自己电脑上独立打开都没有问题的项目.当我把项目1的画面复制到项目2的GraCS,,并在项目2中打开该画面时,该画面文字变成???了,有解决方法没?.请大侠帮忙,谢谢 最佳答案 1…

    SIMATIC WinCC 2019年6月11日
  • WINCC 如何使用IO域弹出数字输入键盘

    好像要写脚本,不用脚本能不能行 最佳答案 查看:WinCC 信息系统(帮助)——使用 WinCC——创建过程画面——运行系统中的过程画面——虚拟键盘 提问者对于…

    SIMATIC WinCC 2020年11月1日
  • 博图用PLC,HMI仿真时,提示链接中断代号190011

    原来仿真是正常,今天再次仿真时,HMI显示链接中断。不得其要领,希望高手给个解决办法。PLC仿真监控正常。 问题补充:经过N次试验,刚打开本本,马上用博图仿真HMI,大部分正常。若…

    SIMATIC WinCC 2017年6月1日
  • 网线最远能连接多远

    车间办公室想监控中控操作画面,从中控室直接拉网线过去的话可能有70~80米的样子,那样的话还能行不?有没有另外好的方法?另外有一条生产线用的是PLC至服务交换机,服务交换机至2台服…

    SIMATIC WinCC 2019年6月11日
  • 编程线和运行时的通信线能够通用吗?

    上位机wincc和下位机s7—300plc之间的编程线和运行时的通信线能够通用吗?主要是我现在只有编程线 最佳答案 我以前专门询问过西门子的技术支持,答复是这样的:我们不建议你用编…

    SIMATIC WinCC 2017年11月4日

发表回复

登录后才能评论