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 值的关节运动,... 为其他包含运动的指令。