Wait
使用MemSw或Sw,在指定的条件成立之前或指定时间内,使程序处于等待状态。(也可以替代Sw,使用Oport检查I/O输出。)
也可以等待全局变量的值发生变化。
格式
(1) Wait 时间
(2) Wait 条件表达式
(3) Wait 条件表达式, 时间
参数
- 时间
- 以0~2147483的实数(单位:秒)指定待机时间。最小有效位为0.01秒。
- 事件条件表达式
- 以下述格式指定条件。
- [条件] 比较运算符(=、<>、>=、>、<、<=)[整数表达式]
- 可在条件中使用下述函数或变量。
函数:Sw, In, InW, Oport, Out, OutW, MemSw, MemIn, MemInW, Ctr,GetRobotInsideBox, GetRobotInsidePlane, MCalComplete,Motor, LOF, ErrorOn, SafetyOn, EstopOn, TeachOn , Cnv_QueLen, WindowsStatus, AtHome, LatchState, WorkQue_Len, PauseOn, AIO_In, AIO_InW, AIO_Out, AIO_OutW, Hand_On, Hand_Off, SF_GetStatus
变量:Byte, Int32, Integer, Long, Short, UByte, UInt32, UShort型备份变量、全局变量、模块变量
- 另外,可利用下述运算符对多个条件表达式附加掩码或进行复合组合。
运算符:And, Or, Xor, Mask
说明
(1) 仅指定时间时
作为计时器使用Wait命令时,仅使程序暂停指定的时间长度,然后继续执行程序。
(2) 仅指定条件表达式时
作为条件联锁功能使用Wait时,在指定的条件成立之前,使程序处于待机状态。如果通过TMout命令指定了超时,即使经过指定时间,如果条件式未成立,也会发生错误。可使用And、Mask、Or或Xor命令等对1个Wait命令进行多条件检查。请参阅使用示例。
(3) 指定时间和条件表达式时
指定条件表达式和时间时,如果条件成立或经过指定时间,则执行后续命令。可使用Tw函数确认条件表达式是否成立,或是否经过指定时间。
注意
在Wait中并用超时时
Wait命令中未指定待机时间时,如果指定超时,则可设置等待指定状态的限制时间。可使用TMOut命令指定超时。详情请参阅该TMOut命令的项目。(TMOut命令的默认值为“0”,表示没有时间限制。)
利用Wait等待变量时
- 可用于变量等待的变量类型为整数型(Byte、Int32、Integer、Long、Short、UByte、UInt32、UShort)。
- 不能使用数组变量。
- 不能使用本地变量。
- 在超过0.01秒的时间内变量值未满足条件时,系统可能不能检测到变量变化。
- 系统内可使用的变量等待数存在限制。1个系统内可使用的变量等待数量最多为64个(也包括在Till等条件表达式中使用的变量等待)。如果超过最大数,则会在项目创建时发生错误。
- 如果利用Byref引用执行变量等待的变量,则会发生错误。
- 条件式右边的整数表达式包括变量或函数时,在设置Wait条件时运算其值。由于可能会形成不希望有的条件,因此不建议在整数表达式中使用变量或函数。
使用PC COM端口(1001~1008)时
能在Wait命令中使用Lof函数。
在执行Wait期间程序暂停时
在执行Wait命令期间,程序暂停时(Pause状态)Wait命令也并不会停止。当满足条件表达式或经过了指定的时间后,Wait命令会结束。
如果在Wait命令中设置了时间,在指定的时间过去之前,通过连续执行来恢复程序时,则会重置之前经过的时间,而程序会等待指定的时间。
参阅
AtHome, Cnv_QueLen, Ctr, ErrorOn, EstopOn, GetRobotInsideBox, GetRobotInsidePlane, In, InW, LatchState, LOF, Mask, MCalComplete, MemIn, , MemInW, MemSw
Motor, Oport, Out, OutW, PauseOn, SafetyOn, Sw, TeachOn, TMOut, WindowsStatus, Tw, WorkQue_Len, SF_GetStatus
Wait使用示例
在下例当中,对于可分别启动动作命令的2个任务,除非一方进行机器人控制,否则可进行机器人控制的联锁功能则会启动。这样可按顺序进行各任务指定的动作。并用MemSw的Wait命令用于在存储器I/O位1变为适当值之前,使程序处于待机状态,在达到安全状态之后重新开始动作。
Function main
Integer I
MemOff 1
Xqt !2, task2
For i = 1 to 100
Wait MemSw(1) = Off
Go P(i)
MemOn 1
Next I
Fend
Function task2
Integer i
For i = 101 to 200
Wait MemSw(1) = On
Go P(i)
MemOff 1
Next i
Fend
'等待输入0变为ON状态
Wait Sw(0) = On
'在等待60.5秒钟之后继续执行
Wait 60.5
'等待输入0变为OFF、输入1变为ON状态
Wait Sw(0) = Off And Sw(1) = On
'等待存储位0变为ON或存储位1变为ON状态
Wait MemSw(0) = On Or MemSw(1) = On
'等待1秒钟,然后将输出1设为ON
Wait 1; On 1
'在输入端口0的低3位变为1之前进行待机
Wait In(0) Mask 7 = 1
'等待全局Integer型变量giCounter的值超过10
Wait giCounter > 10
'在全局Long型变量glCheck的值到达30000之前待机10秒钟
Wait glCheck = 30000, 10