Skip to main content

Sysmac Studio Eğitim Seti

SYSMAC STUDIO EĞİTİM SETİ İNCELEME -2

Sysmac studio ayarları nedir ? Haberleşme ayarları nasıl kurulur ? Sysmac Studio’da ladder diyagram nasıl kullanılır ? Bu ve benzeri sorulara cevap aradığımız ikinci yazımızda sizlere geniş bir inceleme daha sunuyoruz.

SYSMAC STUDIO İNCELEME -2

Controller Setup : Bu alana built-in  ethernet (Ip port settings kısmından ) ulaşılabilir.

TCP/IP Ayarları : Fixed settings kısmındaki IP adresi ve subnet mask içerisindeki adresler statik olmayan fabrika çıkışı IP’lerdir.İstersek statik IP ekleyebiliriz.Buradan IP ayarları ayarlanır.

Yurtdışından gelen makinalar vb. için IP adresleri farklı olduğundan ya da olacağından önce usb ile bağlanmak mantıklı olan yoldur.

Ardından IP adresini program üzerinden öğrenerek Internet Protocol Version TCP/IPV4(Bilgisayar ağ ayarları kısmı) üzerinden dışarıdan gelen makine bilgisine göre düzenlemeler program ve bilgisayar kısımlarında düzeltilmelidir.

Link Ayarları Sekmesi ise , Haberleşme hızı ile ilgilidir.Auto’da kalabilir.

FTP : File Transfer Protocol anlamındadır ve dosya transferi için kullanılır.Burada karşımıza gelen alan üzerinde bir isim vermek durumundasınız ve sadece sayılardan oluşmak koşuluyla da  8 haneli bir şifre belirlemelisiniz.Ardından F7 ile compile ederek kontrollör’e gönderiyoruz.

Ek olarak bu özellik  kullanımı adına Filezilla’da kullanılabilir.

Filezilla programı üzerinden IP Adresi , isim ve şifre girilerek makine kontrolcüye ait dosyalara ulaşılabilir ve yükleme/indirme işlemleri yapılabilir.

Event Settings Kısmı : Offline olduktan sonra bu alanda ‘+’ işaretine basarak bir satır getiririz karşımıza.Event code  1-60000 arası bir değer almak zorundadır.1 olarak değer verdiğinizi kabul ederek işlemlerimize devam edelim.1 dediniz ve enter dediniz.Fault Level (hata seviyeleri)’ni kendisi otomatik olarak ayarlamaktadır.

35.000’e kadar sıralı hataları belirler.Burada bir takım inputlar yaratılabilir.

Details kısmına örnek olarak ; sıcaklık çok yüksek yazdık diyelim ve event name kısmına’da = sıcaklık yazdığınızı varsayalım.

Section kısmında Toolbox altında –> system control seçilerek -> hemen altından setAlarm bloğunu alıp Ladder’a ekleyiniz.

Eğer ilk kez kullanıyor ve blok hakkında bilgi almak istiyorsanız , bloğa tıklayıp ardından F1 derseniz bununla alakalı yardım sayfasına erişilir.Ardından bu kısımdan blok kullanımı hakkında bilgi sahibi olabilirsiniz.

Not : Değişken tanımlanırken Türkçe karakter kullanmamaya özen gösteriniz.

Programı çalıştırdınız ve bir hata meydana geldi diyelim.Örnek olarak ; Sıcaklık set edilen değerden daha yüksek oldu diyelim.Tools -> Troubleshooting ile meydana gelen hatayı görebilir ve gözlemleyebilirsiniz.

Hatayı kullanıcı  yani biz oluşturduğumuz için user-defined errors altında bunu görebilirsiniz.Buradan ilgili koşul gittiğinde yani örnek olarak sıcaklık düştüğünde reset denilerek hatayı resetleyebilirsiniz.

Task Settings Kısmı :

Program offline iken ; Primary Periodic Task -> bizim var olan yegane task’ımızdır.Section içerisindeki kodlar bu taskın içerisinde otomatik olarak oluşur.Ek olarak tanımlamak zorunda kalmayız böylece.Yine multiview explorer penceresi üzerinden  en altta bulunan tasks içerisine girip Primary Task’a ulaşabilirsiniz.Bunun da altından programa ulaşabilirsiniz.

Primary periodic task dışında tasklar da tanımlanabilir.NJ makine kontrolcüsünde 3 periyodik , 2 even task tanımlanabilir.Burada bulunan sayılar ise örnek olarak Priority16 vb. task’ın öncelik durumunu belirten sayılardır.

Standart bir kontrolcüde öncelikle bir task çalışır ve aynı anda birden fazla task çalışmaz.Tasklar öncelik sırasına göre çalışır.

