浅析KUKA机器人C4中VARSTATE()函数的作用

描述

用 VARSTATE() 可以询问变量的状态。

VARSTATE() 是带有 VAR_STATE 类型返还值的函数。VAR_STATE 是在系统中如

下定义的计数类型:

ENUM VAR_STATE  DECLARED(已声明), INITIALIZED(初始化), UNKNOWN(未发布)

VARSTATE 在系统中如下定义:

VAR_STATE VARSTATE(CHAR VAR_STR[80]:IN)

示例 1:

DEF PROG1()

INT MYVAR

...

IF VARSTATE("MYVAR")==#UNKNOWN THEN 

$OUT[11]=TRUE

ENDIF

第一个 IF 条件为假,因为 MYVAR 已声明。不设定输出端 11。

...

IF VARSTATE("MYVAR")==#DECLARED THEN

$OUT[12]=TRUE

ENDIF

第二个 IF 条件为真,因为 MYVAR 已声明。设定输出端 12。

...

IF VARSTATE("ANYVAR")==#UNKNOWN THEN  变量未发布

$OUT[13]=TRUE

ENDIF

在 $CONFIG.DAT 中没有名称为 ANYVAR 的变量的情况下,第三个 IF 条件为真。设定输出端 13。

...

MYVAR=9

...

IF VARSTATE("MYVAR")==#DECLARED THEN  变量已经发布

$OUT[14]=TRUE

ENDIF

第四个 IF 条件为假,因为 MYVAR 不仅已声明,而且在该位置上已初始化。不设定输出端 14。

...

IF VARSTATE("MYVAR")==#INITIALIZED THEN 变量在初始化状态

$OUT[15]=TRUE

ENDIF

第五个 IF 条件为真,因为 MYVAR 已初始化。设定输出端 15。

...

END

DEF PROG2()

INT MYVAR

INT YOURVAR

DECL VAR_STATE STATUS

...

STATUS=VARSTATE("MYVAR")

UP()

...

STATUS=VARSTATE("YOURVAR")

UP()

...

END

在该示例中,间接即通过附加的变量询问状态。附加的变量必须为 VAR_STATE 类型。对于声明,不允许省略关键词 DECL。附加变量的名称为任意名称。在该示例中,名称为 STATUS。

在VASS标准中的使用-----例1

DEFFCTINT MAKRO0(ADV :IN)

IF VARSTATE ("ADV")<> #INITIALIZED THEN  

如果变量"ADV"没有之行初始化,就让ADV=FALSE

ADV=FALSE

ENDIF

IF(NOT ADV)THEN 如果ADV=FALSE则开始执行MAKRO0里面的程序

;ENDFOLD

;ENDFOLD

…..

ENDIF

在VASS标准中的使用-----例2  

USER程序中的一段

IF($softplcint[1]>0) AND $OUT[O_SZ1_FRG] AND (Varstate("act_P1")==#initialized)THEN

$softplcint[1]=7焊钳外部轴基数=7,A715焊枪控制,act_P1激活的轨迹步变量如果被初始化

IF($softplcint[1]==7)THEN焊钳外部轴基数=7

$FLAG[F_SZ1_Oeff_iO]=(act_P1.E1>=$COUNT_I[60])

E1值大于I60的值F745偏差合格

ENDIF

IF($softplcint[1]==8)THEN焊钳外部轴基数=8

$FLAG[F_SZ1_Oeff_iO]=(act_P1.E2>=$COUNT_I[60])

E2值大于I60的值F745偏差合格

ENDIF

ELSE 如果没有激活的话就关闭F745

$FLAG[F_SZ1_Oeff_iO]=FALSE

ENDIF

IF Varstate("SZNr")==#initialized then  如果SZNr焊钳号变量已经初始化赋值

SWITCH SZNr  选择焊钳是多少进行选择程序

CASE 1 钳号1

Par[1] = { Par_type #Value , Par_int 1 }

………

ELSE如果SZNr焊钳号变量没赋值

Par[1] = { Par_type #Value, Par_txt[] " " }

编辑:jq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分