各位大侠,我有个WINCC全局脚本的问题很困惑,烦请你们帮我释怀惑!具体程序如下:#include "apdefap.h"
int gscAction( void )
{
int i;
float Data[2];
float DISPLAY[2];//用于显示班产量 实时刷新
float TOTAL[2];//用于系统所有产量统计
//if (GetTagBit("QIDONG"))//取得启动信号后工作
//{
if(GetTagBit("M111501_5")&(GetTagFloat("CL1")<=280)&(GetTagFloat("CL1")>=0))
{
Data[0]=GetTagFloat("ARCHIVE.1#");//获取上次累计数据缓冲区数据
Data[0]=Data[0]+GetTagFloat("CL1")/3600;
SetTagFloat("ARCHIVE.1#",Data[0]);
}
if(GetTagBit("M112001_5")&(GetTagFloat("CL2")<=70))
{
Data[1]=GetTagFloat("ARCHIVE.2#");
Data[1]=Data[1]+GetTagFloat("CL2")/3600;
SetTagFloat("ARCHIVE.2#",Data[1]);
}
//};
return 0;
}
此程序触发器的定时器为1秒钟,即1秒钟执行一次。
但是我在做模拟的时候,“M111501_5”赋值为1,"CL1"赋值200,即满足执行if(GetTagBit("M111501_5")&(GetTagFloat("CL1")<=280)&(GetTagFloat("CL1")>=0))的条件,按理来说
Data[0]=GetTagFloat("ARCHIVE.1#");//获取上次累计数据缓冲区数据
Data[0]=Data[0]+GetTagFloat("CL1")/3600;
SetTagFloat("ARCHIVE.1#",Data[0]);
应该会执行,也就是说"ARCHIVE.1#"1秒钟会变化一次,将"ARCHIVE.1#"在WINCC画面上显示出来也应会有相应的变化,可是"ARCHIVE.1#"在画面上显示的值却一直都是0,不知道是为什么?此程序原来是在WINCC5.1版的,我后来移植到WINCC6.0后就不行了。这是为什么呢?
还有就是有一个关于GetTagFloat("CL1")<=280的问题,如果我要在画面上输入任一个变量值作为判断条件的话,比如说CL1_SP,我在画面可是给CL_SP赋值100、150、200等等任意值,语句是不是GetTagFloat("CL1")<=GetTagFloat("CL1_SP")