Skip to main content

Omron Adept Robot Programı ve Programlama -3 | ACE ve V+ Dili Eğitimi

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.

Omron robot programlama eğitimi

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.

Omron Adept Robot Programı ve Programlama -2 | ACE ve V+ Dili Eğitimi

ACE PROGRAMI – V+ DİLİ ve ROBOT PROGRAMLAMA 2

V+ Dilinde kullanılan komutlar nelerdir ? ACE programı nasıl kullanılır ? Robot hangi komutlarla hareket ettirilir ? Komutlar arasındaki farklar nelerdir ? Bu ve benzeri sorulara cevap aradığımız ACE Programı – V+ Dili ve Robot Programlama adlı yazı dizisinin ikinci yazısını sizlerle paylaşıyoruz.

V+ DİLİ İLE ROBOT PROGRAMLAMA DERSLERİ 2

MOVE /MOVES Komutları :

Move : Bu komut ile robot , direk olarak değil , açılı , daha rahat ve salınım yaparak istenilen noktaya gider.

Moves : Direk , 90 derece olarak istenilen noktaya gider.

Break : İlgili hareket tamamlandığında , çalışmayı durdurması ve döngüyü kırması için kullanılır.

CPOFF : Sıradaki hareket komutunun robot tarafından tamamlanmasını durdurur.

Eğer always parametresi tanımlandıysa yalnızca sıradaki robot etkilenecektir.Break komutunun aksine ileri hareket çalışmasını durdurmaz.

CPOFF ALWAYS* :

Sıralı robot hareket komutlarını sürekli olarak inaktif eder ancak ileri hareket çalışmasını durdurmaz.

Sürekli Yol OFF :

CPOFF ALWAYS

MOVE pstart

MOVE p1

SIGNAL 97

MOVE p2

SIGNAL -97

MOVE p3

MOVE pstart

Not : CPON ve CPON ALWAYS*’te sürekli yol işlemini başlatırlar.

CLOSEI : Mevcut sürekli yol hareketinde BREAK işleminne sebep olur.Ve hareket bitiminde kapanma yönüne gider.

OPENI : Mevcut sürekli yol hareketinde BREAK işlemlerine sebep olur ve hareket bitiminde açılma yönüne gider.

DELAY : Bu komutla verilen süre kadar bu komut geldiğinde robot bekler.

Robotu duraklatmak için kullanılabilecek diğer komutlar ise ; DETACH , HALT , PAUSE , RELAX , TOOL’dur.

Omron robot programlama dersleri

BREAK İle ilgili örnek ;

MOVE p1

BREAK (p1 hedefe gidene kadar ileri hareketi durdur)

SIGNAL 2001 (p1’e gelince 2001 sinyali TRUE olur)

MOVE p2 (sonra p2’ye git)

  1. yol

MOVE p1

SIGNAL 2001 (Hareket başlar başlamaz 2001 sinyali TRUE olur)

MOVE p2

CPOFF ;

CPOFF ALWAYS

MOVE p1

SIGNAL 2001

MOVE p2

İkiside (move p1 , signal 2001) aynı anda çalışır fakat p1’e varana kadar p2 başlamaz.

Grafiksel işlemler ve gösterim adına ;

CPOFF ALWAYS

Trace.start = TRUE

MOVES pos2b

Trace.sig1 = TRUE

MOVES pos3b

Trace.sig2 = TRUE

BREAK

Trace.start = FALSE

Kol Konfigürasyonları : Dirsekler ya sağ kol gibi ya da sol kol gibi hareket ederler.

CONFIG (select) : Robotun geometrik konfigürasyonuna geri dönmesini sağlar.

CONFIG (….)

0 ise ; Anlık pozisyonundan robot konfigürasyonuna geri dön

1 ise ; Anlık hareketin sonunda robot konfigürasyonuna geri dön

2 ise ; Sıradaki hareketin sonunda robot konfigürasyonuna geri dön

APPRO Komutu : APPRO location , distance ;

Robotu Z ekseni kadar yukarıda , direk olmayacak şekilde , rahat ve salınımlı şekilde sabit hızda hareket ettirir.

APPROS Komutu ise ; Robotu Z ekseni kadar yukarıda , direk olarak , rahat ve salınımlı şekilde sabit hızda hareket ettirir.

