Skip to main content

ACE Programı & V+ Dili & Robot Programlama 5

ACE PROGRAMI & V + DİLİ & ROBOT PROGRAMLAMA 5

ACE Programı nasıl kullanılır ? V+ Dilinde kullanılan komutlar nelerdir ? Endüstriyel robotlar nasıl programlanır ? Komutlarla ilgili kullanım örnekleri nelerdir ? Bu ve benzeri sorulara cevap aradığımız ACE Programı & V+ Dili & Robot programlama adlı yazı dizisinin son yazısı ile beraberiz.

Bu yazı dizisinin ardından geniş bir inceleme ile bu alanda bir e-kitap oluşturma niyetindeyiz.

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

Monitor(İzleme) Komut İşlemleri  :

CALIBRATE : Robot pozisyon sistemini başlatır.

CD : Disk erişimleri için varsayılan yolu değiştir yada izle.

CYCLE.END : Program çalışması tamanlandığında program komutlarının çalışması / ilerlemesini durdurur.

DIRECTORY : Sistem hafızası içerisindeki bir kısmının ya da tümünün program isimlerini gösterir.

DO : Diğer adımda çalıştırılabilir program varmış gibi tek bir program işlemini çalıştırır.

ENABLE : Bir veya daha fazla sistem kontrol anahtarlarını çalıştır/aç.

ESTOP : Acil stop butonu sinyali geliyor gibi ekran üzerinden aynı şekilde robotu durdurur.

EXECUTE : Program çalıştır/başlat komutudur.

IO : Dijital giriş/çıkış sinyalleri ve/veya dahili-harici sinyallerin durumunu gösterir.

LOAD : Sistem hafızası içerisinde belirli disk alanına içerikleri yükler.

PARAMETER : Sistem parametrelerinin değerlerini göster/set et.

SPEED: Robot kontrol programı tarafından tüm robot hareket hızlarının belirlendiği alandır.

STATUS : Çalışan programlar ve sistem durum bilgisini göster.

SWITCH : Monitor ekranı üzerindeki sistem anahtarlarının ayarlarını gösterir.

WAIT.START : Bekleme durumuna , koşul TRUE oluncaya kadar monitör komut programını yerleştir.

ZERO = Sistem hafızası içerisindeki data ve tüm programları sil ve V+ sistemine yeniden yükle.

Parametreler :

PARAMETER parameter_name = value

NOT.CALIBRATED  = eV+ sistemi tarafından robotun kalibrasyon durumunu gösterir.

Varsayılan = 7

Parametre değeri = 0 ise -> Tüm robotlar kalibre edildi anlamındadır.

Parametre değeri = 1 ise -> Robot 1 kalibre edilmedi

Parametre değeri = 3 ise -> Robot 1 ve 2 kalibre edilmedi

Parametre değeri= 7 ise -> Robot 1 , 3. Robot sebebiyle kalibre edilmedi anlamındadır.

Basit Sistem Parametreleri :

BELT.MODE , HAND.TIME , NOT.CALIBRATED , MESSAGES , POWER , ROBOT , UPPER , AUTO.POWER.OFF , BELT , CP , DECEL.100 , DRY.RUN

Oto Çalıştırma İşlemini Monitor Ekranından doğrulamak için ; bu ekrandan ‘calibrate’ simgesine tıklamalısınız.Ardından ‘.com auto’ satırına program atlayarak gösterecektir bize.

Robot Başlatma ise ; Varsayılan program ‘rob.init()’dir.Bu program , E-STOP , Güç butonu , calibrasyon ve program çalıştırma durumlarını kontrol eder.

V+ Monitor Ekranı ;

Enable Power = Enerjiyi aktif eder.

Status = Program durumlarını , monitör hızını , robot modunu ve durumları gösterir.

Free = Boş kalan hafızayı yüzdesel olarak gösterir.

Where  = Robot tipinin konumunu gösterir.

Here myloc1 = Konum oluşturur.