Tasklar’ı ne için tanımlarız ?.Program yoğunluğundan dolayı kontrolcüyü yormamak adına tasklar tanımlanır.

Task süreleride 500us , 1ms , 2ms  ve 4ms olarak tanımlanabilir.

Tasklar 2 şekilde tanımlanabilir.Komuta bağlı olarak ve değişkene bağlı olarak (Global olmak zorundadır.)

I/O (giriş/çıkış) Control Task Settings Kısmı:

Fiziksel değişkenlerin Primary Task altında tanımlanabileceği burada belirtilir.

Program Assignment Setting : Burada taskların ya da taşkın çalışacağı programı belirleriz.

İzlememiz gereken yol , yeni bir program ekleyerek section(bölüm/alan) oluşturmak olmalıdır.Yani aslında ladderda program yazıyoruz.Ardından bir adet “task-deneme” çıkışı oluşturalım.Ve bunun üzerinden çıkışların aktif olup olmadığını kontrol ediniz.

VAR : Settings For Exclusive Control Of Variables In Tasks alanı ise ; Tasklar içerisindeki değişkenleri inceleme imkanı sunar.Task execution status monitör kısmı ise ; task haritasını görme imkanı sunar bize.

Task Execution Time Monitor ise programın çalışma periyodu  süresi ve çevrim zamanını vb. gösterir.

Not : Watch Tab Page alanı ise ; Online izleme ekranıdır ve üç sekmeden oluşmaktadır.

Watch Kısmı içerisinde ise ; Controller ismi ve izlemek istenilen “Program.task” formatında yazarak izleyebiliriz.

Watch (Table) ise dizi ya da birden fazla elemana sahip olanları izlemek adına kullanılan kısımdır.

Oluşan event task ve türevleri tasklar bir kez çalışır.Sürekli olarak çalışması içinse ; task ayarlarından değişkene bağlı olarak değilde  komut geldikçe değişmesi ayarını yapmalısınız.

Değişken ve komut ile çalışma arasındaki fark ise ; değişkene bağlı olursa task ; task’ın içindeki program bir kez çalışır.

Komuta bağlı olursa eğer , ladder içerisinde ActEvenTask fonksiyonu eklenerek TaskName yazılmalıdır.Ve bu ‘TaskName’ şeklinde tırnaklar arasına yazılmalıdır.

Örnek olarak ; ‘EventTask0’ -> Böylece sürekli olarak çalışma imkanı sağlar.

Backup Dosyasını Alma & Transfer Etme  :

Online olduktan sonra Tools -> Backup controller diyerek ilerleyelim.(Program controller’da olmak durumundadır.)

Herhangi bir boş dosyayı seçin ve tamam deyiniz.Backupların uzantısı ise ‘.dat’dır.Backup alırken haberleşme bağlantısı olmalıdır.

Var olan dosyayı projeye almak adına ise ; restore backup denilerek var olan backup’ı sisteme alabiliriz.

Sysmac Studio içerisinde ;

Klavyeden ‘C’ tuşuna basarak kontak ekleyebilir ya da sağ tıklayıp ‘insert contact’ denilerek yeni bir kontak ekleyebiliriz.

Yükselen kenar adına , alçalan kenar adına ise ‘Diff Up , Diff Down’ vb. kullanılır.Ters kontak adına ise ‘invert’ denilmelidir.Yine ‘O’ harfi ile bobin eklenebilir.Sağ tıklayıp set/reset işlemleri gerçekleştirilebilir.

Fonksiyon bloğu adına ise ; ilgili bloğa isim verilmelidir ve tanımlama yapılmalıdır.

SR & RS : Set işlemleri ise ;

SR set öncelikli ifadedir.RS ise reset önceliklidir.

Toolbox’tan SR, RS vb. yazarak ilgili alana erişim sağlayabilirsiniz.Ya da F tuşuna basarak ekleyebilirsiniz.

Not : Watch Tab Page üzerinde Program0’daki Set1 bloğunun Q1 çıkışını görmek için                                -> ’ Program0.Set1.Q1 ‘ yazarak erişebilirsiniz.Tırnak işaretlerini kullanmadan watch tab page alanına yazınız.

SetBits nedir diye soracak olur isek ;

Sequence output altında yer alır bu ifade.Pos ifadesi kaçıncı bitten başlayarak , size ifadesi de o bitten itibaren kaç adet yazacağını ifade eder. Mesela |0000 0000| olan bir 8 bitlik veride pos = 2 ; size =3 olsun.

Şimdi çıktıyı inceleyelim -> |0001 1100| şeklinde olacaktır.