DEPART distance ; Robot Z eksenindeki d kadar mesafeyi bozmayacak şekilde ilgili mesafe kadar direk olmayacak şekilde hareket eder.

DEPARTS distance ; Robot Z eksenindeki d kadar mesafeyi bozmayacak şekilde ilgili mesafe kadar direk olacak şekilde hareket eder.

Pick : Nesnelerin alındığı konum

Place : Alınan nesnelerin bırakıldığı konum

D = Çarpışma veya diğer kazaların olmaması adına güvenli mesafedir.

Not : APPRO robotu kesin pozisyona götürür.

DEPARTS robotu kesin noktaya göre bağıl bir mesafe kadar uzağa taşır.

Örnek :

APPRO pick , d

MOVES pick

BREAK (closeı kısmı başlangıç)

CALL closeGripper

WAIT.EVENT , hand.time

DEPARTS d (closeı bitiş)

APPRO place , d

MOVES place

BREAK (openı başlangıç)

CALL openGripper

WAIT.EVENT , hand.time

DEPARTS d (openı bitiş)

DRIVE joint , value , speed ; Sabit hızda ve belirli bir açı değeri ile robotu yalnızca spesifik Joint noktasına götür.

JMOVE joint1, joint2 , joint3 , joint4 , joint5 , joint6 ; Sabit hızda ve belirli bir spesifik açı değeri ile her bir ekseni hareket ettirir.Eğer spesifik olarak bir joint istemiyorsanız , joint yerlerine boşluk bırakın.Eğer 0 yazarsanız 0 derecesine(noktasına) gidecektir.

MOVEC (angle , turn)* Location1 , Location2 ;

Ör . MOVEC (angle , turn)* Center ;

Angle : Arc açısının derecesidir.(-360 / 360)

Turn : Null ya da 0’ın anlamı sabit pozisyon , 1’in anlamı ise Arc ile dönüştür.

ACE programından bir program eklemek için “V+ User Modules” kısmına sağ tıklayarak “Add New V+ Program” diyerek ilerleyiniz ve isim veriniz.Sonra karşınıza yorum şeklinde açıklamalar olan , girişler ve çıkışların olduğu bir sayfa gelecektir.Böylece programı eklemiş olursunuz.

Not :Yorum eklemek ya da yorum kullanmak için ‘;’ noktalı virgül kullanmalıyız.

Not : Sürükle bırak yöntemi ile çalıştırmak istediğimiz programı task’ların içerisine atmalıyız.

Not : Programı debug etmek için programa sağ tıklayıp “debug on task” denilerek kırılma noktasına programı götürebilirsiniz.(Eğer varsa)Gittiği yerde kırmızı renkle işaretlenecektir.

Eğer programda bir hata meydana gelirse program üzerinde kırmızı çizgi olarak orası gösterilir.Gidip hatayı burada görebilir ya da nerde kaldığını anlayabilirsiniz.

V+ Değişken Tipleri :

Reals (-3.4 x 10^38 / +3.4 x 10 ^ 38)

Doubles (-1.8 x 10^307 / +1.8 x 10^307)

Integer ifadeleri real olarak tanımlayabiliriz.

eV+ özel lojik data tiplerine sahip değildir.eV+ 0’ı false olarak kabul eder.Diğer tüm değerleri ise TRUE olarak kabul eder.

Örnek :

Real_var =1365

Start_program = TRUE

Stop_program = FALSE

Program çalıştıktan sonra eV+ bu değerleri değiştirir ve start program = -1 , stop_program =0 olarak kabul eder.

Prefix = yok = -193 = decimal

Prefix = ^B = ^B1001 = Binary

Prefix = ^ = ^346 = Octal

Prefix = ^H = ^H23FF = Hexadecimal

Prefix = ^D =^D20000000= double-precision

Nümerik Değer Fonksiyonları :

ABS = Mutlak değeri bul

ATAN2 = Value_1/Value_2’ye eşit olan trigonometrik tanjant açısını bul

BCD = Gerçek değeri Binary Coded Decimal’e çevir

COS = Verilen açının trigonometrik olarak cosinüsünü bul

