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日
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论