用 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
全部0条评论
快来发表一下你的评论吧 !