You are on page 1of 14

Interrupt Handling - Điều khiển Ngắt

• Cần thiết cho điều khiển thời gian thực


• Giúp chương trình bớt phức tạp
• Các routine riêng biệt(routines bẫy) có thể được chạy không phụ
thuộc vào chương trình bình thường khi một sự kiện xuất hiện ,
vd như một tín hiệu vào di1 được khởi tạo.
• Thời gian chạy rất ngắn, vd routine bẫy coi như là chạy song
song với chương trình thường.
• Quá trình thi hành bình thường bị chia thành 2, quá trình đang
chạy được hoàn thành song song. “Poor man’s” multitasking
• Loại sử dụng:
Robot là một máy phục vụ. Nếu máy bị dừng vị lỗi, chương trình
robot s khởi động lại. Đồng thời thông báo lỗi cũng sẽ hiện lên
Teach Pendant.
Interrupt Handling
di1

Chương trình bình thường Routine bẫy

Giám sát sự Bắt đầu


kiện

Ngắt
Các loại ngắt khác nhau

• Ngắt từ tín hiệu rời rạc đầu vào, di10


– Ngắt sẽ được khởi động khi tín hiệu đầu vào thay
đổi giá trị.
• Ngắt từ tín hiệu rời rạc đầu ra, do5
– Ngắt sẽ được khởi động khi tín hiệu đầu ra thay
đổi giá trị.
• Ngắt từ bộ định thời
– Ngắt sẽ được khởi động khi vượt qua khoảng thời
gian quy định.
Interrupt Handling
Xác định và kích hoạt một ngắt.

• Tạo một routine bẫy - trap1


• Kết nỗi routine bẫy với một mã ngắt.
- CONNECT intno1 WITH trap1;
• Xác định sự kiện - ISignalDI di1,1,intno1;
• Kết thúc chương trình
- IDelete intno1;
Cơ chế điều khiển ngắt

signaldi Giám sát INTNUM trap routine


di1 sự kiện intno1 Routine bẫy
trap1

Ngắt thứ 2 gọi cùng một


Kết nỗi routine bẫy
trap1 với intno1
CONNECT...

Xác định sự kiện và


kết nối di1 với intno1
ISignalDI...

signaldi Giám sát sự INTNUM IEnable


di2 kiện event intno2 IDisable intno1
IWatch
ISleep
IDelete
Trap Routines – Routine bẫy
• Trap routines được kết nối với các interrupts và chạy
khi interrupts được kích hoạt.
• Không có khai báo các tham số, không thể truyền bất
kỳ giá trị nào cho trap routine. Bạn cũng có thể dùng
dữ liệu toàn cục.
• Câu lệnh RETURN có thể dùng được nhưng không
cần thiết, nó sẽ quay lại điểm chạy khi ngắt được gọi
ra.
• Một vài ngắt có thể kết nối được với cùng một trap
routine.
Interrupt Handling
• ISignalDI [\Single], Signal, TriggValue, Interrupt identity
• Example: CONNECT intno1 WITH trap1;
IsignalDI, di1, 1, intno1;
• ISignalDO [\Single], Signal, TriggValue, Interrupt identity
• Example: CONNECT intno1 WITH trap1;
IsignalDO, do1, 1, intno1;
• ITimer [\Single], Time, Interrupt identity
• Example: CONNECT intno1 WITH trap1;
ITimer, 60, intno1;
Interrupt Handling

• IDisable Tất cả ngắt bị khóa lại.Tất cả ngắt được đặt


trong một hàng và điều khiển khi IEnable được chạy.
• IEnable Mở tất cả các ngắt.
• ISleep Là ngắt riêng biệt bị khóa tạm thời. Các ngắt
này bị bỏ qua, trong khi ISleep kích hoạt.
• IWatch Ngắt riêng biệt được kích hoạt.
• IDelete Ngắt riêng biệt bị xóa và không thể dùng được
nữa.
Trap Routines
Chuyển động với trap routines
• Thông thường các chuyển động vẫn tiếp tục ngay cả khi trap routine
chạy.
• Nếu chuyển động bị dừng lại, nghĩa là có lệnh StopMove trong trap
routine. Trước khi ra khỏi trap routine, chuyển động được khởi động lại
bằng StartMove. Lưu ý : chương trình sẽ tiếp tục chạy sau lệnh
StopMove, chứ không cần đợi robot dừng lại.
• Nếu có chuyển động khác được thực hiện trong trap routine, thì lộ trình
ngắt phải được lưu trữ trước. Điều đó được thực hiện nhờ StorePath,
lập trình ngay sau lệnh StopMove. Lưu ý: StorePath sẽ đợi đến khi
robot dừng lại, trước khi tiếp tục chạy.
• Trước khi bắt đầu chuyển động gián đoạn với StartMove, lộ trình phải
được lưu lại nhờ RestoPath. Lưu ý : Các điểm dừng sẽ không được lưu
lại bằng RestoPath, chỉ lưu lại các thông số thuộc tính như tốc độ,
dạng nội suy, v.v...
Interrupt Handling
Trigg interrupts
• TriggInt Triggdata Distance [\Start] | [\Time] Interrupt identity
• Ví dụ:
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 5, intno1;
...
TriggL p1, v500, trigg1, z50, gun1;
TriggL p2, v500, trigg1, z50, gun1;
...
IDelete intno1;
Thủ tục ngắt trap1 sẽ chạy khi TCP ở vị trí cách 5mm trước
điểm p1 hoặc p2.
Trigg IO
• TriggIO Triggdata
Distance
[\Start] | [\Time][\DOp] | [\GOp] | [\AOp]
SetValue
[\DODelay]
• Ví dụ:
VAR triggdata gunon;
...
TriggIO gunon, 0,2\Time\DOp:=gun, 1;
TriggL p1, v500, gunon, fine, gun1;
Tín hiệu đầu ra gun sẽ có giá trị 1 khi TCP ở thời điểm
0,2 giây trước khi đến điểm p1.
Trigg Equip
• TriggEquip Triggdata
Distance
[\Start]
EquipLag
[\DOp] | [\GOp] | [\AOp]
SetValue
[\Inhib]
• Example:
TriggEquip trigg1,10, 0.1, \DOp:=do4,1;
TriggL p1, v500, trigg1, z50, gun1;

do4 có giá trị 1, ở thời điểm 0.1 s trước khi robot đạt tới
vị trí 10 mm cách p1
p1
0.1s 10 mm
TriggL
• TriggL [\Conc] concurrent execution of following ogical
instructions
ToPoint destination point
Speed
[\T] time
Trigg_1 trigg data to be used
[\T2]-[\T4] additional trigg data to be used
Zone
Tool
[\WObj]
• Example: TriggIO triggdo4,200\DOp:=do4,1;
MoveJ p1, v500, z50, tool1;
TriggL p2,v1000,triggdo4,z10,tool1;

p1 200 p2
Interrupt Handling
Cơ cấu Trigg interrupt

TriggInt
intno trap

TriggIO
CONNECT
trigg data

TriggL

servo

You might also like