Professional Documents
Culture Documents
Chương7 Lập trình dieu khien PDF
Chương7 Lập trình dieu khien PDF
1
Sơ đồ hệ thống điều khiển chung
x*, y*, z*
q 1* q *n
ĐK1 ĐKn
Uđk1 Uđkn
BBĐ1 BBĐn
UĐ1 UĐn
Đ1 Đn
M Đ1 M Đn
TL1 TLn
E1 En
K1 K2 Kn
2
q1 qn
Sơ đồ hệ thống điều khiển chung
M«I trêng
lµm viÖc
Hệ điều Động học Động lực M¸y tÝnh
RB học RB
hành
I/O
Vi §K
BUS
Phần mềm
điều khiển
ĐK SECVO CB Lùc Thị giác
KĐ CS
Mô đun phần mềm điều khiển : hàm thực hiện thuật toán ĐH , ĐLH, luật điều
khiển.
Chương trình điều khiển thực hiện cac thông tin Người/Robot : điều khiển RB
thực hiện các nhiệm vụ công nghệ.
2. Lập trình bằng ngôn ngữ văn bản : Dùng ngôn ngữ mô tả các chuyển động theo
công nghệ
Lập trình đơn giản
Lập trình hướng đối tượng Robot hoặc nhiệm vụ 4
7.1. Khái quát ngôn ngữ lập trình
5
7.1. Khái quát ngôn ngữ lập trình
Nhóm 2 : Phát triển ngôn ngữ lập trình máy tính : mở rộng trợ giúp ĐK RB :
Pascal, Basic, C,….
Nhóm 3 : Ngôn ngữ lập trình cho các máy ĐK chương trình số :
MCL (1985) – Manufacturing Control Language : phát triển của
APT (Automatically Programmed Tooling) cho máy NC.
HELP của General Electric Company
6
7.1. Khái quát ngôn ngữ lập trình
Thế hệ thứ nhất : VAL là ngôn ngữ lập trình đầu tiên
Sử dụng các câu lệnh và panel dạy học để lập trình.
Là ngôn ngữ “mức chuyển động (Motion level)” : thực hiện các chuyển
động.
Điều khiển ĐiỂM – ĐiỂM :
Gồm các câu lệnh định nghĩa trình tự chuyển động (MOVE, WAIT,
SIGNAL,…)
Nội suy đường thẳng.
Bổ xung các chương trình con
Các lệnh ghép nối sensor
Đặc điểm :
Chương trình mức độ phức tạp trung bình, dễ lập trình.
Không có khả năng tính toán các phép toán số học phức tạp.
Không có khả năng ghép nối các cảm biến phức tạp.
7
Khả năng liên lạc với các máy tính khác hạn chế
7.1. Khái quát ngôn ngữ lập trình
MÔ TẢ ĐỐI TƯỢNG
Mô tả đối tượng trong không gian : ma trận phép biến đổi và phương trình Động
học
xA
11
7.3. Lập trình hướng đối tượng
Hai dạng :
+ Lập trình hướng đối tượng robot
+ Lập trình hướng đối tượng nhiệm vụ
12
7.3. Lập trình hướng đối tượng Robot
1. Xác định không gian làm việc và các bộ phận : đồ gá, giá cấp vật liệu.
2. Định nghĩa hướng , vị trí của các bộ phận bằng sử dụng cấu trúc dữ liệu.
3. Mô tả công việc bằng trình tự các hành động : di chuyển, qắp chi tiết, lắp ráp,…
4. Các lệnh điều khiển cảm biến bổ xung : phát hiện sự cố , ghi lại quá trình LV.
5. Kiểm tra chương trình và hiệu chỉnh hoàn thiện chương trình.
13
7.3. Lập trình hướng đối tượng Robot
Bước 2. Định nghĩa hướng , vị trí của các bộ phận bằng sử dụng cấu trúc dữ
liệu : Mô tả vị trí, hướng đối tượng bằng ma trận đồng nhất (4x4)-Phép biến đổi
Các phép biến đổi
R: Thân RB so với {U}
T6 : Cô tay so với {R}
R
R E : Điểm kẹp so với
U
U Đ
{T6}
Đ
G : Giá đỡ so với {U}
T6 CT : chi tiết so với {G}
T6
ECT : điểm kẹp trên {
CT}
EE M : Máy so với {U}
M Đ : Vị trí lắp so với {M}
M
ECT
ECT
PBĐ so với KTĐ gốc :
TH=R.T6
CT
CT TE=R.T6.E
TCT=G.CT
G TECT=TCT.ECT
14
TĐ=M.Đ
7.3. Lập trình hướng đối tượng Robot
+ Di chuyển đến A.
+ DI chuyển đến vị trí
R gắp chi tiết
+ Gắp chi tiết
U Đ
+ Di chuyển đến B
T6
+ Di chuyển đến C
+ Di chuyển đến D.
+ Lắp chi tiết vào lỗ
E
Dùng các hàm thực
M hiện chuyển động
ECT
CT
15
7.4. Ngôn ngữ lập trình RAPID (Robot ABB)
+ Cấu trúc dữ liệu chính
+ Các hàm tính toán động học.
+ Các hàm mô tả chuyển động
16
Cấu trúc dữ liệu
17
Cấu trúc dữ liệu
3. Biểu diễn hướng : orient – (mô tả hướng cổ tay và phép quay - q1, q2, q3, q4)
q1, q2, q3, q4 : num
Dấu q1, q2, q3
q2=sign(jz – ky )
q3=sign(kx – iz )
q4=sign(iy – jx )
18
Cấu trúc dữ liệu Ngôn ngữ RAPID (Robot ABB)
3. Biểu diễn hướng : orient – (mô tả hướng cổ tay và phép quay - q1, q2, q3, q4)
Ví dụ 2 : Xác định phép biểu diễn hướng của cổ tay
Ma trận quay
19
Cấu trúc dữ liệu Ngôn ngữ RAPID (Robot ABB)
3. Biểu diễn hướng : orient – (mô tả hướng cổ tay và phép quay - q1, q2, q3, q4)
Ví dụ 3 : Xác định phép biểu diễn hướng của đối tượng so với KTĐ cổ tay
Ma trận quay :
20
Cấu trúc dữ liệu
4. Biểu diễn phép biến đổi : pose – (mô tả phép biến đổi)
trans (vecto tịnh tiến) : pos
rot (phép quay) : orient
Ví dụ : VAR pose frame1;
...
frame1.trans := [50, 0, 40];
frame1.rot := [1, 0, 0, 0];
21
Cấu trúc dữ liệu
VÍ DỤ : CONST robtarget p15 := [ [600, 500, 225.3], [1, 0, 0, 0], [1, 1, 0, 0],
[ 11, 12.3, 9E9, 9E9, 9E9, 9E9] ]
extax : extjoint
robconf : confdata eax_a : num
cf1 : num (Trục 1) eax_b : num
cf4 : num (Trục 4) eax_c : num
cf6 : num (Trục 6) eax_d : num
cfx : num (Chọn ) eax_e : num
eax_f : num
22
Cấu trúc dữ liệu
24
Cấu trúc dữ liệu
25
Cấu trúc dữ liệu
6. Biểu diễn vị trí khớp đích : jointtarget (Vị trí Khớp phải đạt tới)
robax (Vị trí khớp) : robjoint
( rax_1, rax 2 , rax_3 , rax_4 , rax_5 , rax_6 : num)
extax (Khớp bên ngoài) : extjoint
( eax_1, eax 2 , eax_3 , eax_4 , eax_5 , eax_6 : num)
26
Cấu trúc dữ liệu
7 . Dữ liệu tốc độ : speeddata : Tốc độ chuyển động của robot và các trục bên
ngoài gồm cả tốc độ chuyển động tịnh tiến và quay
v_tcp :num (mm/s) : Tốc độ của TCP
v_ori : num (độ/s) : Tốc độ quay TCP
v_leax : Tốc độ dài của các trục bên ngoài (mm/s)
v_reax : Tốc độ quay trục bên ngoài (độ/s)
27
Cấu trúc dữ liệu
8 . Dữ liệu vị trí dừng : stoppointdata : xác định điểm dừng gần điểm lập trình
trước khi một lệnh mới.
type : loại điểm dừng : 1 inpos ; 2 stoptime ; 3 fllwtime
progsynch : đồng bộ hóa chương trình : true; fall
inpos .position : : Vị trí dừng của TCP : mức độ hội tụ vị trí (% )của vị trí dừng đặt
trước.
inpos.speed : Tốc độ tại điểm dừng : mức độ hội tụ (% tốc độ) tại vị trí dừng
đặt trước .
inpos.mintime : Thời gian đợi nhỏ nhất trước khi đạt đến vị trí. (max 20 s)
inpos.maxtime : Thời gian đợi lớn nhất trước khi đạt đến vị trí. (max 20 s)
stop time : Thời gian dừng của TCP trước khi thực hiện chuyển động tiếp theo
follow time : Thời gian chuyển đông bám theo băng (0-20s)
signal : string – dự phòng
28
checkvalue : num : dự phòng
Cấu trúc dữ liệu
8 . Dữ liệu vị trí dừng : stoppointdata : xác định điểm dừng gần điểm lập trình
trước khi một lệnh mới.
VÍ DỤ : VAR stoppointdata my_inpos := [ inpos, TRUE, [ 25, 40, 0.1, 5], 0,0, "", 0, 0];
MoveL *, v1000, fine \Inpos:=my_inpos, grip4;
+ Dạng điểm dừng : inpos
+ Điểm dừng đồng bộ với chương trình RAPID
+ Múc độ hội tụ : 25% của khoảng cách đối với điểm dừng.
+ Múc độ tốc độ : 40% của tốc độ đối với điểm dừng.
+ Thời gian đợinhỏ nhất trước khi hội tụ là 0,1 s
+ Thời gian đợi lớn nhất trước khi hội tụ là 5 s
Cánh tay RB sẽ di chuyển cho đến khi đạt được một trong tiêu chuẩn vị trí và tốc độ
. 29
Cấu trúc dữ liệu
9 . Dữ liệu tool : tooldata : mô tả đặc tính của tool : súng hàn hoặc gripper
robhold : bool : true – robot có tool; fall – không có tool
tframe (KTĐ tool) : pose (vị trí tool :x,y,z và định hướng : q1, q2, q3, q4)
tload (tải trọng tool) : loaddata
+ Khối lượng của tool, kg.
+ Trọng tâm của tải tool (x, y, z) trong KTĐ
cổ tay.
+ Mô men quán tính của tool tương đối
với trọng tâm xung quanh các trục KTĐ
tool.
30
Cấu trúc dữ liệu
9 . Dữ liệu tool : tooldata : mô tả đặc tính của tool : súng hàn hoặc gripper
VÍ DỤ : PERS tooldata gripper := [ TRUE, [[97.4, 0, 223.1], [0.924, 0, 0.383 ,0]], [5,
[23, 0, 75],
[1, 0, 0, 0], 0, 0, 0]];
+ Cổ tay có tool.
+ Vị trí tool : X=97,4 mm; Z = 223.1 mm trong KTĐ cổ tay
+ Trục X, Z quay xung tương đối so với hệ tọa cổ tay một góc 45o
+ Khối lượng tool : 5 kg.
+ Trọng tâm : : X=23 mm; Z = 75 mm trong KTĐ cổ tay
+ Các mô men quán tính bằng không
31
Cấu trúc dữ liệu
11 . Dữ liệu wobjdata - Work object data – Mô tả đối tượng RB hàn, lắp ráp, xử lý
hoặc chuyển động
robhold : bool – True (RB đang gắp đối tượng); Fall (RB không gắp vật, có tool)
ufprog : bool – Hệ thống tọa độ cố định có được sử dụng
True : Hệ thống tọa độ cố định được sử dụng.
Fall : Hệ thống tọa độ di chuyển được sử dụng
ufmec : string – Cơ cấu cơ khí RB chuyển động cùng
uframe : pose – KTĐ của người sử dụng
oframe : pose – KTĐ đối tượng
32
Cấu trúc dữ liệu Ngôn ngữ RAPID (Robot ABB)
11 . Dữ liệu wobjdata - Work object data – Mô tả đối tượng RB hàn, lắp ráp, xử lý
hoặc chuyển động
33
2. Định nghĩa hướng , vị trí của các bộ phận bằng sử dụng cấu trúc dữ liệu :
34
Hàm tính toán động học vị trí
1. CalcRobT : Hàm tính ĐHT (ma trận biểu diễn vị trí và hướng cổ tay từ vị trí khớp)
Tính dữ liệu robtarget từ dữ liệu jointtarget.
Kết quả trả về : Vị trí (X, Y, Z); hướng (q1, q2, q3, q4); cấu hình khớp RB và
các trục bên ngoài.
jointtarget được biểu diễn trong calibration coordinate system
robtarget được biểu diễn trong outermost coordinate system
2. CalcJointT : Hàm tính ĐHN (Tính toán vị trí khớp từ ma trận biểu diễn vị trí và
hướng cổ tay)
Tính dữ liệu jointtarget từ dữ liệu robtarget
Kết quả trả về : Vi trí khớp và các trục bên ngoài.
jointtarget được biểu diễn trong calibration coordinate system
robtarget được biểu diễn trong outermost coordinate system
EulerZYX (Euler ZYX rotations) : TÍnh góc Euller từ cấu hình cổ tay
1. MoveJ : Hàm di chuyển bằng các khớp đến vị trí đích với đường phi tuyến, các trục
đồng thời chuyển động đến vị trí đặt tại cùng thời điểm.
MoveJ [\Conc] ToPoint [\ID] Speed [\V] | [ \T] Zone [\Z] [\Inpos] Tool [\WObj]
]
[ \Conc ] : switch (Tùy chọn)
ToPoint : robtarget (KTĐ Đích)
[ \ID ] : identno (đồng bộ trong hệ thống nhiều cơ cấu)
Speed : speeddata (Tốc độ d/c TCP, tốc độ quay của tool, tốc độ d/c và quay
của trục ngoài)
[ \V ] : num (Tốc độ TCP – mm/s)
[ \T ] : num (Thời gian chuyển động)
zone : zonedata
[ \Z ] : num (Sử dụng cho vị trí chính xác của TCP)
[ \Inpos ] : stoppointdata (sử dụng để dừng RB tại vị trí đặt trước khi thực hiện
d/c mới)
Tool : tooldata (mô tả đặc tính của tool)
41
[\WObj] : wobjdata (mô tả đặc tính của đối tượng)
Hàm di chuyển
1. MoveJ : Hàm di chuyển bằng các khớp đến vị trí đích với đường phi tuyến
MoveJ [\Conc] ToPoint [\ID] Speed [\V] | [ \T] Zone [\Z] [\Inpos] Tool [\WObj] ]
42
Hàm di chuyển
2. MoveJDO : Hàm di chuyển TCP bằng d/c khớp đến vị trí đích theo đường phi tuyến với tạo
tín hiệu ra.
MoveJDO ToPoint [\ID] Speed [\T] Zone Tool [\WObj] Signal Value
ToPoint : robtarget (KTĐ Đích)
[ \ID ] : identno (đồng bộ trong hệ thống nhiều cơ cấu)
Speed : speeddata
[ \V ] : num (Tốc độ TCP – mm/s)
[ \T ] : num (Thời gian chuyển động)
zone : zonedata
[ \Z ] : num (Sử dụng cho vị trí chính xác của TCP)
Tool : tooldata (mô tả đặc tính của tool)
[\WObj] : wobjdata (mô tả đặc tính của đối tượng)
Signal : signaldo (dạng tín hiệu ra)
Value : dionum (Giá trị tín hiệu ra)
43
Hàm di chuyển
2. MoveJDO : Hàm di chuyển TCP bằng d/c khớp đến vị trí đích theo đường phi tuyến
với tạo tín hiệu ra.
MoveJDO ToPoint [\ID] Speed [\T] Zone Tool [\WObj] Signal Value
VÍ DỤ :
44
Hàm di chuyển
3. MoveJSync : Hàm di chuyển nhanh TCP đến vị trí đích theo đường cong và thực
hiện CT con tại điểm giữa của góc đường di chuyển.
MoveJSync ToPoint [\ID] Speed [\V] | [ \T] Zone [\Z] Tool [\WObj] [\Corr]
Procname
ToPoint : robtarget (KTĐ Đích)
[ \ID ] : identno (đồng bộ trong hệ thống nhiều cơ cấu)
Speed : speeddata
[ \V ] : num (Tốc độ TCP – mm/s)
[ \T ] : num (Thời gian chuyển động)
zone : zonedata (kích thước của góc quĩ đạo chuyển động)
[ \Z ] : num (Sử dụng cho vị trí chính xác của TCP)
Tool : tooldata (mô tả đặc tính của tool)
[\WObj] : wobjdata (mô tả đặc tính của đối tượng)
ProcName : string
45
Hàm di chuyển
3. MoveJSync : Hàm di chuyển nhanh TCP đến vị trí đích theo đường cong và thực
hiện CT con tại điểm giưa của góc đường di chuyển.
MoveJSync ToPoint [\ID] Speed [\V] | [ \T] Zone [\Z] Tool [\WObj] [\Corr]
Procname
46
Hàm di chuyển
4. MoveL : Hàm di chuyển TCP đến vị trí đích theo đường thẳng
MoveL [\Conc] ToPoint [\ID] Speed [\V] | [ \T] Zone [\Z] [\Inpos] Tool [\WObj]
[\Corr]
[ \Conc ] : switch (Tùy chọn)
ToPoint : robtarget (KTĐ Đích)
[ \ID ] : identno (đồng bộ trong hệ thống nhiều cơ cấu)
Speed : speeddata (Tốc độ d/c TCP, tốc độ quay của tool, tốc độ d/c và quay
của trục ngoài)
[ \V ] : num (Tốc độ TCP – mm/s)
[ \T ] : num (Thời gian chuyển động)
zone : zonedata (kích thước của góc quĩ đạo chuyển động)
[ \Z ] : num (Sử dụng cho vị trí chính xác của TCP)
[ \Inpos ] : stoppointdata (sử dụng để dừng RB tại vị trí đặt trước khi thực hiện
d/c mới)
Tool : tooldata (mô tả đặc tính của tool)
[\WObj] : wobjdata (mô tả đặc tính của đối tượng)
47
[ \Corr ] : switch
Hàm di chuyển
5. MoveLDO : Hàm di chuyển TCP đến vị trí đích theo đường thẳng với tạo tín hiệu ra
MoveLDO ToPoint [\ID] Speed [\V] | [ \T] Zone [\Z] Tool [\WObj] [\Corr] signal
Value
ToPoint : robtarget (KTĐ Đích)
[ \ID ] : identno (đồng bộ trong hệ thống nhiều cơ cấu)
Speed : speeddata
[ \V ] : num (Tốc độ TCP – mm/s)
[ \T ] : num (Thời gian chuyển động)
zone : zonedata (kích thước của góc quĩ đạo chuyển động)
[ \Z ] : num (Sử dụng cho vị trí chính xác của TCP)
Tool : tooldata (mô tả đặc tính của tool)
[\WObj] : wobjdata (mô tả đặc tính của đối tượng)
Signal : signaldo (dạng tín hiệu ra)
Value : dionum (Giá trị tín hiệu ra)
48
Hàm di chuyển
5. MoveLSync : Hàm di chuyển TCP đến vị trí đích theo đường thẳng và thực hiện CT
con tại điểm giưa của góc đường di chuyển.
MoveLSync ToPoint [\ID] Speed [\V] | [ \T] Zone [\Z] Tool [\WObj] [\Corr]
Procname
ToPoint : robtarget (KTĐ Đích)
[ \ID ] : identno (đồng bộ trong hệ thống nhiều cơ cấu)
Speed : speeddata
[ \V ] : num (Tốc độ TCP – mm/s)
[ \T ] : num (Thời gian chuyển động)
zone : zonedata (kích thước của góc quĩ đạo chuyển động)
[ \Z ] : num (Sử dụng cho vị trí chính xác của TCP)
Tool : tooldata (mô tả đặc tính của tool)
[\WObj] : wobjdata (mô tả đặc tính của đối tượng)
ProcName : string
49
Hàm di chuyển
5. MoveLSync : Hàm di chuyển TCP đến vị trí đích theo đường thẳng và thực hiện CT
con tại điểm giưa của góc đường di chuyển.
MoveLSync ToPoint [\ID] Speed [\V] | [ \T] Zone [\Z] Tool [\WObj] [\Corr]
Procname
Ví dụ :
50
Hàm di chuyển
6. MoveJSync : Hàm di chuyển TCP bằng d/c khớp đến vị trí đích theo đường phi
tuyến và thực hiện CT con
51
Hàm di chuyển
7. MoveAbsJ : Hàm di chuyển với vị trí khớp tuyệt đối với nội suy góc khớp, các trục
chuyển động tới vị tri đích cùng một thời điểm
MoveAbsJ [\Conc] ToJointPos [\ID] [\NoEOffs] Speed [\V] | [\T] Zone [\Z] [\Inpos]
Tool [\WObj ]
[ \Conc ] : switch (Tùy chọn)
ToJointPos : jointtarget (vị trí Đích của khớp)
[ \ID ] : identno (đồng bộ trong hệ thống nhiều cơ cấu)
Speed : speeddata
[ \V ] : num (Tốc độ TCP – mm/s)
[ \T ] : num (Thời gian chuyển động)
zone : zonedata (kích thước của góc quĩ đạo chuyển động)
[ \Z ] : num (Sử dụng cho vị trí chính xác của TCP)
[ \Inpos ] : stoppointdata
Tool : tooldata (mô tả đặc tính của tool)
[\WObj] : wobjdata (mô tả đặc tính của đối tượng) 52
Hàm di chuyển
MoveAbsJ [\Conc] ToJointPos [\ID] [\NoEOffs] Speed [\V] | [\T] Zone [\Z] [\Inpos] Tool
[\WObj ]
VÍ DỤ : 1. MoveAbsJ p50, v1000, z50, tool2;
RB với Tool2 di chuyển đến vị trí khớp P50 (500), tốc độ 1000mm/ph, vùng 50
2. MoveAbsJ *, v1000\T:=5, fine, grip3;
RB với gripper3 di chuyển với tốc độ 1000 mm/ph trong t/g 5 s
3. MoveAbsJ *, v2000\V:=2200, z40 \Z:=45, grip3;
RB với gripper 3 di chuyển với tốc độ 2000 mm/ph và vùng 40; tốc độ 2200
mm/ph với vùng 45
53
Hàm di chuyển
8. StopMove : Hàm dừng chuyển động robot và các trục ngoài. Khi có lệnh StarMove,
Các
chuyển động được thực hiện trở lại
VÍ DỤ : 1. StopMove;
WaitDI ready_input, 1;
StartMove;
54
Hàm di chuyển
9. StartMove : Hàm chuyển động robot và các trục ngoài. Khi có lệnh StartMove, Các
chuyển động được thực hiện trở lại
+ Đặt sau các lệnh StopMove và Storepath
StartMove
VÍ DỤ : 1. StopMove;
WaitDI ready_input,1;
StartMove;
55
Hàm di chuyển
10. StorePath : Lưu trữ quĩ đạo khi xảy ra lệnh ngắt cho sử dụng tiếp theo
+ Đặt sau các lệnh StopMove và Storepath
StorePath
11. RestorePath : Sử dụng lại quĩ đạo chuyển động đã được lưu bằng lệnh StorePath
56
Thực hành : Viết chương trình điều khiển
DỮ LiỆU :
Tại B, cấu hình cổ tay được định hướng bằng ma trận quay :
58
Viết chương trình điều khiển
59
Thực hành : Viết chương trình điều khiển
// Phép biến đổi biểu diễn chi tiết so với KTĐ gốc (BASE).
TOCTO:= PoseMult(TOG, TOCTG);