SetAbit ifadesi -> Sadece pos değerindeki biti true (1) yapar.

Örnek olarak -> 0000 verisi adına pos = 3 ise -> veri = 1000 olacaktır.

Not : Toolboxta F ile gösterilenler Fonksiyon , FB ile gösterilenler ise fonksiyon bloklarıdır.

Ton_Tof  Timer Özelliklerine bakalım beraber ;

Öncelikle NJ Serilerinin 5 farklı timer komutunu desteklediğini bilmeliyiz.

Ton = Timer on Delay

Tof = Timer off Delay

TP = Pulse Timer

Accumulative Timer  = Kalıcı Timer

Timer = 100 ms timer

Ladder’da f ile fonksiyon eklenebilir aynı zamanda Ton , Toff gibi timerlar’da ladder içerisinde bu şekilde kullanılabilir.

T#3s (T1 – Ton ) için 3 sn gecikme yaratır.

T#3s (T1-Tof) ise giriş gelir gelmez çıkış verir ve giriş gelmediği yani false olduğu andan 3 sn sonra kapanır.

TP Timer ; T#2s (T3-TP) ise giriş gelince çıkış 2sn çalışır ve her giriş geldiğinde aynı şekilde çalışmaya devam eder.

Accumulation Timer ; PT = T#8s ve Reset = ResetTS olsun diyelim.

Giriş geldiğinde 8 sn saymaya başlar fakat çıkış vermez.Girişin 4. Sn de kesildiğini , enerjiin gittiğini düşünün.Daha sonra tekrar enerji geldiğinde 4.sn’den itibaren saymaya devam eder.Enerjinin  gittiği andaki süre timer’ın hafızasında saklanır.

Çıkış verdikten sonra girişi kesersek , çıkış resetleme pini(resetTS) gelmeden çıkış kesilmez.

Son Özel Timer ise ; Timer’dır.(100ms Timer)

PT = UINT#30 -> 30 x 100 ms  = 3 sn

Burada 3 sn’lik bir gecikme yaratılır.

3sn gecikme esnasında çıkış yoktur.

3sn sonra ise çıkış verir.

Gecikmeli Timer’ın 100ms’lik bir versiyonudur diyebiliriz buna.

Not : Data taşıma işlemleri ‘Move’ ile yapılır.

Move bit -> 1 adet bit transferidir.

In-Pos -> 1  adet InOut-InOutPos

Şimdi örnek olarak ; değer3   5 olsun ve değer4 2 olsun.InOut değeri’de 4 olsun.

Değer3’ün 5. Bitini değer4’ün 2.bitine kaydeder.

MoveDigit -> Birden fazla biti grup olarak taşır.

TransBits -> Birden fazla bit taşımak içindir.

Sysmac Studio Eğitim Seti İnceleme 2 Sonuç :

Bugünki yazımızda Sysmac Studio Eğitim Seti İnceleme adlı yazı dizisinin 2. Bölümünü sizlerle paylaşıyoruz.Bu seri ile sysmac studio’ya dair ilgili tüm detayları size aktarabilmek adına çalışmalarımıza devam ediyoruz.Bizi takipte kalın.

İyi çalışmalar.

Sysmac Studio Eğitim Notları 2

SYSMAC STUDIO EĞİTİM NOTLARI İNCELEME 2

ST Programlama nedir ? Motion komutları nelerdir ? Tarih ve Zaman komutları nelerdir ? Bu ve benzeri sorulara cevap aradığımız bu yazımızda Sysmac Studio’ya dair detayları sizlerle paylaşıyoruz.

SYSMAC STUDIO EĞİTİM NOTLARI

ST Programlama :

Bu ekranda yazılan programda ;

Mavi renk : Program durumlarını ve işlemlerinin kontrol akışını simgeler.(If , Else , True vb.)

Yeşil renk : Kullanıcı yorumlarının rengidir.

Koyu Kırmızı Rengi : Text String değişkenleridir.

Siyah Renk : Kullanıcı fonksiyonları , kullanıcı değişkenleri ve kullanıcı fonksiyon bloklarını simgeler.

Açık Mavi Rengi : Global değişkenleri simgeler.

ST Programlamanın faydaları ise ;

Kullanıcı tarafından kolay okunabilir kod yapısı , harici text programı düzenleyebilme , daha az kodlama yapma , daha az programlama süresi , InLine ST ile Ladder ST’nin bir arada kullanılması gösterilebilir.

ST (Structured Text) : Yapılandırılmış Veri

Bu programlama türünde ;

‘ := ’ işareti bir değer yada ifadeyi bir değişkene atama için kullanılır.

WORD Değişken atamaları binary ve decimal olarak yapılabilir.

