python开发上位机软件-UR机器人通信--上位机通信(python)
一、通信socket
socket()函數(shù)
Python 中,我們用 socket()函數(shù)來創(chuàng)建套接字,語法格式如下:
socket.socket([family[, type[, proto]]])
參數(shù)
family: 套接字家族可以使AF_UNIX或者AF_INET
type: 套接字類型可以根據(jù)是面向連接的還是非連接分為SOCK_STREAM或SOCK_DGRAM
protocol: 一般不填默認(rèn)為0.
二、ur接口(30001&30002)
Primary & Secondary 接口由機(jī)器人控制進(jìn)程維護(hù)和執(zhí)行的端口。 開機(jī)后,機(jī)器人
一直從這兩個(gè)端口以 10Hz 頻率對(duì)外發(fā)送機(jī)器人的狀態(tài)信息(機(jī)器人位置, IO,運(yùn)行狀
態(tài)等), 除此之外 Primary 端口還會(huì)發(fā)送一些全局變量更新等信息。因此如果需要編寫
上位機(jī)在線編程以及運(yùn)行監(jiān)視, 例如編寫一個(gè)類似示教器界面的上位機(jī)程序時(shí)可以使
用 Primary 端口(當(dāng)然對(duì)于加載程序,運(yùn)行程序等操作需要使用 Dashboard(29999)
接口)。
Primary & Secondary 接口在接收到上位機(jī)發(fā)送的腳本指令(腳本指令下載) 字符
串后會(huì)立即中斷當(dāng)前執(zhí)行程序(如果機(jī)器人正在運(yùn)行), 然后運(yùn)行接收到的腳本指令。
值得提醒的是,一些具有返回值的腳本指令,其返回值并不會(huì)通過這兩個(gè)端口返回,因
為腳本的執(zhí)行是在機(jī)器人控制進(jìn)程中,其返回值只傳遞給該進(jìn)程中的變量。
如果想一次性發(fā)送一段程序給機(jī)器人,需要將發(fā)送的程序按照如下格式發(fā)送:
_________________________________________
def functionName():
腳本指令
腳本指令
腳本指令
#對(duì)于函數(shù)或者 while 等結(jié)構(gòu)語句
#需注意同層次具有相同縮進(jìn)
腳本指令
……
end
**********************************************************
sec functionName():
非運(yùn)動(dòng)腳本指令
非運(yùn)動(dòng)腳本指令
非運(yùn)動(dòng)腳本指令
#對(duì)于函數(shù)或者 while 等結(jié)構(gòu)語句
#需注意同層次具有相同縮進(jìn)
非運(yùn)動(dòng)腳本指令
……
end
_______________________________________________
實(shí)際發(fā)送字符串(縮進(jìn)用空格,換行用 ):
“def functionName(): 腳本指令 腳本指令 …… end “
“sec functionName(): 腳本指令 腳本指令 …… end “
________________________________________________
三、move 命令
移動(dòng)命令分為moveJ、movel等,這兩個(gè)是比較常見的,只是移動(dòng)方式不同,J是指移動(dòng)兩點(diǎn)之間時(shí)按最快原則,路線不一定是直線,而L的話,則兩點(diǎn)間移動(dòng)必須是直線的;命令內(nèi)部,帶p關(guān)鍵字的是坐標(biāo)移動(dòng),輸入的內(nèi)容為坐標(biāo)值:
movej(p[239.7/1000, -54/1000, 336/1000, 2.18, -2.235, 0], a = 0.1, v = 0.1)
由于其xyz單位為米,所以如果輸入示教器相同的數(shù)據(jù)時(shí),需要除以1000轉(zhuǎn)換成米。
不帶p時(shí)候,表示為軸移動(dòng),控制的是各個(gè)軸的角度:
movej([d2r(-14),d2r(-64),d2r(-114),d2r(-94),d2r(87),d2r(158)],a=0.5, v=0.5)
其中d2r()為ur的腳本,把輸入角度轉(zhuǎn)換為弧度,因?yàn)檫@個(gè)接口的參數(shù)是弧度。
四、發(fā)送指令控制機(jī)器人
importsocket
target_ip= ("169.254.5.2" , 30001)print("start")
sk=socket.socket()
sk.connect(target_ip)
send_data1= "def svt(): movej(p[0.4,0.4,0.4,3.14,-1.57,1.57],a=1.4, v=1.05, t=0, r=0) end "sk.send(send_data1.encode("utf8"))print("end")
sk.close()
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python开发上位机软件-UR机器人通信--上位机通信(python)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目管理知识体系指南_MP考前冲刺丨项目
- 下一篇: 在scrapy中parse函数里面xpa