Bu uygulamada tank seviye kontrolü için TIA Portal içinde fonksiyon bloğu olarak bulunan PID_Compact fonksiyonunu kullandım. PID kontrolcü sayesinde tank setpoint değerinin ani değişimlerinde veya tankı boşaltan vananın ani değişimlerinde tank seviyesinin olabildiğince istenilen değerde kalmasını sağladım. PID sayesinde ani değişimlere çabuk ve daha yumuşak bir tepki veriliyor.
İlk olarak Factory I/O simülasyon programı içinde su tankı ve kontrol panosu ekleme işlemlerini yaptım. Kontrol panosuna gerekli buton ve göstergeleri ekledim.

Daha sonra PLC’nin giriş ve çıkışlarını belirledim.

Bu aşamadan sonra TIA Portal üzerinden programı yazmaya başladım.Uygulamayı simülasyon üzerinden yapacağım için PLC olarak S7-1500 ekledim. S7-1200’deki simülasyonda PID simülasyonu yapılamıyor. Main içinde start ve stop butonunun görevlerini tanımladım.

Daha sonra göstergeler ve potansiyometreler için programı yazdım. Simülasyon programında potansiyometreler 0.0-10.0 arasında değer verdiği için ölçekleme işlemlerini ona göre yaptım. PID kontrolcüyü yüzdelik olarak ayarlayacağım için set değerinde yüzdelik set değeri de belirledim.


Daha sonra cyclic interrupt(100 ms) açarak PID fonksiyonu ekledim ve ayarlarını yaptım.

PID fonksiyonunu çıkarmak için commissioning kısmında önce pretuning yaparak istenilen set değerine getirdim ve daha sonra fine tuning yaparak PID grafiğini çizdirdim. Fine tuning sırasında grafiği çıkarmak için fonksiyon sürekli olarak deneme-yanılma yapıyor. Bu kısım benim fonksiyonum için yaklaşık 30dk sürdü.


Fine tuning bittikten sonra program tamamlanmış oldu ve videodaki halini aldı.
Butgemdeki deney setlerinde S7-1200 ve PWM kullanarak motoru sürdüğüm tank otomasyonu uygulamanın videosu da aşağıdadır.