我想學習pos機編程難么,ABB機器人編程技巧

 新聞資訊2  |   2023-06-12 09:18  |  投稿人:pos機之家

網上有很多關于我想學習pos機編程難么,ABB機器人編程技巧的知識,也有很多人為大家解答關于我想學習pos機編程難么的問題,今天pos機之家(www.www690aa.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、我想學習pos機編程難么

我想學習pos機編程難么

本文來自于微公號:工業機器人培訓。

1、 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

2、單工位多次預約程序

1)機器人有程序如下:

3)工藝過程如下:

機器人在home等待。有人按過di信號,機器人開始執行。人工可以一次性多次預約,即如果人工一次性按過3次,機器人執行三次

4)我們通過中斷來實現。

5)中斷的意義為,機器人后臺在不斷掃描(類似PLC),和機器人前臺運動不沖突。后臺實時掃描到信號就會去執行設定的中斷程序,中斷程序里沒有運動指令,前臺機器人不停,不影響運動

6)新建一個例行程序,取名tr_1,注意:類型選中斷(trap)

7)進入中斷程序,插入指令如下,即當機器人執行中斷程序時,給reg1記錄次數加1

8)進入主程序,設置中斷及對應的io信號

37行的意思是,任何時候di_1信號0變1,就會觸發執行tr_1中斷程序,即置flag1為true

35-37行程序只要運行過一遍即可,類似于設置開關,不需要反復運行

9)主要程序如下。即如果reg1=0,機器人在home等待

3

3、在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

4、ABB機器人雙工位預約程序

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

5、與相機通訊的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

6、ABB機器人如何創建數組

1)什么是數組?

將相同數據類型的元素按一定順序排列的集合

2)有什么用?

比如創建一個robtarget類型的數組p_array,p_array里有10個點位,走完10個位置就可以用如下代碼,方便簡潔

FOR i FROM 1 TO 10 DO

MoveL p_array{i},v500,z1,tool0;

ENDFOR

3)哪些數據類型能創建數組

所有數據類型都可以創建數組

4)數組最大幾維?

ABB機器人數組最大三維!

5)數組起始序號是0還是1?

是1

6)如何創建

a、程序數據

b、選中類型,比如Robtarget

c、新建,設置名稱,維數(這里舉例1維),每個維度的元素數量(舉例為10)

d、創建完,就有了一個10個數據的p_array,

e、修改點位,點擊上圖上某一行,修改位置,即把數組里的某一個元素位置修改了。

7

7、ABB機器人創建自定義數據類型

1)什么是數據類型?

諸如robtarget,jointtarget等,把一系列相關元素集合在一起,類似結構體

2)如何查看系統的數據類型

Robotstudio的指令功能數據類型

3)ABB機器人是否可以自定義數據類型?

可以

4)如何創建自定義數據類型

必須在創建在模塊的最前面,使用關鍵字RECORD 和ENDRECORD

5)舉例如下:

定義了一種數據類型叫student,里面包括性別(bool量),班級(num),分數。分數又是一個自定義數據類型,具體內容包括語文和數學分數。

6)可以在程序數據里查看到這個自定義的數據類型student

7)可以新建一個變量,類型為student,可以對內容設置

8)也可以在示教器進行賦值,類似p10.trans.x

8

8、ABB機器人數據存儲類型區別

CONST VAR PERS 區別

1)ABB機器人任何數據都有存儲類型,分為常量CONST,變量VAR和可變量PERS

2)常量CONST,即程序內不能賦值

3)變量和可變量程序都能賦值,區別如下

變量-有初值和當前值。在執行打開程序,移動指針到main,移動指針到routine時,變量的當前值會被初始化,即值變為初值

可變量,只有當前值。即任何時候做了修改,其值就修改了。在執行打開程序,移動指針到main,移動指針到routine時,值就是當前值,不會發生變化

4)默認插入的robtarget的存儲類型是const,即常量,此時無法賦值(如下圖,即使類型選到robtarget還是不顯示已經建立的robtarget)

此時,到程序數據,找到這個數據,編輯-更改申明,修改為變量

此時插入賦值語句時,就能找到這個點位了。

9

9、創建帶參數例行程序

1)什么是參數例行程序?

例行程序可以輸入參數,使用的時候看起來就像自定義指令

2)有什么用?

方便使用,用戶不用關心內部實現過程

3)如何創建

1)新建例行程序

2)設置名稱,點擊參數,設置輸入參數

3)添加參數,注意右邊的數據類型即為該參數數據類型,此處舉例輸入為2個robtarget

4)點擊確定。

5)程序內部根據自己需要添加內容

6)帶參數例行程序不能直接使用,必須有人調用,且輸入參數,如下

使用ProcCall

7)此處舉例pknpl指令的創建,實現功能為從pHome位置吸取并到Target_10位置放置

PROCRoutine2()

pknpl pHome,Target_10;

ENDPROC

PROCpknpl(robtarget pick_pos,robtarget place_pos)

MoveJoffs(pick_pos,0,0,30),v500,z1,tool0;

MoveL pick_pos,v500,fine,tool0;

Set do1;

MoveLoffs(pick_pos,0,0,30),v500,z1,tool0;

MoveJoffs(place_pos,0,0,30),v500,z1,tool0;

