wincc function trend control显示趋势曲线问题

我是在plc300采集了正弦波信号的100个离散值(不断采集更新),储存在DB1中,通过原始数据类型变量传送给wincc,wincc通过编写c脚本对原始数据类型变量进行解包,将解包好的数据储存在内部变量DB_VAR1至DB_VAR100中(c脚本周期为250ms,会不断更新内部变量数据)。想用wincc自带的 winnc function trend control来画线,每个点的横纵坐标均由用户编写脚本程序自行设定。通过调用SetPropDouble函数修改“DataX”、“DataY”属性,调用SetPropBOOL函数执行插入数据点命令,将实时数据或历史数据用描点,连线的方式在控件中显现出来。wincc中图形编辑器结构如下图,通过在按钮的鼠标事件中添加c动作,实现单击按钮就在function trend control显示趋势曲线,c动作程序如下:
char Tag_Name[101]={NULL};
short int a[101];
int b[101];
int i;
int c=0;
for(i=0;i<101;i++)
{
sprintf(Tag_Name,"%s%d","DB_VAR",i);
}
for(i=0;i<101;i++)
{
a[i]=GetTagSWord("DB_VARi");
printf("%e\r\n",a[i]);
}
for(i=0;i<101;i++)
{
b[i]=c;
c=c+10;
printf("%e\r\n",b[i]);
}
SetPropBOOL(lpszPictureName,"trend","DeleteData",1);
SetPropWord(lpszPictureName,"trend","Index",0);
SetPropBOOL(lpszPictureName,"trend","Online",FALSE);
SetPropBOOL(lpszPictureName,"trend","Activate",FALSE);
SetPropBOOL(lpszPictureName,"trend","ItemVisible",1);
SetPropBOOL(lpszPictureName,"trend","AutoRangeY",0);
SetPropBOOL(lpszPictureName,"trend","AutoRangeX",1);
SetPropDouble(lpszPictureName,"trend","BeginY",-1.0);
SetPropDouble(lpszPictureName,"trend","EndY",1.0);
for(i=10;i<101;i++)
{
SetPropDouble(lpszPictureName,"trend","DataX",b[i]/100);
SetPropDouble(lpszPictureName,"trend","DataY",a[i]/100);
SetPropBOOL(lpszPictureName,"trend","InsertData",1);
}
SetPropBOOL(lpszPictureName,"trend","Online",1);
SetPropBOOL(lpszPictureName,"trend","Activate",1);
但在激活wincc后,单击按钮发现没有显示趋势曲线,我怀疑是我的程序编写错误,没有调用到内部变量DB_VAR1至DB_VAR100。或说是别的错误导致的,麻烦各位大佬帮忙解决一下(最好是在原程序上修改),非常感谢。
注:其实我希望显示曲线如下图,但我x轴不会设置,希望各位大佬能在我的程序的基础上修改对x轴的设置,使其可以显示如图。

