请问wincc中怎么用全局脚本建立外部变量和内部变量的连接?

如题所述

连接?如果我没有理解错的话可能你是想读写wincc变量吧?

在脚本中,C脚本基本是这样的语句:

Float F;

F=GetTagFloat(“TAG1”)这样就可以读出TAG1的数值,不管TAG1是外部变量还是内部变量,在脚本中都要加上“”,否则就默认是对脚本内部使用的变量读写。

如果想向某一个变量写数值的话可以使用SetTagFloat(“TAG1”,99.2)这样TAG1就被设置成了99.2这样的值。另外个对word类型的数据还有SetTagWord()函数,其他类型的也有,看一下帮助。

#include "apdefap.h"
int gscAction( void )
{
#pragma option(mbcs)
GetTagWord(Tag_Name); //Return-Type: WORD 
GetTagValue(lpdmVarKey,lpdmresult,lpdmError); //Return-Type: BOOL 
GetTagSWord(Tag_Name); //Return-Type: short int 
GetTagSDWord(Tag_Name); //Return-Type: long int 
GetTagSByte(Tag_Name); //Return-Type: char 
GetTagRaw(Tag_Name,pValue,size); //Return-Type: BOOL 
GetTagFloat(Tag_Name); //Return-Type: float 
GetTagDWord(Tag_Name); //Return-Type: DWORD 
GetTagDouble(Tag_Name); //Return-Type: double 
GetTagChar(Tag_Name); //Return-Type: char* 
GetTagByte(Tag_Name); //Return-Type: BYTE 
GetTagBit(Tag_Name); //Return-Type: BOOL 
SetTagWord(Tag_Name,value); //Return-Type: BOOL 
SetTagValue(lpdmVarKey,lpdmValue,dwState,lpdmError); //Return-Type: BOOL 
SetTagSWord(Tag_Name,value); //Return-Type: BOOL 
SetTagSDWord(Tag_Name,value); //Return-Type: BOOL 
SetTagSByte(Tag_Name,value); //Return-Type: BOOL 
SetTagRaw(Tag_Name,pValue,size); //Return-Type: BOOL 
SetTagFloat(Tag_Name,value); //Return-Type: BOOL 
SetTagDWord(Tag_Name,value); //Return-Type: BOOL 
SetTagDouble(Tag_Name,value); //Return-Type: BOOL 
SetTagChar(Tag_Name,value); //Return-Type: BOOL 
SetTagByte(Tag_Name,value); //Return-Type: BOOL 
SetTagBit(Tag_Name,value); //Return-Type: BOOL
return 0; 
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-02
以内部变量和外部变量都是32位浮点数为例,
SetTagFloat(''内部变量名“,GetTagFloat(“外部变量名”));
反之
SetTagFloat(''外部变量名“,GetTagFloat(“内部变量名”));追问

可能我没说明白,我的意思是如果通过调用脚本来赋值,那么只有脚本运行时才会更新数据,如果通过脚本建立了连接更改变量的连接,那么当外部变量变化时即使脚本不运行,也会更新内部与之连接的变量。所以问有没有方法在脚本中更改变量的连接?怎么来实现?非常感谢热心的朋友。

追答

你是要更改变量的连接啊,那你表达的确实不太清楚。
如果我没理解错的话,你是要动态改变外部变量连接的内部变量,即根据不同的情况外部变量获取不同的内部变量的值。
以内部变量和外部变量都是32位浮点数为例,
char* Int_Var="内部变量名";
if (条件1){Int_Var="内部变量名1"};
else if (条件2){Int_Var="内部变量名2"};
else if (条件3{Int_Var="内部变量名3"};
.
.
.
.
.
.
输出外部变量值
SetTagFloat(Int_Var,GetTagFloat(“外部变量名”));
获取外部变量值
SetTagFloat(''外部变量名“,GetTagFloat(Int_Var));
关键在于你要设置合适的触发器,让条件1----条件N满足时,执行一次该脚本。如果没有合适的触发器,只能周期性的执行脚本了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网