ABB-robotstudio使用详细步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
搬运码垛工作站建模
1、创建机器人系统
2、创建动态输送链
3、创建动态夹具
4、工作站逻辑连接
5、添加 IO(设置好需重启)
6、示教目标点(同步到 RAPID)
7、RAPID编程
、创建机器人系统1、创建空工作站
2、导入IRB 260机器人模型
3、从布局创建机器人系统,勾选 Chinese
和709-1网络
、创建动态输送链
1、添加输送链并修改位置
-<X>
■*=
-丿 =
If e»w
T Q ;b
2L*a f^fsand
Wr
任詩 5TJP1
匚
聲
jj wf-i
監lAM 帼1融M
菲E
9^ 烷■
tl ・i |■厂 iRJlHP JuMJhri PRT
B
Fh\^i ir*fite.
,展』||\-」|||』(1
咀1_
补口B <I 「;工虫』.1)
了曲|
2、创建600*400*200的物料并修改位置
3、添加一个smart组件
屯日哼…乙? ”刁沫保存工作站]-ABB RobotStudio 6—
4、添加source 组件
@11: 5u 託电
£marffil4
P ^rent
P Q si ti cn Ijnip)
O.QQ
1
▲ D 00 區1
1亍
0 00
J K I T
I
Qr i 曲 at i m Gee)
C
0.00
T
□. DO
JL,
| |y
0 00 |T
|
_/ Tr insi ent
田舐陌島城口茫已岂窿范复制对爲誉厅乐记・朗止冈存背屛龙发生. EKtCUte
旋用
5、设置物料本地原点
建植
控劃器g
RAPID Add-Ins
修改
g 细'4蟲
G 导入几呵燼
>至都件 &桓架〒
Smarty 伴Q 标记・
孕虱*・宅]掏呻辿界 费表匡” £1表面边界 曰燥-闿从註盛边界
GD --工卞壬宜 O 感去
幌控亡m 戎
U >苗合 客尿竣生成直践 它一建
CAD*
届性5C_箱送疽|
____________ X 应胃
关闭
|筋|建模閩 牙味保存工作站1*
声物料-2
彳理1 SQ 義送睚X 励sc_输送链 I 融
组
________________________ 子对龜组井
盪tn 细件编错父74芟
Source
物料
属性
璽
SG_输送链
组咸|属性与连结[信号和连捱丽 子对象鉅件
麻恤纟冃件 g
處呈
Siurcft
创建一个图盼组件的拷瓜
已證垦二q 可it
可见
设走內竺
设罟本地愛敷勒料
应用 黄闭
6、添力口 LINEMOVE 和 QUEU 组件
返[未保存工作站1*
fflft
-4 sc.ffiisSi
Lin* ^rMov^r 丿二Qn 已"
虫 S*ur 寸物H
护物料_2
Ctrl*X 复刮
Ctrl-匚
ct 「i 亠
s
墓考
__| sc_«^S x L
厢sc_输送
链
组成 禹性与逹结I 信号和连播I 设计
7设置LINEMOVE 属性
届性:Lin earM ever
▼ X
属性
Object 日
W 输送 ▼
Direct ion Gnm) -i.ao ' o.oo " □.«)
: F
(m/i)
200
Rtf&rsuci
Global ♦
信号
B
Execute
1应用
1
灵闪]
&添加面传感器组件
Ori gin 亦 loao.oo
**
1 T 1
-220. 00
T73. 00
~v
1
信号
关闭
9、设置输送链不能被传感器检测
属■性:P Ilan eSen
sc r
JE 性
三]
Axi si Q MH ) 450.00
0. 00 Axi E 2 ^nm)i
0.00
:0. 00
E 色 iiHwdP art
0. 00
应用
Ctrl-X
Ctfl-C
帖芒 Ctrl+V
已理几何愫
检杳
-^- W
®^*ucs
*
&
盘
o
X Srh ^-4 MSJ
>
叛丑
>
k
惨顶M
她雜SD 几词体应
、
外睚坏
10、设置SC_输送链的属性连接
11、设置信号连接
12、添加信号处理组件,用于检测传感器下降沿
届性! LogicGate[NOT|
属性
Op erator
BUT
Delay (fi)
□. 0
信号
关闭
J |观匡丄| £C輕踊X [
I尿
sc_输送链
组成国性与连结倍号亚按设计
却毀组件
SmartiS.^
1 Source
'创遂一个图形组件的拷贝
Line aHM over
移动一个対象剽一条结上
”血Q ULEU电
表示拘耐象的PA5'J*可作拘组进行撫纵
Lo
进
缠
Op
布届連嘆I嚴I 匹味保存工怖占]*
机械蕉詈
jj Plu^«Stni:or
J事监测对象与平面相交
Locic<?ate [HOT] 进帶悼信号的
卷揖运箕
13、传感器下降沿触发source进行copy I TL 输Ou
14、传感器与SC 输送链的输出联系
I
士hHrfl 「n 心协
产开孑耳十宙苗启涓垢 IfiBi
SftriCW Swet
驾 HUT E4
tZ»«[*kL4Q>l
Eii4iL«av TlaieStJiscr 5eii5(rDLl 訓真IE
li
和 IIL-UE
Log. cGitf [HTT] Etatpicil Lofi [WT1
Iipul K
Loig : eGite [NTT]
Qvlpijl
?nirizt
JCMZICl O'-L (
SCJflfett
三扪匚“上・皿”"1_!"| 堀皆 总用 I/-」wTi i • )]||r
15、添加仿真开始结束组件,用于激活传感器
SC 更世楚X I sc 输送键
召寻尊
uFf c
H ti' _i: - -i:-
Ji 0 t ■C.Tnjut
尙sc_输送链
属性与14结|值号和谨接丨设计
子对余组件
3] Soiirce
■创建一亍圉形组件的拷囚
- LizLearFlcver
V移动一介耐象到一杀线上
Queue
恚示脚对蔬的乩列,可作汁组遴讦操孤
I J Fl uieS £tisor
H事苗测对象与平面相交
■I—、_ Lo^i[WT]
A磁器勘宇信号的逻辑运算
|/— SinulatiimEveiits
,厶J一仿車畔冶和偉[:时片出『1瞬冲信2
rrr
16、添加置位复位组件,对仿真开始结束信号进行保持裁sc_输送琏
组我
匡性5连结荷号和连掩设计
子对證殂件
■ _ Linavrklayar
叱移动-亍对象到—杀线上
Q卫曽口聲
表示为时象的认列,可作为组进行操纵
[j, PlaneSens or
e■监圳対象与平面相交
-TA Ldgi eGate [HOT] 丄占逬荐敎宇信當的邊辑
运算
I/- R S irfiul ali oziE^eiits
仿亘幵始和恒止时芨尤的脉冲信号
洱1 cSHLfiteh
昴设备谊傥锁定
rrr
Sr^KW ihCl T^IniDfi d
ffil*ffl'Ifi蔚曲冃扁?fit
L・GB^&t・ [ET]jull Ji L M□虫•■MTJ IificrU
L■牛i・[IDT]JhjLjral S-7EE-Z3.Bx-t=i.t<
il«M^4M4T泊他啦Xjmi tlllJlt ■附
ShAalF'd arf! tnl ■,£dnl.*U«Ed I HT-I-I J Lhpa2>Li.C.-di dik
、l-T«il>h"lBl<rMM刘沁吐l. T • tjj-fct B IWI.
L呵崩・那廿TX ■il^474hl4*'Ii t|**
別拯fc*§目网B3#?d»
^rirc«EJMlt4pJ a>」*4EJVJ4K-
F'l hTr«J4«j|M EiMirDldL tAjaoa-g.w
M乩“町gi.U|i^<4 iRrTl T屮■■
Lqf ■£|RT|.IH警初^4"电B EfietUI-*
01」
Fl U>fi::fMI知冋盯g实用祗
気・ijli - FrZTan' i£iH・ i ,rE、■* *:■( T L?|L喧IL#.品
5k*Hll*i;l aru: Ef^Jrl LAfL^SlLbLCh LaC-kk
Ll£JC^l^-l.t=SL llir^uaEjm fiEUn
[iLnjli^j iflMU SdlFCE Exeort.«
L"山啊吐鼻i 11 ■:■皿环MJ
磴•hlTM「•:■»>< ■:卜:,•" J£f£.迂•:・:血"r^TT * i ti- 1 H^ 卜坯
18、进行仿真设定选择SC ------- 输送链进行验证
三、创建动态夹具
1、先制作一个吸盘模型,然后设置成工具,并安装到机器人法拉盘
2、添加SMAR组件
3、添力口 ATTACHE和 DETACHE组件组薦属性与连结I信号和连接丽
Atte.cher 安装-V 对象 D«t«.?L»r
*拆瞧一个已安装的对象
B
单SniSSWf 何对象与两点之间的线段相交
6、线传感器设置属性
5、添加一个线传感器组件 子対隶组甘
阖10组性
LineSensor
LineSen&or | G X
Jitt ~~a
St art (mm)
[no^|^■o ao:1356.00Ji.
亍1
End Grwn)
1505.00j ao^1256.00Ji. M 1
R^diu瓦(rm)
4. 00
SeJisadFart
iRiieo_n(j_2aa_oi/Ba£^ ■
Seits&iFoiiLt (jnm)
0.00 Q ao 14.00"
信号日
应用关闭
7、设置吸盘工具不能被传感器检测
8、把线传感器安装到吸盘(不更新位置,保持
当前位置)
丿廟囂二具
曲勺吐t acker 商
De lacker
LiiLeSens
丿七
itsi
Ctrl-X
口「1-
匚
Hrl-V 绘存为氧X. rr™
可见
送运为皿
9、设置属性连接
卜
k
届性
body 1
Body 1
1RB46O_11&_24G_Q1
H”揃•鋅
xipan
电史K 1;11«利酒$世L
'tT.DlTrt :t!D 庖活 H 许U 崛tfr WlT
10、添加信号及连接
励SC:_工具B J±
生京t-.+
(x> 肯E
.:-•一'n =・k<! - =;F 门•命=三皿UK
_________________
:-ttlOO *™r.ectim 扌嚴Q 世型L'O "■inr.tirtE^s ND;
11、添加信号处理取非和锁定组件
子曲漿组件滋协细件
Etflichftr
:拆柠-亍已安装的对象
LinaS aits or
检测是否有任何对象与两点之i蒯绒段相交
H f \ LogiuG札怙D1OT]
占丿进行数宇信号的逻辑运算
12、继续信号连接•Attaeher安装一个对象
归L _! 凯,
m SC_XA 坐
WltlTF冃•eT* 愿刁三列旨佶己<Bi H[;
13、添加一个示教物料
14、应用手动线性验证 SC工具
信号
:]
VarvOE
o
L 的一
期1 tK 穹:左誠” M
沾】”
J
富 I U Ko_] ]□申q
*甘吨■
iWtt Ad 用
Iflff
£❻血JE 具 II
副让凸KT
四、工作站逻辑连接
忙;H
弄y : f iP^fc ^dd-tv
k H -■=
壬書
*j 7 G
前
mgw
eiwi
st
B r
H 皿曲•
]>l3t«S X
忑sc P allet
p J •=呻辰北
忌二片51
-XW 3=- ■- =Ga.-亍 =二"
teliEAS “
盘切」1 ■口:
医壬严口 S ■耳 精 H1T
4t 3 ■神
□HIM! IT
dr ;j«
5 出■鼻幣
氏"**
4sMx XT J
h jr/“片 AC Pad
^BT Jlllk
SC "'Jir
___________
五、参考代码
MODULE MainMoudle
PERS tooldata
tGrip:=[TRUE,[[0,0,200],[1,0,0,0]],[25,[0,0.00109327,116.889],[1,0,0,0],0,0 ,0]];
!吸盘工具数据
PERS loaddata LoadEmpty:=[0.01,[0,0,1],[1,0,0,0],0,0,0];
PERS loaddata LoadFull:=[40,[0,0,50],[1,0,0,0],0,0,0];
!有效载荷数据
PERS robtarget pHome:=[[1620.00,-0.00,1331.59],[1.27986E-06,-
0.707107,- 0.707107,1.27986E-
06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!基准点
PERS robtarget pActualPos:=[[1620,-1.87531E-14,1331.59],[1.27986E-06,- 0.707107,-0.707107,1.27986E-
06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!实际点
PERS robtarget
pPick1:=[[1488.007792464,376.826660408,476.964684195],[0,0.707106307,0.7071 07256,0],[0,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
!1 路拾取目标点
PERS robtarget pPlace1:=[[-
292.446,1263.27,55.4492],[0,0.707107,0.707106,0],[1,0,2,0],[9E+09,9E+09,9E+ 09,9E+09,9E+09,9E+09]];
!1 路放置基准点
PERS robtarget pBase1_0:=[[-
292.446294945,1263.272085268,55.449220723],[0,0.707107387,0.707106176,0],[1 ,0,2,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
!1 路放置 0 度姿态
PERS robtarget pBase1_90:=[[-
391.976797324,1362.469634994,55.449159414],[0,1,-
0.000030621,0],[1,0,3,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
!1 路放置 90度姿态
PERS robtarget pPick2:=[[1488.013130905,-
358.406014736,476.965039287],[0,0.707106307,0.707107256,0],[-
1,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERS robtarget pPlace2:=[[-317.378,-
1857.99,55.449],[0,0.707108,0.707106,0],[-2,0,-
1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PERS robtarget pBase2_0:=[[-317.378137718,-
1857.993871961,55.448967354],[0,0.707107745,0.707105817,0],[-2,0,-
1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERS robtarget pBase2_90:=[[-407.525988074,-
1755.902485322,55.449282402],[0,1,-0.000031217,0],[-
2,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERS speeddata MinSpeed:=[1000,300,5000,1000];
PERS speeddata MidSpeed:=[2500,400,5000,1000];
PERS speeddata MaxSpeed:=[4000,500,5000,1000];
!搬运速度定义
PERS bool bPalletFull1:=FALSE;
PERS bool bPalletFull2:=FALSE;
!逻辑布尔量,拾取后为 UE放置后为FALSE
PERS num nCount1:=1;
PERS num nCount2:=1;
!输送链计数
PROC Main()
rInitAll;
WHILE TRUE DO
IF diBoxInPos1=1 AND diPalletInPos1=1 AND bPalletFull1=FALSE THEN rPick1;
rPlace1;
ENDIF
IF diBoxInPos2=1 AND diPalletInPos2=1 AND bPalletFull2=FALSE THEN rPick2;
rPlace2;
ENDIF
WaitTime 0.1;
ENDWHILE
ENDPROC
PROC rInitAll()
Reset doGrip;
pActualPos:=CRobT(\tool:=tGrip);
pActualPos.trans.z:=pHome.trans.z;
MoveL pActualPos,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJ pHome,MidSpeed,fine,tGrip\WObj:=wobj0;
bPalletFull1:=FALSE;
nCount1:=1;
bPalletFull2:=FALSE;
nCount2:=1;
ENDPROC
PROC rPick1()
MoveJ Offs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;
MoveL pPick1,MinSpeed,fine,tGrip\WObj:=wobj0;
Set doGrip;
WaitTime 0.3;
GripLoad LoadFull;
MoveL Offs(pPick1,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0; ENDPROC
PROC rPick2()
MoveJ Offs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;
MoveL pPick2,MinSpeed,fine,tGrip\WObj:=wobj0;
Set doGrip;
WaitTime 0.3;
GripLoad LoadFull;
MoveL Offs(pPick2,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0; ENDPROC
PROC rPlace1()
rPosition1;
MoveJ Offs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0;
MoveL pPlace1,MinSpeed,fine,tGrip\WObj:=wobj0;
Reset doGrip;
WaitTime 0.3;
GripLoad LoadEmpty;
MoveL Offs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0;
MoveJ Offs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;
nCount1:=nCount1+1;
IF nCount1>20 THEN
bPalletFull1:=TRUE;
ENDIF
ENDPROC
PROC rPlace2()
rPosition2;
MoveJ Offs(pPlace2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;
MoveL pPlace2,MinSpeed,fine,tGrip\WObj:=wobj0;
Reset doGrip;
WaitTime 0.3;
GripLoad LoadEmpty;
MoveL Offs(pPlace2,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0;
MoveJ Offs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;
nCount2:=nCount2+1;
IF nCount2>20 THEN
bPalletFull2:=TRUE;
ENDIF
ENDPROC
PROC rPosition1()
TEST nCount1
CASE 1: pPlace1:=Offs(pBase1_0,0,0,0);
CASE 2: pPlace1:=Offs(pBase1_0,600+10,0,0);
CASE 3: pPlace1:=Offs(pBase1_90,0,400+10,0);
CASE 4: pPlace1:=Offs(pBase1_90,400+10,400+10,0);
CASE 5: pPlace1:=Offs(pBase1_90,800+20,400+10,0);
CASE 6: pPlace1:=Offs(pBase1_0,0,600+10,200);
CASE 7: pPlace1:=Offs(pBase1_0,600+10,600+10,200);
CASE 8: pPlace1:=Offs(pBase1_90,0,0,200);
CASE 9: pPlace1:=Offs(pBase1_90,400+10,0,200);
CASE 10: pPlace1:=Offs(pBase1_90,800+20,0,200);
CASE 11: pPlace1:=Offs(pBase1_0,0,0,400);
CASE 12: pPlace1:=Offs(pBase1_0,600+10,0,400);
CASE 13: pPlace1:=Offs(pBase1_90,0,400+10,400);
CASE 14: pPlace1:=Offs(pBase1_90,400+10,400+10,400);
CASE 15: pPlace1:=Offs(pBase1_90,800+20,400+10,400);
CASE 16:
pPlace1:=Offs(pBase1_0,0,600+10,600);
CASE 17:
pPlace1:=Offs(pBase1_0,600+10,600+10,600);
CASE 18:
pPlace1:=Offs(pBase1_90,0,0,600);
CASE 19:
pPlace1:=Offs(pBase1_90,400+10,0,600);
CASE 20:
pPlace1:=Offs(pBase1_90,800+20,0,600);
DEFAULT:
TPErase;
TPWrite "the Counter of line 1 is error,please check it!";
Stop;
ENDTEST
ENDPROC
PROC rPosition2()
TEST nCount2
CASE 1:
pPlace2:=Offs(pBase2_0,0,0,0);
CASE 2:
pPlace2:=Offs(pBase2_0,600+10,0,0);
CASE 3:
pPlace2:=Offs(pBase2_90,0,400+10,0);
CASE 4:
pPlace2:=Offs(pBase2_90,400+10,400+10,0);
CASE 5:
pPlace2:=Offs(pBase2_90,800+20,400+10,0);
CASE 6:
pPlace2:=Offs(pBase2_0,0,600+10,200);
CASE 7:
pPlace2:=Offs(pBase2_0,600+10,600+10,200);
CASE 8:
pPlace2:=Offs(pBase2_90,0,0,200);
CASE 9:
pPlace2:=Offs(pBase2_90,400+10,0,200);
CASE 10:
pPlace2:=Offs(pBase2_90,800+20,0,200);
CASE 11:
pPlace2:=Offs(pBase2_0,0,0,400);
CASE 12:
pPlace2:=Offs(pBase2_0,600+10,0,400);
CASE 13:
pPlace2:=Offs(pBase2_90,0,400+10,400);
CASE 14:
pPlace2:=Offs(pBase2_90,400+10,400+10,400);
CASE 15:
pPlace2:=Offs(pBase2_90,800+20,400+10,400);
CASE 16:
pPlace2:=Offs(pBase2_0,0,600+10,600);
CASE 17:
pPlace2:=Offs(pBase2_0,600+10,600+10,600);
CASE 18:
pPlace2:=Offs(pBase2_90,0,0,600);
CASE 19:
pPlace2:=Offs(pBase2_90,400+10,0,600);
CASE 20:
pPlace2:=Offs(pBase2_90,800+20,0,600);
DEFAULT:
TPErase;
TPWrite "the Counter of line 1 is error,please check it!";
Stop;
ENDTEST
ENDPROC
PROC rModify()
MoveJ pHome,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJ pPick1,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJ pBase1_0,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJ pBase1_90,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJ pPick2,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJ pBase2_0,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJ pBase2_90,MinSpeed,fine,tGrip\WObj:=wobj0;
ENDPROC
ENDMODULE
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等
打造全网一站式需求。