Ana içeriğe atla

Siemens Tia Portal Yapısal Programlama

 Siemens S7 1200

Tia Portal ile Yapısal Programlama


Herkese merhaba,


Bugün geniş kapsamlı otomasyon projelerinde muhakkak kullanılan '' Yapısal Programlama '' konusuna giriş yapacağız.


Yapısal programlama nedir, hangi amaçla kullanılır ve neden ihtiyaç duyarız gibi sorulara cevap vermeye çalışacağız.



Başlamadan önce bilmek gerekir ki bütün fonksiyonlar, fonksiyon bloklar ve data bloklar ana program olan OB1 içerisinde yürütülür. Küçük çaplı uygulamalarda '' OB1 '' ana bloğu yeterli olmakla birlikte büyük çaplı uygulamalarda FC ve FB'lerden faydalanılır. 


Bunun birçok sebebi olmakla birlikte, basitçe onlarca farklı motorun olduğu bir makinede her motor için ayrı ayrı kod yazmaktansa yazılımcılar tek bir '' motor sürme bloğu '' oluşturup ihtiyaç duyulan yerlerde bu motor bloğunu çağırmayı tercih eder.

Yapısal programlamanın bunun dışındaki faydaları ise ;


  • programı mantıklı küçük parçalara bölerek hata ve arıza aramayı kolaylaştırır. Arıza anında bütün programı taramaktansa ilgili fonksiyon bloğa gitmek zaman kazandırır.
  • kullanılan sabit değerleri Data Blok'da saklayarak programın hafızasını azaltır, gerektiğinde sabit değeri programa girmeye gerek kalmadan değiştirmeyi sağlar.
  • yazılan bloğun tekrar tekrar kullanılmasını sağlayarak iş gücünden kar elde etmeyi sağlar. ( yukarıda belirttim. )
  • Bazı özel interrupt programlarının çalışmasını sağlar.

Fonksiyon ( FC ) : Fonksiyonlar, program içerisinde farklı bir çok görevde kullanılabilmektedir.

Hazır blok oluşturma, veri aktarımı, tekrar eden lojik işlemler gibi.

FC ve FB'lerde geçiçi hafıza alanları bulunmaktadır. FC'lerde program çalışırken bu hafıza alanlarında veri saklanabilir ama program döngüsünü tamamladıktan bu hafıza alanlarında veri saklanamaz, FB'lerde fonksiyon blok çağırılıp kullanıldıktan sonra bile veri saklanmaya devam eder.

// Örnek //

Tia Portal'da bir fonksiyon ( FC ) kullanarak motor sürelim ;

  • İlk olarak Tia Portal'da s7-1200 kullanarak yeni bir hardware oluşturdum.



Bu hardware'i oluştururken s7 1200 serisinden CPU 1214C DC/DC/DC modülünü seçtim ve 2 tane 8x24VDC input 1 adet de 16x24VDC output modelini ekledim.

  • '' Add New Block '' >> '' Function ( FC ) '' >> Drive_Motor yolunu izleyerek yeni bir fonksiyon oluşturdum.
Oluşturduğum fonksiyonda ilk olarak '' interface '' sekmesi altında In, Out, InOut tag'lerini belirledim.



Fonksiyonlarda kullanılan bu interface tag'lerini kısaca tanımlayalım ;

  • In : Yalnızca input olarak kullanılacak lojikler burada tanımlanır.
  • Out : Yalnızca output olarak kullanılacak lojikler burada tanımlanır.
  • InOut : Hem input hem de Output olarak kullanılacak lojikler burada tanımlanır.
  • Temp : Geçici hafıza alanıdır.
  • Constant : Geçiçi olarak hafıza tutulacak değişkenler burada tanımlanır.
  • Return : Fonksiyonun döngüde çağıracağı son değerdir. Burada '' Drive_Motor ''



  • Fonksiyon içerisinde giriş ve çıkışlarımı tanımladıktan sonra ise programımı yazmaya başladım.





  • En son olarak ise oluşturduğum bu fonksiyonu OB1 ana bloğu içerisinde çağırdım.



Fonksiyon Blok ( FB ) : Fonksiyon blokların fonksiyonlara göre en büyük farkları ise program çağırılıp kullanıldıktan sonra bile hafızalarında veri saklayabilmeleridir. FB'ler bu verileri '' static '' tagı altında tanımlanan özel memory bit'lerde saklar.

FB'ler bu özelliğe her oluşturulduklarında kendileri ile birlikte bir Data Blok ( DB ) oluşması sayesinde sahip olurlar, bu DB'ler her program yürütüldükten sonra bile verilerin saklanmasını sağlarlar.


Fonksiyon bloklarda da fonksiyonlarda olduğu gibi '' Interface '' sekmesi altında lojiklerin tanımlamaları yapılır.

  • In : Yalnızca input olarak kullanılacak lojikler burada tanımlanır.
  • Out : Yalnızca output olarak kullanılacak lojikler burada tanımlanır.
  • In/Out : Hem input hem de output olarak kullanılacak lojikler burada tanımlanır.
  • Temp : Geçici hafıza alanlarıdır.
  • Static : Kalıcı hafıza alanlarıdır.
  • Return : Fonksiyonun çalışmasını bitirdikten sonra çağırdığı değerdir.

FB vs FC

Fonksiyon blok ve fonksiyon arasındaki farkı formülüze etmek istesek şöyle bir formül yazabiliriz ;

FB = FC + DB

Fonksiyon bloklar hafıza alanlarına sahip fonksiyonlardır diyebiliriz.

