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日 上午2:01

相关推荐

  • wincc 脚本

    我安装了wincc v6.0 sp1中文版,但是打不开全局脚本,右键点击全局脚本,只有属性一栏选择,没有打开选择项,不知道怎么回事? 问题补充:如何实现点击按钮…

    SIMATIC WinCC 2019年6月11日
  • 移植WINCC工程新添加用户

    我用PCS7 V7.1能够正常打开移植来的WINCC工程,画面编辑,变量表都没问题,但打开"user administrator"时弹出对话…

    SIMATIC WinCC 2019年6月11日
  • wincc7.5中Mscomm串口控件无法使用

    注册了Mscomm32,然后再wincc中进行添加,仿真的时候提示“无法进货运行系统!检查wincc中心的设置” 最佳答案 参考,转载http://www.ad.siemens.c…

    SIMATIC WinCC 2021年7月5日
  • ODBC数据库表格显示不出来

    问题1: 按照资料A0296做的报表,点击打印预览,报表布局的静态部分能显示出来,为什么ODBC数据表显示不出来啊?看不到。。。 问题2: 为什么改自…

    SIMATIC WinCC 2019年6月11日
  • OPC信号做逻辑使用

    请教一个关于OPC信号的问题,当DCS与第三方的系统进行OPC通讯时,由第三方系统通讯过来的OPC信号能不能在DCS中做逻辑使用?比如通讯过来的三个信号,是否可以将这三个信号做一些…

    SIMATIC WinCC 2021年7月5日
  • 按钮不能进入指定画面

    wincc2008  ,smart 1000触摸屏 增加了用户管理画面,想在首页通过“用户管理”按钮进入,如果按钮为“管理”权限,则不能进入…

    SIMATIC WinCC 2021年7月5日
  • wincc7.0 sp3 移植到7.4,组态数据库的移植失败

    wincc7.4,用项目移植器移植wincc7.0 sp3 项目,出现: “组态数据库的移植失败” 提示! 最佳答案 最好先到V7.2&nb…

    SIMATIC WinCC 2021年7月5日
  • 一个标准子画面显示阀信息

    如何通过点击阀门弹出子画面,该画面为所有阀门公用的。并且在主画面分别点击阀门时子画面不相互覆盖,可同时显示。 最佳答案 最简单的办法如下:   &nb…

    SIMATIC WinCC 2019年6月11日
  • WINCC6.2里如何查询历史报警

    WINCC6.2里如何查询历史报警?我将原有的历史报警记录通过LINK的方式连接到WINCC6.2的数据库中,版本是英文版的,现在在报警控件中无法查询历史报警记录,无论是通过长期归…

    SIMATIC WinCC 2019年6月11日
  • wincc 数据曲线

    由于wincc数据曲线只能500ms采样,用户需要100ms采样,现在准备把数据存在plc中,每次大概1-2分钟,数据存在plc的DB块中后,如何在wincc中将其读取并以曲线的形…

    SIMATIC WinCC 2017年6月4日

发表回复

登录后才能评论