Skip to main content

Sysmac Studio Eğitimi -7 | Omron Sysmac Studio

SYSMAC STUDIO EĞİTİMİ -7

Sysmac Studio ST dili nedir ? Sysmac Studio’da değişken tipleri nedir ? Sysmac Studio’da auto-tuning nasıl yapılır ? Sysmac Studio’da karşılaştırma işlemleri nasıl yapılır ? Sysmac Studio Eğitim Seti İnceleme yazı dizisinin son ve dev incelemesiyle karşınızdayız.

OMRON SYSMAC STUDIO

Karşılaştırma :

Dizilerde karşılaştırma ;

AryCmpEQ -> Fonksiyon bloğunu eklediğimizde değişken olarak bu bloğu tanımlamalı ve dizi elemanlarını bildirmeliyiz.

A ve B dizisinin filanca elemanları birbirine eşitse C dizisinin x elemanı TRUE olsun diyoruz burada aslında.

AryCmpEQV -> Bir değerle dizi elemanı karşılaştırma işlemidir.A dizisinin (Size) x kadar elemanını test değeri yani herhangi bir örnek ile karşılaştır ve eşit olan bitleri TRUE yap şeklinde kullanılır.

Compare-CMP (Karşılaştırma) : Karşılaştırma komutudur.

Zone Compare(Bölge Karşılaştırma) : Bölge karşılaştırma komutudur.

Add (toplama) ve Sub (çıkarma) komutudur.

Fonksiyon bloğuna bir input eklemek için ‘add input’ kullanılır.

Sayıcılar ;

CTU -> Yukarı sayıcı

CTD -> Aşağı sayıcı

CTUD -> Yukarı/Aşağı sayıcı

Yukarı sayıcı set değeri gelince çıkış verir.Aşağı sayıcı ise set değerine gelinceye kadar çıkış verir.

Array Oluşturmak istediğimizde ;

‘AryOr’  fonksiyon bloğunu oluşturuyoruz.Yani Ladder’a bunu ekliyoruz.

Dizi oluşturmak içinse ;  Variables(değişkenler) içerisinde Data tipi olarak ‘ARRAY[0…..] of Byte’ şeklinde Array data tipi seçilmelidir.

Inline ST(Structured Text)  Satırı Nasıl eklenir ?

Not :  POU – Program Organization Unit yani Program Organizasyon Birimidir.

Sysmac -> Ladder  ve ST (Structured Text) olarak bize kullanılabilir 2 dil sunmaktadır.

Multiview Explorer kısmında Programs -> Add -> ST denilerek Inline ST satırı eklenir.Ya da Toolbox ->Ladder tools -> Inline ST denilerek de eklenebilir.

Omron sysmac studio dersleri

ST Programlama Dili Özellikleri ;

Direk ST ile bir yazılım yapacak isek ;

Programs -> Add -> ST denilerek direk olarak bir ST penceresi karşınıza getirebilirsiniz.

Yine Tools -> Option üzerinden HMI Page Editor , ST Editör vb. seçilip ST editörden comment , global variables vb. renklerini ayarlayabilirsiniz.

Ayarlama işlemleri ;  := (sağdan sola atama) şeklinde olur ve her kod (;) ile bitmelidir.

ST İşleçleri ;

( ) = İşlem önceliği belirleme

** = Üs alma

NOT = Tersleme

*  = Çarpma

/ = Bölme

+ = Toplama

– = Çıkarma

Mod = Kalan Bulma

< , > , <= , >=  ; Karşılaştırma

= ; Eşit koşulu

<>  = Eşit olmama koşulu

& , AND = Lojik AND

XOR = Lojik Ters OR

OR = Lojik OR

ST Arayüzünde İken ;

I/O Map (Giriş/Çıkış haritası) üzerinde bir değişken tanımladığınızı varsayalım.

Ve yazdığınız programı ;

İf (input _1 OR output _1) AND NOT input_2 THEN output_1 :=TRUE ;

END_IF;

Şeklinde olduğunu varsayalım.

Bu program şu anda herhangi bir task’ın altında çalışmamaktadır.Bunu bir task’ın altına eklemelisiniz.

Program assignment settings üzerinden Primary Task içerisine programı ekleyip , kontrollöre yüklemeliyiz.

Case Yapısı Örneği ;

