依次测试条件,直至满足其中一个条件。通过与该条件相关的指令,继续程序执行。如果未满足任何条件,则通过符合ELSE的指令,继续程序执行。如果满足多个条件,则仅执行与第一个此类条件相关的指令。
IF 的语法结构
IF Condition THEN
<SMT>
ELSEIF Condition THEN
<SMT>
ELSE
<SMT>
ENDIF
Condition:条件
<SMT>
:需要执行的指令
语法说明:IF条件判断指令,就是根据不同的条件(Condition)去执行不同的指令。条件判定的条件数量可以根据实际情况进行增加或减小
格式 | IF Condition THEN DO ENDIF | |
参数 | Condition | 判断条件 |
DO | 执行语句 |
示例
有关于如何使用指令FOR的更多例子阐述如下。
MODULE MainModule
Var num a:=10;
PROC main()
IF a>10 THEN !当a大于10,a减1
a:=a-1;
ELSEIF a<1 THEN !当a小于10,a加1
a:=a+1;
ELSE !当前面的条件(Condition)都不满足,就跳转到aa标签
GOTO aa;
ENDIF
aa:
MoveJ pHome,v1000,fine,tool0\WObj:=wobj0;
ENDPROC
ENDMODULE
MODULE MainModule
VAR num x := 0;
VAR num y := 0;
CONST num bian := 50;
CONST robtarget p10:=[[355.53,-499.89,643.48],[1.77401E-7,3.39455E-8,1,-5.27226E-8],[-1,0,-1,0], [9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
CONST robtarget p20:=[[355.53,50.11,643.48],[4.32223E-9,-3.8027E-8,-1,1.91626E-8],[0,-1,0,0], [9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
CONST jointtarget jpos10:=[[0,0,0,0,90,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PROC main()
MoveAbsJ jpos10\NoEOffs, v1000, z50, tool0; !安全点
Reset Vacuum; !初始化吸嘴
aa: !标签aa
!试想一下,人抓东西和放东西
MoveJ Offs(p10,x*bian,y*bian,200),v1000,fine,tool0\WObj:=wobj0;!离抓取点的上方z轴200
MoveL Offs(p10,x*bian,y*bian,0),v1000,fine,tool0\WObj:=wobj0; !到达抓取点
Set Vacuum; !吸取物块
WaitTime 1; !等待1秒
MoveL Offs(p10,x*bian,y*bian,200),v1000,fine,tool0\WObj:=wobj0;!离抓取点的上方z轴200
MoveJ Offs(p20,y*bian,x*bian,200),v1000,fine,tool0\WObj:=wobj0;!离放取点的上方z轴200
MoveL Offs(p20,y*bian,x*bian,0),v1000,fine,tool0\WObj:=wobj0; !到达放取点
Reset Vacuum;!放物块
WaitTime 1; !等待1秒
MoveL Offs(p20,y*bian,x*bian,200),v1000,fine,tool0\WObj:=wobj0;!离放取点的上方z轴200
y := y+1;
IF y<3 THEN !当y小于3时,跳转aa标签执行搬运指令
GOTO aa;
ENDIF
y := 0;
x := x + 1;
IF x<3 THEN !当x小于3时,跳转aa标签执行搬运指令
GOTO aa;
ENDIF
MoveAbsJ jpos10\NoEOffs, v1000, z50, tool0;!安全点
ENDPROC
ENDMODULE
总结
- IF 可以通过 条件 ( Condition ) 进行跳转,选择满足条件的分支
- IF 可以嵌套
希望对你们有所帮助,如有不足之处,欢迎大家留言探讨,本文已经首发在个人微信公众号:龙猫YOU ,欢迎关注!