List

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ı :

  1. t1 = TIMER (-3)

MOVE loc1

MOVE loc2

BREAK

TYPE “t1 : ” , TIMER (-3) –t1

  1. 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.

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.