Ör : ValueInt := 125; ValueHex := 16#7D;

Her kod ‘ ; ’ işareti ile bitirilmelidir.

Syntax Kuralları ne derseniz ?

-En başta değişken isimlerinde büyük/küçük harf ayrımı yapmayan bir editör var karşınızda.Pratik olarak siz tek bir kural kullanmalısınız.Ör : Tüm değişkenlerin vb. ilk harfleri büyük olması gibi.

ST Programlama İşleçleri :

( )  : İşlem önceliğini belirlemek için kullanılır.

** : Üs Alma

NOT : Tersleme , Tersini alma

*:  Ç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

Koşullu İfadelere bir bakalım :

IF…THEN – END_IF

IF…THEN- ELSE…END_IF

IF…THEN-ELSIF…THEN…END_IF

Dallanma ifadesi ;

CASE…OF…END_CASE

Koşullu Döngü ise ;

FOR..(BY)…DO..END_FOR

WHILE_DO…END_WHILE

REPEAT….UNTIL..END_REPEAT

EXIT

Fonksiyon Bloğu ST İçinde Kullanımı ;  Ör :

P_On2(

Axis := MC_Axis001,

Enable := BB,

Status => ok2,

Busy => NotReady,

Error => Alarm ,

ErrorID => ErrID ) ;

Burada dikkat etmemiz gereken konu = fonksiyon blok içerisindeki pinlerin atamasını görmekteyiz.

Örneklere bakalım :

Lojik bir koşul için örnek ST Programı :

MotorRun := (Enable OR ConveyorON) AND MotorStopped AND NOT Alarm;

Koşullu Atama için örnek ST Programı :

IF Enable THEN

IF Alarm THEN

Status :=100 ;

ELSE

Status := 0;

END_IF;

END_IF;

Dallanma Yapısı için Örnek ST Programı :

CASE Status OF

10 : Setpoint :=100;

20 : Setpoint :=340;

30 : Setpoint :=500;

END_CASE;

Yükselen ve Düşen Kenar için Örnek ST Programı :

Fonksiyon blok örnek tanımlama : Rising_edge=R_TRIG ; Falling_edge=F_TRIG

Rising_edge (clk := Enable);

Falling_edge (clk := Enable);

Örn  ;

IF Rising_edge.q THEN

Valve := TRUE;

END_IF;

IF Falling_edge.q THEN

Valve := FALSE;

END_IF;

Timer ve Counter için Örnek ST Programı :

