4.3.6 赋值
【赋值】命令,创建程序变量并赋值,可将表达式的值赋给所选变量,或者将机器操作员输入的值赋给所选变量。
设置赋值类型
表达式:设置变量为表达式,也可以创建新的变量。
- 同步:勾选后,可使变量在正确的时间点赋值。
操作员:设置输入变量的类型,当程序运行到该节点时,需要操作员手动输入变量赋值。
- 操作员信息:添加操作员提示信息,帮助操作员输入正确的变量。
同步/变量同步
在机器人运行过程中存在两个指针,提前运行指针(Advanced Pointer)与主指针(Main Pointer)。主指针与机器人的实际运动关联,能反映机器人程序的实际运动情况;提前运行指针为脚本解释的指针,可预知后续的运动指令,用于交融等计算。
“同步/变量同步” 功能指的是将主指针与提前运行指针同步。 在程序执行过程中,系统会先按照代码顺序依次解释运行,如果是变量赋值代码,则在解释后立即执行赋值操作,如果是运动指令,则完成解释后将其放入运动队列等待运行。
以下两个伪代码示例分别显示当 “同步” 功能开启或关闭时,代码的状态:
- 关闭 “同步” 功能:
a=0
完成解释后立即执行变量赋值操作,然后...
完成解释后进入运动队列等待运行。接下来轮到a=1
,系统解释完成后立即执行变量赋值操作。随后解释moveJ(a)
,此时系统先获取a
的值解释moveJ(a)
,再将其放入运动队列中等待。由于解释moveJ(a)
时,a=1
已完成解释和赋值操作,所以moveJ(a)
获取的a
值为1
。 - 开启 “同步” 功能:
a
及...
依次解释,a=0
完成变量赋值操作,...
进入运动队列等待运行。然后a=1
在解释时,会增加INST[]
算法,此时a=1
不会立即执行赋值操作,而是先放入运动队列中等待,只有当运动队列运行到该指令时才将1
赋值给a
。接下来系统继续解释moveJ(a)
,由于运动队列尚未处理a=1
,因此解释moveJ(a)
时获取的a
值为0
。
不同步 | 同步 |
a=0
.... a=1 moveJ(a) -- a=1 |
a=0
.... INST[[ a=1 ]] moveJ(a) -- a=0 |
注释:其中 a=0
、a=1
为变量赋值指令,INST[]
为同步功能的算法,moveJ(a)
代表需要使用变量 a
值的关节运动,...
为其他包含运动的指令。