Fonksiyonlar çağırıldıkları özel bir hafıza alanı oluşturmazlar bir fonksiyon döngüsünü tamamladıktan sonra geçici değişkenler yerel veri yığınlarında saklanır.

Bir fonksiyon içerisinde tanımlanan In, Out, InOut gibi bütün adresler doldurulmalıdır.




Fonksiyon bloklar ise hafızalı mantık bloğudur. Bu blok istenildiği kadar çağıralabilir ve her fonksiyon blok oluşturulduğunda hafıza olarak bir DB yaratır. FB'lerde In, Out, InOut, Temp, Static gibi adreslere farklı parametreler atayabiliriz. 

FB'lerde fonksiyon blok yürütüldükten sonra bile statik değişkenler örnek veri bloğunda saklanır. Temp değişkenler ise fonksiyonlarda olduğu gibi kaybolacağı için yerel veri yığınlarında saklanır. 

Bir fonksiyon bloğunda tanımlanan bütün parametrelere adres girilmesi gerekmez.



Yapısal programlamayı kısaca bu şekilde açıklayabiliriz. 

Faydalı olması dileği ile...

Kaynaklar ;

  • https://instrumentationblog.com/
  • https://support.industry.siemens.com/

Yorumlar

En çok okunanlar ;

PLC Zamanlayıcı ( Timer ) Komutu Uygulamaları ve Simülasyonu

SIEMENS S7 - 200  PLC TİMER KOMUTU UYGULAMALARI ve SİMÜLASYONU      Merhaba, bugünkü yazıda PLC'de timer komutunun kullanımını öğreneceğiz ve bu komutun simülasyon üzerinde uygulamalarını gerçekleştireceğiz. Timerler PLC'de oldukça öneme sahip komutlardır. S7 - 200 PLC'de 3 çeşit zamanlayacı bulunmaktadır ;      1 ) Çekmede Gecikmeli Zaman Rölesi ( TON ) : Bu zamanlayıcı '' enable '' girişine ait komutlar doğru ise zamanlayıcı zaman süresini saymaya başlar. Bu anda zamanlayıcının zaman biti 0'dır. Zamanlayıcı'nın saydığı zaman değeri '' Present Value '' değerine eşit olduğu zaman, zamanlayıcı biti 1 olur. Enable girişi 0 olduğunda ise zaman rölesi sıfırlanır.         T32 - T96                                            >>> 1 ms        T33 - .... - T36 ve T97 - ... - T100      >>> 10 ms        T37 - .... - T63 ve T101 - .... - T255   >>> 100ms         Present Time ( PT ) değeri ola

PLC Mühürleme, Set - Reset Komutları ve Elektronik Kilitleme

SIEMENS S7 - 200 PLC  STEP 7 MICROWIN 4.0 PROGRAMI İLE MÜHÜRLEME,SET-RESET,ELEKTRONİK KİLİTLEME UYGULAMALARI ve SİMÜLASYONU      Merhaba, bugün daha önce anlattığımız konulardan daha temel ve kolay olan mühürleme, set - reset , elektronik kilitleme gibi konulara kısaca değineceğiz. Öğrenilmesi her ne kadar daha basit olsa da içerdiği önem oldukça fazladır. Bu yüzden bu konuları öğrenmeden PLC eğitimi gerçekleştirilmiş olamaz.       İlk olarak mühürleme işleminin ne olduğu ile başlayalım. Örnek verecek olursak siz start butonuna basıldığı zaman herhangi bir devre elemanının ( lamba, motor, kompresör vb. ) çalışmasını istiyorsunuz. Start butonu olarak ise normalde açık ( NO ) buton kullanmanız gerekir. Bu yüzden sizin sürekli çıkışı aktif hale getirebilmek için butona sürekli basmanız gerekir. Bu ise pek mümkün olabilecek bir şey değil. İşte bu noktada mühürleme işlemine gerek duyarız. Gelin önce mühürlemenin ladder diyagramını çizelim ve diyagram üzerinde konuyu kav

3 Fazlı ASM'lere Yıldız / Üçgen Yol Verme Kumanda Devresi ve Simülasyonu

3 FAZLI ASENKRON MOTORLARA YILDIZ / ÜÇGEN YOL VERME KUMANDA DEVRESİ SİEMENS S7 -200 LADDER DİYAGRAMI VE SİMÜLASYONU      Merhaba, bu yazıda sanayide en çok kullanılan elektrikli motor olan 3 fazlı asenkron motorlara yıldız/üçgen yol verme yöntemi ile yol verilmesini STEP 7 MicroWİN programında gerçekleştirmeyi öğreneceğiz. PLC komutlarına geçmeden önce neden yol verme yöntemlerine ihtiyaç duyuyoruz, yıldız/üçgen yol vermek ne demektir, bize ne faydası olur gibi soruları cevaplamak gerektiğini düşünüyorum. Bu yüzden ilk olarak bu soruları cevaplamaya çalışacağız.         3 fazlı asenkron motorlar kalkış anında normal çalışma durumuna göre 5 ila 7 kat arasında daha fazla akım çeker. Bu durum ise pano elemanlarının ( kondaktör, termik röle, sigorta vb. ) daha çabuk yıpranmasına sebep olur. Bu yıpranmayı önlemek için ilk kalkış anında bazı yol verme yöntemleri geliştirilmiştir. Bunlardan en çok kullanılanı ise yıldız / üçgen yol verme yöntemidir.      Yıldız/Üçgen yol verm