Timer için : Timer_1(In :=Enable, PT := t#100ms ,Q =>Valve);

Counter için : Counter_1(CU:Count , Reset:=ResetCTU , PV :=100 , Q =>Valve);

Özel Data Tiplerine göz atalım ;

Bunlar ; Array  , Structure , Enumeration , Union olarak 4’e ayrılırlar.

Arraylar için ;

Tanımlanabilir maksimum element sayısına bakacak olursak ; 65535 olduğunu görürüz.Arraylar diziler anlamına gelmektedir.

Kullanım Örneği :

DataArray için : ARRAY [0…9] OF INT

FB_Array için : ARRAY [0…19] OF MC_Power

Structure için ;

Structure ; bir veya daha fazla veriyi benzer veya farklı data tipleri ile tek bir değişkenmiş gibi kullanmayı sağlar.

Data tipi olarakta ; Temel tip -> Structure Tanımlama || Data Tip -> Program içerisinde değişkeni Structure olarak belirtme işlemleridir.

Not : Struct dizilerini oluşturmak mümkündür.

Örnek : Motor ismini Struct olarak tanımladınız ve bu data tipine de MyMotor adını verdiğinizi varsayarak ;

MyMotor.State := TRUE ;

MyMotor.Velocity := 1500 ;

MyMotor.Current := 2.5;

Örneği incelenebilir.

Enumaration :

Enumaration ile değişkenlere bir isim atayabilirsiniz.

Örnek kullanım : Enumeration #Üye

Yani color isimli bir enumaration oluşturup buna ‘red’,’yellow’ , ‘green’ isimli alt üyeleri ekleyebilirsiniz.

Union :

Burası ise bir word değişkeni , bit , byte olarak kullanmaya yardımcı olur.

Dışardan bir WordDatası -> ByteData , WordData , BoolData olarak kullanılabilir.

Structure olarak Temel tipi Union olarak seçerseniz aslında bir union oluşturmuş olacaksınız.

Burda data tipi ‘data’ olarak seçildikten sonra ismi MyData olarak belirlenecektir.

Ardından bitlere ulaşmak için : MyData.bit(1) // Word olarak ulaşmak için : MyData.asWORD olacaktır.

Fonksiyon ve Fonksiyon Blokları (FB) :

Fonksiyon bloğu kendi içerisinde LD veya ST ile yazılmış algoritma bulundurur ve global değişken içerir.Input(giriş) değişkenlerini alır ve Output(çıkış) üretir.

Fonksiyon (FUN) :

FUN kendi içerisinde LD veya ST ile yazılmış algoritma bulundurur ve lokal değişkenler içerir.

FUN input değişkenini işler ve genellikle 1 adet geri dönüş üretir.

Fonksiyon Blok & FUN arasındaki farklar :

Fonksiyon isim gerektirmez ve Fonksiyon bloğuna isim verilmelidir.

Fonksiyon hafızada yer tutmaz ve fonksiyon bloğu hafızada yer kaplar.

Fonksiyon basit işlemlerde kullanılabilir ve fonksiyon bloğu iç durumlarını hafızada tutması gereken komutlar ile kullanılmalıdır.

Fonksiyon Bloğu / FUN parametreleri için ; giriş çıkışlar parametre olabilir.Bunlarda Lokal değişkenlere atanacaktır.

Opsiyonel olarak bir giriş hem input hemde output olabilir.

Tarih ve Zaman Komutları :

ADD_TIME : İki zamanı birbirine ekler.

SUB_TIME : Bir zamandan diğerini çıkarır.

MULTIME : Zamanı belirlenen sayı ile çarpar.

DIVTIME : Zamanı belirlenen sayıya böler.

ADD_TOD_TIME : Gün içerisindeki zamana zaman ekler.

SUB_TOD_TIME : Gün içerisindeki zamandan zaman çıkarır.

SUB_TOD_TOD : Diğer bir günün zamanından zaman çıkarır.

ADD_DT_TIME : Zaman ve güne zaman ekler.

SUB_DATE_DATE : Diğer bir günden gün çıkarır.

SUB_DT_DT : Diğer bir günden ve zamandan gün ve zaman çıkarır.

SUB_DT_TIME : Gün ve zamandan zaman çıkarma

CONCAT_DATE_TOD : Günü ve zamanı birleştirir.

DT_TO_TOD : Gün ve zamandan günün zamanını alır.

DT_TO_DATE : Gün ve zamandan günü alır.

DtToSec : Gün ve zamanı saniyelere çevirir.

DateToSec : Günü saniyelere çevirir.

TodToSec : Günün zamanını saniyelere çevirir.

TimeToSec : Zamanı saniyelere çevirir.

TimeToNanoSec : Zamanı nanosaniyelere çevirir.

SecToDt : Saniyeleri  gün ve zamana çevirir.

SecToDate : Saniyelere güne çevirir.

SecToTod : Saniyeleri günün zamanına çevirir.

SecToTime : Saniyeleri zamana çevirir.

NanoSecToTime :  Nanosaniyeleri zamana çevirir.

DtToDateStruct : Gün ve zamanı , yıl , ay , gün , saat , dakikalar , saniyeler ve nanosaniyelere çevirir.

DateStructToDt : Gün ve zaman içerisine nanosaniyeleri , saniyeleri , dakikaları , saatleri , günleri , ayları ve yılları ekler.

ChkLeapYear : Belirtilen yılan kalan yıl olup olmadığını kontrol eder.

GetDaysOfMonth : Belirtilen ay içerisindeki günlerin sayısını alır.

DaysToMonth : Günleri aya çevirmek için kullanılır.

GetDayOfWeek : Haftanın günlerini alır.

GetWeekOfYear : Belirtilen ay, yıl vb. içerisinden haftayı alır.

Örnek : Makine Çalışma Süresini Hesaplamak

Kullanılacak Komutlar : GetTime ve SUB_DT_DT

DT sabiini şu şekilde set edelim : DT#2011-3-28-6:00:00

Çözüm :

On Time (Rising Edge) : DT#2011-3-28-13:0:0:000000

OFF Time (Falling Edge) : DT#2011-3-2-:17:30:0:00000

Aradaki zaman çalışma süresidir.

Hareket Kontrol Programlamanın Temelleri :

Eksen Nedir ;

İlgili ifade servo, sanal  ve enkoder olabilir.sAXIS_REF data tipi ile kullanılır.

Servo Eksen : Servo sürücü slaveleri EtherCAT tarafından kullanılan eksenlerdir.Güncel servo sürücülere atanabilirler.Bir servomotor bir eksende kullanılır.

Sanal Servo Ekseni : MC fonksiyon modülü içerisinde olabilecek sanal eksenlerdir.Aktüel servo sürücülerle kullanılmazlar.Örnek : Senkronize kullanım için master eksen olarak kullanılırlar.

Enkoder Eksenleri : Enkoder eksenleri  EtherCAT Slave enkoder giriş terminali kullanır.Enkoder eksenleri aktüel enkoder giriş terminallerine atanır.

Gerçek Enkoderler : Enkoder işlemleri için asıl olarak kullanılırlar.Örneğin ; enkoder yokken debugging yapmak için kullanılırlar.

-NJ/NX Hareket Kontrol Programlama ST ve Ladder dili ile gerçekleştirilebilir.

-Hareket komutları Primary Periodic Task içerisinde işletilmelidir.

PLC (Primary Task) ||MC ||Other Tasks

Not : Primary Task (Ana görev daima MC motorları ile senkronize şekildedir.)

Not : MC ; Primary Task’ın bir parçasıdır.

Eksen Durumları :

Disabled : Eksen enerjili değildir ve herhangi bir komutu uygulayamaz.

Standstill : Eksen enerjili hareket için hazır konumdadır.

Stopping : Eksen durma hareketini gerçekleştiriyordur ta ki Standstill durumuna geçene kadar.

ErrorStop : Bu durumda eksen hata nedeniyle duruyordur.

Homing : Bu durumda eksen Home işlemini gerçekleştiriyordur.

Discrete Motion : Bu durumda eksen diğer eksenlere bağlı olmadan kendi hareket profilini işler.Basit olarak noktadan noktaya pozisyonlama örneği verilebilir.

Continuous Motion : Bu durumda eksen sonsuz hareket etmektedir.Mesela hız kontrolü yapılırken.

Synchronized Motion : Bu durumda eksen elektronik olarak bir master’a bağlı olarak senkron hareket etmektedir.Gear , Cam vb.

Motion Function Block Execution  :

EXECUTE (Rising Edge BOOL) :

Bu Fonksiyon bloğu aşağıdaki koşullar oluşana kadar harekete devam edecektir.

Verilen komut tamamlanana kadar , başka bir hareket komutu çalıştırılıp mevcut komutu kesene kadardır.

Komut Execute girişinin yükselen kenarında tekrar işletilir.

Giriş değişkenleri yükselen giriş ile tekrar güncellenir.

Örnek : MC_Move_Relative

Temel Yapısı ise = Execute |FB| Done –Busy – Aborted – Error – Active

Done : İşlem normal bir şekilde tamamlandığında veya komut koşulları gerçekleştiğinde aktif olur.

Aborted : Eğer mevcut komut işletilirken başka bir komut tarafından işlem kesilirse bu çıkış aktif olur.

Error : Eğer giriş parametrelerinden biri aralık dışı bir değer olarak ayarlandıysa hata çıkışı aktif olur.

Busy : FB komutu işlemeye başladığı an aktif olur ve komut tamamlanana kadar aktif kalır ta ki hareket tamamlanana ve kesilene kadar.

Active : FB Servo eksenine komut vermeye hazır olduğu durumda bu çıkış aktif olur.

ENABLE (Enable BOOL)

Bu fonksiyon blokları Enable girişi geldiği sürece her kontrol döngüsünde tetiklenir ve işletilir.

Enable girişi aktif olduğu sürece giriş değişkenleri her döngüde güncellenir.

Örnek : MC_Power (Bu fonksiyon servo motoru enerjilendirir.)

Status = Enable ve (G5 Power Stage Status)

Enable Tipi FB’ların Temel Yapısı :

Status : Verilen komut işletilebilir olduğu sürece Enable giriş aktif iken bu çıkışta aktif olur.

Aborted : Eğer mevcut komut işletilirken başka bir komut tarafından işlem kesilirse bu çıkış aktif olur.

Error : Eğer giriş parametrelerinden biri aralık dışı bir değer olarak ayarlandıysa hata çıkışı aktif olur.

Busy : Fonksiyon bloğu komutu işlenmeye başladığı an aktif olur ve komut tamamlanana kadar aktif kalır ta ki hareket tamamlanana ve ya kesilene kadar.

Hareket Komutunu İşletme Sıralaması :

Spesifik fonksiyon bloğu çalıştığında Motion fonksiyonlar Master Controle istek yapar.FB çalışması ise IEC program yapısına bağlıdır.

BufferMode : Buffered **

Buffering Modes : Aborting

Buffering Modes : Buffering

Blending :

Blending mode; kullanıldığında bir hareket komutundan diğerine geçişteki hız profilini belirler.

Aborting / Buffered / Blending Low / Blending Previous / Blending Next / Blending High ->>> Motion FB [BufferMode]

Blending Low : Fonksiyon bloğu 1 ile fonksiyon bloğu 2 arasındaki en düşük hızdır.

Blending Next : Fonksiyon bloğu 2’nin hızıdır.

Blending High : Fonksiyon bloğu 1 ve fonksiyon bloğu 2 arasındaki en yüksek hızdır.

Blending Previous : Fonksiyon bloğu 1’in hızıdır.

Hareket Kontrol Fonksiyonları :

Tek Eksen Kontrol Blokları ;

Bağımsız olanlar ;

MC_Home — MC_Move/Relative/Absolute – MC_MoveZero – MC_MoveFeed – MC_Stop

Sürekli olanlar;

MC_MoveJog – MC_MoveVelocity – MC_Torque

Senkronize olanlar ;

MC_CombineAxes – MC_GearOut –MC_Phasing – MC_MoveLink – MC_GearIn –MC_GearInPo –MC_CamIn – MC_CamOut

Diğerleri ;

MC_Power – MC_SetPosition –MC_TouchProbe – MC_ZoneSwitch –MC_SetOverride

MC_Power : Tanımlama ; Servoyu aktif etmek için kullanılır.

MC_Reset : Tanımlama ; Sürücüdeki mevcut hata durumunu resetler.

MC_Home : Tanımlama ; MC_Home bloğu ile eksen ayarlarında yapılan Homing ayarları kullanılarak Home işlemi yapılır.

MC_SetPosition : Tanımlama ; Eksenin o anki hedef pozisyon değerini istenilen değer ile değiştirir.

MC_Move : Tanımlama ; Relative(Bağıl) ya da absolute (Mutlak) pozisyonlama

MC_Move : Fonksiyon detayları ;  relative ya da absolute olarak ayarlanan Velocity , Acceleration ve Jerk parametrelerine göre pozisyonlama yapar.

Jerk değeri sıfırdan farklı girildiğinde kalkış ve duruşlar daha yumuşak olur, bir nevi S rampası gibi çalışır.

MC_MoveFeed: Tanımlama : The MC_MoveFeed bloğu ile dışarıdan gelen bir tetikleme sinyali belirlenen mesafe kadar pozisyonlama yapılmasını sağlar.Bu çalışma eksenin absolute pozisyonlama , relative pozisyonlama , hız kontrolünde uygulanabilir.

MC_MoveFeed Giriş Parametreleri :

Execute : Bool : True or False

WindowOnly : Bool : True or False

FirstPosition: LREAL : Full Range

LastPosition : LREAL : Full Range

ReferenceType : ENUM MC_REFERENCE_TYPE : 1 : mcFeedBack

Position : LREAL : Full Range

Velocity : LREAL : Positive Number

Acceleration : LREAL : Non-negative Number

Deceleration : LREAL : Non-negativee Number

Jerk : LREAL : Non-negative Number

Direction : ENUM MC_DIRECTION : 0->mcPositiveDirection , 1->mcShortestWay ,

2->mcNegativeDirection , 3-> mcCurrentDirection

MoveMode : ENUM MC_MODE_MODE : 0->mcAbsolute , 1-> mcRelative , 2 ->mcVelocity

FeedDistance : LREAL : Full Range

FeedVelocity : LREAL : Positive Number

MC_MoveFeed : Çıkış Parametreleri

Done : İşlem tamamlandığında  TRUE olur

Busy : Çalışma TRUE olarak değiştiğinde TRUE olur

Active : İşlem çalışmaya başladığında TRUE olur

InFeed : İnterrupt girişi tarafından besleme başladığında çalışır.

CommandAborted : Çalıştırılamadığı durumlar altında çalıştırma işlemi yapılmaya çalıştığında TRUE olur.Ya da işlem kesildiğinde TRUE olur.

Error : Hata meydana geldiğinde TRUE olur.

MC_MoveFeed : Giriş /Çıkış parametreleri

Axis : AXIS_REF : Axisi tanımlar.

TriggerInput : TRIGGER_REF : Trigger durumunu set eder.

TriggerVariable : BOOL : TRUE ya da FALSE

TRIGGER_REF :

Trigger Mode : ENUM MC_TRIGGER_MODE : 0->mcDrive , 1->mcController ; 0->Sürücü modu ,

1->Kontrolör modu

LatchID : ENUM MC_TRIGGER_LATCHID : 0->ımLatch1 , 1->ımLatch2 ; 0->Latch1 , 1->Latch2

InputDriver : ENUM MC_TRIGGER_INPUT_DRIVER : 0->mcEncoderMark , 1->mcEXT ; 0->Faz-z-sinyali , 1->Harici giriş

MC_MoveFeed : Fonksiyon Detayları

Eksen çalışma moduna göre absolute , relative ve ya hız modunda çalışmaya başlar.

Absolute veya relative modlar için target pozisyon değeri ulaşılacak pozisyon değeridir.

Harici tetikleme girişi geldiğinde (touchprobe) bir önceki pozisyon değeri iptal edilir ve belirlenen feed pozisyon değeri relative olarak işletilir.

Eğer WindowOnly girişi aktif edilirse daha sonra FirstPosition ile LastPosition değerleri tetikleme sinyalinin aktif olacağı aralığı belirlemek için kullanılır.Belirlenen aralıkta gelen ilk tetikleme sinyali ile Feed mesafesi alınacaktır.

MC_MoveVelocity : Tanımlama

MC_MoveVelocity bloğu servo pozisyon kontroldeyken hız kontrolü yapmayı sağlar.

MC_Stop : Tanımlama : Duruşa geçme işlemidir.

MC_TouchProbe : Tanımlama : Eksenin register girişindeki pozisyonu kaydeder.

G5 EtherCAT sürücü üzerinden dahili olarak iki adet bağımsız hızlı register girişi bulunur.NJ Serisinin genel amaçlı inputları da register için kullanılabilir ama hareket kontrolünde tavsiye edilen sürücünün girişlerini kullanmaktır.MC_TouchProbe komutunda eğer Window değişkeni TRUE yapılırsa sadece belirlenen aralıkta register girişini kullanma sağlanabilir.İstenirse işlem sonrası eksen stop konumuna alınabilir.Bunun için StopMode seçeneği değiştirilir.

MC_Torque : Tanımlama : MC_TorqueControl fonksiyon bloğu sürücünün tork kontrol modunu kullanarak motorun torkunu kontrol eder.

MC_Torque hedef torka ulaşmak için bir tork rampası uygular.

MC_Torque eksen hızını limitlendirmek için ise Velocity girişindeki değeri kullanır.

Senkronize Hareket :

Senkronize hareketlerde Master-Slave ilişkisi bulunmaktadır.

Slave hareket profili Master’ın profiline göre işletilir.

Mekanikten örnek vermek gerekirse  ;

Dişli Mekanizması (Gearing) : Master ve Slave arasında sabit bir oran bulunur.

Cam Mekanizması : Slave pozisyonu Master pozisyonunu geometrik olarak takip eder.

MC_GearIn : Tanımlama : Master ve Slave arasında sanal bir dişli oranını belirler.

Slave Eksenin Aldığı yol = Master Eksenin aldığı yol x Numaretör Oranı/Denominatör Oranı

Master komut referansı aşağıdaki gibi olabilir.

Mevcut enkoder pozisyonu (enkoder değeri)

Bir önceki cyce’daki komut değeri (profil değeri)

Master’dan : Aktüel pozisyon + Son komut pozisyonu + Komut pozisyonu -> Dişli : Numerator/Denominator -> Slave’e : Komut pozisyonu bilgisi

MC_GearInPos : Tanımlama : Master ve Slave belli pozisyonlara ulaştığında belirlenen oran ile birbirlerine bağlanırlar.

MC_GearOut  : Tanımlama : Birbirine gear ile bağlı iki ekseni ayırmak için kullanılır.

MC_MoveLink : Slave eksen Master eksene S rampası ile bağlanır.Böylece master’a belli bir mesafenin ardından senkron olur.

Genellikle slave belli bir hızdaki master’a senkron olup bir süre beraber hareket eder ve sonra senkrondan çıkar.Örnek olarak uçan testere uygulaması verilebilir.

Master-Slave hız eşleşmesini sağlarken aşağıdaki kurallar dikkate alınırlar :

  • Master Acc Distance = 2 x Slave Acc Distance
  • Master Dec Distance = 2 x Slave Dec Distance
  • Master Ct. Speed Distance = Slave Ct. Speed Distance

Uçan Testere Uygulama Örneği aşamaları :

  • Slave’in Master’ı yakalaması için rampalanır. (ACC Dist)
  • Senkronda hız sabit tutulur (Ct. Dist)
  • Slave senkrondan çıkmak için durur (DEC Dist)
  • Master 0 noktasına gelmeden slave geri döner ve başlangıç pozisyonunu alır.

SYSMAC STUDIO EĞİTİM NOTLARI İNCELEME 2 :

Bugün ki yazımızda Sysmac Studio Eğitim Notları İnceleme adlı yazımızı sizlerle paylaştık.Bu yazımızla Sysmac Studio’ya dair genel bir tablo çizmiş olduk aslında.Sysmac Studio’ya dair diğer yazılarımızda buluşmak dileğiyle.

İyi Çalışmalar.