请问wincc中怎么用全局脚本建立外部变量和内部变量的连接?
2个回答
展开全部
连接?如果我没有理解错的话可能你是想读写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;
}
展开全部
以内部变量和外部变量都是32位浮点数为例,
SetTagFloat(''内部变量名“,GetTagFloat(“外部变量名”));
反之
SetTagFloat(''外部变量名“,GetTagFloat(“内部变量名”));
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满足时,执行一次该脚本。如果没有合适的触发器,只能周期性的执行脚本了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询