ABB機器人Pdisp 軌跡偏移使用、單工位多次預約程式、在robotstudio建立兩臺機器人的socket連線、雙工位預約程式、與相機通訊的Socket收發資料處理與提取、如何建立陣列等程式設計技巧,感興趣的小夥伴儘快收藏!
1
PART
ABB機器人Pdisp 軌跡偏移使用
1。如果有下圖兩個產品,已經完成了右邊產品軌跡,左邊產品估計一樣,如何快速生成左邊軌跡(左邊產品可能有平移和旋轉)。
2。完成右邊軌跡示教Path_30,如上圖。起點為Target_20。
3。 完成左邊起點的示教,為Target_ref_start,如下圖。
注:如果左邊產品軌跡有旋轉,示教的Target_ref_start相對於左邊產品的姿態要和Target_20相對於右邊產品的姿態一致(此處左邊產品旋轉了30°,示教的角度z方向也旋轉了30°)
4) 插入指令如下
MoveJ pHome,v1000,z100,tWeldGunWObj:=wobj0;//移動到Home位置
Path_30;//執行右邊產品軌跡
MoveJpHome,v1000,z100,tWeldGunWObj:=wobj0;//回到Home
MoveJTarget_ref_start,v1000,fine,tWeldGunWObj:=wobj0;//走到左邊產品起點
ConfJOff;//因為使用偏移,關閉軸配置監控,否則有可能使用原配置引數導致位置走不到而報錯 ConfLOff; //因為使用偏移,關閉軸配置監控,否則有可能使用原配置引數導致位置走不到而報錯
PDispOnRot,Target_20,tWeldGun;//設定當前位置和Target_20的偏差關係(包括平移和旋轉),因為此時機器人停在Target_ref_start起點,即設定左邊軌跡和右邊軌跡的整體偏移關係。使用 ot表示平移和旋轉均計算。如果不使用 ot,則只使用平移,旋轉不計算
Path_30;//執行原有軌跡,此時軌跡參考座標移動關係,機器人實際走左邊產品軌跡
PDispOff;//軌跡完成,關閉平移關係
MoveJ pHome,v1000,z100,tWeldGunWObj:=wobj0;
2
PART
ABB機器人單工位多次預約程式
1。機器人有程式如下:
2。工藝過程如下:
機器人在home等待。有人按過di訊號,機器人開始執行。人工可以一次性多次預約,即如果人工一次性按過3次,機器人執行三次。
3。我們透過中斷來實現。
4。中斷的意義為,機器人後臺在不斷掃描(類似PLC),和機器人前臺運動不衝突。後臺實時掃描到訊號就會去執行設定的中斷程式,中斷程式裡沒有運動指令,前臺機器人不停,不影響運動
5。新建一個例行程式,取名tr_1,注意:型別選中斷(trap)
6。進入中斷程式,插入指令如下,即當機器人執行中斷程式時,給reg1記錄次數加1
7。進入主程式,設定中斷及對應的io訊號
37行的意思是,任何時候di_1訊號0變1,就會觸發執行tr_1中斷程式,即置flag1為true
35-37行程式只要執行過一遍即可,類似於設定開關,不需要反覆執行
8。 主要程式如下。即如果reg1=0,機器人在home等待
3
PART
在robotstudio建立兩臺機器人的socket連線
1。什麼是socket通訊?
就是TCP/IP通訊,無協議,在微軟環境下稱為socket。
2。socket通訊能幹什麼?
可以收發制定的資料,包括sting字串,byte陣列等。
3。建立socket機器人需要什麼選項?
機器人需要616-1 PC-INTERFACE選項。
4。socket通訊網線插哪個網口?
Service口(IP固定:192。168。125。1)或者Wan口都可以(可以自己設定)。
5。建立client端的例項
通常機器人和相機通訊,機器人作為client端。
a、新建一個機器人系統,注意建立系統時加入pc-interface選項。
b、為了避免之前的連線沒有關閉,先插入socketclose指令,後面的socket1為自己新建的socketdev型別的變數。
c、之後插入建立連線socketCreate。
d、插入建立連線SocketConnect,後面需要制定Server的ip和埠,如果是在電腦和另一臺虛擬控制器連線,ip設為“127。0。0。1”,埠自定義,建議不要用預設的1025。
這一步作用為機器人會和server建立連線,如果沒有建立成功會一直等待,如果成功則往下執行。
e、此處做測試,在建立成功後,插入TPWrite指令,可以在示教器看到socketclinent connect successful。
f、接下去可以收發資料,此處示例為client先發送資料給server,再接受server傳送回來的資料。
g、SocketSend後面可以傳送string或者byte陣列,具體可以選擇不同可選變數。
h、傳送完畢後,client接受到server發回的資料並寫屏。
6。以下為server端示例
a、重新建立一個工作站,建立時不要忘記新增pcinterface選項。
b、作為server,機器人需要建立2個socketdev變數。
c、為了避免之前的連線沒有關閉,同樣建議先socketclose。
d、
e、接著建立socketCreatetemp_socket 伺服器端socketdev。
f、SocketBind為繫結socket要監控的ip和埠,如果是虛擬模擬,ip為127。0。0。1,埠自定義(和client端設定一致)。
g、SocketListen為機器人server監聽是否有client連線。
h、socketAccept為接受client的連線。
i、建立連線後,機器人就可以執行死迴圈,即一直處於收發狀態。
j、 之前client程式為client先發後收,故這裡server先收後發。
7。client和server都寫完後,可以執行,注意先執行server端,即server機器人處於監聽狀態,如果連上,兩臺相互通訊,效果如下:
8。server機器人收到的訊息如下:
9。 client機器人收到的訊息如下:
4
PART
雙工位預約程式
1)有如下雙工位生產
2)工藝過程如下:
人工完成1#工位上料後按按鈕di_1(按鈕不帶保持,即人手鬆開訊號為0))機器人焊接1#工位。
此過程中人工對2#工位上下料,完成後按di_2完成預約(即不需要等機器人完成1#工作)。
機器人完成1#工作後,由於收到過di_2預約訊號,機器人自動去完成2#工位
3)我們透過中斷來實現。
4)中斷的意義為,機器人後臺在不斷掃描(類似PLC),和機器人前臺運動不衝突。後臺實時掃描到訊號就會去執行設定的中斷程式,中斷程式裡沒有運動指令,前臺機器人不停,不影響運動
5)新建一個例行程式,取名tr_1,注意:型別選中斷(trap)
6)進入中斷程式,插入指令如下,即當機器人執行中斷程式時,給bool量置true
同理設定第二個中斷程式
7)進入主程式,設定中斷及對應的io訊號
37行的意思是,任何時候di_1訊號0變1,就會觸發執行tr_1中斷程式,即置flag1為true
35-40行程式只要執行過一遍即可,類似於設定開關,不需要反覆執行
8)主要程式如下。即如果沒有人給di訊號,機器人就在home位等待。
9)
5
PART
與相機通訊的Socket收發資料處理與提取
1)相機通常傳送字串給機器人,比如”1。23,4。56,7。89D”,即x為1。23,y為4。56,z的角度為7。89,用D作為結束符,資料之間用“,”隔開。
2)如果機器人收到上述字串,如何把字串提取出來並付給變數deltaX,deltaY,和thetaZ?
3)建立若干num變數,用以儲存過程資料,比如StartBit1,表示x的資料從第幾位開始,Endbit1表示x的資料結束是第幾位,Lenbit1表示x資料的長度,s1表示提取的x的值的字串
4)
5)先假設x的第一位是1,給Startbit1賦值為1
6)插入函式strfind,查詢第一個“,”在第幾位,得到EndBit1值
7)
8)EndBit1減去StartBit1就是x的資料長度
9)同理得到y和theta的資訊
10)透過StrPart函式,提取從StartBit1開始到LenBit1結束的字串,即x的值的字串
11)
12) 同理得到y和z的字串
13)透過StrToVal函式,把s1轉為num型,付給delta_x, StrToVal函式的反饋值為bool量,即轉換成功為true不成功為false
14)同理得到delta_y和delta_theta
15) 成功後可以寫屏測試,如下圖
6
PART
ABB機器人如何建立陣列
1)什麼是陣列?
將相同資料型別的元素按一定順序排列的集合
2)有什麼用?
比如建立一個robtarget型別的陣列p_array,p_array裡有10個點位,走完10個位置就可以用如下程式碼,方便簡潔
FOR i FROM 1 TO 10 DO
MoveL p_array,v500,z1,tool0;
ENDFOR
3)哪些資料型別能建立陣列
所有資料型別都可以建立陣列
4)陣列最大幾維?
ABB機器人“>ABB機器人陣列最大三維!
5)陣列起始序號是0還是1?
是1
6)如何建立
a、程式資料
b、選中型別,比如Robtarget
c、新建,設定名稱,維數(這裡舉例1維),每個維度的元素數量(舉例為10)
d、建立完,就有了一個10個數據的p_array,
文章來源:網路