
手册用法
WaitUntil用于等待,直至满足逻辑条件;例如,其可以等待,直至已设置一个或多个输入。
基本示例
例 1
WaitUntil di4 = 1;
仅在已设置di4输入后,继续程序执行。
相对于其他信号等待指令不同的可选变量。

程序执行
如果在执行WaitUntil指令时未满足编程条件,则每100 ms(或根据参数Pollrate中的规定值),再次对条件进行检查。
同样,在手动模式下,在等待3s以上时间后,警告框将弹出,询问是否想要模拟指令。如打开可视化参数,则默认也是5秒后出现。
FlexPendant上应出现消息框前的等待时间。如果采用参数\VisualizeTime和
\MaxTime,那么,参数\MaxTime采用的时间需大于参数\VisualizeTime采用的时间。
不采用参数\VisualizeTime情况下,可视化的默认时间为5s。最小值为1s。最大值没有限制。分辨率为0.001s。
例 2
VAR bool timeout;
WaitUntil start_input = 1 AND grip_status = 1\MaxTime := 60
\TimeFlag := timeout;
IF timeout THEN
TPWrite "No start order received within expected time";
ELSE
start_next_cycle;
ENDIF
如果未在60秒以内满足两个输入条件,则将在FlexPendant示教器的显示器上写入一条错误消息。
例 3
WaitUntil \Inpos, di4 = 1;
程序执行进入等待,直至机械臂已静止,且已设置di4输入。
例 4
WaitUntil di4 = 1 \MaxTime:=5.5;
..
ERROR
ERROR
IF ERRNO = ERR_WAIT_MAXTIME THEN
RAISE;
ELSE
Stop;
ENDIF
程序执行进入等待,直至已设置di4输入。如果已禁用I/O设备,或等待时间到期,则通过错误处理器继续执行。
例 5
WaitUntil di1 = 1 AND di2 = 1 \MaxTime := 60 \Visualize;
..
ERROR
IF ERRNO = ERR_WAIT_MAXTIME THEN
RAISE;
ELSE
Stop;
ENDIF
如果在5秒内未满足两个输入条件,那么将在FlexPendant示教器的显示器上编写消息。如果在60秒内未满足条件,那么将在错误处理器中继续执行。
打开可视化后出现的消息。

例 6
WaitUntil di1 = 1 AND di2 = 1 \Visualize \Header:="Waiting for
signals" \MsgArray:=["Movement will not start until",
"conditions below are TRUE"] \Icon:=iconError;
MoveL p40, v500, z20, L10tip;
如果有两个输入条件不符,则在可选参数\Header和\MsgArray将被写入FlexPendant示教器屏幕上,未满足条件的其他选项要随行。
如下图显示可视化的界面,更具可读性。

限制
参数\Inpos不能与SoftServo一同使用。
如果在该指令之前采用Move指令,则必须通过停止点(zonedatafine)而非飞越点来编程Move指令。否则,不可能在电源故障后重启。
无法在与任意下列特殊系统事件关联的RAPID程序中执行WaitUntil \Inpos:PowerOn、Stop、QStop、Restart或者Step。
WaitUntil \Inpos无法与StopMove一同使用,以探测是否已停止移动。在这种情况下,可永远暂停WaitUntil指令。其并未探测到移动已停止,其探测到机械臂和外轴已达到最后编程的ToPoint(MoveX、SearchX、TriggX)。
我们对它的理解:
WaitUntil 指令用于所有信号类型和变量状态的判断和等待,并且可以添加多个条件。可以代替等待信号指令。
除了等待信号外,还可以等待数值表达式,布尔量等。
等待信号还可以加入逻辑表达式,比如多个信号的复合状态。
还可以加入轮询的时间。
等待数值大小。

其他,如位置,字符表达式。

布尔量状态,当然也可以指定等待布尔量状态为假。

信号或其他数据的逻辑表达式,如等待两个信号中的其中一个信号为1。

往期精彩回顾:
▼东莞机器人之家,关注有惊喜 ▼
小编微信☜
公众号二维码☞
文章都看完了
不点个
吗



