CODESYS Tabanlı Trafik Işığı Kontrol Sistemi
1. Proje Künyesi
| Kategori | Detay |
|---|---|
| Alan | Endüstriyel Otomasyon |
| Mimari & Metodoloji | Sonlu Durum Makinesi (FSM) |
| Teknolojiler | CODESYS V3.5, Structured Text (ST), TargetVisu |
| Uygulama Odağı | Akıllı Kavşak Yönetimi |
| Kaynak | GitHub’da İncele & Projeyi İndir (.zip) |
2. Genel Bakış ve Problem Tanımı
2.1. Proje Amacı
Bu projenin amacı yapılandırılmış metin (Structured Text - ST) kullanarak sonlu durum makinesi (Finite State Machine - FSM) yaklaşımıyla bir kavşaktaki trafik ışığı sisteminin simülasyonunun gerçekleştirilmesidir.
2.2. Problem
Karmaşık kontrol senaryolarında, geleneksel “Ladder” diyagramı veya basit zamanlayıcı (Timer) zincirleri kullanmak, sistem büyüdükçe şu sorunlara yol açmaktadır:
- Yönetilebilirlik: Sisteme ait durumlar (örn: başlangıç, gündüz, gece, acil vb.) arttıkça kodun okunabilirliği azalmaktadır.
- Senkronizasyon: Zamanlayıcıların asenkron çalışması sonucu işlevlerin çakışma riski (örn: aynı anda iki yeşil ışık yanması) bulunmaktadır.
- Esneklik: Yeni bir kural eklendiğinde tüm kodun baştan yazılması gerekebilmektedir.
2.3. Çözüm ve Yaklaşım
Belirtilen problemleri aşmak adına bu sistem ST programlama ile FSM mimarisi kullanılılarak yapılmıştır.
Her trafik durumu (Kırmızı, Sarı, Yeşil) izole bir
CASEadımı olarak tanımlanmıştır.Geçişler, katı mantıksal koşullara (Transition Conditions) bağlanarak hata riski minimize edilmiştir.
Görselleştirme katmanı (Visualization/TargetVisu), kontrolcüden bağımsız çalışacak şekilde optimize edilmiştir.
3. Sistem Mimarisi ve Tasarım
Bu projede PLC programı CODESYS ortamında ST dili kullanılarak yazılmıştır. Projede tanımlanan trafik ışığı değişkenlerinin “Visualization” objesinde bulunan tasarım ekranı bileşenleriyle etkileşim kurmaları sağlanmıştır. Sistemin görsel olarak izlenebilmesi için yol ve ışık objeleri, başlatma-durdurma ve gece modu butonları oluşturulmuştur. Trafik ışıkları bulunduğu yön ve renk bilgisiyle tanımlanmıştır.
3.1. Algoritma ve İşleyiş Mantığı
Sistem kontrolü, durum ve geçişlere dayalı FSM yapısı ile gerçekleştirilmiştir. Algoritma, karmaşık IF-ELSE blokları yerine, birbirinden izole edilmiş durumlar (states) üzerinden ilerlemektedir:
- Başlangıç: Sistemin enerjilendiği, sistem kapanırken değişkenlerin sıfırlandığı ve güvenlik kontrollerinin yapıldığı ana döngü.
- Gündüz Modu : Trafik ışıklarının önceden tanımlı sürelerde (Kırmızı, Sarı, Yeşil) sıralı olarak değiştiği döngü.
- Gece Modu : Belirli bir tetikleyici ile (manuel buton veya saat) devreye giren, tüm sarı ışıkların saniyede iki kez yanıp söndüğü döngü.
3.2. Teknik Yaklaşım
Sistemin programlanmasında dil seçimi olarak ST programlama tercih edilmiştir. Ladder diyagramı görsel olarak takip edilebilen bir yapıda olsa da durum yönetiminde yetersiz kalabilmektedir. Bu projede, kodun okunabilirliğini arttırmak hata ve durum yönetimini daha da kolaylaştırmıştır.
Sıralı akış yerine durum tabanlı yaklaşım seçilmesinin temel nedeni genişletilebilirliktir. İleride sisteme “Yaya Butonu” veya “Acil Durum Modu” gibi eklemeler yapılması gerektiğinde, mevcut kod yapısını bozmadan sadece yeni bir
STATEbloğu entegre edilmesi yeterli olacaktır.
4. Uygulama ve Kod Detayları
Sistemin yazılım altyapısı; sürdürülebilirlik, modülerlik ve standartlara uygunluk gözetilerek geliştirilmiştir. Aşağıda, projenin temelini oluşturan veri yapıları ve işleyen kod mantığı teknik detaylarıyla sunulmuştur.
4.1. Değişken ve Tanımlar
Sistemde kullanılan değişkenler ve veri tipleri, IEC 61131-3 standardı ile uyumlu ve PLCopen Task Force: Coding Guidelines tarafından tavsiye edilen Type-prefixed Hungarian Notation yaklaşımıyla tanımlanmış ve kullanım amaçlarına göre sınıflandırılmıştır.
4.2. Algoritma ve Kod Mantığı
Projenin karar mekanizması, Sonlu Durum Makinesi (FSM) mimarisi üzerine kurgulanmıştır. Bu yapı, her senaryonun birbirinden izole şekilde işletilmesini ve kodun kontrollü akışını sağlar.
5. Karşılaşılan Teknik Zorluklar ve Çözüm Süreçleri
Proje geliştirme aşamasında karşılaşılan teknik kısıtlar ve bu kısıtları aşmak için uygulanan mühendislik çözümleri aşağıda detaylandırılmıştır.
5.1. Görsel Bileşenlerin Hizalanması
Problem: Eklenen bileşenlerin görsel şemaya uygun bir şekilde birbirleriyle simetrik ve estetik bir görünümde olması gerekiyordu.
Çözüm: Bileşenler sınırlı bir alan içerisine rounded-rectangle bileşeninin üzerine çizildi. Böylece Visualization ekranında bileşenlerin birbirine ve yer aldığı bölgeye göre yatay ve dikey hizalaması gerçekleştirildi. Daha sonra eklenen rounded-rectangle bileşeni görünmez yapıldı.
5.2. Durum Verilerinin Anlık Gösterimi
Problem: Simülasyon ekranında o anki trafik ışığı durumu güzergaha göre (Örn: “Kuzey-Güney Yeşil”) ekranda gösterilmesi gerekiyordu.
Çözüm: Problemin çözümü için Text List özelliği kullanıldı. Durum değişkeni (iStep) doğrudan bir ID olarak listeye bağlandı ve sadece ilgili durumun metni dinamik olarak çağrıldı.
6. Sonuç
Bu proje kapsamında, endüstriyel otomasyon süreçlerinde önemli bir yere sahip olan FSM yapısı trafik kontrol projesi üzerinden IEC 61131-3 standartlarına uygun olarak başarıyla modellenmiştir. Bu proje ile ST programlama kullanarak FSM mantığı pekiştirilmeye çalışılmıştır. Aynı zamanda gerçekleştirilen kod blokları görsel bir sahneye dönüştürülmüş değişkenler ve görsel bileşenler arasında senaryoya uygun ilişkilendirilmeler yapılmıştır.
Proje Çıktıları:
Deterministik Kontrol: FSM mimarisi sayesinde, durumlar arası geçişlerdeki belirsizlikler ve çakışma riskleri ortadan kaldırılmıştır.
Modülerlik: Kod yapısı,
CASEblokları ile izole edilerek bakımı kolay ve genişletilebilir bir formata getirilmiştir.Sanal Devreye Alma: CODESYS TargetVisu kullanılarak, fiziksel donanıma ihtiyaç duyulmadan mantıksal doğrulama sağlanmıştır.
7. Referanslar ve Kaynakça
Proje sürecinde yararlanılan teknik dokümanlar ve araçlar aşağıdadır:
- Standart: IEC 61131-3, PLCopen Coding Guidelines
- Dokümantasyon: CODESYS Online Help
- GitHub Deposu: unusual-data/codesys-traffic-lights
- Doğrudan İndir İndir (.zip)





