CS機器人上位機修改全局變量方法
1. 簡(jiǎn)介
本文介紹CS機器人通過(guò)上位機修改全局變量的方法。
2. 操作流程
1 建立全局變量
如圖1-1所示新建一個(gè)全局變量A為例。

圖1-1
2 獲取全局變量值
不論機器人程序處于停止或運行(包括通過(guò)示教器啟動(dòng)程序或者運行,外部通過(guò)30001發(fā)來(lái)的腳本):上位機均可通過(guò)29999端口的以下指令獲取該全局變量,如圖2-1所示通過(guò)29999端口連接機器人向機器人發(fā)送variable -get A\n,需注意的是 dashboard shell 命令默認需以“\n”作為結束輸入標識符,因此在發(fā)送命令時(shí)要以“\n”結 尾,否則將被認為未完成輸入,不會(huì )被響應。
variable -get A

圖2-1
3 獲取機器人當前程序狀態(tài)
因為當我們想修改全局變量時(shí)機器人處于非運行狀態(tài)時(shí)需要用到29999端口對全局變量進(jìn)行修改,機器人處于運行狀態(tài)時(shí)需要用到30001端口對全局變量修改,所以建議在修改全局變量前判斷機器人是否為運行狀態(tài),可以通過(guò)29999端口,發(fā)送status\n獲取機器人當前程序狀態(tài),需注意的是 dashboard shell 命令默認需以“\n”作為結束輸入標識符,因此在發(fā)送命令時(shí)要以“\n”結 尾,否則將被認為未完成輸入,不會(huì )被響應。
RunningStatus狀態(tài)來(lái)判斷程序是否運行,如圖3-1,圖3-2所示。
10:08:19 發(fā)送數據:status
[1次]
10:08:19 收到數據:Target Speed Fraction: 89
RobotMode: RUNNING
SafetyMode: NORMAL
RunningStatus: STOP #RUNNING為運行狀態(tài),STOP為停止狀態(tài)

圖3-1

圖3-2
4 修改全局變量值
a 機器人程序未運行時(shí):
當機器人程序未運時(shí)可以通過(guò)29999端口可以修改,如圖4-1所示通過(guò)29999端口連接機器人向機器人發(fā)送variable -set A 1\n,需注意的是 dashboard shell 命令默認需以“\n”作為結束輸入標識符,因此在發(fā)送命令時(shí)要以“\n”結 尾,否則將被認為未完成輸入,不會(huì )被響應。
variable -set A 1

圖4-1
b 機器人程序運行時(shí):
當機器人程序運行時(shí)(包括通過(guò)示教器啟動(dòng)程序或者運行外部通過(guò)30001發(fā)來(lái)的腳本)可以通過(guò)30001發(fā)送sec修改(sec不會(huì )打斷正在執行的程序,def會(huì )打斷正在執行的程序),如圖4-2所示。
sec s2():
global A #建立一個(gè)與機器人端名稱(chēng)一模一樣的全局變量
A = 100
end

圖4-2
3. 常見(jiàn)問(wèn)題解答
1. 程序未運行時(shí)只能通過(guò)29999端口修改全局變量,程序運行時(shí)只能通過(guò)30001端口修改全局變量。
2. 使用30001端口修改全局變量時(shí),需要定先義一個(gè)與機器人端名稱(chēng)一模一樣的全局變量。
3. 使用29999端口發(fā)送dashboard shell 命令時(shí)需以“\n”作為結束輸入標識符,因此在發(fā)送命令時(shí)要以“\n”結 尾,否則將被認為未完成輸入不會(huì )被響應。
4. 使用30001端口發(fā)送sec腳本時(shí)需以"sec script():\n" 開(kāi)頭,以"\nend"為結尾,其中,"script"為 腳本名稱(chēng),'\n' 為轉義字符,這將定義一個(gè)可執行腳本,腳本內部的內容需滿(mǎn)足 python 的編程規則,如圖4-2所示。
5. 建議上位機通過(guò)29999端口,發(fā)送status獲取機器人當前程序狀態(tài):RunningStatus狀態(tài)來(lái)判斷程序是否運行,再根據實(shí)際選擇通過(guò)30001端口或通過(guò)29999端口發(fā)送新的全局變量值。
6. 端口連接不上時(shí),檢查一下網(wǎng)絡(luò )是不是沒(méi)有連接上,可以在示教器網(wǎng)絡(luò )設置頁(yè)面查看,或者使用電腦ping一下看看能否ping通,網(wǎng)口是否正常連接的FB1口,機器人否是遠程模式。