Case durum_değişken_ OF

10:

Sayi_ :=1;

20:

Sayi_ :=2;

END_CASE;

ST Diline Fonksiyon Bloğu Insert Etmek  :

Toolbox içerisinde istenilen obje sürükle bırak yöntemi ile konulabilir.Örnek olarak ; Ton Timerının bırakılması sonucu ;

TON (In:Var0 , PT=Var1 , Q=Var2 , ET=Var3) şeklinde görülecektir.

Bu Timer’a isim verip kullanımı nasılmış ona bir bakalım ;

Variables kısmında T1 isminde TON data tipinde bir değişken tanımlayalım.

T1(

In :=start_T1,

PT :=T#3s,

Q = Q1,

ET=Var3

); gibi kullanılabilir.

Structures Data Tipleri ;

Multiview Explorer -> Data -> Data Types

Data tipleri ise; Structure ,Union , Enumerated olarak üçe ayrılır.

Struct Data Tipi :

Birleşik bir yapıda tanımlamak için ;

Struct bir data tanımlayalım.Adıda motor olsun.Sağ tıklayıp ‘Create New Member’ denilerek altına hız isminde real bir data tipi pozisyon isminde bir data tipi tanımlayalım.

Ardından geri gelip Variables(değişkenler) tablosunda Internals olarak motor1 olarak isim verip data tipinide ‘motor’ olarak ayarlayalım.Motor1’in altındada artık hız , pozisyon data tipleri ve isimlerini görebiliriz.

İstersekte bunları yeni bir array olarakta tanımlayabiliriz.

‘Motorlar(isim) Array [0…..99] OF motor’ denilerek motorlar=0 , motorlar1 , motorlar2 gibi sıralı bir dizi oluşturulabilir ve altında hemen hız , pozisyon bilgilerine ulaşılabilir.

Union Data Tipi : Var olan bir değişkeni parçalamak için kullanılır.

Değişken adında bir union (base type) oluşturduğumuzu varsayalım.

‘Create New Member’ denilerek altına bit adı ; altına da byte olacaksa , Array [0…16] OF bool  ve byte adı ; word olacaksa Array [0..1] OF byte , word adı şeklinde kullanılır ve data tipide : word olmalıdır.

Variables altında ;

Degisken_1 adı altında Array  [0…99] OF motor data tipi oluşturulur.

Mesela bit olarak X bitini görmek , izlemek istediğinizi varsayalım ;

Monitor tab page üzerinden ;

Watch (project)  kısmında name alanına program0.degisken_1.bit[x] diyerek X. Sırada olan biti izleyebilirsiniz.

Enumerated Data Tipi :

Örnek olarak ; Trafik ışıkları (isim) enumerated (data tipi) ‘Create New Member’ diyerek üye ekleyelim.

Üyeleri bir değer almalıdır.

Sari_isik = Enum Value =0 olsun.

Kirmizi_isik = Enum Value =1 olsun

Yesil_isik = Enum Value = 2 olsun.

Değişken tablosunda (variables) durum değişkeninde bir isim belirledik ve data tipide trafik ışıkları olarak seçtik.

Böylece Enumerated Data tipi tanımlama işlemi yapabilirsiniz.

Fonksiyon ve Fonksiyon Bloğu Oluşturma  :

Function (Fonksiyon) : Programda ladder üzerinde sağ tıklayarak eklenebilir.

Örnek olarak bir blok oluşturduğunuzu düşünelim ; Variables kısmından hangi değişkenlerin giriş , hangilerininse çıkış olduğunu vb. görmek istiyorsunuz.İşte tam olarak bu anlamda çok işinize yarayacak bir kısımdır burası.

Kütüphaneye Nasıl Fonksiyon Bloğu Eklenir ?

Project -> Library -> Library Setting üzerinden hangi programı görmek istiyorsak onu seçip, isim vb. girdikten sonra tamam diyerek ekleyebilirsiniz.

Ayarları yapıp ‘Create Library’ diyerek işlem bittiğinde gelen ekranda verdiğiniz isim , ‘.slr’ uzantılı olarak kaydedilir.

NX Enkoder Kartı :

Bu bölümde de Omron NX I/O ile EC Coupler üzerinden ECO1222 enkoder’e bağlanıp , enkoder değerleri okuma işlemine göz atalım.

