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

相关推荐

  • 在运行状态下点按钮使用脚本RPTJobPreview()没任何反应

    在运行状态下点按钮使用脚本RPTJobPreview()没任何反应 最佳答案 RPTJobPreview() 中需要填入对应的打印作业名称,打印作业需要对应相应的打印布局…

    SIMATIC WinCC 2019年6月11日
  • WINCC 复制项目后,在另一个机子打不开

    我在把1号工控机的项目利用复制器复制到2号工控机上,但是打不开,进度到60%时就停止了,也没有死机不知道什么原因,请各位大侠给指点一下,1号2号工控机属于同一个项目,现在想把1号机…

    SIMATIC WinCC 2019年6月11日
  • vcc从电脑复制

    vcc从电脑复制时提示另一个程序正在使用。如何处理。 最佳答案 点开始->运行->cmd,进入命令行模式,然后输入reset_wincc回车,所有和wincc相关的进程…

    SIMATIC WinCC 2019年6月11日
  • 获取当前时间的前一天

    我现在要做一个自动打印报表的功能,每次自动打的都是一天的数据,也即当前时间的前一天到当前时间的这段时间的数据。获取当前时间我知道可以通过在变量管理里面建立系统信息,然后获取年、月、…

    SIMATIC WinCC 2019年6月11日
  • TIA WINCC

    TIA WINCC 中的报警循环按钮有什么作用? 图片说明:    最佳答案 博途帮助说明:报警回路当用户在报警视图中选择报警后单击“Loo…

    2021年7月5日
  • 输入域事件值改变触发读写外部变量,触发不稳定?

    我用输入域1的事件–输出值改变触发如下vb程序(Dim shu_ru,shu_chu’定义输入,输出  ‘读取输入 Set sh…

    SIMATIC WinCC 2019年6月11日
  • 初学WINCC的问题

    大家好。我遇到的问题:在WINCC的图形编辑器中,如在画面中插入一个静态文本或矩形的标准对象,改变其属性如“背景颜色”(红色)后,屏幕中的对象并没有改变颜色。为什么? &…

    SIMATIC WinCC 2017年11月12日
  • WinCC服务器与客户机网络断开

    WinCC服务器运行画面可以与PLC通讯,读取数据均正常。WinCC服务器、PLC、WinCC客户机采用以太网通讯,并且都在同一网段。然而客户机不能读取服务器数据,在WinCC服务…

    SIMATIC WinCC 2019年6月11日
  • 如何在Wincc项目的数据库中新建表?

    新建了一个Wincc项目,如何在其后台数据库中新建表? 最佳答案 WinCC自带的数据库为SQL Server。要在WinCC中建立变量,只需在相应的驱动下建立就行,不分…

    SIMATIC WinCC 2017年11月26日
  • WINCC6.2如何设置每隔5分钟采集一下电流的值?

    我有一个电机在运行中,要经常采集它的温度、电流值,这个电流值我想进行归档,但是实时归档没有必要,想设置个每5分钟归档一次,请问如何设置? 最佳答案 WinCC数据报表实现方法介绍:…

    SIMATIC WinCC 2019年6月11日

发表回复

登录后才能评论