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

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

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

圖3-1

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

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

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