| 作者 | 主题 |
|---|---|
|
kaidy 侠圣 经验值:2029 发帖数:705 精华帖:1 |
楼主
主题:关于WINCC全局脚本问题的请教!!!
各位大侠,我有个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")
I can do anything if I want
|
|
冲向蓝天 侠士 经验值:1821 发帖数:229 精华帖:2 |
5楼
主题:回复:关于WINCC全局脚本问题的请教!!!
在第一个if的最后面加上如下
sprintf(tmpBegin, "结果:%2.3f",Data[0]); MessageBox(NULL,tmpBegin, "窗口确认",MB_YESNOMB_ICONQUESTIONMB_SYSTEMMODAL); 先定义tmpBegin变量 char tmpBegin[100]; 就是改成这样: int i; char tmpBegin[100]; float Data[2]; float DISPLAY[2];//用于显示班产量 实时刷新 float TOTAL[2];//用于系统所有产量统计 //if (GetTagBit("QIDONG"))//取得启动信号后工作 //{ if(GetTagBit("2")&(GetTagFloat("Font-X")<=280)&(GetTagFloat("Font-X")>=0)) { Data[0]=GetTagFloat("fly");//获取上次累计数据缓冲区数据 Data[0]=Data[0]+GetTagFloat("Font-X")/3600; SetTagFloat("fly",Data[0]); sprintf(tmpBegin, "结果:%2.3f",Data[0]); MessageBox(NULL,tmpBegin, "窗口确认",MB_YESNOMB_ICONQUESTIONMB_SYSTEMMODAL); } 内部变量我给改了名字了,你自己改回原先的行了。 如果没有弹出对话框,就把 sprintf(tmpBegin, "结果:%2.3f",Data[0]); MessageBox(NULL,tmpBegin, "窗口确认",MB_YESNOMB_ICONQUESTIONMB_SYSTEMMODAL); 往上放,直到出现对话框,就知道问题出在哪了。
起飞!
|