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

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

2. 點擊設(shè)置

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

2.5. 電腦端的操作
更改網(wǎng)絡(luò)適配器,將IP設(shè)置成與機(jī)器人同網(wǎng)段。
關(guān)閉Windows防火墻,防止出現(xiàn)通訊失敗的情況。
使用socket tool等工具,連接機(jī)器人40011端口,進(jìn)行測試。
2.6. 示例
使用通訊助手創(chuàng)建客戶端,連接機(jī)器人40011端口,設(shè)置TCP參數(shù)
2. 發(fā)送req 1 set_tcp([0,0,0.01,0,0,0])\n(使用通訊助手發(fā)送命令時,不需要發(fā)送\n,

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