wincc中c脚本出现的问题

想要将内部变量中的数据在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");
printf("%d\n",a[i]);
b[i]=c;
c=c+10;
}
SetPropBOOL(lpszPictureName,"trend1","DeleteData",1);
SetPropWord(lpszPictureName,"trend1","Index",0);
SetPropBOOL(lpszPictureName,"trend1","Online",FALSE);
SetPropBOOL(lpszPictureName,"trend1","Activate",FALSE);
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);
}
SetPropBOOL(lpszPictureName,"trend1","Online",1);
SetPropBOOL(lpszPictureName,"trend1","Activate",1);
全局脚本诊断窗口用于诊断脚本错误,激活wincc,单击按钮后出现的情况就是图形编辑器图片的情况。没有显示曲线,错误提示找不到变量Tag_Name。Tag_Name的作用体现在程序for(i=0;i<101;i++)
{
sprintf(Tag_Name,"%s%d","DB_VAR",i);
a[i]=GetTagSWord("Tag_Name");
通过sprintf将wincc中内部变量的名称指定,然后将内部变量的数据放入对应a[i]中。我查的资料表明我应该可以实现内部变量放入c脚本变量功能。
为什么会出现这种情况?怎么修改?
请各位大佬帮忙解决一下问题,非常感谢。

问题补充:
非常感谢两位大佬,将双引号去掉后原来的问题是解决了,但出现了新的问题,全局脚本-诊断先是因为程序printf("%d\n",a[i]);显示出放入a[i]数据,但for循环结束后出现如下图的情况,是什么情况?解决方式?麻烦各位大佬再回答一下,非常感谢。

图片说明:

wincc中c脚本出现的问题    wincc中c脚本出现的问题    wincc中c脚本出现的问题   

最佳答案

1、a[i]=GetTagSWord("Tag_Name");改成:a[i]=GetTagSWord(Tag_Name);当里面加了引号之后,就是固定的变量了,相当于WINCC里面Tag_Name的变量,你这相当于间接寻址,引用的是C脚本的变量,不能加引号
2、把前面正常的printf先注释掉,然后在下面加printf,看看程序是那一句出现的问题
可以先隔上几行加一个,先缩小范围再一行一个这样就能找到哪一句的问题了
看诊断问题是有个属性你写错了

如果连续出了很多,那就在for循环里面

提问者对于答案的评价:
非常感谢三位大佬,特别是ISIEMENSID大佬和RENHQ大佬,回答得很详细了,但怪我愚笨,可能是理解错了RENHQ大佬的寻错方法,不知如何改错,我会再发一次问答,希望大佬们还能来帮忙解答问题。

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

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

相关推荐

  • Wincc中VBA的控件名称

    WinCC中可以通过VBA 来建按钮等控件,请问在VBA 中各控件对应的类型是什么。比如圆对应的是HMICircle,按钮对应的是"HMIButton…

    SIMATIC WinCC 2020年11月1日
  • wincc工程项目怎么加密

    wincc工程项目怎么加密 最佳答案 1. wincc页面的保护打开一个wincc页面,不要选择其中的任何控件,属性-画面对象-其他-密码保护,默认属性为“否”,双击激活…

    SIMATIC WinCC 2020年11月1日
  • 登录后画面的切换问题?

    我在初始画面上做了一个登录按钮,使其正确填写用户名和密码后能切换到按钮选择界面。登录按钮的C动作中是这样编写的:#pragma code("useadmin.d…

    SIMATIC WinCC 2019年6月11日
  • 关于使用wincc生成日报表、月报表的问题

    我想用c语言的脚本,比如在d盘生成一个excel文档,然后在文档中某几个单元格赋值,做为一个报表形式,并且提供一些关于这类的指令 问题补充:还有一个问题,就是我的电子表格用的是wp…

    SIMATIC WinCC 2017年11月12日
  • WINCC6.2设置PG/PC接口

    请教一下大家,PLC用315-2DP ,装WINCC的工控机有装一个CP5622通讯板,现在设置PG/PC接口要怎么设置?没有找到CP5622,谢谢! 问题补充:我安装S…

    2021年7月5日
  • 我的PLC与上位机通讯时,PG/PC如何设置

    我的工控机和S7-300的PLC分别进行以太网通讯,MPI通讯,PROFIBUS通讯时,我的PG/PC分别应该如何设置?我要进行WINCC监控,PG/PC又该如何设置?感觉乱糟糟的…

    SIMATIC WinCC 2019年6月11日
  • 关于WinCC的疑问

    关于上位机组态软件WinCC,有几个疑问:1. WinCC能监控的PLC的数量,有限制么?应该是不限PLC的数量,而是依据授权的Tag的数量来决定的吧?2. W…

    SIMATIC WinCC 2021年7月5日
  • 关于触摸屏密码设置问题

    最近更换一台触摸屏电脑,Protool画面已经传到电脑中。但是,每次进行参数设置时,触摸屏总是要求正确输入用户名和密码,怎样获取它们,以便能够正确进行参数设置,谢谢大家!&nbsp…

    SIMATIC WinCC 2019年6月11日
  • WINCC读取S7200小数问题

    WINCC与S7200采用MODBUS通讯,比如读取400001地址,比如400001数值为:123,但是我WINCC里要显示1位小数:12.3,请问数据格式或WINCC里该如何处…

    SIMATIC WinCC 2017年6月24日
  • 请教:Wincc画面窗口调用时的显示问题

    使用的是Wincc6.2,在主画面“test_con1”中插入画面窗口1“con_1”,画面“con_1”中,嵌入了两个画面窗口,一个是画面窗口1“nty”,一个是画面窗口2“co…

    SIMATIC WinCC 2019年6月10日

发表回复

登录后才能评论