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

 我来答
IT与制药
2013-09-29 · TA获得超过4630个赞
知道大有可为答主
回答量:4899
采纳率:44%
帮助的人:3299万
展开全部

连接?如果我没有理解错的话可能你是想读写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; 
}
godane
2013-10-02 · TA获得超过262个赞
知道小有建树答主
回答量:215
采纳率:100%
帮助的人:95.3万
展开全部
以内部变量和外部变量都是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满足时,执行一次该脚本。如果没有合适的触发器,只能周期性的执行脚本了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式