Kanca
Bir ABB robtarget değişkenine bakarsan, x, y, z koordinatının hemen
yanında dört tam sayı daha durur: cf1, cf4, cf6, cfx. Bunlar konum
değil. Kolun o noktaya HANGİ konfigürasyonda ulaştığını kaydederler —
dirsek yukarıda mı aşağıda mı, bilek nasıl kıvrılmış. Aynı x, y, z için
bu dört sayı değişirse, robot fiziksel olarak tamamen farklı bir duruşa
geçer.
Ne oldu
Bir RAPID programının iskeleti şuna benzer:
MODULE MainModule
PROC main()
MoveJ p10, v1000, z50, tool0 \WObj:=wobj0;
MoveL p20, v500, fine, tool0 \WObj:=wobj0;
ENDPROC
ENDMODULE
MODULE...ENDMODULE bir kod dosyasının sınırlarını çizer, PROC main()...ENDPROC çalışmanın başlayacağı prosedürdür — bu hattın lise
seviyesinde gördüğün "komutlar yukarıdan aşağıya sırayla çalışır"
kuralı burada da geçerli, sadece artık gerçek bir kontrolör
sözdiziminde.
Hedef tanımlama. p10 ve p20 birer robtarget. Bir robtarget
tek bir konum değil, dört parçadan oluşan bir yapıdır:
trans— x, y, z konumu (mm)rot— yönelim, kuaterniyon olarak (q1, q2, q3, q4)robconf— kolun konfigürasyonu:cf1, cf4, cf6, cfx(hangi eklem aralığında olduğunu gösteren tam sayılar)extax— varsa harici eksenlerin (döner tabla, ray) konumu
robconf alanının var olma nedeni bu hattın ters kinematik dersinde
gördüğün şey: aynı x, y, z noktasına kol birden fazla şekilde
uzanabilir (dirsek yukarı / dirsek aşağı). Sadece x, y, z verilseydi,
kontrolör hangi çözümü seçeceğini bilemezdi — robconf bu belirsizliği
ortadan kaldırır.
İş nesnesi (work object, wobj). \WObj:=wobj0 ifadesi, p10 ve
p20'nin HANGİ koordinat çerçevesine göre tanımlandığını söyler.
wobj0 robotun kendi tabanı; ama bir wobjdata tanımlayıp bunu bir
tezgahın, bir paletin veya döner bir fikstürün üzerine oturtabilirsin.
Böylece hedef noktaları o parçaya göre yazarsın — parça 90° döndüğünde
tüm robtarget değerlerini elle yeniden hesaplamana gerek kalmaz,
sadece iş nesnesinin çerçevesi güncellenir.
Gerçek dünyada
Bir gövde kaynak hücresinde aynı parça, konveyör üzerinde hafif kayıyor
olabilir. Sabit bir robtarget seti bu kaymayı hesaba katmaz. İş
nesnesini hareketli bir çerçeveye bağlarsan, robot hareket eden parçayı
takip eder — kayan şey wobj'dur, robtarget'ların kendisi değişmez.
Bu, iş nesnesi soyutlamasının pratikte neden var olduğunu gösteren tipik
bir örnek. (ABB bunu ayrı bir seçenek paketiyle, "conveyor tracking"
adıyla sunar; ayrıntıları bu dersin kaynağı olan veri tipleri
kılavuzunda değil, kendi uygulama kılavuzundadır.)
Nerede yetmez. robconf ancak konfigürasyon denetimi açıkken
(ConfJ/ConfL) bağlayıcıdır; kapatılırsa kontrolör hedefe en yakın
çözümü seçer ve program aynı satırlarla farklı bir kol duruşuna
gidebilir. wobj tarafında ise risk kalibrasyondadır: iş nesnesi
çerçevesi yanlış ölçülmüşse o çerçeveye bağlı TÜM hedefler birlikte
kayar — tek tek hiçbiri hatalı görünmez, hepsi tutarlı biçimde yanlıştır.
Dene
Sonraki
Sıradaki ders aynı görevleri KUKA'nın kendi diliyle (KRL) yazıyor — komut isimleri değişiyor ama bazı kararlar (dosyayı ikiye bölmek gibi) RAPID'den daha köklü şekilde farklılaşıyor.