Enkoder bağlı kartın I/O Map ekranın açın ve Enable olması için gerekli inputları ekleyin.NX Coupler’a tıklayıp edit diyerek NX-ECO1222’i seçerek , ‘Edit I/O location settings’ tıklanarak buradan da Encoder Counter Operation Command seçilip sisteme eklenebilir.

Ch1 Counter Enable içinse ; Variables altından -> Enable Counter değişkeni vb. ayarlanır.

1. Parti EtherCAT Cihazların Eklenmesi :

Configurations and Setup -> EtherCAT üzerine çift tıklayıp Master’a sağ tıkladıktan sonra , Display ESI Library denilerek Omron Kütüphanesinde yer alan EtherCAT dosyalarına erişebilirsiniz.

Hareket Kontrol – Eksen Tanımlama :

Motion Control Setup -> Axis Settings üzerinden devam ediyoruz.

Not : Eksen demek ya servo ya da enkoder demektir.

Axis (Eksen) Ayarları : Üzerine sağ tıklayıp ‘add’ denilerek 2 eksen tanımlayalım.(Hatta bağlı aygıtlar kadar tanımlanabilir.)

Eksen ismine çift tıkladığımızda Axis Basic Setting açılacaktır.Buradan eksenleri konfigüre edebiliriz.

Axis Type : Used Axis (Burada bir eksen var ve kullanılıyor manasındadır)

Changeable To Used Axis : Örnek olarak eksen üzerinde redüktörün dişli sayısı vb. değiştiğinde kısa bir süre ekseni durdurup düzenleme işlemi yapılır.

Unchangeable To Used Axis seçilirse eğer bu rezerve edilmiş ya da kullanılmayan bir projedir ya da eksendir anlamına gelecektir.

Axis Type : Servo  ya da enkoder olabilir.Ek olarak sanal servo ve sanal enkoder olabilir.

Output Device : Hangi node’da(adres) iseniz onu seçiniz ve diğer sekmeye geçiniz.

Unit Conversion Settings : Burası ölçüm biriminin belirlendiği yerdir.

Örnek olarak ; G5 Servo motor kullanıyor olalım.

20 Bit = Enkoder çözünürlüğü ve 2^20 = 1048576 pulse/rev (1 dönüşte bu kadar pals) anlamına gelir.Ya da bu kadar palsta motor mili  1 tam tur döner anlamına gelir.(Command Palse Count Per Motor Rotation)

Work Travel Distance per Motor Rotation (1 Dönüşte kaç mm gider) anlamındadır.

Bunuda 2*pi*r üzerinden hesaplayabilirsiniz.Çevresi kadar yol alacaktır.

Operation Settings :

Maksimum Velocity : Maksimum hızdır.Örneğin kullanacağımız servo 3000devir/dakika olsun.

3000/60 = 50 -> saniyedeki hareketi/devridir.

Mm olarak  turda 110 mm gittiğini ise (2*pi*r) denkleminden bulabiliriz.

50 * 110 = 5500 = maksimum velocity’dir.

Maksimum Jog Hızı : Bu hızda maksimum hıza eşit olabilir ve daha yukarı olamaz.

Velocity Warning Value : Bu kısımda hız belli bir yere ulaşınca bana hata göster , hata oluşsun gibi kullanılmaktadır.(%) yüzdesel değer girilir.

Bunların ardından sürücünün nasıl davranacağı sorusuna bakalım ;

Acc/Dec  over … -> Hemen durup kalksın mı vb. işlemleri buradan ayarlayabiliriz.

Torque : Pozitif ve negatif tork değerlerinin yüzde cinsinden uyarı seviyelerini buradan belirleyebiliriz.

Monitor : Burası veri işleme için kullanılır.Hız , zaman , pozisyon vb. grafiklerinin görünümü ile ilgilidir.

Filter Time : İzleme ile ilgilidir.

In Position Range : Gidilecek konuma +/- x mm kala aktif eder.

In position Check Time : Gidilecek konuma şu kadar kala çıkış verdirebiliriz.

Zero Position Range : 0 yani home noktasına +/- şu kadar mm kala çıkış ver denilir bu kısımdan.

Other Operation Settings (Diğer işlem ayarları ) :

