CS机器人上位机修改全局变量方法
1. 简介
本文介绍CS机器人通过上位机修改全局变量的方法。
2. 操作流程
1 建立全局变量
如图1-1所示新建一个全局变量A为例。

图1-1
2 获取全局变量值
不论机器人程序处于停止或运行(包括通过示教器启动程序或者运行,外部通过30001发来的脚本):上位机均可通过29999端口的以下指令获取该全局变量,如图2-1所示通过29999端口连接机器人向机器人发送variable -get A\n,需注意的是 dashboard shell 命令默认需以“\n”作为结束输入标识符,因此在发送命令时要以“\n”结 尾,否则将被认为未完成输入,不会被响应。
variable -get A

图2-1
3 获取机器人当前程序状态
因为当我们想修改全局变量时机器人处于非运行状态时需要用到29999端口对全局变量进行修改,机器人处于运行状态时需要用到30001端口对全局变量修改,所以建议在修改全局变量前判断机器人是否为运行状态,可以通过29999端口,发送status\n获取机器人当前程序状态,需注意的是 dashboard shell 命令默认需以“\n”作为结束输入标识符,因此在发送命令时要以“\n”结 尾,否则将被认为未完成输入,不会被响应。
RunningStatus状态来判断程序是否运行,如图3-1,图3-2所示。
10:08:19 发送数据:status
[1次]
10:08:19 收到数据:Target Speed Fraction: 89
RobotMode: RUNNING
SafetyMode: NORMAL
RunningStatus: STOP #RUNNING为运行状态,STOP为停止状态

图3-1

图3-2
4 修改全局变量值
a 机器人程序未运行时:
当机器人程序未运时可以通过29999端口可以修改,如图4-1所示通过29999端口连接机器人向机器人发送variable -set A 1\n,需注意的是 dashboard shell 命令默认需以“\n”作为结束输入标识符,因此在发送命令时要以“\n”结 尾,否则将被认为未完成输入,不会被响应。
variable -set A 1

图4-1
b 机器人程序运行时:
当机器人程序运行时(包括通过示教器启动程序或者运行外部通过30001发来的脚本)可以通过30001发送sec修改(sec不会打断正在执行的程序,def会打断正在执行的程序),如图4-2所示。
sec s2():
global A #建立一个与机器人端名称一模一样的全局变量
A = 100
end

图4-2
3. 常见问题解答
1. 程序未运行时只能通过29999端口修改全局变量,程序运行时只能通过30001端口修改全局变量。
2. 使用30001端口修改全局变量时,需要定先义一个与机器人端名称一模一样的全局变量。
3. 使用29999端口发送dashboard shell 命令时需以“\n”作为结束输入标识符,因此在发送命令时要以“\n”结 尾,否则将被认为未完成输入不会被响应。
4. 使用30001端口发送sec脚本时需以"sec script():\n" 开头,以"\nend"为结尾,其中,"script"为 脚本名称,'\n' 为转义字符,这将定义一个可执行脚本,脚本内部的内容需满足 python 的编程规则,如图4-2所示。
5. 建议上位机通过29999端口,发送status获取机器人当前程序状态:RunningStatus状态来判断程序是否运行,再根据实际选择通过30001端口或通过29999端口发送新的全局变量值。
6. 端口连接不上时,检查一下网络是不是没有连接上,可以在示教器网络设置页面查看,或者使用电脑ping一下看看能否ping通,网口是否正常连接的FB1口,机器人否是远程模式。