LISTL myloc1 = Listelenen konumların değerlerini gösterir.

SRV.NET = Diğer ağ node konfigürasyonlarınıda gösterir.

Not : Daha karmaşık bir program çalıştırmak yerine robotu konumuna daha kolay hareket ettirmek için ;  DO komutu kullanılır.

DO SIGNAL 1 ya da DO SIGNAL -1

DO MOVE myloc01

DO READY  kullanılabilir.

Lojik Birimler :

Her bir aygıt robot kontroller’a logic birimler ile bağlanır.(robot , seri port , TCP port..)

Prosedür ise ;

  1. ATTACH (lun , mode) $device; (çalışan task’a aygıt bağlı)
  2. Her bir birim tipine göre spesifik komutlar vardır ; Robot için = MOVE, DELAY , APPRO ; TCP , Serial içinse READ , WRITE , GETC..
  3. Lojik birimden ayrılma içinse ; DETACH(lun)

ATTACH (lun,mode) $device :

I/O aygıtları kullanılmadan önce program tasklarına zorunlu olarak bağlı olmak durumundadır.ATTACH komutu aygıtları program taskları adına uygun hale getirir ve lojik birim numaraları(lun) ile ilişkilendirir.

Bir aygıt lojik birim numarası ile bir task’a eklendiğinde , bu numara diğer bir taskta kullanılamaz.

İki şekilde aygıtlar lojik birim numaraları ile ilişkilendirilebilir ;

Varsayılan aygıtlar ve Eklenebilir($device) Aygıtlar

Not : Robot #1 daima otomatik olarak Task 0’a eklenir.

Robot Seçimi : Herhangi bir task herhangi bir robota eklenebilir.Burada SELECT komutu çalıştırılmalıdır.

Örnek :

SELECT ROBOT = 2

ATTACH ()

Lojik Birim Numarası Parametreleri ;

Mode – bit 3 = 0

Bu mod aygıtlarla lojik birimlere varsayılan ayarları yükler.

Eğer bu bit 0 ise , lun parametresi isteğe bağlı olacaktır ve varsayılan lun parametresi 0’dır.

Eğer 0’dan farklı bir değer olursa, $device parametresi lojik birimler adına varsayılan aygıtla üst üste binebilir.

Mode – bit 3 = 1

Eğer bu bit set edilirse ,  lun parametresi gerçek değişken’e ihtiyaç duyar.Bu komut çalıştırıldığında , sistem  $device  parametresi ile tanımlanan aygıtı ekler ve lun parametrelerini otomatik olarak atar.Eğer tüm lojik birimler kullanımdaysa , parametreler -1’e set olacaktır.

Parametreler ;

0 = Robot

1= Teach Pendant

2-4 = Sistem Terminali

5-8 = Disk

9 = Varsayılan cihaz yok

10-15 = Kontroller Seri Portları

16 = Varsayılan cihaz yok

17-19 = Disk

20-24 = Grafik penceresi

25-31 = Varsayılan cihaz yok

Yani ;

ATTACH () = robotun kontrolünü al

ATTACH(1) = Teach pendant ekle gibi gibi kullanılır.

$device Parametreleri :

DISK : Adept Kontroller için fiziksel sürücü

DEVICENET : DeviceNet’e bağlı erişilebilir aygıtlar

MONITOR : Operatör terminali ya da anlık monitör ekranı

SERIAL:n =

SERİAL:0 ise RS232/TERM

SERİAL:1 ise RS232-1

SERİAL:2 ise RS232-2

SERİAL-3 ise RS422-485

SYSTEM : Aygıt diskidir .CD ya da DEFAULT komutu ile set edilir.

TCP : TCP Protokol aygıt sürücüsüdür.

TFTP : Dosyaları okuma için TFTP servere erişim

UDP : UDP protokol aygıt sürücüsüdür.

Örnek :

ATTACH (tcp.lun , ^B100) “TCP” ya da

