ACE PROGRAMI & V+ DİLİ & ROBOT PROGRAMLAMA 3
ACE Programı nasıl kullanılır ? V+ dili ile Omron Adept Robotlar nasıl programlanır ? Robotlar nasıl çalışır ? Endüstriyel robotlar nasıl kontrol edilir ? Bu ve benzeri sorulara cevap aradığımız ACE Programı & V+ Dili & Robot Programlama yazı dizisinin 3. Yazısı ile karşınızdayız.
V+ DİLİ İLE ROBOT PROGRAMLAMA DERSLERİ 3
Basit String Fonksiyonları :
+ = Stringleri toplar
ASC($string,index) = String içerisinde ASCII karakter döndürür.
$CHR(value) = ASCII karaktere bağlı karakter döndürür.
$DECODE (string_var , $string_exp,mode) = Stringi tarar ve parçalara ayırır.
$ENCODE () = Real , string , text olarak hepsini [] kapalı parantezler içerisine ekler.
LEN($string) = Stringin uzunluğunu gösterir.
$MID ($string , first_char , num_char) = stringi böler
POS(search_string sub_string , start) = String içerisinde string pozisyonu belirlemeye yarar
Not : Stringler rakamlara ve rakamlarda stringlere dönüşebilir.
$INTB (değer) INTB($string , first_char) = 2 byte integer
$DMLB (değer) DBLB($string , first_char) = 8 byte double değer
$FLTB (değer) FLTB ($string , first_char) = 4 byte real
$LNGB (değer) LNGB ($string , first_char) = 4 byte double-integer
Transformasyonlar :
Dönüşümler string’e ve stringlerde dönüşümlere çevrilebilir.
$TRANSb (transformation) TRANSb (string , first_char)
Not : $ERROR (error_code) = Error text’e hata numarasını bildirir.
Değişken Sınıfları :
Global : Değişkenler local ve auto olarak spesifik bir şekilde belirtilmediği sürece varsayılan sınıf globaldir.
Not : Bir değişken kullanmadan önce sisteme bu değişkeni tanıtmalıyız.Aksi durumda tanımlanamayan değer hatası alırız.
DEFINED (only_variable) : Eğer değer tanımlandıysa fonksiyon ‘TRUE’ değerini döndürür.Genelde IF…THEN , WHILE …. , UNTIL.. gibi yapılar içerisinde kullanılır.Global , lokal değişkenler programın en başında tanımlanmalıdır.Aksi takdirde ‘misplaced declaration statement (-471)’ hatasını alırız.
Saykıl Zamanı Optimizasyonları :
Saykıl zaman optimizasyonu robot için çok önemlidir ve servoların minimum durmasını sağlayarak çalışmalıdır.
Sıfırlama Toleransı :
COARSE tolerance ALWAYS ;
Robot servo donanımı için düşük hassasiyeti etkinleştir.
FINE tolerance ALWAYS ;
Robot servo donanımı için yüksek hassasiyeti etkinleştir.
ÖRNEK :
MOVE p1
DO
WAIT
UNTIL DISTANCE (HERE , DEST) <=20
MOVE p2
Her bir saykıl zamanında robot hedef mesafe için 20mm’ye ya da daha yakına gelmeden diğer harekete geçmeyecektir.
ÖRNEK :
MOVE p1
WAIT (STATE (10) > 95)
MOVE p2
İleri hareket başladığında , robot tüm hareketin yüzde 95’i tamanlanıncaya kadar devam eder.%95 tamamlandığında değer 0 olur ve derhal diğer harekete geçer.
ÖRNEK :
COARSE 100 ALWAYS
CPOFF ALWAYS
MOVE p1
COARSE 50
MOVE p2
MOVE p3
FINE 20
MOVE P4
GOTO 100
Robot Hızı :
Monitor Hızı alanı ; SmartController’a bağlı tüm robotlar için genel hızdır.
SPEED speed_factor MONITOR ; Hız faktörü 1-120 arasındadır.
Program Hızı : V+ üzerinde tanımlı hızdır.
SPEED speed_factor , (rSpeed_factor) (IPS/MMPS)(ALWAYS) ;
Robot Hızı = Monitor Hızı x (Program Hızı /100)
Örnek olarak ;
SPEED 30 = %30 hız ayarıdır.
SPEED 300, 40mmps = 300 mmps maksimumdur.%40 kadarı ise şimdi maksimum hız dönüşü olur.
Robot Hızlanma :
Maksimum hızın değerlerinin yüzdesel olarak gösterimidir.
Örnek olarak ; ACCEL (profile) acceleration , deceleration
ACCEL 30 , 30 = %30 maksimum kalkış ve duruş hızı
Yine bunun için -> Configure -> S-Curve Profiles yolunu izleyebilirsiniz.
Dipnot : DURATION time ALWAYS
Eksen COARSE & FINE Standart Toleransı :
Workspace explorer üzerinden Robot üzerine çift tıklayınız ve gelen ekran üzerinden Motor’a tıklayınız.Ardından Joint eksenini seçiniz.Buradan ilgili düzenlemeleri yapabilirsiniz.
Cycle Time Ölçümü :
TIMER (timer_number)
Timer_number -> okunacak timer numarasına bakar.
TYPE Komutu :
TYPE output_specification ,…,output_specification monitör ekranında tanımlı çıkış bilgilerini gösterir.Yani TYPE ekrana ne istiyorsanız onu yazdırır.
TYPE “Cycle Time is = ” , TIMER(1)
Monitor penceresi hataları görmek ve kullanıcıya hız, parametre , kontak , aktif , inaktif vb. işlemler adına yazma izni verir.
2 Çeşit Timer Kullanımı :
- t1 = TIMER (-3)
MOVE loc1
MOVE loc2
BREAK
TYPE “t1 : ” , TIMER (-3) –t1
- TIMER(3) = 0
MOVE loc1
MOVE loc2
BREAK
TYPE ”t2 : ” , TIMER (3)
GOTO label :
Pointers bu komut geldiği zaman hızla ilgili komuta gider ve çalışmaya oradan devam ederler.
Aralık = 0-655535
CALL program(arg_list)
Çalışan programı durdurur ve diğer bir programı çalıştırır.
ÖRNEK :
CALL prg1 (counter);
CALL prg1 ((counter));
İlk CALL’da program1’e 3 değeri ile gider ve dönüşte artık program içerisindeki değeri 4 olur.
İkinci CALL’da counter bir değerle gider ve döndüğünde de aynı değerle döner.
Şartlı Dallar :
IF mantıksal_ifade GOTO label
Çalışma sonucuna bağlı olarak GOTO komutunun çalışması gerçekleşir.
Mantıksal ifadenin sonucu TRUE ya da FALSE’tur.
IF mantıksal_ifade THEN ELSE
Çalışma sonucuna bağlı olarak grup komutlarının şartlı çalıştırılmasıdır.
CASE value OF (VALUE value_1:…..) …(VALUE value_n : ANY)
Case yapısıdır.Yapının sonunda end kullanılır.
FOR Yapısı :
Belirtilen rakam kadar blok kod içerisinde çalışma döngüleri oluşturur.
FOR index = start_val TO end_val STEP incr
code block
END
DO ifade UNTIL mantıksal_ifade :
Mantıksal ifade TRUE olana kadar DO içerisindeki ifadeyi çalıştırır.
- DO
Kod bloğu
UNTIL mantıksal_ifade
WHILE mantıksal_ifade DO : DO … UNTIL ile benzer çalışır.
- WHILE mantıksal_ifade DO
Kod Bloğu
END
BOOLEAN İFADELERİ :
== (Eşittir)
< (Küçüktür)
> (Büyüktür)
<= , =< (Küçük ya da eşittir)
>= , => (Büyüktür ya da eşittir)
<> (Eşit değildir)
NOT (Tersi)
AND (Mantıksal AND)
OR (Mantıksal OR)
XOR (Özel Mantıksal OR)
BAND (Binary AND)
BOR (Binary OR)
BXOR (Binary Özel OR)
COM (Binary Complement)
Transformations (Dönüşümler) : 6 eksen adına pozisyon tanımlanması ve konum ayarlanmasını sağlayan ifadedir.Robot konumu ve koordinat sistemi olarak tanımlanabilir.
Transformation (x, y, z , yaw , pitch , roll)
Ör. SET pos_pick = TRANS (30,100,125,30,40,20)
Ör. TRANS (30,100,125,0,0,0) ifadesinde X’den 30 , Y’den 100 ve Z’den 125 kadar öteler.
Ör. TRANS (30,100,125,30,0,0) ifadesinde yaw = 30 olduğundan x eksenine göre 30 derece döndürülmüş olacaktır.
Ör. TRANS (30,100,125,30,40,0) ifadesinde x ekseninde 30 derece döndükten sonra 40 derece de y ekseninde döndürülür.
Ör. TRANS (30,100,125,30,40,20) ifadesinde x ekseninde 30 derece döndükten sonra , 40 derece y ekseninde döner ve bu dönüşlerin ardından gelinen konuma göre z ekseninde 20 derece döner.
Bu duruma EULER ZYZ’ kuralı adı verilmektedir.Sysmac studio içerisinde de RX , RY, RZ olarak kullanılır.
SET pos.rx = RX (45) -> pos.rx = (0,0,0,-90,45,90)
SET pos.ry = RY (45) -> pos.ry = (0,0,0,0,45,0)
SET pos.rz = RZ (45) -> pos.rz = (0,0,0,0,0,45)
SHIFT :
SHIFT (transformation BY x_shift , y_shift , z_shift)
Shift komutu kabaca kaydırma komutudur.Uygulandığında dünya koordinat sistemine göre belirtilen offset değeri uygulanır.
Ör. SET pos2 = SHIFT (pos1 BY 70 , -100 , 60)
Ör. SET ref_pos = TRANS (300 ,50 , 300 , 0 ,180 , 0)
SET pos2 = SHIFT (ref_pos BY -400 , 100,120)
Not : ‘:’ İki nokta vektör toplama gibi çalışır.
Normalde => Pos3 = Pos1 + Pos2 iken V+ dilinde ; Pos3 = Pos1 : Pos2 şeklinde kullanılır.
Not : ‘: TRANS (x , y, z , yaw , pitch , roll)’ Trans iki noktadan sonra kullanıldığında her bir değer koordinat sistemine uygulanır.
Ör. SET pos2 = pos1 : TRANS (70 , -100 , 60 , 0 , 0 , 100)
Ör.
SET ref_pos = TRANS (300 , 50 , 300 , 0 , 180 , 0)
SET pos2 = ref_pos : TRANS (-400 , 100 , 120 , 0 , 0 ,0)
Sonuç = (700 , 150 , 180 , 0 , 180 , 0) olur.
INVERSE (transformation) :
INVERSE(trans) : trans
Verilen transformation değerinin matematiksel olarak ters vektörünü alır.Vektör olarak bağıl B noktasına göre A belirlenirken bu fonksiyondan sonra A noktasına göre B noktası belirlenir.
Inverse () komutu farklı lokasyonlar arasında pozisyon vektörü hesaplamak adına çok kullanışlıdır.
SET pos1 = TRANS (300 ,50 ,300,0,180,0)
SET pos2 = TRANS (-100 , 150, 420 , 0 ,180 ,0)
SET dif = INVERSE (pos1) : pos2
Not : ‘: ’ iki nokta vektör toplamı gibiyken , ‘INV ‘ vektör çıkarımı gibi düşünülebilir.
BASE :
BASE x_shift , y_shift , z_shift , z_rotation
Burada bir çevrim ve döndürme işlemleri yapılır.
Bu komut break gibi etki yapar.
Ör. BASE 100 , -50
Tüm lokasyonları yeniden düzenler ve negatif x yönünde 100 mm , pozitif z yönünde 50 mm kaydırılır.
ACE Programı & V+ Dili & Robot Programlama 3 Sonuç :
Bugünki yazımızda ACE Programı & V+ Dili & Robot Programlama 3 adlı yazımızı sizlerle paylaştık.Bu yazı dizisi ile ilgili alandaki konulara dair geniş bir bilgi verme amacımıza adım adım ilerliyoruz.Bu yazı dizisi umuyorum sizlere yardımcı olacaktır.
İyi Çalışmalar.