DCB = BCD digitlerini integer değer dönüştür.

FRACT = ilgili değerleri kesirli parçalara ayır

INT = Değeri integer olarak döndür.

MAX  =Liste içerisindeki değerlerden maksimum olanını bul

MIN = Liste içerisindeki değerlerden minimum olanını bul

OUTSIDE = Belirli alan dışında olup olmadığının kontrol edilmesinde kullanılır.

PI = Pi değerini döndürür.

RANDOM = Rastgele numara döndürür.

SIN = Açının sinüsünü alır.

SQR = Parametrenin karesini döndürür.

SQRT = Parametrenin karekökünü döndür.

Matematiksel Operatörler :

Toplama (+) , Çıkarma (-) , Çarpma (*), Bölme (/) , Mod (mod alma)

Konumlar iki yolla belirlenebilir.

Transformations (dönüşümler) ve Precision Point (Kesin Nokta)

Transformasyonlar 6 komponent için özel tanımlı Kartezyen konumu ve ayarlamasıdır.

Precision Point ; her bir joint için kesin nokta belirlenmesidir.

Transformasyon noktaları Locations kısmı altındadır.Precision Point kısmıda precision points klasörü altındadır.

Örnek :

SET location.pos = TRANS (x,y,z , yaw , pitch , roll)

SET #precision.point = #PPOINT (j1_value , j2_value,j3_value , j4_value , j5_value , j6_value)

SET pos.1 = TRANS (250 , -300 , 175 , 0 , 180 , -70)

SET #start.pos = #PPOINT (0,-90 , 180 , 0 , 90 , 0)

Not : Lokasyonlar set komutu ile tanımlanır ve precision pointler ‘#’ işareti ile başlar.

Tanımlanan lokasyonlar ‘Here’ komutu ile kaydedilebilir.

HERE current.pos (şimdiki transformasyon konumunu current.pos’a kaydet)

HERE #current.p.point (şimdiki eksen değerlerini #current.p.point’e kaydet)

Fonksiyonlar :

HERE : Transformasyon içindeki o anki pozisyona dön.

DEST : Interruptlarda çokça kullanılır ve robotu belirsiz(rastgele) bir yere götürür.

#PHERE : Her bir joint için şimdiki pozisyona dön

#PDEST : Her bir joint için hareketin sonunda igili pozisyona dön.

1 ) DECOMPOSE varname[index] = Location -> Decompose edilmiş değeri index’ten index+5’e kadar Real Array olarak yaz.

Örnek : DECOMPOSE val [0] = pos_1

Sonuç : Val [0] = 250 , Val [1] = -300 , Val [2] = 175 , Val [3] = 0 , Val [4] = 180 , Val [5] = -70

2) DECOMPOSE varname [index] = #precisionpoint -> Burada da precision(kesin) değerleri decomposed edilmiş şekilde yazar.

Örnek : DECOMPOSE Val[1] = #start.pos

Val [1] = 0 , Val [2] = -90 , Val [3] = 180 , Val [4] = 0 , Val [5] = 90 , Val [6]=0

DX = Kullanılan koordinat sistemindeki lokasyondan X’i alır.

DY = Kullanılan koordinat sistemindeki lokasyondan Y’yi alır.

DZ = Kullanılan koordinat sistemindeki lokasyondan Z’yi alır.

Örnek :

Curr.pos.x = DX (Here)

Curr.pos.y = DY (Here)

Curr.pos.z = DZ (Here)

DISTANCE (loc1 , loc2) = milimetre olarak konum1 ile konum2 arasındaki mesafeyi belirler.

Örnek : traj.distance = DISTANCE (HERE , DEST)

Stringler ;

Dolar işareti ($) ile kullanılırlar.Maksimum 128 karakter içerir.

$string.var = “128 karakter maksimum”

ACE PROGRAMI – V+ DİLİ VE ROBOT PROGRAMLAMA 2 SONUÇ :

Bugünki yazımızda ACE Programı – V+ Dili ve Robot Programlama 2 adlı yazımızı sizlerle paylaştık.Omron ADEPT robotlara dair ve hatta robotik mantığını kavramak adına komutları ve işleyişi sizlerle paylaşmaya devam ediyoruz.

İyi Çalışmalar.