ATTACH (tcp.lun , 4) “TCP”

WRITE(tcp.lun) “Hello World”

Seri hatta eklemek için örnek ;

ATTACH (my.serial.lun , 4) “serial : 1”

ATTACH için Parametre Modları :

Mode  – bit 1 (mask value : ^B001) :

Bağlanma isteğine karşı aygıtın nasıl cevap verdiğini kontrol eder ve IOSTAT fonksiyonunu bağlanmanın başarılı olup olmadığını kontrol etmesi için kullanır.

“0” : Eğer aygıt başka bir program taskına bağlı ise aygıt müsait oluncaya kadar bekler.

“1” : Eğer aygıt başka bir program taskına bağlı ise ,bağlanma isteği hatası olarak geri döner.

Mode – bit 2 (mask value : ^B010) :

Aygıttan programın cevap bekleyip beklemediğini kontrol eder.

“0” : Bağlanıncaya kadar aygıta , sürekli dener.(sonsuz döngü)

“1” : Burada ATTACH komutu çalışır ve program çalışmasına bir sonraki satırdan devam eder.Başarılı olup olmadığı ya da herhangi bir hatanın olup olmadığı durumu IOSTAT komutu kontrol eder.

Mode –bit 3 (mask value : ^B100):

lun parametresinin nasıl yorumlanacağını kontrol eder.

Örnek :

DO

ATTACH (0 ,^B001)

UNTIL  IOSTAT (0,0) ==1

TIMER(1) = 0

DO

ATTACH (0 , ^B001)

UNTIL  IOSTAT (0,0) ==1 OR (TIMER (1) > 3)

IF IOSTAT (0,0) < THEN

