
在wincc定义了全局变量,为什么在脚本上还要定义
#include"apdefap.h"double_main(char*lpszPictureName,char*lpszObjectName,char*lpszProp...
#include "apdefap.h"
double _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)
static DWORD b;
if (!GetTagBit("a"))
{
b+=1;
if(b==10000)
b=0;
}
return b;
}
我把static DWORD b;这个删掉就说没定义b,但是a我也没定义,因为,a,b我都在变量管理定义为全局变量了,为什么这里还要定义!求解,这样虽然能运行,但是切换画面,b的值就清零了。
简单滴说,我想做一个设备运行后,记录运行时间的脚本
#include "apdefap.h"
double _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)
static DWORD b;
if (!GetTagBit("a"))
{
b+=1;
if(b==10000)
b=0;
}
return b;
}
把static DWORD b改成DWORD B就不计数 展开
double _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)
static DWORD b;
if (!GetTagBit("a"))
{
b+=1;
if(b==10000)
b=0;
}
return b;
}
我把static DWORD b;这个删掉就说没定义b,但是a我也没定义,因为,a,b我都在变量管理定义为全局变量了,为什么这里还要定义!求解,这样虽然能运行,但是切换画面,b的值就清零了。
简单滴说,我想做一个设备运行后,记录运行时间的脚本
#include "apdefap.h"
double _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)
static DWORD b;
if (!GetTagBit("a"))
{
b+=1;
if(b==10000)
b=0;
}
return b;
}
把static DWORD b改成DWORD B就不计数 展开
展开全部
在WinCC画面切换时c脚本又重新初始化了,因此不能用c脚本变量来做累计,可定义一个WinCC内部变量做累加,这样在整个WinCC运行过程中内部变量的累加都是正常的。
但这也不是好方法,因为WinCC是用于上位监控的,设备运行时间的累计你应该放在PLC中完成,这样可避免WinCC不运行时、重启或c脚本触发不可靠而导致设备运行时间累计不准确的问题。
但这也不是好方法,因为WinCC是用于上位监控的,设备运行时间的累计你应该放在PLC中完成,这样可避免WinCC不运行时、重启或c脚本触发不可靠而导致设备运行时间累计不准确的问题。
展开全部
外部变量是指Wincc与通信伙伴使用的变量,如读取您PLC中数据的变量,这些变量将占用Wincc授权点数.
内部变量是指仅供Wincc内部使用的变量,这些变量任意使用,不占用Wincc点数.内部变量通过使用脚本赋值可以与外部变量进行数据交换.
内部变量是指仅供Wincc内部使用的变量,这些变量任意使用,不占用Wincc点数.内部变量通过使用脚本赋值可以与外部变量进行数据交换.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是声明与定义吧,不一样
追问
不是的,我只想做一个设备运行后,记录运行时间的脚本,然后翻页不清零,我现在做的可以记录,但是会清零
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
wincc是区别大小写的
更多追问追答
追问
不是的,我只想做一个设备运行后,记录运行时间的脚本,然后翻页不清零,我现在做的可以记录,但是会清零
追答
你用全局动作,触发时间1秒 里面设置每触发一次加一就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询