Upload
others
View
61
Download
0
Embed Size (px)
Citation preview
9. Bölüm
KRL ile Robot Programlama
9. Bölüm: KRL ile Robot Programlama
213
9.1. KRL ile Robot Programlamaya Giriş
KRL (KUKA Robot Language) derleyici prensibiyle çalışan Pascal ve Basic dillerine benzer yapısal bir
programlama dilidir. Robot Programı, robota ve çevre birimlerine birtakım hareket ve kontrol işlemlerini yapması
amacıyla yazılan komutlar dizisi olarak tanımlanmaktadır.
Endüstriyel Robot Sistemleri ile Otomasyon İhtiyacının karşılanmasına yönelik programlama stratejisi genel
anlamda Problem Tanımı, Tasarım, Test ve Uygulama aşamalarından oluşmaktadır. Bu doğrultuda Endüstriyel
Robotların programlanmasına yönelik olarak Şekil 9.1’de verilen akış şemasına uygun olarak hareket edilmesi hem
sistem insan güvenliği açısından büyük önem taşımaktadır.
Otomasyon sisteminde Endüstriyel Robot kullanılmasının gerekliliğinin belirlenebilmesi amacıyla, problemin doğru
anlaşılması, ihtiyaçların belirlenmesi ve çözüme yönelik analizin iyi bir şekilde yapılması gerekmektedir. Gerekli
araştırma ve analiz yapıldıktan sonra, yapılması istenen işin kotarılması veya çözülmesi istenen problemin
çözümüne yönelik olarak ayrıntılı algoritmalar hazırlanmalıdır. Algoritma Analizi yapılarak, çözüme cevap veren
algoritma için KRL dilinde kodlama yapılmalıdır.
Programlama stratejisinin en önemli kısmı Test aşamasından oluşmaktadır. KUKA Endüstriyel Robotlar için test
işlemi güvenliğin ön planda tutulduğu T1 ve T2 çalışma modlarında gerçekleştirilmektedir. Test aşamasında
başarısız olunarak istenen sonuca ulaşılamadığı durumlarda tasarım aşamasının yeniden gözden geçirilmesi ve
programlamanın yeniden yapılması gerekmektedir. Test aşamasında Başarılı olunması durumunda Uygulama
aşamasına geçilerek, AUT ve EXT AUT çalışma modlarında geliştirilen programın çalıştırılması söz konusu
olabilmektedir.
Genel olarak programlama dilleri, Program Yazım Kurallarına ilave olarak aşağıdaki temel konuları içermektedir:
Veri Tipleri ve Değişkenler
Operatörler
Karar ve Çevrim Kontrol Komutları
Altprogramlar
Şekil 9.1. Endüstriyel Robot Programlama Stratejisi
TASARIM
Analiz, Algoritma, Kodlama
UYGULAMA
AUT ve EXT AUT
Çalışma Modları
PROBLEM
Endüstriyel Robot Sistemleri ile
Otomasyon İhtiyacı
Başarılı
TEST
T1 T2
Çalışma Modları
Başarısız
ERPE-METEG
214
9.2. Veri Tipleri ve Değişkenler
Değişkenler, program içerisinde değerleri değişebilen veri yapılarıdır. Değişkenler tanımlanma durumuna göre
bellekte belirli bir yer adreslerler. Değişkenlerin ne şekilde bir veriyi bellekte tutacağı ve sahip olacağı bellek
büyüklüğü tanımlandığı veri tipine bağlı olarak değişebilmektedir.
KRL dilinde değişkenlerin tanımlanması ve kullanımında dikkat edilmesi gereken durumlar şunlardır:
Bir değişken kullanılmadan önce mutlaka uygun bir veri tipi ile tanımlanmalıdır.
Değişkenler tanımlanma yeri ve şekline göre Lokal ve Global olarak tanımlanabilmektedir.
Lokal değişkenler sadece tanımlandıkları program veya altprogram içerisinde geçerlidirler.
Global değişkenler, config.dat, machine.dat vb. sistem dosyalarında tanımlanırlar. Ayrıca Global
değişkenler, ‘Global’ anahtar sözcüğü eklenerek lokal bir dosya içerisinde de tanımlanabilirler.
SRC kaynak kod dosyasında tanımlanan değişkenler, ilgili program veya altprogram sonlandığında
varlıklarını yitirirler ve kendilerine ayrılmış bellek yerini iade ederler.
DAT veri dosyasında tanımlanan değişkenlerin güncel değerleri kalıcıdır.
KRL dilinde değişken ve diğer yapılara isim verilirken dikkat edilmesi gereken birtakım kurallar mevcuttur:
İsimlendirmede İngilizce (A-Z) küçük-büyük harfler, 0..9 arası rakamlar, "_" ve "$" özel karakterler
kullanılabilmektedir.
Bir isim en fazla 24 karakter uzunluğunda olabilmektedir.
İsimlendirmede bazı programlama dillerinde olduğu gibi Büyük – Küçük harf ayrımı yoktur.
İsimlendirmede FOR, WHILE OUT vb. özel bir kullanımı olan KUKA Rezerv kelimeleri
kullanılmamalıdır.
İsimlendirme ilk karakter hiçbir zaman rakam olmamalıdır.
9.2.1. KRL Veri Tipleri KRL’de basit veri tipleri Tablo 9.1’de görülmektedir.
Tablo 9.1. KRL basit veri tipleri
Basit Veri Tipleri Anahtar Kelime Değer Aralığı Örnek
Tamsayı INT 4 Byte
-231
+231
-1 -100, 0, 500
Kesirli Sayı REAL 1.1x10-38
3.4x10+38
-0.00001, 0.123, 9.17
Mantık BOOL TRUE / FALSE TRUE
Karakter CHAR ASCII Karakterleri ‘H’, ‘İ’, ‘T’, ‘İ’, ‘T’
9. Bölüm: KRL ile Robot Programlama
215
9.2.2. Değişkenlerin Tanımlanması, Geçerlilik Alanları ve Süreleri Değişkenler tanımlandıkları bellek yeri ve şekline göre;
Lokal
Global
olmak üzere iki farklı sınıfa ayrılmaktadırlar ve buna bağlı olarak da geçerlilik alan ve süreleri de değişmektedir.
Tablo 9.2’de lokal ve global değişkenlere ait özellikler verilmektedir.
Tablo 9.2. Lokal ve Global Değişken Özellikleri
Değişken
Türü
Geçerlilik
Alanı Tanımlanma Yeri Geçerlilik Süresi
Global Tüm
Programlar
Sistem Dosyaları (config.dat, machine.dat) Lokal ortamda Global olarak tanımlama
Her Zaman
Lokal
Sadece
Tanımlanan
Robot Programı
Program Dosyası (*.src) (Çalışma Zamanı/Run-Time)
Program Seçili olduğu sürece
Data Dosyası (*.dat) Her Zaman
Global Değişkenler, programcı tarafından tanımlanabilen ve tüm programlarda geçerli olmakla birlikte değerlerini
her zaman koruyan değişkenlerdir. Şekil 9.2’de Global değişken tanımlama örnek programları görülmektedir.
Global değişkenler config.dat, machine.dat vb. bir sistem dosyasında veya lokal veri listesinde Global değişken
olarak tanımlanabilmektedir.
Config.Dat sistem dosyasında
Global değişken tanımlama
DAT dosyasında
Global değişken tanımlama
Şekil 9.2. Global Değişken Tanımlama
DEFDAT $CONFIG
...
;===========================
; Userdefined Types
;===========================
;===========================
; Userdefined Externals
;===========================
;===========================
; Userdefined Variables
;===========================
DECL INT Sayac = 100
DECL REAL Sicaklik
DECL BOOL Durum
DECL CHAR Sembol
...
ENDDAT
DEFDAT MY_PROG PUBLIC
EXTERNAL DECLARATIONS
DECL GLOBAL INT Sayac
DECL GLOBAL REAL Sicaklik
DECL GLOBAL BOOL Durum
DECL GLOBAL CHAR Sembol
...
ENDDAT
ERPE-METEG
216
Lokal Değişkenler, sadece tanımlandığı endüstriyel robot uygulama programı içerisinde geçerli olan değişkenlerdir.
Lokal değişkenler SRC veya DAT dosyalarında tanımlanabilmektedirler. Şekil 9.3’te Lokal değişken tanımlama
örnek programları görülmektedir.
SRC dosyası içerisinde tanımlanan Lokal Değişkenler, Çalışma Zamanı (Run-Time) değişkenler olarak ifade
edilebilmektedir. Yani bir değişken SRC dosyası içerisinde tanımlanmışsa; ilgili programın seçim (Select) özelliği
devam ettiği sürece değişkenin de varlığı devam eder. Aksi takdirde ilgili programın seçim (Select) özelliği
kalktığında değişkenin de varlığı sona erer.
DAT dosyası içerisinde tanımlanan Lokal Değişkenler, sadece tanımlandığı program dosyasında geçerlidir. Ancak
bu şekilde tanımlanan değişkenler, ilgili programın seçim (Select) özelliği kalksa bile varlıklarını devam ettirirler ve
değerlerini korurlar.
SRC dosyasında Lokal değişken tanımlama
DAT dosyasında Lokal değişken tanımlama
Şekil 9.3. Lokal Değişken Tanımlama
DEF MY_PROG ( )
DECL INT Sayac
DECL REAL Sicaklik
DECL BOOL Durum
DECL CHAR Sembol
INI
Sayac = 5
Sicaklik = 10.5
Durum = FALSE
Sembol = "A"
...
END
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL INT Sayac = 5
DECL REAL Sicaklik
DECL BOOL Durum
DECL CHAR Sembol
...
ENDDAT
9. Bölüm: KRL ile Robot Programlama
217
9.2.3. Diziler (Arrays)
Dizi (Array) aynı tipte verilerin bir arada saklandığı veri yapısıdır. Dizi elemanına erişimde dizi adı ve indis
kullanılır.
KRL dilinde dizilerin en fazla 3 boyutlu olarak tanımlanmasına izin verilmektedir:
Tek Boyutlu Dizler (Dizi)
İki Boyutlu Diziler (Matris)
Üç Boyutlu Diziler (Prizma)
Tek Boyutlu Diziler
Tek boyutlu diziler, n elemanlı gözden oluşan ve Dizi halinde ifade edilen veri yapılarıdır. Şekil 9.4’te Tek Boyutlu
Dizi yapısı, tanımı ve kullanımı görülmektedir.
Dizi
1 2 3 4 5
Dizi
1 2 3 4 5
15 20 30 40 50
Tanımlamada kullanılan indis değeri n ise; dizinin ilk elemanına 1, son elemanı da n değeri ile erişilir.
Şekil 9.4. Tek Boyutlu Dizi yapısı, tanımı ve kullanımı
Tek Boyut Dizi
Dizi [5]
...
DECL INT Dizi[5]
DECL INT i
...
Dizi[1] = 15
...
FOR i = 2 TO 5
Dizi[i] = i * 10
ENDFOR
...
ERPE-METEG
218
İki Boyutlu Diziler İki boyutlu diziler, satır ve sütunlardan oluşan ve matris (Tablo) halinde ifade edilen veri yapılarıdır. Şekil 9.5’te İki
Boyutlu Dizi yapısı, tanımı ve kullanımı görülmektedir.
Matris 1 2
1
2
Matris 1 2
1 10 20
2 20 40
Şekil 9.5. İki Boyutlu Dizi yapısı, tanımı ve kullanımı
2. Boyut Matris
Matris [1, 2] 1. Boyut
...
DECL INT Matris [2,2]
DECL INT i,j
...
Matris [1,2] = 15
...
FOR i = 1 TO 2
FOR j = 1 TO 2
Matris [i,j] = i*j*10
ENDFOR
ENDFOR
...
9. Bölüm: KRL ile Robot Programlama
219
Üç Boyutlu Diziler Üç boyutlu diziler, X – Y – Z boyutlarından oluşan ve prizma halinde ifade edilen veri yapılarıdır. Şekil 9.6’da Üç
Boyutlu Dizi yapısı, tanımı ve kullanımı görülmektedir.
Şekil 9.6. Üç Boyutlu Dizi yapısı, tanımı ve kullanımı
1. Boyut
2. Boyut
3. Boyut
Prizma
Prizma [1, 4, 2]
Prizma [2, 3, 1]
...
DECL INT Prizma [3,4,2]
DECL INT i,j,k
...
Prizma [1,2,1] = 25
...
FOR i = 1 TO 3
FOR j = 1 TO 4
FOR j = 1 TO 2
Prizma[i,j,k] = i+j+k
ENDFOR
ENDFOR
ENDFOR
...
ERPE-METEG
220
9.2.4. Sistem Değişkenleri
KRL dilinde kullanılmak üzere endüstriyel robot sistemine yönelik olarak çalışan birçok Sistem Değişkeni
bulunmaktadır. Tablo 9.3’te başlıca Sistem Değişkenleri verilmiştir.
KRL dilinde kullanılan sistem değişkenlerinin başlıca ortak özellikleri şunlardır:
Sistem değişkenleri her zaman geçerlidir ve değerini korur.
Sistem değişkenleri her zaman sorgulanabilir.
Sistem değişkenleri her zaman “$” karakteri ile başlar.
Tablo 9.3. Başlıca Sistem Değişkenleri
Sistem Değişkeni Açıklamalar Örnek Kullanımlar
$ACT_TOOL Ön Çalışmadaki Aktif TOOL numarası
(1..16)
$ACT_TOOL = 3
Alet_No = $ACT_TOOL
$ACT_BASE Ön Çalışmadaki Aktif BASE numarası
(1..32)
$ACT_BASE = 5
Base_No = $ACT_BASE
$POS_ACT
Güncel Kartezyen Robot Pozisyonu (E6POS)
(Read Only)
$POS_ACT
BASE koordinat sistemine göre TCP pozisyonunu
E6POS tipinde tanımlar:
X, Y, Z (mm)
A, B, C ()
X = $POS_ACT.X
$AXIS_ACT
Güncel Aksa-Özgü Robot Pozisyonu (E6AXIS)
$AXIS_ACT
Aks açı veya pozisyonlarını E6AXIS tipinde verir:
A1..A6 (mm veya )
E1..E6 (mm veya )
$AXIS_ACT = {A1 0.0, A2 -120.0, A3 120.0, A4 0.0, A5 90.0,
A6 0.0, E1 0.0, E2 0.0, E3 0.0, E4 0.0, E5 0.0, E6 0.0}
xA1 = $AXIS_ACT.A1
$POS_INT
Interrupt Durumunda Kartezyen Robot Pozisyonu
$POS_INT
Interrupt durumunda BASE koordinat sistemine
göre TCP pozisyonunu E6POS tipinde verir:
X, Y, Z (mm)
A, B, C ()
Not: Base 0 ise World Koordinat Sistemi geçerlidir.
X = $POS_INT.X
$AXIS_INT
Interrupt Durumunda Aksa-Özgü Robot Pozisyonu
(E6AXIS)
$AXIS_ACT
Interrupt durumunda Aks açı veya pozisyonlarını
E6AXIS tipinde verir:
A1..A6 (mm veya )
E1..E6 (mm veya )
xA1 = $AXIS_INT.A1
9. Bölüm: KRL ile Robot Programlama
221
$VEL_ACT
Güncel Yol (Path) Hızı
$VEL_ACT = Velocity
Velocity m/sn
0.0 .. $VEL_MA.CP
IF $VEL_ACT>1.0 THEN
…
ENDIF
$VEL_AXIS
Ön Çalışmada Robot Aks Hızları
$VEL_AXIS[n] = Velocity
n Aks Numarası (1..6)
Velocity % (1..100)
R1\Mada\$machine.dat dosyasında tanımlı olan
$VEL_AXIS_MA maksimum aks hızının
%’si olarak programlanmış aks hızını içerir.
IF $VEL_ AXIS [1]>50 THEN
…
ENDIF
$OV_PRO
Program Override, program çalışması süresince robot
hızıdır.
Program Override, programlanmış hızın yüzdesi olarak
belirlenir.
Robot Güncel Hızı (Program Override)
$OV_PRO = Override
Override % (0..100) (Default:100)
Not: T1 modunda her zaman için hız 250 mm/sn’dir.
$OV_PRO = 20
$OV_PRO = 75
Po_hiz = $OV_PRO
$OV_ROB
Robot Güncel Hızı (Robot Override)
(Read Only)
$OV_ROB = Override
Override % (0..100)
Robot Override, program çalışmasında güncel robot
hızıdır. Robot Override, $OV_PRO program
Override’ın azaltılmış bir fonksiyonu olarak belirlenir.
ro_hiz = $OV_ROB
$NUM_IN $IN sistem değişkeninde mevcut dijital Input sayısı N = $NUM_IN
$NUM_OUT $OUT sistem değişkeninde mevcut dijital Output sayısı N = $NUM_OUT
$IN
Dijital Giriş
$IN[n]
n Input Numarası
1..4096 (KSS 8.1)
1..8192 (KSS 8.2 ve üzeri)
Geri Dönüş Değeri TRUE/FALSE
Durum = $IN[1]
$OUT
Dijital Çıkış
$OUT[n] = State
n Output Numarası
1..4096 (KSS 8.1)
1..8192 (KSS 8.2 ve üzeri)
State TRUE/FALSE
$OUT[1] = FALSE
$OUT[2] = TRUE
$ANIN
Analog Giriş
(Read Only)
$ANIN[n]
n 1..32
Geri Dönüş Değeri -1.0 .. +1.0
veri = $ANIN[1]
ERPE-METEG
222
$ANOUT
Analog Çıkış
$ANOUT[n] = Value
n 1..32
Value -1.0 .. +1.0
$ANOUT[1] = 0.5
$ADVANCE
Ön Çalışmadaki maksimum hareket komutu sayısı
$ADVANCE = Value
Value 0..5 (Default:3)
Not: $ADVANCE değişkeninin değeri 0 olması
durumunda Ön Çalışma mümkün değildir.
$ADVANCE = 3
$MODE_OP
Endüstriyel Robot Çalışma Modu
$MODE_OP = Operating mode
Operating
mode
#T1, #T2, #AUT, #EX, #INVALID
IF $MODE_OP == #T1 THEN
$MOT_TEMP
Aks Mevcut Motor Sıcaklığı
$MOT_TEMP[axis_number]
axis_number 1..6 (A1..A6)
7..12 (E1..E6)
Geri Dönüş
Değeri (Kelvin, 12Kelvin toleransta)
Konfigüre edilmeyen akslar için
değer 0’dır.
T = $MOT_TEMP[1]
$TIMER
Timer Çevrim Süresi Ölçme
$TIMER[n] = Time
n Timer Numarası (1..32)
Time Süre (ms)
Default : 0
T = $TIMER[1]
$TIMER_STOP
Timer Başlatma ve Durdurma
$TIMER_STOP[n] = State
n Timer Numarası (1..32)
State TRUE: Timer Durdurma
FALSE: Timer Başlatma
$TIMER_STOP[1] = TRUE
$INTERPRETER
Interpreter (Yorumlayıcı) Seçimi
$ INTERPRETER = Tip
Tip 0 veya 1 (Default:1)
0: Submit Interpreter
Editörde Seçili SUB program görüntülenir.
1: Robot Interpreter
Editörde Seçili hareket programı
görüntülenir.
$INTERPRETER = 1
9. Bölüm: KRL ile Robot Programlama
223
9.3. Operatörler
Operatörler, ifade içerisindeki değişken ve diğer ifadelere uygulandığında yeni değerlerin elde edilmesini sağlayan
ve kendilerine özel sembolik gösterimleri olan sözdizimleridir. Operatörler genel olarak 4 farklı sınıfta yer
almaktadırlar (Tablo 9.4):
Aritmetik Operatörler
Karşılaştırma Operatörleri
Mantıksal Operatörler
Bitsel Operatörler
Tablo 9.4. Operatörler
Operatör Sınıfı Operatör Açıklama Örnek Kullanım
Aritmetiksel
+ Toplama c = a + b
- Çıkarma c = a - b
* Çarpma c = a * b
/ Bölme c = a / b
Karşılaştırma
== Eşit a == b
<> Farklı a <> b
> Büyük a > b
>= Büyük Eşit a >= b
< Küçük a < b
<= Küçük Eşit a <= b
Mantıksal
NOT DEĞİL Not (a==5)
AND VE (a>5) AND (b<5)
OR VEYA (a==5) OR (b<5)
EXOR ÖZEL-VEYA (a==5) EX-OR (b<5)
Bitsel
(Bitwise)
B_NOT Bitsel DEĞİL ‘HF0’ B_NOT (‘H0F’)
B_AND Bitsel VE ‘H02’ (‘H12’ B_AND ‘H0F’)
B_OR Bitsel VEYA ‘H1F’ (‘H12’ B_OR ‘H0F’)
B_EXOR Bitsel ÖZEL-VEYA ‘H1D’ (‘H12’ B_EXOR ‘H0F’)
Aritmetik Operatörlere yönelik olarak işlem sonuçlarının alacağı veri tipleri Tablo 9.5’te görülmektedir.
Tablo 9.5. Aritmetik İşlem Sonuç Veri Tipleri
Operatör INT REAL
INT INT REAL
REAL REAL REAL
ERPE-METEG
224
Şekil 9.7’de verilen örnekte operandların veri tipine bağlı olarak işlem sonucunun aldığı veri tipleri örneklenmiştir.
Mantıksal Operatörlere yönelik Doğruluk Tablosu Tablo 9.6’da görülmektedir.
Tablo 9.6. Mantıksal Operatör Doğruluk Tablosu
A
B
NOT A
NOT B
A AND B
A OR B
A EXOR B
False False True True False False False
False True True False False True True
True False False True False True True
True True False False True True False
Şekil 9.7. Aritmetik İşlem Sonuçlarının Alacağı Veri Tipleri
DEF Aritmetik_Operatorler()
DECL INT A,B,C,D,E
DECL REAL K,L,M
INI
A = 2 ;A=2
B = 9.8 ;B=10
C = 9.50 ;C=10
D = 9.48 ;D=9
E = 7/4 ;E=1
K = 3.5 ;K=3.5
L = 1.0 ;L=1.0
M = 3 ;M=3.0
A = A * E ;A=2
B = B - ’HB’ ;B=-1
E = E + K ;E=5
K = K * 10 ;K=35.0
L = 10/4 ;L=2.0
L = 10/4.0 ;L=2.5
L = 10/4. ;L=2.5
L = 10./4 ;L=2.5
E = 10./4. ;E=3
M = (10/3) * M ;M=9.0
END
9. Bölüm: KRL ile Robot Programlama
225
Operatör işlem önceliği Tablo 9.7’de görülmektedir. Bir ifade içerisindeki aynı önceliğe sahip operatörler için
Soldan-Sağa doğru işlem önceliği söz konusudur.
Tablo 9.7. Operatörler Önceliği
Öncelik Sırası Operatör
1 NOT B_NOT
2 * /
3 + -
4 AND B_AND
5 EXOR B_EXOR
6 OR B_OR
7 == <> > >= < <=
Şekil 9.8’de karşılaştırma ve mantıksal operatörlerin ifade içerisinde çoklu kullanımları örneklenmiştir.
Şekil 9.8. Çoklu Karşılaştırma ve Mantıksal Operatör kullanımı
...
DECL BOOL A, B, C, D
...
A = FALSE ;A = FALSE
B = NOT A ;B = TRUE
C = (A AND B) OR (A EXOR B) ;C = TRUE
D = NOT NOT C ;D = TRUE
...
...
DECL BOOL A, B, C, D
...
A = 10 > 20 ; A=FALSE
B = 5/2 == 2 ; B=TRUE
C = ((A == B) <> (1 <= 1.001)) == FALSE ; C=FALSE
D = "A" < "Z" ; D=TRUE
...
ERPE-METEG
226
Şekil 9.9’da Bitsel (Bitwise) operatörlerin kullanımı örneklenmiştir.
Şekil 9.9. Bitsel Operatör kullanımı
DECL INT A
...
A = B_NOT 5 ; A = -6
A = B_NOT 'H05' ; A = -6
A = B_NOT 'B00000101' ; A = -6
A = B_NOT "A" ; A = 66
A = 12 B_AND 6 ; A = 4
A = 12 B_OR 6 ; A = 14
A = 12 B_EXOR 6 ; A = 10
...
9. Bölüm: KRL ile Robot Programlama
227
9.4. Standart Fonksiyonlar
Fonksiyonlar, parametrik olarak aldıkları verileri işleyerek elde ettiği sonucu geri döndüren yapılardır.
Fonksiyonların bir adı ve parametrik olarak aldıkları bağımsız değişkenleri mevcuttur. Fonksiyonların yapısı gereği
bir veya daha fazla sayıda giriş parametresi alırken geriye döndürdüğü tek bir değer mevcuttur.
Programlama ihtiyacına göre hem programcı tarafından kodlanan fonksiyonlardan hem de hazır Standart
Fonksiyonlardan yararlanmak mümkündür. KRL dilinde kullanılan bazı Standart Matematiksel Fonksiyonlar Tablo
9.8’de verilmiştir.
Tablo 9.8. KUKA Matematiksel Standart Fonksiyonlar
Fonksiyon Açıklama Örnek Kullanım
ABS(x) Mutlak Değer 5 ABS (-5)
SQRT(x) Kök Alma 3 SQRT (9)
SIN(x) Sinüs 0.5 SIN (30)
COS(x) Kosinüs 0.5 COS (60)
TAN(x) Tanjant 1 TAN (45)
ACOS(x) Ark Kosinüs 60 ACOS (0.5)
ATAN2(y, x) Ark Tanjant 45 ATAN2 (0.5, 0.5)
Şekil 9.10’da Sin(X) ve Cos(X) fonksiyonun kullanımına yönelik KRL kod örneği görülmektedir.
Şekil 9.10. KRL dilinde Sin(X) ve Cos(X) fonksiyonu kullanımı
DEF s_Sin_Cos()
; Lokal Değişken Tanımları -----
DECL A6POS PB
INI
; HOME Pozisyonuna Git ---------
PTP HOME Vel= 50 % DEFAULT
; Başlangıç Noktasına Git ------
PTP PA Vel= 50 % DEFAULT
; Hedef Noktası Hesapla --------
PB.X = PA.X
PB.Y = PA.Y + Cos (30) * 200
PB.Z = PA.Z + Sin (30) * 200
; Hedef Noktasına Doğrusal Git -
LIN PB
; HOME Pozisyonuna Git ---------
PTP HOME Vel= 50 % DEFAULT
END
PA
PB
30
PC
.
+Z
-Z
-Y +Y
+X
- X
b
a
𝐶𝑜𝑠 ∝=𝑏
𝑐 𝑆𝑖𝑛 ∝ =
𝑎
𝑐
ERPE-METEG
228
9.5. Karar ve Çevrim Kontrol Komutları
Diğer programlama dillerinde olduğu gibi, KRL dilinde de program akışının kontrol edilmesi amacıyla kullanılan
çeşitli özelliklerde karar ve çevrim kontrol komutları Tablo 9.9’da sınıflandırılmıştır.
Tablo 9.9. Karar ve Çevrim Kontrol Komutları
Karar Kontrol Komutları
Şartlı Dallanmalar (IF)
Çoklu Dallanmalar (SWITCH) (IF THEN ELSE IF …)
Çevrim Kontrol Komutları
Sonsuz Çevrimler (LOOP)
Sayaç Çevrimleri (FOR)
Dışlayıcı Çevrimler (WHILE)
Dışlayıcı Olmayan Çevrimler (REPEAT / UNTIL)
9.5.1. Karar Kontrol Komutları
Karar kontrol komutları, program akışının yönlendirilmesi amacıyla kullanılmaktadır. Karar verme işlemlerinde
başta Karşılaştırma ve Mantık Operatörleri olmak üzere çeşitli operatörlerden yararlanılmaktadır.
Şartlı Dallanmalar (IF)
IF komutu; belirtilen şarta göre program akışını yönlendirerek, ilgili program satırı ya da bloğunun çalıştırılmasını
sağlayan kontrol komutudur. IF komutları iç-içe kullanılabilmektedir.
IF komutunun kullanılmasına yönelik akış şeması ve program kodları Şekil 9.11’dE görülmektedir. (a) örneğinde IN
1 girişi TRUE olması durumunda robot tarafından P3 noktasına PTP hareketi gerçekleştirilmektedir, aksi takdirde
bir alt satırdan program çalıştırılmaya devam edecektir. (b) örneğinde ise; IN 30 girişi TRUE olması durumunda
robot tarafından P3 noktasına, FALSE olması durumunda ise P4 noktasına PTP hareketi gerçekleştirilmektedir.
9. Bölüm: KRL ile Robot Programlama
229
Şekil 9.11. IF Şartlı Dallanma komutu
...
IF $IN[1]==TRUE THEN
PTP P3
ELSE
PTP P4
ENDIF
...
(b)
...
IF $IN[1]==TRUE THEN
PTP P3
ENDIF
...
(a)
IF …
THEN
… ELSE
…
ENDIF
TRUE
FALSE IF …
THEN
…
ENDIF
TRUE
FALSE
ERPE-METEG
230
Çoklu Dallanma (IF / ELSE IF / ELSE / ENDIF )
IF dallanma komutlarının iç içe kullanılması ile çoklu dallanma yapmak da mümkündür. IF komutu ile çoklu
dallanma yapılmasına yönelik program kodları Şekil 9.12’de görülmektedir. Örnekte Konum değişkenin değerine
göre koşulun sağlandığı program bölümü çalıştırılmaktadır. Konum değeri 1 ise robot tarafından P5 noktasına, 2 ise
P6 noktasına PTP hareketi gerçekleştirilmektedir. Eğer Konum değerine eşit bir seçenek bulunamazsa ELSE
satırındaki ERROR_MSG() adlı altprogram çalıştırılmaktadır.
Şekil 9.12. IF/ELSE IF/ELSE komutu
DECL INT Konum
...
IF (Konum==1) THEN
PTP P3
ELSE IF (Konum==2) THEN
PTP P4
ELSE IF (Konum==3) THEN
PTP P5
ELSE
ERROR_MSG()
ENDIF
...
9. Bölüm: KRL ile Robot Programlama
231
Çoklu Dallanma (SWITCH )
Switch çoklu dallanma komutu, program akışının çoklu yönlendirilmesi amacıyla kullanılan bir karar
kontrol komutudur. SWITCH komutunun kullanılmasına yönelik program kodları Şekil 9.13’te görülmektedir.
Örnekte Konum değişkenin değerine göre CASE durum seçeneklerinden eşlenen program bölümü çalıştırılır.
Konum değeri 1 ise robot tarafından P5 noktasına, 2 ise P6 noktasına PTP hareketi gerçekleştirilmektedir. Eğer
Konum değerine eşit bir CASE bulunamazsa DEFAULT satırındaki ERROR_MSG() adlı altprogram
çalıştırılmaktadır.
Şekil 9.13. SWITCH çoklu dallanma komutu
...
DECL INT Konum
...
SWITCH Konum
CASE 1
PTP P5
CASE 2
PTP P6
DEFAULT
ERROR_MSG()
ENDSWITCH
…
SWITCH …
CASE 1
… CASE 2
…
ENDSWITCH
CASE n
… DEFAULT
…
1 2 n Diğer
ERPE-METEG
232
9.5.2. Çevrim Kontrol Komutları
Sonsuz Çevrim (LOOP)
Sonsuz çevrim, bir program bloğunun herhangi bir şart aranmaksızın sonsuz kez tekrarlanmasını sağlamaktadır.
Sonsuz çevrimden istenirse; EXIT fonksiyonu kullanılarak çıkmak mümkün olabilmektedir. LOOP komutunun
kullanılmasına yönelik program kodları Şekil 9.14’te görülmektedir. EXIT komutu kullanılmayan (a) örneğinde, P1
ve P2 noktalarına yapılan PTP hareketi sürekli tekrar edilmektedir. EXIT komutu kullanılan (b) örneğinde ise; Input
7 girişi TRUE olarak anahtarlanıncaya kadar P1 ve P2 noktalarına yapılan PTP hareketi sürekli tekrar edilmektedir.
Şekil 9.14. LOOP sonsuz çevrim kontrol komutu
…
LOOP
PTP P1 Vel=50% PDAT1
PTP P2 Vel=50% PDAT2
ENDLOOP
…
…
LOOP
PTP P1 Vel=50% PDAT1
PTP P2 Vel=50% PDAT2
IF $IN[7]==TRUE THEN
EXIT
ENDIF
ENDLOOP
…
(a) (b)
ENDLOOP
Çevrim Bloğu
LOOP
9. Bölüm: KRL ile Robot Programlama
233
Sayaç Çevrimi (FOR)
FOR Sayaç Çevrimi sayesinde, bir program bloğu tanımlanan sayı kadar tekrarlanabilmektedir. FOR çevriminde
komutların tekrar edilme sayısı bir sayaç değişkeni (iteratör) yardımıyla kontrol edilmektedir. Şekil 9.15’te FOR
sayaç çevrim komutu kullanımı anlatılmaktadır. Burada i iteratör değeri 1 başlayıp n değerini alana kadar her i
değeri için ilgili program bloğu çalıştırılmaktadır.
FOR komutunun kullanılmasına yönelik program kodları incelendiğinde;
(a) örneğinde verilen FOR çevriminde, i değişkeninin 1’den 5’e kadar alacağı 1, 2, 3, 4, 5 değerleri için
çalıştırılacaktır. Çevrimin her turunda i ile temsil edilen çıkış TRUE değerine anahtarlanmaktadır.
(b) örneğinde verilen FOR çevriminde, STEP -2 kullanımı sayesinde i değişkeninin 10’dan 4’e kadar
alacağı 10, 8, 6, 4 değerleri için çalıştırılacaktır. Çevrimin her turunda i ile temsil edilen çıkış TRUE
değerine anahtarlanmaktadır.
Şekil 9.15. FOR sayaç çevrim kontrol komutu
…
DECL INT i
…
FOR i=1 TO 5
$OUT[i] = TRUE
ENDFOR
…
…
DECL INT i
…
FOR i=10 TO 4 STEP -2
$OUT[i] = TRUE
ENDFOR
…
(a) (b)
Çevrim Bloğu
ENDFOR
FOR i = 1 TO n
ERPE-METEG
234
Dışlayıcı Çevrim (WHILE)
WHILE dışlayıcı (önceden kontrollü) çevrimler, şart ifadesi TRUE sonuç verdiği sürece program bloğunun
çalıştırıldığı çevrimlerdir. WHILE çevrimlerinde şart kontrolü çevrim başında yapılmaktadır. Dolayısıyla şart
sağlanmıyorsa çevrim içerisindeki komutlar hiç çalıştırılmayabilir. WHILE komutunun kullanılmasına yönelik
program kodları Şekil 9.16’da görülmektedir. Burada IN 22 girişi TRUE olduğu sürece, ilgili program bloğundaki
komutlar çalıştırılmaktadır.
Şekil 9.16. WHILE dışlayıcı çevrim kontrol komutu
…
WHILE $IN[22]==TRUE
$OUT[17]=TRUE
$OUT[18]=FALSE
PTP HOME
ENDWHILE
…
Çevrim Bloğu
ENDWHILE
TRUE
FALSE WHILE …
9. Bölüm: KRL ile Robot Programlama
235
Dışlayıcı Olmayan Çevrimler (REPEAT / UNTIL)
REPEAT / UNTIL dışlayıcı olmayan (sonradan kontrollü) çevrimlerde şart kontrolü çevrim sonunda yapılmaktadır.
Bundan dolayı bu çevrimlerde, program bloğu bir kez çalıştırıldıktan sonra şart kontrolü yapılmaktadır. Dolayısıyla
REPEAT / UNTIL dışlayıcı olmayan (sonradan kontrollü) çevrimler şart ne olursa olsun en az bir kez
çalıştırılmaktadır. Çevrim sonundaki şart ifadesi TRUE sonuç verene kadar program bloğu yeniden çalıştırılır.
REPEAT / UNTIL komutunun kullanılmasına yönelik program kodları Şekil 9.17’de görülmektedir. Burada IN 22
girişi TRUE olana kadar, ilgili program bloğundaki komutlar çalıştırılmaktadır.
Şekil 9.17. REPEAT/UNTIL dışlayıcı olmayan çevrim kontrol komutu
…
REPEAT
$OUT[17]= TRUE
$OUT[18]= FALSE
PTP HOME
UNTIL $IN[22]== TRUE
…
Çevrim Bloğu
TRUE
FALSE UNTIL
…
REPEAT
ERPE-METEG
236
9.6. Altprogramlar
Altprogram, yapısal programlama dillerinde, konu ile ilgili program satırlarının bir arada bir blok içerisinde
yazılmasıdır. Tüm komutların tek program içerisinde yazılması yerine belirli süreçlerin, hesapların veya işlemlerin
ayrı ayrı altprogramlar halinde yazılması, geliştirilen programın daha basit ve kullanılışlı olmasını ile anlaşılırlığının
artırılmasını sağlamaktadır.
Yapısal programlama gereği Altprogram kullanımları program geliştirmede çeşitli avantajlar sağlamaktadır:
Ana programın kısalması ile birlikte anlaşılırlık artmaktadır.
Altprogramların program içerinde birden fazla kullanılması ile birlikte genel program boyu kısalmaktadır.
Programlama işi kolaylaşmaktadır.
Altprogramlar iki tipte tanımlanabilmektedir:
Lokal (Local) Altprogramlar
Genel (Global) Altprogramlar
9.6.1. Lokal Altprogramlar
Lokal Altprogramlar, bir program içerisinde tanımlanmış program bölümleridir. Şekil 9.18’de Ana_Prg() içerisinde
Alt_Prg1() ve Alt_Prg2() olmak üzere 2 tane altprogram tanımı görülmektedir.
Lokal Altprogram kullanılmasına ilişkin temel kurallar şunlardır:
Bir program modülündeki SRC dosyası en fazla 255 Lokal Altprogramdan oluşabilmektedir.
En çok 20 Lokal Altprogram iç içe tanımlanabilmektedir.
Lokal Altprogramlar defalarca çağrılabilmektedir.
Lokal Altprogram adı sonrasında “( )” parantezleri kullanılmalıdır.
Lokal Altprogram yürütüldükten sonra, çağrıldığı satırdan sonraki satıra bir geri dönüş gerçekleşir.
Lokal Altprogramın kendisine ait SRC ve DAT dosyası mevcut değildir. Bu nedenle Lokal Altprogram
içerisinde tanımlanan Nokta koordinatları, Ana Programa ait DAT dosyasında kaydedilmektedir.
Şekil 9.18. Lokal Alt Program Tanımlama
DEF Ana_Prg( )
…
END
________________
DEF Alt_Prg1( )
…
END
________________
DEF Alt_Prg2( )
…
END
9. Bölüm: KRL ile Robot Programlama
237
9.6.2. Global Altprogramlar
Mevcut SRC ve DAT dosyası olan tüm bağımsız robot programları gerçekte birer Global Altprogramdır. Bu
doğrultuda bağımsız bir robot programı, başka bağımsız bir robot programı içerisinde Global Altprogram olarak
kullanılabilmektedir. Şekil 9.19’da Rob_Prg3() robot programı içerisinde Rob_Prg1() ve Rob_Prg2() olmak üzere 2
tane robot programı altprogram olarak kullanılmaktadır.
Şekil 9.19. Global Alt Program Tanımlama
Global Altprogram kullanılmasına ilişkin temel kurallar şunlardır:
Global Altprogramların kendilerine ait SRC ve DAT dosyaları mevcuttur.
Global Altprogramlar birkaç kez çağrılabilmektedir.
En fazla 20 Global Altprogram iç içe tanımlanabilmektedir.
Her bir programın Nokta koordinatları kendilerine ait DAT dosyasında kaydedilmektedir ve sadece ilgili
programda kullanılabilmektedir.
Global Altprogram adı sonrasında “( )” parantezleri kullanılmalıdır.
Global Altprogram yürütüldükten sonra, çağrıldığı Ana Programın ilgili satırından sonraki satıra bir geri
dönüş gerçekleşir.
9.6.3. Altprogramların Sonlandırılması
RETURN komutu kullanılmak suretiyle bir altprogram sonlandırılabilmektedir. Bu durumda program akışı
altprogramı çağırmış olan program parçasına geri döner. Şekil 9.20’de RETURN komutu kullanılarak belirlenen
şarta bağlı olarak altprogramın sonlandırılması görülmektedir.
Şekil 9.20. Return ile Altprogram sonlandırma
DEF Rob_Prg1( )
…
END
DEF Rob_Prg2( )
…
END
DEF Rob_Prg3( )
…
Rob_Prg1()
Rob_Prg2()
…
END
DEF Ana_Prg( )
; Bu ana programdır
...
Lokal_Prg( )
...
END
DEF Lokal_Prg( )
...
IF $IN[12]==FALSE THEN
RETURN ; Ana programa geri dönüş
ENDIF
...
END
ERPE-METEG
238
9.6.4. Altprogramlarda Parametre Kullanımı
Robot programları geliştirilirken Altprogramlara parametrik değer gönderimi mümkündür. Tablo 9.10’da görüldüğü
gibi Parametre aktarımında IN ve OUT olmak üzere 2 farklı tanım kullanılarak, Değer veya Referans olarak
kullanım mümkün olmaktadır. Parametre sayısının birden fazla olması durumunda ise, tanım sırasına dikkat
edilmesi gerekmektedir.
Tablo 9.10. Altprogram Parametre Aktarma Türleri
Parametre Aktarma Türü Açıklama
IN “Call by Value”
Değişken değeri sadece Ana Programdan Alt Programa aktarılır.
OUT
“Call by Reference”
Değişken değeri önce Ana Programdan Alt Programa aktarılır. Alt Program
sonlandığında değişken değeri Ana Programa geri aktarılır.
Şekil 9.21’de altprogramlarda parametre aktarımına yönelik kodlama formatı görülmektedir.
Şekil 9.21. Altprogramda Parametre Aktarımı
DEF Ana_Prg()
…
Hesapla(x, y)
…
END
_________________________
DEF Hesapla(a:IN, b:OUT)
…
END
9. Bölüm: KRL ile Robot Programlama
239
9.6.5. Altprogramların Fonksiyon Olarak Kullanılması
Altprogramların geriye değer döndürmesi istenildiğinde, Fonksiyon olarak kullanılmaları da mümkündür.
Fonksiyonlar, ana program ya da başka bir altprogram tarafından çağrılabilen, RETURN ile geriye tek bir değer
döndüren ve ayrıca bir veri tipine sahip olan altprogramlardır. Ancak tanımlanmasına bağlı olarak geriye değer
döndürüp döndürmeyeceği belirlenebilmektedir. Fonksiyondan geri dönen değer, fonksiyonun çağrıldığı ve adının
geçtiği yere getirilir. Bu nedenle fonksiyon adının bir ifade içerisinde kullanılması gereklidir. Şekil 9.22’de bir
fonksiyon tanımı ve çağrılmasına yönelik kodlar verilmiştir.
Şekil 9.22. Altprogramların Fonksiyon olarak kullanılması
DEF Ana_Prg()
DECL REAL Konum, Veri
…
Konum = Hesap(Veri)
…
END
DEFFCT REAL Hesap(Veri:IN)
DECL REAL Konum, Veri
…
RETURN(Konum) END
ERPE-METEG
240
9.7. Uygulamalar
No Konu
U
9-1 KRL Dilinde Hareket Komutları Uygulaması
(PTP, LIN ve CIRC)
Endüstriyel Robot kolunun PA noktasından PB noktasına gitmesini PTP, LIN ve CIRC hareket komutlarını
kullanarak programlayınız.
Uyarılar:
1. Hareket komutlarını manuel olarak kodlamak için Kullanıcı Grubu Expert (Uzman) olmalıdır.
2. Endüstriyel Robotu T1 çalışma moduna alınız.
Açılamalar:
1. PTP, LIN ve CIRC komutlarını kullanarak ilgili programı yazınız. PTP hareket komutu için %50, LIN
ve CIRC komutları için 0.5m/sn hız verilerini kullanınız.
2. Programı T1 modunda Test ediniz.
3. Gerekli güvenlik tedbirlerini aldıktan sonra programı AUT çalışma modunda deneyiniz.
4. CIRC komutunda kullanılan CA(Circle Angle) değeri ve işaretine göre hareket miktarı ve yönünün
değiştiğini gözlemleyiniz.
9. Bölüm: KRL ile Robot Programlama
241
Uygulama Programı
DEF s_Motion_KRL( ) DECL E6POS PA, Paux, PB
INI
; HOME Pozisyonuna Git ------------------
PTP HOME Vel= 100 % DEFAULT
; PA Baslagic Noktasi (ORIGIN) -------------
PA.x = 400
PA.y = -100
PA.z = 700
; Paux Yardimci Nokta (AUXILIARY) ------------
Paux.x = 400
Paux.y = 0
Paux.z = 800
; PB Son Nokta (END) -----------------------
PB.x = 400
PB.y = 100
PB.z = 700
; Uygulama - A
PTP PA ;Origine Git (PTP Aksa Özgü Hareket Komutu)
LIN PB ;LIN Rota Hareket Komutu
; Uygulama - B
PTP PA ;Origine Git
CIRC Paux, PB, CA 90 ;CIRC Rota Hareket Komutu (CA:Circle Angle)
; Uygulama - C
PTP Po ;Origine Git
CIRC Paux, PB, CA -90 ;CIRC Rota Hareket Komutu (CA:Circle Angle)
; Uygulama - D
PTP Po ;Origine Git
CIRC Paux, PB, CA 360 ;CIRC Rota Hareket Komutu (CA:Circle Angle)
; HOME Pozisyonuna Git ------------------
PTP HOME Vel= 100 % DEFAULT
END
ERPE-METEG
242
No Konu
U
9-2
Endüstriyel Robot Programında
Malzeme Ayrıştırma Uygulaması
(Sensör/Gripper)
Yukarıda görüldüğü gibi; Robotun P1 noktasından aldığı malzemeyi, ‘Siyah/Siyah Değil’ olma durumuna göre
P2 (Kirli-Siyah) ve P3(Temiz-Siyah Değil) farklı noktalara götürüp bırakması ve sonra PHOME konumuna
gitmesi sağlanacaktır.
Uygulama Görüntüleri
Kırmızı (Temiz) Kapak için Uygulama
Siyah (Kirli) Kapak için Uygulama
9. Bölüm: KRL ile Robot Programlama
243
Akış Şeması
Başla
Bitir
P1 - Noktasına Git
Malzeme
Siyah (Kirli) mı?
Malzeme Rengini Öğren
P2 (Kirli) - Noktasına Git P3 (Temiz) - Noktasına Git
Malzemeyi Bırak
(Gripper Aç)
P4 (HOME) - Noktasına Git
Evet
Malzemeyi Al
(Gripper Kapat)
Hayır
ERPE-METEG
244
Uygulama Programı
DEF s_Kapak_Ayristir( )
; Lokal Değişken Tanımları -------------------------------------
DECL BOOL KONTROL ; Renk Kontrolü
DECL E6POS P ; Koordinat
INI
; HOME Pozisyonuna Git -----------------------------------------
PTP HOME Vel= 50 % DEFAULT
;Referans Noktasına Git ----------------------------------------
P.X = 277
P.Y = 327
P.Z = 474
P.A = -130
P.B = 0
P.C = 179
PTP P
; Sensörle Kapağa Yaklaş ---------------------------------------
P.X = P.X + 30
LIN P
; Renk Bilgisini Öğren -----------------------------------------
KONTROL=$IN[1]
; Kapaktan Uzaklaş ---------------------------------------------
P.X = P.X – 30
LIN P
; Kapak üstü mesafeye çık --------------------------------------
P.Z = P.Z + 30
LIN P
; Kapak alma üst pozisyonuna git -------------------------------
P.X = P.X + 113
P.Y = P.Y + 30
LIN P
;Gripper AÇ ----------------------------------------------------
SET GRP 1 State=OPN GDAT3
; Kapak alma alt pozisyonuna git -------------------------------
P.Z = P.Z - 26
LIN P
;Gripper KAPAT -------------------------------------------------
SET GRP 1 State=CLO GDAT4
; Yeniden Kapak alma üst pozisyonuna git -----------------------
P.Z = P.Z + 26
LIN P
; Renk Durumuna Göre Lokal Altprogram Seç ----------------------
IF KONTROL THEN ; Temiz Bırak PTP Ptemiz Vel=50 % PDAT1 Tool[0] Base[0]
SET GRP 1 State=OPN GDAT1
ELSE ; Kirli Bırak
PTP Pkirli Vel=50 % PDAT2 Tool[0] Base[0]
SET GRP 1 State=OPN GDAT2
ENDIF
; HOME Pozisyonuna Git --------------------------------------
PTP HOME Vel= 50 % DEFAULT
END
9. Bölüm: KRL ile Robot Programlama
245
No Konu
U
9-3
Karar ve Çevrim Kontrol Komutlarının
Robot Programlarında Kullanılması
(Çevrimsel Kapak Ayrıştırma)
Robotun Platform üzerinde P1, P2, P3 ve P4 noktalarında bulunan 4 adet Kırmızı ve Siyah renkli Kapağa
Koordinat Öteleme İşlemi yaparak sırasıyla erişip renklerini ayrıştırarak aldığı kapağı, ‘Siyah/Siyah Değil’
olma durumuna göre Pkirli (Kirli-Siyah) ve Ptemiz (Temiz-Siyah Değil) farklı noktalara götürüp bırakması
ve sonra PHOME konumuna gitmesi sağlanacaktır.
Açıklamalar:
1. Bu uygulama için FOR çevrimi ve Koordinat Öteleme İşlemi kullanılacaktır.
2. Uygulama programına göre kapaklar arasında 87 mm mesafe vardır.
3. Renk Belirleme Sensörü, Gripper üzerinde olup, 1 numaralı INPUT’a bağlıdır. ‘Siyah ve Diğer Renk’
olarak ayırabilmektedir.
Siyah Renk ise FALSE $IN[1]
Değilse ise TRUE $IN[1]
ERPE-METEG
246
Uygulama Görüntüleri
9. Bölüm: KRL ile Robot Programlama
247
Uygulama Programı
DEF s_Cevrimsel_Kapak_Ayristir( )
; Lokal Değişken Tanımları -------------------------------------
DECL INT TUR ; Çevrim Iteratörü
DECL BOOL KONTROL ; Renk Kontrolü
DECL E6POS P
INI
; HOME Pozisyonuna Git -----------------------------------------
PTP HOME Vel= 50 % DEFAULT
FOR TUR=1 TO 4
P.X = 277 ;Referans Noktasına Git
P.Y = 327 - (TUR - 1) * 87 ; Kapaklararası Mesafe:87 mm
P.Z = 474
P.A = -130
P.B = 0
P.C = 179
PTP P
P.X = P.X + 30 ; Sensörle Kapağa Yaklaş
LIN P
KONTROL=$IN[1] ; Renk Bilgisini Öğren
P.X = P.X – 30 ; Kapaktan Uzaklaş
LIN P
P.Z = P.Z + 30 ; Kapak üstü mesafeye çık
LIN P
P.X = P.X + 113 ; Kapak alma üst pozisyonuna git
P.Y = P.Y + 30
LIN P
;Gripper AÇ ------------------------------------
SET GRP 1 State=OPN GDAT3
P.Z = P.Z - 26 ; Kapak alma alt pozisyonuna git
LIN P
;Gripper KAPAT ---------------------------------
SET GRP 1 State=CLO GDAT4
P.Z = P.Z + 26 ; Yeniden Kapak alma üst pozisyonuna git
LIN P
IF KONTROL THEN ; Renk Durumuna Göre Lokal Altprogram Seç
TEMIZ_BIRAK()
ELSE
KIRLI_BIRAK()
ENDIF
;------------------------------------------------------------
ENDFOR
; HOME Pozisyonuna Git ------------------------------------------
PTP HOME Vel= 50 % DEFAULT
END
DEF TEMIZ_BIRAK() PTP Ptemiz Vel=50 % PDAT1 Tool[0] Base[0]
SET GRP 1 State=OPN GDAT1
PTP HOME Vel=100 % DEFAULT
END
DEF KIRLI_BIRAK() PTP Pkirli Vel=50 % PDAT2 Tool[0] Base[0]
SET GRP 1 State=OPN GDAT2
PTP HOME Vel=100 % DEFAULT
END
ERPE-METEG
248
No Konu
U
9-4
Çevrim Kontrol Komutlarının
Robot Programlarında Kullanılması
(Sarmal Labirent Çizimi)
Yukarıda görüldüğü gibi; Robotun kağıt seviyesine inerek Sarmal Labirent çizmesi ve sonrasında PHOME
konumuna gitmesi sağlanacaktır.
Akış Şeması
Başla
Bitir
Yazma Noktasına Git
Sarmal Labirent Çiz
FOR X = 1 TO 10
P.X = P.X + TUR * 10 - 5
LIN NOKTA
P.Y = P.Y + TUR * 10 - 5
LIN NOKTA
P.X = P.X + TUR * (-10)
LIN NOKTA
P.Y = P.Y + TUR * (-10)
LIN NOKTA
ENDFOR
Kalemi Yukarı Kaldır
(Yazma PASİF)
P.Z = P.Z + 10
PHOME - Noktasına Git
Kalemi Aşağı İndir
(Yazma AKTİF)
P.Z = P.Z - 10
9. Bölüm: KRL ile Robot Programlama
249
Uygulama Programı
DEF s_Labirent( )
; Lokal Değişken Tanımları ----------------
DECL INT X, Y, XO, YO, ZO
DECL E6POS P
INI
; HOME Pozisyonuna Git --------------------
PTP HOME Vel= 50 % DEFAULT
; Orijin Noktası Belirle ------------------
XO = 400
YO = 200
ZO = 364 ; Yazma Temas Değeri
; Orijin Noktasına Git --------------------
P.X = XO
P.Y = YO
P.Z = ZO + 10
PTP P
; Kalemi Aşağı İndir (YAZMA AKTİF)---------
P.Z = P.Z - 10
LIN P
; Sarmal Labirent Çizilir -----------------
FOR X=1 TO 10 P.X = P.X + TUR * 10 - 5
LIN NOKTA
P.Y = P.Y + TUR * 10 - 5
LIN NOKTA
P.X = P.X + TUR * (-10)
LIN NOKTA
P.Y = P.Y + TUR * (-10)
LIN NOKTA
ENDFOR
; Kalemi Yukarı Kaldır (YAZMA PASİF) ------
P.Z = P.Z + 10
LIN P
; HOME Pozisyonuna Git --------------------
PTP HOME Vel= 50 % DEFAULT
END
ERPE-METEG
250
No Konu
U
9-5
Standart Fonksiyonlarla
Trigonometrik Eğrilerin Çizilmesi
(Sinüs Eğrisi)
Yukarıda görüldüğü gibi; Robotun kağıt seviyesine inerek Sinüs Eğrisini çizmesi ve sonrasında PHOME
konumuna gitmesi sağlanacaktır.
Akış Şeması
Başla
Bitir
Yazma Noktasına Git
Sinüs Eğrisi Çiz
FOR X=1 TO 360
Y = SIN(X)* 100
P.X = XO + X
P.Y = YO + Y
LIN P C_DIS
ENDFOR
Kalemi Yukarı Kaldır
(Yazma PASİF)
P.Z = P.Z + 10
PHOME - Noktasına Git
Kalemi Aşağı İndir
(Yazma AKTİF)
P.Z = P.Z - 10
9. Bölüm: KRL ile Robot Programlama
251
Uygulama Programı
DEF s_Sinus_Egrisi()
; Lokal Değişken Tanımları ----------------
DECL INT X, Y, XO, YO, ZO
DECL E6POS P
INI
; HOME Pozisyonuna Git --------------------
PTP HOME Vel= 50 % DEFAULT
; Orijin Noktası Belirle ------------------
XO = 250
YO = 200
ZO = 700
; Orijin Noktasına Git --------------------
P.X = XO
P.Y = YO
P.Z = ZO + 100
PTP P
; Kalemi Aşağı İndir (YAZMA AKTİF)---------
P.Z = P.Z - 100
LIN P
; Sinus Eğirisi Çizilir--------------------
FOR X=1 TO 360
Y = SIN(X)* 100 ; Y = COS(X)* 100
P.X = XO + X
P.Y = YO + Y
LIN P C_DIS
ENDFOR
; Kalemi Yukarı Kaldır (YAZMA PASİF) ------
P.Z = P.Z + 100
LIN P
; HOME Pozisyonuna Git --------------------
PTP HOME Vel= 50 % DEFAULT
END
ERPE-METEG
252
No Konu
U
9-6 Altprogramların Robot Programlarında Kullanılması
Yukarıda görüldüğü gibi; Robotun P1 noktasından aldığı malzemeyi, P2 noktasına götürüp bırakması ve sonra
PHOME konumuna gitmesi sağlanacaktır.
Not: Kapak Taşıma uygulamasını Global ve Lokal Altprogram tanımlarından yararlanarak ayrı ayrı
gerçekleştiriniz.
Uygulama Programı
(1. Çözüm Yöntemi: Global Altprogram Tanımları ile Programlama)
DEF Kapak_Tasi( )
INI
; HOME Pozisyonuna Git ------------------
PTP HOME Vel=50 % DEFAULT
; Sonsuz Cevrim -------------------------
LOOP
Kapak_Al() ; Global Altprogram
Kapak_Birak() ; Global Altprogram
; Cevrim Cikis Kontrolu -----
IF $IN[7] THEN
EXIT
ENDIF
; ---------------------------
ENDLOOP
; HOME Pozisyonuna Git -----------------
PTP HOME Vel=50 % DEFAULT
END
9. Bölüm: KRL ile Robot Programlama
253
DEF Kapak_Birak( )
INI
; HOME Pozisyonuna Git ------------------
PTP HOME Vel= 50 % DEFAULT
PTP P2 Vel=50 % PDAT1 Tool[0] Base[0]
; Gripper AÇ ------------------
SET GRP 1 State = OPN GDAT1
; HOME Pozisyonuna Git ------------------
PTP HOME Vel= 50 % DEFAULT
END
DEF Kapak_Al( )
INI
; HOME Pozisyonuna Git ------------------
PTP HOME Vel= 50 % DEFAULT
PTP P1a Vel=50 % PDAT1 Tool[0] Base[0]
; Gripper AÇ (Garanti)---------
SET GRP 1 State = OPN GDAT1
; Input 1’i Bekle--------------
WAIT FOR ( IN 1 '' )
LIN P1b Vel=0.5 m/s CPDAT1 Tool[0] Base[0]
; Gripper KAPAT ---------------
SET GRP 1 State = CLO GDAT2
LIN P1c Vel=0.5 m/s CPDAT2 Tool[0] Base[0]
; HOME Pozisyonuna Git ------------------
PTP HOME Vel= 50 % DEFAULT
END
ERPE-METEG
254
Uygulama Programı
(2. Çözüm Yöntemi: Lokal Altprogram Tanımları ile Programlama)
DEF Kapak_Tasi( )
INI
; HOME Pozisyonuna Git ------------------
PTP HOME Vel=50 % DEFAULT
; Sonsuz Cevrim -------------------------
LOOP
Kapak_Al() ; Lokal Altprogram
Kapak_Birak() ; LOkal Altprogram
; Cevrim Cikis Kontrolu -----
IF $IN[7] THEN
EXIT
ENDIF
; ---------------------------
ENDLOOP
; --------------------------------------
; HOME Pozisyonuna Git -----------------
PTP HOME Vel=50 % DEFAULT
END
DEF Kapak_Al( )
;
; Kapak Alma Lokal Altprogramı buraya yazılır.
;
END
DEF Kapak_Bırak( )
;
; Kapak Bırakma Lokal Altprogramı buraya yazılır.
;
END
9. Bölüm: KRL ile Robot Programlama
255
9.8. Bölüm Çalışma Soruları
Soru 1. Aşağıdakilerden hangisi KRL dilinde değişken tanımlama işleminde kullanılan Basit Veri Tiplerinden biri
değildir?
a) INT b) FLOAT c) BOOL d) NOT
Soru 2. Aşağıdakilerden hangisi KRL dilinde ÇEVRİM-DÖNGÜ oluşturmada kullanılan komutlardan biri
değildir?
a) LOOP/ENDLOOP b) IF/ENDIF c) FOR/ENDFOR d) WHILE/ENDWHILE
Soru 3. Aşağıdakilerden hangisinde KRL dilinde kullanılan KARAR-KONTROL komutları doğru olarak
verilmiştir?
a) IF ve LOOP b) LOOP ve FOR c) IF ve SWITCH d) IF ve AND
Soru 4. Aşağıda KRL dilinde yazılmış programa göre hangi dijital çıkışlar için TRUE değeri verilmiş olur?
a) 10, 9, 8, 7, 6, 5 b) 10, 8, 6 c) 10, 5 d) Hiçbiri
Soru 5. Aşağıda verilen KRL programı için aşağıdaki ifadelerden hangisi yanlıştır?
a) ABC( ) ana programdır
b) Program *.SRC (Source) uzantılı dosya içerisinde tutulmaktadır
c) XXX( ) Global altprogramdır
d) Programın adı ABC’dir
...
FOR i=10 TO 5 STEP -2
$OUT[i] = TRUE
ENDFOR
...
DEF ABC()
…
END
________________
DEF XXX()
…
END
________________
DEF YYY()
…
END
ERPE-METEG
256
Soru 6. Aşağıda verilen KRL programına göre, 1 numaralı Input (Giriş) değeri FALSE iken IF/ENDIF komutu
nasıl çalışır?
a) P1 noktasına Doğrusal Rota hareketi ile gidilir
b) P1 noktasına Noktadan Noktaya Aksa özgü hareket ile gidilir.
c) P1 noktasına Dairesel Rota hareketi ile gidilir
d) P1 noktasına gidilmez.
Soru 7. Aşağıdaki KRL kodlarından hangisi Endüstriyel Robot Flanş pozisyonunu mevcut durumuna göre X
ekseni etrafında 30 döndürür?
a) b) c) d)
P.X = P.C + 30
PTP P
P.C = 30
PTP P
P.C = P.C + 30
PTP P
P.X = P.X+ 30
PTP P
Soru 8. Programcı tarafından tanımlanabilen, tüm programlarda geçerli olan ve değerini her zaman koruyan
değişkenlere ne ada verilmektedir?
a) Lokal Değişkenler b) Global Değişkenler c) Sistem Değişkenleri c) Mutlak Değişkenler
Soru 9. Aşağıdakilerden hangisi Sistem Değişkenlerinin özelliklerinden değildir?
a) Sistem değişkenleri her zaman “$” karakteri ile başlar.
b) Sistem değişkenleri her zaman sorgulanabilir.
c) Sistem değişkenleri her zaman geçerlidir ve değerini korur.
c) Sistem değişkenleri programcı tarafından tanımlanabilir.
Soru 10. Aşağıdakilerden hangisi KRL dilinde çevrimden çıkmak için kullanılan komuttur?
a) RETURN b) HALT c) EXIT c) GO
...
IF $IN[1]==FALSE THEN
PTP P1
ELSE
LIN P1
ENDIF
...