TYPE $ERROR (IOSTAT(0,0)

IOSTAT (lun , mode) :

Bağlı aygıtların mantıksal birimleri için son giriş/çıkış durum bilgilerini döndürür.

Mode 0 : Son tamamlanan giriş/çıkış işlem durumlarını gösterir.

Mode 1 : Önokuma istek bekliyor durumudur.

Mode 2 : Okunan son dosya byte boyutu

Mode 3 : Herhangi bir tamamlanmamış yazma istek durumu

EOF üzerinde dönen IOSTAT Değerleri :

1 = Normal başarılı çalışma.3 nolu mod için bu değer herhangi bir tamamlanmamış yazma istediği değeri taşımaz.

2 = İşlem henüz tamamlanmadı.

<0 = Standart eV+ hata numarasıdır.Hata numaralarına göre kontrollerinizi sağlayınız.

Örnek :

ATTACH (dlun,4) “DISK”

FOPENR(dlun) “RECORD.DAT”

IF IOSTAT(dlun) < 0 THEN

TYPE “Error opening file”

HALT

END

file.size = IOSTAT (dlun,2)

DETACH (logical_unit) :

Uygulama programındaki kontrollerden ilgili aygıtı ayırır.

logical_unit , gerçek değer , değişken ya da ifade olabilir.

eV+ Program Taskları :

Kullanılabilir 28 uygun task vardır.Tüm tasklar aynı öncelik seviyesine sahiptir.EXECUTE komutu ile normal olarak tasklar çalıştırılabilir.TASK#0 çalıştığında , Robot#1 otomatik olarak seçilir ve eklenir.

Her bir eV+ sistem saykılı 16’ya bölünmüştür ve her biri 1ms süresindedir.

PROGRAM KOMUTLARI :

EXECUTE tasknr program_name , cycles : Kontrol programın çalıştırmasını sağlar.

tasknr : 0 – 27 arasındadır.Task 0 Robot#1’e otomatik olarak eklenir.

program_name : Çalıştırılacak program ismidir.

cycles : Çalışacak programın kaç kez çalışacağı.

“omitted” : Bir kez çalıştır

“-1” : Sonsuz döngü , tekrarla

Örnek : EXECUTE 0 assembly , -1

STATUS (program_name) :

Uygulanacak program için durum bilgisini döndürür

-1 : Çalışmıyor

-2 : Tanımlanmadı

-3 : Yazma dolayısıyla kilitlendi

-4 : Çalıştırılamaz

-5 : Okuma dolayısıyla kilitlendi

TASK (select , tasknr) :

Program çalıştırma taskı hakkında bilgidir.

Select = 0 -> Fonksiyonun çalıştırıldığı yerde dönen task numarasıdır.

Örnek : TYPE TASK (0) -> task5’te çalışır ve 5 döndürür.

SELECT = 1

-1: geçersiz task numarası

0 : Boş , task içerisinde program yok

1 : Task tamamlandı.

2 : Program çalıştırma hatası dolayısıyla durdu

3 : Estop , Abort , Robot hatası sebebiyle durdu

4 : Çalışıyor

5 : Pause yada breakpoint dolayısıyla durdu

7 : Tek-adım çalışma dolayısıyla durdu

SELECT = 2

Fonksiyon 2 bitlik bir bayrak döndürür ve tasknr parametresi ile ilgili task hakkında bilgiyi döndürür.

Bit = 1 ; Mask Value = ^B01 ; Debugger task’a erişiyor

Bit = 2 ; Mask Value = ^B10 ; Task robota bağlandı.

Örnek :

IF TASK (1,2) <>  4THEN

IF STATUS (“pc.job.3”) == -1 THEN

EXECUTE 2 pc.job.2()

ELSE

TYPE /B , “Can’t start task #2”

END

END

Örnek : Haberleşmeyi Eplc Hazır olana kadar durdur

WHILE (TASK(1,12) <> 4 ) DO

WAIT

END

Not : Sonsuz döngüler kolayca aşırı yüke sebebiyet verir.Bu sebeple sonsuz döngülerden kaçınmalıyız.

Mümkün olduğunca RELEASE komutu kullanımından kaçınmalıyız.Yerine WAIT ya da WAIT.EVENT kullanmak task çalışmasını rahatlatıcaktır.

Örnekler :

.PROGRAM loop_1 ()

WHILE TRUE DO

A = 123456

B = 4.358E+12

C = a * b

END

.END    (Burası sürekli döngüdür.)

Eğer iki END’in üzerine RELEASE yazarsanız , bu döngüyü kırar.

Eğer iki END’in üzerine WAIT(16ms) yazarsanız bu her seferinde 16ms bekletir.

Eğer iki END’in üzerine WAIT.EVENT , 0.1 yazarsanız bu da 100 ms bekletir.

Eğer iki END’in üzerine WAIT.EVENT , 1 yazarsanız bu da 1 s bekletir sistemi.

Örnek : Robot Programlarını Çalıştırma ;

Robot 3 ‘ü Task#5 ‘e ve Robot 2’i Task#2’ye ekle

.PROGRAM start_up()

EXECUTE 5 robot_3()

EXECUTE 3 robot_2()

.END

TASK#5 için ;

.PROGRAM robot_3()

SELECT ROBOT = 3

ATTACH ()

.END

TASK#3 için ;

.PROGRAM robot_2()

SELECT ROBOT = 2

ATTACH ()

.END

C# Dilini Kullanarak Bir Kullanıcı Arayüzü Oluşturma ;

Workspace explorer – New – Program – User Interface Form denilerek bir kullanıcı arayüzü sisteme eklenebilir.

Buraya 4 etiket eklenebilir.Başlık , Programlar , Program numarası , Durumlar

Toolbox ; UI Formda kullanıcı arayüzü oluşturmak için kütüphane araçlarını  sağlar.

Properties Editor ; UI form üzerindeki itemlerin haraketlerini kontrol etmek ve özelliklerini düzenlemek adına kategorileri sağlar.

Designer ise ; bize kullanıcı arayüzünü oluşturmamız adına bir dizayn sayfası sağlar.

ACE Programı & V+ Dili & Robot Programlama 5 Sonuç :

Bugünki yazımızda ACE Programı & V+ Dili ve Robot programlama 5 adlı serinin son yazısını sizlerle paylaştık.Bu son yazının ardından geniş bir inceleme daha yaparak bir e-kitap hazırlama niyetindeyim.Fakat bu yazılar aradığımız sorulara geniş ölçekte cevap verecektir.

İyi Çalışmalar.

ACE Programı & V+ Dili & Robot Programlama 4

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

 

 

 

 

ACE Programı & V+ Dili & Robot Programlama 3

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.

 

 

ACE PROGRAMI & V+ DİLİ & ROBOT PROGRAMLAMA 2

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.

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.

ACE Programı & V+ Dili & Robot Programlama

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

ACE programı nedir ? V+ dili nedir ? Robot nasıl programlanır ? Endüstriyel robotlar nasıl kullanılır ? Robot programlama teknikleri nedir ? Bu ve benzeri sorulara cevap arayacağımız ACE Programı – V+ Dili ve Robot Programlama ve bu yazı dizisinde Omron Adept Robotlar üzerinden birtakım bilgileri sizlere aktarmaya çalışacağız.

Endüstriyel Robotların hızla hayatımızda yer almasıyla beraber onları anlamakta bizler açısından önemli bir hale geldi.Gelin bu seride kafamızda nasıl programlandıklarını ve çalıştıklarına beraber bakalım.

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

Pozisyon ve yön belirleme adına 6 adet koordinata ihtiyacımız bulunmaktadır.

DOF : Bu ifade pozisyon ve yön belirleme için kaç tane işlem yapacağımızı ve robotta kullanacağımızı belirler.

Articulated (Eklemeli) Robotlar : 6 adet DOF sağlar bize.5 – 7 arası eksen konfigürasyonu vardır.Diğer robot tipleri ile bağlantılıdır.Hızı orta seviyededir ve tekrarlanabilirlik özelliği düşüktür.

Scara Robotlar : 4 eksenlidir ve diğer robot tipleri ile uyumludur.Hızı yüksek seviyededir ve tekrarlanabilirlik özelliği ortadır.

Paralel Robotlar : 3-4  eksenli olup üstten takmalıdırlar.Diğer robot tipleri ile uyumludur ve hızı çok yüksek seviyededir.Tekrarlanabilirlik özelliği düşüktür.

Kartezyen Robotlar : Çok eksenli robotlara eklenebilir tek eksen birimlidirler.Diğer robotlarla uyumlu olarak çalışırlar.Hızı orta seviyededir ve tekrarlanabilirliği yüksektir.

Robotlarla ilgili en düzgün ve doğru çalışma sistemi ; Yüksek doğruluk ve yüksek tekrarlanabilirlik ile ilgilidir.

Referans olarak ; 10 – 30 arası değerde doğruluk  x tekrarlanabilirlik olarak düşünebiliriz.

Repeatibility ; Farklı koşullar altında tekrarlı çalışma sonucu aynı sonuçları alma oranıdır.Daha önce öğretilen pozisyon/konfigürasyona aynı şekilde dönme ile alakalıdır.

Tek Yönlü Tekrarlanabilirlik : Aynı yönden gelmede çok kez öğretilmiş noktaya sistemin geri gelebilme yeteneğidir.Boşlukları ve histeresiz hatalarını elimine eder.

Çok Yönlü Tekrarlanabilirlik ; Farklı yönlerden gelmede öğretilen pozisyona çok kez geri dönebilme yeteneğidir.

Doğruluk ; Anlık gerçek değer niteliğine  ölçüm olarak ne kadar yakın olup olmadığımızla ilgilidir.

Kararlılık ; Hareket komutu geldiğinde hareket sisteminde meydana gelen en küçük artık , ilerlemedir.

Minimum Artımlı Hareket (MIM) : Cihazın sürekli ve düzgün olarak en küçük hareket artım yeteneğidir.

SCARA Robotlar 2 konfigürasyona sahiptir.(Sağ ve Sol)

6 Eksen robotlar 8 konfigürasyona sahiptir.Sağ , sol , yukarı , aşağı , çevirmeli , çevirmesiz = 2 ^ 3 = 8

Tolerans : Son ürünlerde çoklu tolerans etkisidir.Her bir ürünün kümülatif etkisinden dolayı mekaniksel sistem üzerinde oluşan küçük değişimlerdir.

Yük : Paketlenen ürünler ve Gripper’dır.Burada üzerinde düşünülmesi gereken iki faktör ;

Kütle (ağırlık) ve Durağanlık

Bunlar sisteme nasıl etki ederler ?

F = ma , Eğer m(kütle) yükselirse a(ivme) düşer

T = Ia , Eğer I yükselirse , a düşer

Yük harekette hızlanma , yavaşlama gibi durumları etkiler.

Yüksek performans alabilmek adına ayarları yapmalıyız.

Yalnızca gripper ya da gripper + ürün gibi seçimleri iyi belirlemeliyiz.

Yükün dönen kısımlarında uygulanabilir maksimum tork ise ;

J4 platformlarında -> 1.0 kg önerilen , 3.0 kg maksimum

Sabit Platformlarda -> 1.0 kg önerilen , 8.0 kg maksimum’dur.

T = F.r (En uzak noktadan uygulanacak kuvvet  , en büyük tork’u açığa çıkarır)

Cycle(Saykıl) Süresi :

Adept tarafından 1980 yılında Adept Cycle standartı oluşturulmuştur ve robotun hızı gerçek dünya uygulamaları ile yakınlaştırılmıştır.

Not : Gerçek uygulama yapılıyorken ; ‘End Effector’ gecikmesi de hesaba katılmalıdır.

Joint (Os , Oe) : İleri Kinematik -> Kartezyen (X,Y)

Kartezyen (X,Y) : Geri kinematik -> Joint (Os, Oe)

Not : IP20 , IP40 , IP54 vb. koruma ile alakalıdır.

ePLC :

Plc’den direk kontrolüdür.Plc üzerinden robotları direk programlama ve kodlama imkanı tanır.

Plc olarak allen bradley , Siemens ve omron nj serisi plc tarafından desteklenir.

Adept ACE programı ; 1 program ve içerisinde 3 tool sağlar.ACE , PackXpert ve Adept Sight

Adept ACE ; eV+ programlama , uygulama örnekleri sihirbazı , emülasyon methodu , 3d görüntüleme , kullanıcı arayüzü ve C# scriptleri sağlar.

Adept Sight : Vision (görüntü) işleme alanında kullanılır.

Smartvision MX ; görüntü işlemcisidir.PC tabanlıdır.Robotik sistemlere kolayca entegre olabilir.4 gige POE ve 4 usb 3.0 kameraları destekler.

Besleyiciler : Sx240 , Sx340 , SxM140 , SxM100 modelleridir.RS-232 kullanılır.

EX Controller :

Üzerindeki elemanlar; Smart servo fireware , RS232 girişleri , RS422/485 girişleri, DeviceNet ,Eth10/100/1000 , BELT , 24 VDC girişi , XDIO , XUSR , XSYS , XMCP girişleridir.

Led Durumları :

OK/SF : (Yeşil = Sistem tamam) : (Kırmızı = Sistem hatalı)

HPE/ES : (Yeşil = yüksek güç aktif ) : (Kırmızı = Estop açık)

FW/HD : (Yeşil = smartservo bağlantısı) : (Kırmızı = SD karttan okuma/yazma)

Led Gösterge 1,2,3 :

0 -0-0 = 1 = hata yok

R-0-0 = 1 = Sistem saati bozuk ya da çok hızlı.Saat interruptları alınamıyor.

0-R-0 = 2 = Donanım konfigürasyon hatası

0-0-R = 4 = Hafıza test hatasıdır.Boş alan hatası

0-R-R = 6 = Yazılımsal seri I/O konfigürasyon hatası

R-R-R = 7 = Yazılım hızlanmadan donanım tarafından göstergelerin gösterilmesi

G-0-0 = 9 = PCI konfigüre edildiğinde silik gösterge

0-0-G = C =Ayıraç başlatılmamış

G-0-G = D = Bus hatası

SW1 Dip Anahtarları :

Switch 1 =

Off ise ; SD karttan IP adres konfigürasyonlarını al ve kullan

On ise ; IP adres için fabrika ayarlarını kullan.

Switch 2 =

Off ise ; Ethernet üzerinden normal bağlantı

On ise ; RS232 Term Port üzerinden haberleşme

Switch 3-4 =

İlerde kullanım adına ayrılmıştır.Off pozisyonda bırakınız.Normal işlemde , tüm switchler  off olmalıdır.

Robot Durum Göstergesi :

Off = Gösterge yok = 24VDC yok

Off = OK = Yüksek güç inaktif

Koyu sarı/Katı Renk = ON = Yüksek güç aktif

Koyu sarı/Katı Renk = Hata Kodu = Hata , durum göstergesine bakınız.

Koyu sarı , Yavaş Flaş = OK = Konfigürasyon nodu seçildi.

Koyu sarı , Hızlı Flaş = Hata Kodu = Hata var , durum göstergesine bak

Hata Kodları Gösterge Durumları :  :

OK : Hata yok

ON : Yüksek Enerji var

MA : Manuel mod

24 : 24 VDC besleme hatası

A# : Amp hatası (joint#)

B# : IO Blok Hatası (Adres#)

BA : Yedek batarya düşük enerji

AC : AC Güç hatası

D# : Çalışma saykılı aşıldı.(Joint#)

E# : Enkoder hatası (Joint#)

ES : E-stop

F# : Harici sensör duruş

FM : Güncelleme eşleşmezliği

FW : IEEE 1394 Hatası

h# : h# yüksek temp amp (joint#)

H# : Yüksek voltaj bus hatası

hV : Yüksek voltaj bus hatası

I# : Başlatma adımı (step#)

M# : Motor durdu (joint#)

NV : Kalıcı hafıza hatası

P# : Güç sistemi hatası (code#)

PR : İşlemci aşırı yüklendi

RC : RSC Hatası

S# : Güvenlik sistem hatası(code#)

SE : E-stop gecikme hatası

SW : Watchdog zamanaşımı

T# : Güvenlik sistem hatası

TR : Öğretme sınır hatası

V# : Diyagram hatası(joint#)

Ön Panel Kutusu üzerinde : Manuel /Otomatik anahtar modu , Servo motorlar on/off butonu , Acil stop anahtarı

Kontrol Modları :

COMP : Bilgisayar  modu

Jog Modu ;

World -> Joint eksen butonları ile robot hareket eder ve dünya koordinat düzlemini kullanır.

Tool -> Eksen tool koordinat düzleminde hareket eder.

Joint -> Eksen yönlerinde hareket eder.

FREE = Yalnızca SCARA robotlar için geçerlidir.

Hareket Konseptleri :

İleriye dönük buffer

Karışık hareket

İleri Hareket

Örnek ;

Karışık hareket için :

MOVE pstart

MOVE P1

SIGNAL 97

MOVE p2

SIGNAL -97

MOVE p3

MOVE pstart

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

Bugünki yazımızda Ace Programı – V+ dili ve Robot Programlama hakkında serinin ilk yazısını sizlerle paylaşmış bulunmaktayız.Bu yazı dizisi ile Adept Robotları ve programlanması hakkında birtakım bilgilere ulaşıyor olacaksınız.Yine bunun üstüne Robotik üzerine bir sayfa açıp üzerine gitmeyi düşünmekteyim.Takipte kalın.

İyi çalışmalar