想要将内部变量中的数据在wincc function trend control中显示为一条曲线,wincc图形编辑器结构如下图,function trend control用于显示曲线,通过在按钮的鼠标事件中编写c脚本,实现单击按钮start就开始显示曲线,具体程序如下
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);
a[i]=GetTagSWord(Tag_Name);
b[i]=c;
c=c+10;
}
printf("OJBK\n");
SetPropBOOL(lpszPictureName,"trend1","DeleteData",1);
printf("MEIWENTI\n");
SetPropWord(lpszPictureName,"trend1","Index",0);
SetPropBOOL(lpszPictureName,"trend1","Online",FALSE);
SetPropBOOL(lpszPictureName,"trend1","Activate",FALSE);
printf("zhengque\n");
SetPropBOOL(lpszPictureName,"trend1","ItemVisible",1);
SetPropBOOL(lpszPictureName,"trend1","AutoRangeY",0);
SetPropBOOL(lpszPictureName,"trend1","AutoRangeX",1);
SetPropDouble(lpszPictureName,"trend1","BeginY",-1.0);
SetPropDouble(lpszPictureName,"trend1","EndY",1.0);
for(i=0;i<101;i++)
{
SetPropDouble(lpszPictureName,"trend1","DataX",b[i]/100);
SetPropDouble(lpszPictureName,"trend1","DataY",a[i]/100);
SetPropBOOL(lpszPictureName,"trend1","InsertData",1);
printf("SHIFUCHUWENTI\n");
}
SetPropBOOL(lpszPictureName,"trend1","Online",1);
SetPropBOOL(lpszPictureName,"trend1","Activate",1)
这程序是我在上个问答后修改过的,原本程序如下图(或可查看我上个问答),原程序出现的问题如下,在上个问答中已经有两位大佬告诉我是trend1的某个属性我写错了才导致的错误。RENHQ大佬还给出了查错方法:把前面正常的printf先注释掉,然后在下面加printf,看看程序是那一句出现的问题。可以先隔上几行加一个,先缩小范围再一行一个这样就能找到哪一句的问题了。
所以我加了如上面程序的四个printf,然后激活程序情况如下。四个printf的内容都在全局脚本-诊断中显示出来了,按我的理解是导致错误的那句程序下面的程序就无法起作用,printf中的内容就无法显示在全局脚本-诊断中,但这四个printf一显示我就不知道错误在哪了,是不是我理解错误了大佬说的查错方法?如果理解错了,正确的方式是哪样,请各位大佬说得详细一点,非常感谢。
问题补充:
好的大佬,如果我这次还没有解决问题我就去论坛发个帖。回到问题,这次为了一次性找出错误,我对程序进行了如下图的修改,这次我加入了大量的printf进行查错,printf中输出WENTI1至WENTI15,方便迅速找到错误程序句。激活wincc后,如我所料,几乎所有的程序都出错了(全局脚本-情况如下,部分,应为WENTI11至WENTI13在for循环里,重复出现,太长了就截取我最在意的部分),但是奇怪的是WENTI3和WENTI4是连着显示出来的(如最新全局脚本-诊断情况图所示),说明它们之间的那句程序没错,这我就奇怪了,如果按RENHQ大佬您说的是对象名搞错了的话应该是全部都会出现错误才对,而且我的function trend control控件的对象名称就是trend1(如下图所示)。我现在暂时是想不明白怎么修改了,麻烦大佬再帮我一下,非常感谢,非常感谢。
图片说明:
最佳答案
OJBK
显示出来,然后接着出错了
说明:SetPropBOOL(lpszPictureName,"trend1","DeleteData",1);
这句话有错误
MEIWENTI这个打印出来了
然后又有错误,截图看不全面,有几个错误?如果有三个
然后是printf("zhengque\n");
那就说明
SetPropWord(lpszPictureName,"trend1","Index",0);
SetPropBOOL(lpszPictureName,"trend1","Online",FALSE);
SetPropBOOL(lpszPictureName,"trend1","Activate",FALSE);
可能都错了,是不是对象名称写错了?
你这样挺麻烦的,要不在论坛里面发帖子吧
呃,不过发帖子我也不一定在线哈
补充:
可能脚本执行顺序不对呢...
就和设置空间对象,可能前后有个顺序,顺序反了,可能需要添加的东西就添加不上呢
我试试
再补充:
发现问题了,你选的控件类型不对
应该是选经典版的,发现很多属性再新版的曲线空间里面根本没有
看附图
图片说明:
提问者对于答案的评价:
非常感谢RENHQ大佬,这几天相当麻烦您了,将控件换成经典版后,再通过查看控件属性,改掉一个不存在的属性名后,脚本没错了,图形也显示出来了。再次感谢大佬。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc354608.html