ACE PROGRAMI & V+ DİLİ & ROBOT PROGRAMLAMA 4
V+ Dilinde kullanılan komutlar nelerdir ? ACE programı nasıl kullanılır ? Robot ile motion kontroller nasıl yapılır ? Robotlar nasıl programlanır ? Bu ve benzeri sorulara cevap aradığımız ACE programı & V+ dili & Robot programlama yazı dizisinin 4. yazısı ile karşınızdayız.
V+ DİLİ İLE ROBOT PROGRAMLAMA DERSLERİ 4
SCALE Komutu :
SCALE (transformation BY scale_factor)
Bu işlemden sonra transformation değerleri skale edilmiş değerlere eşit olur.
Ör. SET pos1 = TRANS (250 , -120, 300 , 0, 180 , 270)
SET pos2 = SCALE (pos1 by 0.5)
Pos2 sonuç : (125 , -60 ,150 , 0 , 180 , 270)
Yapısal Transformasyonlar :
Palet(Tepsi ya da mekanik parça) yapısı üzerinde öğretilmiş 3 ve ya 4 pozisyon bulunmaktadır.
Ör. SET pal = FRAME (pal.origin , pal.x , pal.y , pal.origin)
Pal.origin = Palet yapısının orjin noktasıdır. (Not : Orjin koordinat eksenlerinin kesim ya da başlangıç noktası olarak ifade edilir.)
Pal.x = Palet üzerinde x yönündeki konumdur ve genel olarak x eksenindeki paletin son parçasıdır.
Pal.y = Paletin xy düzlemindeki konumudur ve genel olarak y ekseninin son parçasıdır.
3 nokta tanımlama ;
SET pal = FRAME (pal.origin , pal.x , pal.y , pal.origin)
4 nokta tanımlama ;
SET pal = FRAME (pal.origin1 , pal.x , pal.y , pal.origin2)
Offset Hesaplamaları & Distance() Komutu :
nbr.parts.x = 4
nbr.parts.y=5
offset.x = DISTANCE (pal.origin, pal.x)(nbr.parts.x-1)
offset.y=DISTANCE (pal.origin , pal.y)(nbr.parts.y-1)
Hedef Konum Ayarları :
SET pal.pick = pal: TRANS (i * offset.x , j*offset.y)
Dönüştürülmüş (pal) ve (pal.origin) aynı noktalardır.
Pal.origin = Öğretilen noktadır.
Pal = Hesaplanmış yapı tutumudur.
Pal.dif = pal.origin – pal
V+ dilinde SET pal.dif = INVERSE (pal) : pal.origin // Bu transformasyon pallet(pal)’in (pal.origin) parçasına göre tanımlamalar yapar.
Doğru konumlandırma ile hedef konum ; SET pal.pick = pal : TRANS(i *offset.x , j*offset.y):pal.dif
Not : Büyük paket yapılar için bu yapıları 4 çerçeveye ayırıp tanımlamalar yapabilirsiniz.
ACE Program Sihirbazı Kullanmak :
V+ Kullanıcı Modülleri ; İlk programı açtığımızda ve yeni bir uygulama çalıştırdığımızda otomatik olarak birtakım modül ve programlar karşımıza çıkacaktır.
Çıkacak olan modüllere kısaca göz atalım ;
a.error : Hataların yönetimi için gerekli programların set edildiği modül.
a.robot : Robot uygulaması için önemli , spesifik programları set eder.
Rob.main () : Programların organize edildiği modüldür.
Rob.pick () : Parçaları toplayan , düzelten robot programıdır.
Rob.place () : Toplanan , düzenlenen parçaları yerleştiren robot programlarıdır.
Place.loc : Alınan parçanın yerleştirileceği konumdur.
Pick.loc : Parçanın alınacağı konumdur.
Err.reacte () : Maksimum öncelikli interrupt programıdır ve hata meydana gelir gelmez çağrılır.
Err.reacti () : Hata durumundan sonra çağrılan interrupt programıdır.
Err.report (code , $text) : err.reacti() tarafından çağırılan rutin prosedürdür.
Err.reacte () : Maksimum önceliğe sahip interrupt programıdır ve sistem hata seviyesine göre err.reacti() interruptını tetikler.
Err.report () : Hata meydana geldiğinde ilgili bilgilendirme işlemlerini yapan kısım burasıdır.
Err.reacti () : err.reacte() tarafından tetiklenir ve hata meydana geldiğinde bu hataları göstermeye izin verir.Çoğu hata mesajı “……….. this error we have not yet treated” şeklinde karşımıza gelir.Burada ‘-935’ kodu ile yeni hata kodları eklemek mümkündür.err.report(code , $text)’i herhangi bir durumda çağırarak hatanın tanımını monitör ekranından görebilirsiniz.
Ör.
CASE code OF
VALUE -908 , -909 (E-stop ya da ön panel acil stop butonu)
CALL err.report (code, $text)
WHILE (STATE(4) BAND ^B100 == 4 ) DO
WAIT
TYPE “Please release all emergency Stop circuits” , /u1
END
VALUE -604 , -906 , -908 , -909 , -910 , -911 , -912 , -921 , -922 , -929 : (farklı kaynak acil stoplar)
CALL err.report (code, $text)
WAIT.EVENT, 0.25
VALUE -616 :
Move.to.dest = FALSE
VALUE -935 :
$text = “it is not possible …..”
CALL err.report (code , $text)
WAIT.EVENT , 0.25
ANY
CALL err.report (code, $text)
TYPE “………. This error we have not yet treated”
CALL err.log (“general fault” , FALSE)
CALL err.log (“(so far there is no ….)”, FALSE)
HALT
END
Tool(Araç) Transformasyonları :
Ör. SET gripper.1 = TRANS (120 , 0 , 50 , 0, 0,0)
TOOL gripper.1
Bu ifade tool için koordinat sisteminde ; x ekseninde 120mm’ye , z ekseninde 50 mm’ye set edilir.
Ör.SET save.tool = TOOL (Son tool değer işlemini kaydeder.)
Ör.2 Tool arasındaki pick sırası değişimi
.PROGRAM toolchange()
SET tool.tip.1 = TRANS (-35 , 70 , 120)
SET tool.tip.2 = TRANS (35,70,120)
TOOL tool.tip.1
APPROS pick,50
MOVES pick
BREAK
DEPARTS 50
TOOL tool.tip.2
APPROS pick , 50
MOVES pick
BREAK
DEPART 50
.END
Not : Program içerisinden konumunu öğretebiliriz.Ardından “Tip Offset” içerisindeki ifadelere göre
SET my.tool = TRANS (-18.584 , 33.438, 114.11 , 0 , 0 ,0)
TOOL my.tool
XY Offset Hesaplama :Delta ve Scara robotlar için kullanılır.XY offsetleri hesaplanır , Z offseti ise manual olarak tanımlanır.
XYZ Offset Hesaplama: Yalnızca 6 eksenli robotlara uygulanabilirdir.XY ve Z offsetleri hesaplanır.
Dijital Çıkışlar :
1-12 : Smartcontroller için lokal sinyallerdir.Konnektör XDIO’dur.
33-992 : XIO konnektör robot, 12 Giriş /8 Çıkış ve opsiyonel modülleri barındırır.
Dijital Girişler :
1001-1012 = Smartcontroller için lokal sinyallerdir.XDIO konnektör kullanılır.
1033 – 1992 = XIO konnektör robot ,12 Giriş/8 Çıkış ve opsiyonel modülleri barındırır.
Opsiyonel Modüller :1-8 arasındadır ve maksimum 8 blok opsiyonel modül eklenebilir.
SDIO opsiyonel modüllerin 32 Giriş/32 Çıkışı vardır.
Soft Sinyaller : 2001-2992 = Dahili task haberleşmeleri ve interruptions için kullanılan tipik sinyallerdir.
Robot Sinyalleri : 3001-3004 =Bu dijital çıkışlar yalnızca kobra robotlarına bağlı araçlar için kullanılır.
Bağlantılar :
XIO Konnektör : 1218
12 Giriş Sinyali : 1097 – 1105
8 Çıkış Sinyali : 0097 – 0104
Opsiyonel SDIO#1 :
32 giriş sinyali = 1033 – 1064
32 çıkış sinyali = 0033 – 0064
Opsiyonel SmartController EX :
XDIO Konnektör ;
12 Giriş sinyali = 1001 – 1012
8 Çıkış sinyali = 0001 – 0008
IO Blok #1
8 Giriş sinyali = 1113 – 1120
8 Çıkış sinyali = 0105 – 0112
Sinyalleri Yazmak İçin Kullanılan Komutlar :
Tek Sinyal için ;
SIGNAL signal_number
signal_number çıkış sinyali aralığında bir değerdir ve pozitif bir komutsa eğer ON ; negatif ise OFF yapar.Yani bu sinyal göndermek içindir.Birden fazla sinyal tanımlamak için aynı anda “, ” virgül ile ayırmalıyız.
Ör.
SIGNAL -33 , 34 ,35
output 33 OFF
output 34 ON
output 35 ON
Grup Sinyali Olarak ;
BITS start_signal , number of signals = value (in binary code)
Not : Başlangıç sinyalinin en düşükten başladığına dikkat ediniz.
Ör.
BITS 33 , 13 = 7355
^B7355 = 1110010111011 (En sağdaki ‘1’ sinyal 33’tür.En sağdaki ise sinyal 45)
RESET :
Dijital çıkışlar ve robot sinyalleri için ; tüm dijital çıkışları(1-992) ve robot sinyallerini(3001-3004) kapar.
Sinyalleri Okuma Komutları :
SIG (signal_number)
Eğer signal_number durumu ON ise TRUE , off ise FALSE’tur.
SIG (sign1 , sign2 , sign3) => Bu durumda eğer sig1 , sig2 , sig3 On ise TRUE döndürür.
Ör.
SIG (-1001 ,1002 ,1003)
input 1001 = off
input 1002 = on
input 1003 = on ise ; Bu ifade TRUE döndürür.(-1001’e dikkat edin o sebeple off)
BITS (start_signal , number_of_signals)
Binary kodla değer döndürür.Başlangıç sinyalinin en düşük bit olduğuna dikkat ediniz.
BITS (1001,5)
^B29 = 11101 (En sağdaki 1 sinyal 1001 ,en soldaki 1 ise sinyal 1005’tir.)
input 1005 = on
input 1004 = on
input 1003 = on
input 1002 = off
input 1001 = on ise ^B(11101) = 29 döndürür.
Ör.
vac.on = 97 // Vakum start on
vac.off = -97 // vakum reset
int.seq = 2001 // soft sinyal kesme
V+ Interrupts :
REACT signal , program , priority
İlgili dijital sinyalin sürekli izlenmesini sağlar.Otomatik olarak sinyal geçişi tamamen tamamlandığında robotun hareketini durdurur.
Signal = izleme sinyalidir.(1001-1012 ya da 2001-2008 arası.)
Program = Flank (düzgün sinyal geçişi) sonrasında çalışacak program
Priority = Opsiyonel değer(1-127).Varsayılan değer 1’dir.
REACTI signal , program , priority
İlgili dijital sinyalin izlenmesini sağlar.Eğer sinyal geçişleri düzenli olarak gerçekleşirse ve subroutine tetiklendiğinde otomatik olarak robot hareketini durdurur.
Signal = izleme sinyalidir.(1001 – 1012 ya da 2001 – 2008)
Program = Flank sinyalinden sonra çalışacak programdır.
Priority =opsiyonel değerdir (1-127).Varsayılan değer 1’dir.
Ör.REACTI 2001 , interrupt , 1
IGNORE signal :
Sinyal etkilerini dikkate alma komutudur.
LOCK priority :
Şimdiki programın önceliğini değiştir.Genelde 0 olarak kullanılır.
V+ Dili Hata Yönetimi :
REACTE program_name
Çalıştırma hatası ardından maksimum öncelikli olarak 254 ve program_name çağrılır.Genelde isim olarak hep err.reacte kullanılır.
Interrupt programlar için (REACTI)’yi Error.reacte içerisinde farklı hatalar içinde kullanabiliriz.
ERROR (Source , select )
REACTE reaksiyonuna sebep olan ya da program çalışmasını durduran son hatanın numarasını döndürür.
err.code = ERROR (-1 , 0) -> Son hatanın hata numarası
err.variable = ERROR (-1,1) -> Hata mesajının değişken kısmı
err.robot = ERROR (-1,3) -> Robot numarasıdır.
$ERROR (err.code) = Verilen hata kodu ile ilgili hata mesajını döndürür.
STATE (select) = Robot sistem durumu hakkında değer üretir.
E-STOP : E-stop butonuna basılıp basılmadığını kontrol eden komuttur.
ENABLE switch1 , ….. , switchn : Bir ya da daha fazla sistem kontrol anahtarını aktif et.
ATTACH (lun , mode) $device -> uygulama programı için aygıt kullanımını uygun hale getirir.
Lun = Ekli aygıt için lojik birim numarasıdır.
Mode = 3 bits binary rakamlardır.000’dan itibaren 111’e
$device =Eklenecek olan aygıta eşit olan sabit , değişken ya da ifade stringidir.
IOSTAT (lun,mode) = Lojik birimler ile ilgili aygıtlar için son giriş/çıkış işlemleri adına durum bilgisini döndürür.
Lun = Ekli aygıt ile ilişkili mantıksal birim numarasıdır.
Mode = ilgili mantıksal birimler için giriş/çıkış durumlarını ifade eder.
Otostart : Smartcontroller ekranından -> save configuration denilerek ve Archive Workspace seçili olacak şekilde ilerlenmelidir.Configure kısmından ‘Enable Auto-start’ seçilip finish denilerek ayarlar başarılı bir şekilde kaydedilir.
File -> Save dediğimizde ‘V+ User Modules’ altında auto() adında bir dosyanın oluştuğunu göreceksiniz.
ACE Programı & V+ Dili & Robot Programlama 4 Sonuç :
Bugünki yazımızda ACE Programı & V+ Dili ve Robot Programlama 4 adlı yazıyı sizlerle paylaştık.Bu yazı dizisinin ardından genel bir toparlama ile Omron Adept Türkçe e-kitabı çıkarmak niyetindeyim.Bu seri bizlere başlangıç anlamında çok şey katacaktır.
İyi çalışmalar
Hocam e remote konusunda bize yardımcı olmaya çalışacaksınız
Merhabalar Ercan Bey ;
http://www.derstagram.com/eremote-turkce-kilavuz-ve-inceleme/
Bu linkten aradıklarınıza cevap bulabilirsiniz aksi durumda mail ile iletişime geçerseniz çok sevinirim.
İyi Çalışmalar