Sürücü üzerindeki inputlara göre sürücünün ne yapmasını istiyorsanız hemen durması vb. gibi bu kısım kullanılır.

Hata Resetleme İzleme Süresi  , maksimum pozitif tork , negatif tork limitleri vb. %’sel olarak buradan görebiliriz.

Limit Settings : Software limit kısmı , Normalde standart bir enkoder 32 bitlik bir bilgi taşır.Yani alabileceği maksimum değerde 2^32’dir.

Enkoderin (+/- ) 2^32 limit değerleridir.

Software Limit ; Enable yapılabilir ve azalan ,artan , rampalı duruşlar vb. buradan ayarlanabilir.

Anlık pozisyona göre duruşunu yapsın isterseniz , hemen altından negatif ve pozitif değerleri görebilirsiniz.

(Limit switchleri  çalışmazsa , 2. Güvenlik önlemide burasıdır.)

Following Error Kısmı : Sürücü belli bir hata yapıyorsa , ve bu sürücü içindeki parametrelerden birisidir , belli bir değerin üzerinde olup olmaması ya da belli aralıklarda olup olmamasından dolayı bu hata meydana gelir.

0 – 0 olursa disable olur.

Home Ayarları :

Home işlemi için methodlar buradadır.Homing methodu buradan seçilir.

Position Count Setting : Linear Mode ve Rotary Mode

Linear(Lineer) Mode: Eksen emülasyonu yapmaktır.

Örnek olarak : 0 – 360 arası rotary bir eksen kullanıyoruz diyelim.Rotary mod’da alırsak istediğimiz değeri enkoder için 0-360(min-max) belirlerseniz hep 0 ile 360 arasında dönecektir.

Enkoder tipleri ; Incremental (artırımlı) enkoder ve Absolute (mutlak) enkoder

Eksen Ayarlarında Test Ekranı ve Özellikleri ;

Online olduktan sonra sisteme tanıttığımız eksene sağ tıklayıp “Start MC Test Run” denilerek ilgili ekrana ulaşılır.

Komut yazmadan deneme yapma imkanı tanır bizlere.

Burada , servoyu on yapabilir , konum bilgisi alabilir , limitlerle alakalı vb. bilgileri alabiliriz.Ve aynı zamanda Durumları (status) izleyebiliriz.

Motion Error List : Hata listelerinide burada görebiliriz.

Absolute Positioning : Örnek olarak 300’e git dedik ve gitti.Tekrar 300’e git dersek gitmeyecektir çünkü home’a göre işlem yapacaktır.

Relative Positioning : Örnek olarak 300’e geldi ve tekrar 300’e git dedik.Bu durumda mesafeye göre hareket ettiğinden 300 daha hareket edecektir.

Homing Method : Zero Position(Sıfır pozisyonu) Reset dersek enerji açılıp kapanınca burayı home olarak tanır(bulunduğu yeri) ve 0 noktası olarak burayı kabul eder.

Proximity Reverse Turn/Home Proximity Input Off methodu ; Yükselen kenar geldiği sürece home’u arar.Düşen kenar gelince de ve ilk Z fazı ile o andaki konumu home olarak tanır.

Mesela harici bir switch ile home ayarlıyoruz diyelim.Herhangi bir sensör kullanmıyor olalım.Homing Method  = No home proximity input/holding home input

Home input signal = Use external home input seçilerek ayarları yapılır.Herhangi bir limit input’u görürse nasıl davransın ? Operation selection at positive limit input üzerinden nasıl davranacağını ve ne yapacağını ayarlayabiliriz.

Velocity /Acceleration /Decceleration :

Homelama hızını homing velocity’den ayarlayabilirsiniz.Homing approach velocity (home yaklaşım hızı) da aynı olmalıdır.(home hızı ile)

Home Deneme İşlemi için;

Online olmalıyız.Ardından MC Test Run üzerinden ‘Homing’ kısmından Apply Homing Setting diyoruz.Sistem Home’u aramaya başlayacaktır.Harici switch’i gördüğünde orada duracaktır ve orayı home olarak kabul edecektir.

Not : Homing Setting ; Home compensation valve üzerinden home ofset nedir ?

Home ofset’e = 30 değerini verdiniz diyelim.