问题补充:
看了大佬的文件,修改了程序(如下图,不能再直接复制程序上了了,不然太长发不出去)加入全局脚本诊断,结果如下,是不是我没在相应的地方加printf才出现如图效果的,还是那是错误显示,看不懂图片的意思。还有这段程序
for(i=0;i<101;i++)
{
sprintf(Tag_Name,"%s%d","DB_VAR",i);
a[i]=GetTagSWord("DB_VARi");
起没起将内部变量的值放入c脚本变量中的作用?我记得当初就是RENHQ大佬你回答的要用sprintf将DB_VAR和i连起来道一个字符串数组的,我改成这样后,效果实现了吗?希望大佬再帮忙解决一下,先多谢大佬了。

图片说明:

wincc function trend control显示趋势曲线问题    wincc function trend control显示趋势曲线问题    wincc function trend control显示趋势曲线问题    wincc function trend control显示趋势曲线问题    wincc function trend control显示趋势曲线问题   

最佳答案

使用脚本诊断,看看是不是脚本有问题
脚本诊断的使用参考:
WINCC脚本学习-一-脚本调试
https://mp.weixin.qq.com/s/rmvAG3Ch_XdORNltpV5nsg
补充:
脚本诊断里面有错误,找不到那个变量
看附图改改试试

图片说明:

wincc function trend control显示趋势曲线问题  

提问者对于答案的评价:
非常感谢大佬,虽然问题还是没有解决,将DB_VARi改成Tag_Name后出现一样状况,但大佬让我知道了还有这种方法寻找错误,还是非常感谢大佬的,我会再发一次,希望大佬还能来帮忙解决。

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

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

相关推荐

  • 关于Wincc中方法的应用

    我刚接触Wincc,想知道一下Wincc中Function到底怎么用,其实就是想自己用vbs编写一个方法,然后调用(请用vbs)。不知道有谁能指点一下,以一个最简单的例子为例,如何…

    SIMATIC WinCC 2019年6月11日
  • wincc多个画中画(画面窗口)怎么置顶?

    我在一个画面中设置了多个画中画(画面窗口),运行起来发现每个画面窗口只要一点击就置顶了,怎么才能让想要的画面置顶呢?鼠标点击也不会改? 最佳答案 组态时,每个画面窗口控件都有一个“…

    SIMATIC WinCC 2019年6月11日
  • 控制窗口中静态文本脚本赋值

    在工艺流程图中通过点击按钮来弹出电机控制窗口,在电机控制窗口中有静态文本对象,用脚本如何实现静态文本显示如"M11电机"文本信息呀,我是多台电机调用同一控制窗口…

    SIMATIC WinCC 2019年6月11日
  • 在西门子中@currentuser与@currentusername有什么区别,用户组又对应内部哪个变量

    在西门子中@currentuser与@currentusername有什么区别,用户组又对应内部哪个变量 最佳答案 1、如果要在 WinCC 项目中的过程画面或…

    SIMATIC WinCC 2021年7月5日
  • 西门子触摸屏单击按钮发个脉冲

    西门子精致触摸屏能不能做个通用的脉冲按钮,就是按下去后一直保持接通状态,等5S左右后自复位。 钻石用户推荐最佳答案 与plc联合起来可以做到。将这个按钮按下,函数setbit,通过…

    SIMATIC WinCC 2021年7月5日
  • wincc浮点数是实际10倍

    WINCC读取AB-PF40P变频器数据,数据类型为浮点数32位IE754,但是显示出来十进制确是实际的10倍,请问怎样才能正常显示?写数据也要10倍数值。 问题补充:可以在WIN…

    SIMATIC WinCC 2019年6月11日
  • WINCC报表中的数据如何导入到EXCELL?

    我在WINCC中有一报表,如何将报表中的数据导入到EXCELL中?? 最佳答案 通常情况下,数据进Excel是需要脚本的,大家常用的是vbs脚本。先搞清楚报表中的数据来自哪里,可能…

    SIMATIC WinCC 2021年7月5日
  • Wincc教材

    请问Wincc教材谁写得比较好,能否推荐几本?? 最佳答案 我觉得《深入浅出—西门子WinCC》不错,尤其是带的光盘里还有视频讲解,详细的讲解了一个实例。很容易理解。网上买一般都打…

    SIMATIC WinCC 2019年6月11日
  • WINCC V6.2字体问题

    用WINCC V6.2中文版 打开6.0英文版的项目组态画面 所有汉字全部是??  把视图里的字体改成英语 显示正常&n…

    SIMATIC WinCC 2019年6月11日
  • WINCC和S7-200的通讯难题!

    做了个系统,WINCC和6台S7-200通讯,通讯用了CP243-1,软件用了PC ACCESS的OPC,发现通讯很慢,一个轮回要13-14秒,而且还是一个一个的读写,不…

    SIMATIC WinCC 2019年6月11日

发表回复

登录后才能评论