MoveL place_pos,v500,fine,tool0;

ReSet do1;

MoveL offs(place_pos,0,0,30),v500,z1,tool0;

ENDPROC

10

10、 ABB機器人創建碼垛程序

1)什么是碼垛?

有規律的移動機器人進行抓取及放置

2)如何簡便碼垛程序

設置好工件坐標系,工具,對第一個碼垛放置點進行示教,xyz方向的間距和個數可設

3)如何創建

創建m_pallet模塊

建立兩個routine

在init 程序里,設置xyz方向個數和各方向間距

在p_main程序里,創建機器人移動到pHome點,pPick位置(抓取位置),以及第一個放置點pPlace_ini

通過三層for循環,進行碼垛。實例程序為先x方向,再y方向,再z方向

其中偏移如下:

pPlace:=offs(pPlace_ini,(i-1)*dis_x,(j-1)*dis_y,(k-1)*dis_z);

11

11、創建有規律的機器人旋轉Robtarget

1)如果有上圖所示6個產品位置要吸取,如何最快速的創建點位?(純示教?Naive,太體力活了。)

2)如下圖,我們可以發現1號位置和0號位置姿態一樣,1號相對于0號就是一個半徑的偏移,2-6號位置相對于0號也都是一個半徑的偏移,2-6號姿態均朝向圓心。由于圖中為6個,即從2號開始,每個點姿態相對于1號旋轉了60°

3)是不是可以只要示教0號點位置,同時已知半徑(未知的話,自己量一下),就能自動算出其他6個點位置而不用示教了呢?答案當然是可以的!!!

4)由于涉及到坐標系偏移和旋轉,所以要做好Tool和工件坐標系

5)創建工具gripper_dual,假設z方向100,工具的Z方向為工具延伸方向

6)如下圖創建坐標系,圓心在中間,0號到1號方向為X,y如圖。下圖中的工件坐標系Z朝下(滿足右手法則)。這樣創建主要是為了計算方便。

7)在workwobject2坐標系,gripper_dual工具下,示教中間產品位置Target_center,此時工具的Z必須垂直于產品平面,即工具的Z朝下。(其實只是要用這個點的姿態和z,這個點的xy都是0,因為這個點在workobject2坐標系處于原點,即xy都是0)

8)設置圓心到第一個產品的距離(即半徑radius),這里舉例21.45mm

9)我們假設第一個位置叫Target1,則在workobject2坐標系下

Target1:=Target_center;!先讓Target1位置和姿態都等于Target_center

Target1.trans.x:=radius*cos(60*0);!重新計算位置的x

Target1.trans.y:=radius*sin(60*0);!重新計算位置的y

Target1:=RelTool(Target1,0,0,0Rz:=0*60);!得到計算后的位置x和y后,tcp繞著工具的Z旋轉60°。

10)通過上述例子,就得到了Target1位置,注意是在workobject2坐標系下。

11)再配合test等流程,就可以比較簡單的完成6個位置的計算和移動,如下

PROC main()

radius:=21.45;

count1:=1;

WHILEcount1<7 DO

rHome;

cal;

routine1;

count1:=count1+1;

ENDWHILE

ENDPROC

PROC routine1()

MoveJoffs(Target_temp,0,0,-30),v500,z1,gripper_dualWObj:=Workobject_2;

MoveLTarget_temp,v500,z1,gripper_dualWObj:=Workobject_2;

WaitTime 1;

MoveLoffs(Target_temp,0,0,-30),v500,z1,gripper_dualWObj:=Workobject_2;

ENDPROC

PROC cal()

Target_temp:=Target_center;

TEST count1

CASE 1:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=(count1-1)*60);

CASE 2:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=60);

CASE 3:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=120);

CASE 4:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=180);

CASE 5:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=-120);

CASE 6:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=-60);

ENDTEST

ENDPROC

PROC rHome()

MoveJpHome,v500,z1,gripper_dualWObj:=wobj0;

ENDPROC

12

12、Fine與z0的區別

1)什么是zonedata?

機器人轉彎半徑,即機器人在運行兩句運動指令時,若設置了轉彎半徑,機器人會平滑的過渡,轉彎半徑意義為,機器人進入到設置點半徑內的位置,機器人開始過渡

2)什么是fine?

如果要準確到達一個位置,使用fine

3)z0和fine的區別?

軌跡上,z0和fine類似。但fine除了準確到達,還有一個阻止程序預讀的功能

圖1 21行使用z0

圖2 21行使用fine

機器人運行的時候,示教器有2個圖標,一個是左側的箭頭,表示程序已經讀取到哪一行,還有一個是機器人圖標,表示機器人實際在走哪一行。為了要實現平滑過渡等功能,機器人要預讀幾行代碼。

如果使用了圖1的z0,機器人在走第21行,程序已經執行到23行,即機器人還沒走到位置已經打開do

如果使用了圖2 的fine,機器人在走第21行,程序還在21行,即有了fine,程序指針不會預讀,即機器人走完21行后,才會執行打開do。

以上就是關于我想學習pos機編程難么,ABB機器人編程技巧的知識,后面我們會繼續為大家整理關于我想學習pos機編程難么的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.www690aa.com/newsone/66984.html

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。