Yine limit switch’i gördüğü yerde durur ancak bu sefer konumunu 30 mm olarak kabul eder.Böylece offsetlenmiş olur yani bir ofset değeri atamış oluruz.Bir nevi kaydırma olarak düşünebilirsiniz.Fiziksel home değişmemiştir.

Compensation Value’ü 30 yapalım.Apply Home Setting diyelim ve izleyelim.

Bu seferde fiziksel olarak reelde +30 mm gitti ve limit switchin olduğu yeri ‘0’ kabul etti.Compensation değeri fiziksel olarak girilen değer kadar ileri/geri götürecektir hattı.

Servo Eksenlerde Auto-Tuning :

EtherCAT altında hangi node’a bağlı isek ; örnek olarak Node 1 olsun.Sağ tıklayıp -> auto-tuning denilerek ‘yes’ denilir.

Dikkat Edilmesi Gereken Konu ise ;

MC Test Run : Eksenin servo off olması gerekir.Servo on durumunda ise durdurmalısınız.Servonun enerjisini kesiniz.

Easy Tuning : Bize hangi mekaniği kullandığımızı soracaktır.En yakın benzer mekaniği seçerek next deyiniz.

Rigidity Değeri : Mekaniksel bir değerdir.Mekaniğe göre o da bir değer alır ve kendimizde bunu manuel olarak yapabiliriz.

Eğer dilediğimiz değerler tam olarak oluşmazsa birer birer artırarak uygun değeri bulmaya çalışırız.

Next deyip devam ederek ayar sayfasına geliyoruz.

Number of Tuning Iterations : Aynı rigidity değerinde kaç defa auto-tuning için motor hareket etsin anlamındadır.

Eğer istediğimiz  değere ulaşılamazsa , rigidity değerini otomatik olarak 1 artırıp tekrar deneyecektir otomatik olarak.

Duration of a Tuning Iteration : Bu işlemi ne kadar sürede yapsın sorusunun cevabıdır.

Direction : Yönü seçebiliriz.İleri-Geri / İleri sadece vb.

Step Distance : Komut birimidir.Gireceğiniz pals değeridir.Auto-tuning yükte yapılır ve eğer 1 tam tur dönmesini istiyorsak pals cinsinden enkoderin 1 tam tur pals sayısını buraya yazmalıyız.

Step Jog hızı , kalkış/duruş zamanları default kalabilir.

Stabilization Time dedikleri ise ; sistemin dengeye ulaştığı zamandır.Gerçek aşımların ardından küçük aşımlar kabul edilebilir ama aşımların ardından tam olarak yerleşme zamanına stabilizasyon zamanı denir ve artık sistem dengeye kavuşmuştur.

Overheat Level : Belirlediğimiz oranın belli bir yüzde oranı kadar üstüne çıkması durumu için kullanılır.

Torque Vibration Level : Tork filtresi anlamıdır.Titreşim oranını belirler burası da.

Position Window : Ekseni 100’e gönderdik diyelim.Buradaki değer aralığında 99.900-100.10 mm (aralık : 10 mm) arasında bir değerde gidip gelebilir.Bunun dışındaki bir aralık sürücüyü hataya düşürecektir.

Ardından next denilerek ve start denilerek auto-tuning başlatılır ve istediğimiz değerlere gelene kadar deneyecektir kendisi.

Eğer tuning has been completed succesfully derse auto-tuning tamamlanmış olur.

Next diyerek grafik olan bir arayüze geleceksiniz.(check behavior) -> Davranışın kontrol edilmesi

Takip ekranı karşınıza gelir.İlgili seçeneklere tıklayarak (actual speed , encoder position following etc.) start trace denilerek 1 defa daha döner ve ardından bize bir grafik çıkartır.

Eğer sonuçlar uygunsa bunları kopyalayıp diğer sürücülere atabiliriz.Next denilerekte işlemler tamamlanır.

SYSMAC STUDIO EĞİTİM SETİ İNCELEME -3 SONUÇ :

Bugün ki yazımızda Sysmac Studio Eğitimi -7 adlı yazımızı sizlerle paylaştık.Dev bir inceleme olduğu kanısındayım.Bu yazı ile de Sysmac Studio’ya dair geniş bir bilgi edinme adına yazı dizilerini tamamlamış olduk.

İyi çalışmalar.

Bir cevap yazın

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

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

%d blogcu bunu beğendi: