CS機器人 40011端口使用
1. 簡(jiǎn)介
本文將介紹如何使用CS系列的Socket通訊的40011端口
40011是在應用版本2.11才有
40011(明文狀態(tài)請求)端口,可用于獲取機器人的各種 狀態(tài)及數據或者設置機器人相應 的參數(運動(dòng)指令和耗時(shí)指令除外),與其他獲取數據端口相比,屬于一問(wèn)一答式數據回
復類(lèi)型,上位機發(fā)送對應的請求,機器人返回對應的數據
2. 操作流程
2.1. 下發(fā)請求命令格式
1.下發(fā)請求命令,請求命令最后需要以\n換行符結束,命令格式如下: req [id] [statement]\n
2. 參數介紹:
1. req為標準的請求頭,必須使用該頭作為請求語(yǔ)句的開(kāi)頭。
2. id為請求的唯一id(需要為正整數),該id會(huì )作為返回值的一部分,用于用戶(hù)在并 發(fā)的情況下,能夠匹配返回值與用戶(hù)請求的命令。
3. statement為標準的python腳本命令,目前僅支持單行命令,如 set_tcp([0,0,0,0,0,0])。 腳本命令詳情參考 CS_腳本手冊 ,可在艾利特官網(wǎng)下載
3. 命令樣例:
req [1] set_tcp([0,0,0,0,0,0])\n
2.2. 返還值格式
1. 返回值格式說(shuō)明:
[id] [state] : [return value]\n
2. 參數介紹:
id為返回的結果對應的請求id,如果下發(fā)的請求由于格式錯誤等原因,無(wú)法正確解析id,此處會(huì )返回-1。
2. state為請求命令執行狀態(tài)包括succeed failure,分別表示執行成功與執行失敗。
3. return value表示請求返回值,如果執行成功,則該處返回執行結果。如果失敗,則 表示失敗原因。
4. 失敗原因目前包括兩種,分別為解析失敗parse failed,表示下發(fā)的請求命令格式存 在錯誤,無(wú)法正常解析,execute failed表示執行失敗,表示執行時(shí)拋出了異常。
2.3.機器人連接網(wǎng)線(xiàn)
將網(wǎng)線(xiàn)連接至控制柜的FB1網(wǎng)口

2.4.設置機器人網(wǎng)口IP
1. 點(diǎn)擊右上角艾利特logo

2. 點(diǎn)擊設置

3. 選擇靜態(tài)地址,設置FB1網(wǎng)口的IP

2.5. 電腦端的操作
更改網(wǎng)絡(luò )適配器,將IP設置成與機器人同網(wǎng)段。
關(guān)閉Windows防火墻,防止出現通訊失敗的情況。
使用socket tool等工具,連接機器人40011端口,進(jìn)行測試。
2.6. 示例
使用通訊助手創(chuàng )建客戶(hù)端,連接機器人40011端口,設置TCP參數

2. 發(fā)送req 1 set_tcp([0,0,0.01,0,0,0])\n(使用通訊助手發(fā)送命令時(shí),不需要發(fā)送\n,

在命令結尾處回車(chē)即可),設置tcp為[0,0,0.01,0,0,0]。

3. 獲取機器人當前關(guān)節角度,發(fā)送req 1 get_actual_joint_positions()\n
3. 常見(jiàn)問(wèn)題解答
3.1. 下發(fā)的id盡量每次不同,這樣便于管理,同時(shí)在一些同時(shí)請求的情況,可以區分返回值與請求之間的匹配關(guān)系
3.2. 不可以執行運動(dòng)指令(如movej命令)、不可以執行耗時(shí)指令(如sleep等),不可以執行無(wú)法退出的命令(如死循環(huán)等)
3.3. 與SEC命令類(lèi)似,請求命令并不會(huì )打斷正在執行的主函數(即def函數 ,def函數詳情請參考30001端口)