CoDeSys'deki PLC programlama nasıl yapılır?

CODESYS ile PLC programlama, cihaz yapılandırması, görevler ve giriş çıkış eşlemesi

CODESYS’te PLC programlama nasıl yapılır?

CODESYS ile PLC programlama, kontrol edilecek süreci tanımlamakla başlar; cihaz yapılandırması, kod, görevler, giriş-çıkış eşlemesi ve testlerle tamamlanır. CODESYS platformunda yazdığınız uygulamayı runtime hedef cihazda yürütür. Bu yüzden kodun doğru olması kadar, doğru cihazda ve doğru bağlantılarla çalışması da önemlidir.

Bu rehber CODESYS Development System V3 düzenini esas alır. Menü adları üretici paketine ve sürüme göre değişebilir. Başlangıç örneğini simülasyonda kurup ardından gerçek PLC’ye geçişte gereken ayarları inceleyeceğiz.

1. Önce makinenin ne yapacağını yazın

PLC ile geliştirilecek projede girişleri, beklenen sonuçları ve kesinti durumlarını belirleyin. “Seviye yükselince uyarı ver” ifadesi tek başına yeterli değildir: Seviye normale dönünce uyarı silinecek mi? Reset aktifken seviye hâlâ yüksekse ne olacak? Endüstriyel otomasyon sistemi tasarımında bu sorular, programın kurallarını oluşturur.

Örneğimizde yüksek seviye uyarısı oluştuğunda yazılımsal uyarı durumu TRUE olacak. Seviye normale dönse de uyarı kalacak; yüksek seviye yokken reset TRUE olursa temizlenecek. Böylece hem girişe tepki vermeyi hem de önceki durumu korumayı göreceğiz. Örnek değişkenleri fiziksel çıkışlara eşlenmez.

2. Uyumlu PLC’yi ve yazılım paketini seçin

CODESYS için donanım seçimi sırasında cihazın desteklediği runtime, cihaz tanımı, haberleşme bağlantıları ve üretici paketleri kontrol edilir. Her PLC CODESYS ile programlanamaz. Yazılımı indirirken cihaz üreticisinin önerdiği sürümü ve gerekli eklentileri kullanın.

CODESYS’in farklı PLC yazılımlarından ayrılan yönlerinden biri, farklı üreticilerin uyumlu hedeflerinde ortak geliştirme yaklaşımı sunmasıdır. Ancak proje taşınırken I/O kanalları, kütüphaneler ve zamanlama yeniden incelenir. “Listede bir PLC seçtim” ile “gerçek cihazın desteklediği yapılandırmayı seçtim” aynı doğrulama değildir.

3. Projeyi oluşturun ve dili seçin

File → New Project üzerinden uygun şablonu açın. Proje oluşturma sırasında hedef cihazı ve uygulamanın temel yapısını belirleyin. Cihaz ağacına kullanılan modüller ve haberleşme cihazları eklenir; gerekli kütüphaneler Library Manager üzerinden yönetilir.

IEC 61131-3 çerçevesindeki programlama dilleri farklı anlatım biçimleri sunar: LD kontak mantığına, FBD blok bağlantılarına, ST metinle yazılan koşul ve hesaplamalara uygundur. SFC adım ve geçişlerle sıralı süreçleri düzenler. IL eski projelerde görülebilir; CODESYS bu editörün artık bakımının yapılmadığını belirtir. Başlangıç örneğimizde Structured Text kullanacağız.

4. Program, Function ve Function Block farkını anlayın

POU, program organizasyon birimidir. Application altında Add Object → POU ile oluşturulur. Program, uygulamanın kontrol akışını düzenleyebilir ve görevden çağrılabilir. Projede uygun bir PLC_PRG varsa başlangıç için onu kullanabilirsiniz.

Function, hesaplama veya dönüştürme gibi işler için kullanılır; kendi çağrıları arasında iç durum saklamaz. Function Block, her örneğinde kendi durumunu koruyabilir. İki zamanlayıcının ayrı süre izlemesi bu örnek ayrımına dayanır. Fonksiyonlar ve bloklar ile benzer makine bölümleri için düzenli, yeniden kullanılabilir yapı kurulabilir.

Veri tiplerini işin anlamına göre seçin: BOOL durum, INT tam sayı, REAL ondalıklı ölçüm ve TIME süreyi temsil eder. Anlamlı isimler ve açıklamalar, bakım sırasında hangi değerin nereden geldiğini bulmayı kolaylaştırır.

5. Küçük örnek: Reset gelene kadar kalan seviye uyarısı

Programın tanım alanına aşağıdaki VAR bloğunu yerleştirin; editörün oluşturduğu PROGRAM satırını koruyun. İkinci bölüm uygulama alanına yazılır. Komutlar ve operatörler açısından := değer atar; IF ve ELSIF koşulların değerlendirme sırasını belirler.

Değişken tanımları:

VAR
    xHighLevel : BOOL := FALSE;
    xReset     : BOOL := FALSE;
    xAlarm     : BOOL := FALSE;
END_VAR

Her program çağrısında yürütülecek kod:

IF xHighLevel THEN
    xAlarm := TRUE;
ELSIF xReset THEN
    xAlarm := FALSE;
END_IF;

Öncelik yüksek seviye koşulundadır. xHighLevel TRUE ise reset de TRUE olsa uyarı kalır. İki giriş de FALSE olduğunda hiçbir atama yapılmaz ve xAlarm önceki değerini korur. Çevrimler arasında durum tutmak, enerji kesintisinden sonra da aynı durumun korunacağını garanti etmez. Yeniden başlama davranışı ayrıca tasarlanır.

Uyarı mantığının beklenen davranışı
Deneme Beklenen sonuç
Yüksek seviye TRUE Uyarı TRUE olur.
Seviye FALSE olur, reset FALSE kalır Önceden oluşmuş uyarı TRUE kalır.
Seviye FALSE, reset TRUE Uyarı FALSE olur.
Seviye ve reset birlikte TRUE Yüksek seviye önceliklidir; uyarı TRUE kalır.

6. Görev çağrısını ve I/O eşlemesini kurun

Task Configuration altında programınızı bir görevin Program Calls listesine ekleyin. Mevcut çağrıyı tekrar eklemeyin. Görev zamanlaması, programın hangi aralık ve öncelikle yürütüleceğini belirler. Bir POU oluşturmak, onu otomatik olarak çalıştırmaz. Görevin yürütme süresi ve zamanlama sapması gerçek hedefte izlenir.

Gerçek cihazda giriş ve çıkış modüllerinin I/O Mapping bölümünde fiziksel kanallar proje değişkenleriyle eşleştirilir. Sensörün elektriksel sinyali, kanal türü ve aktif durumu doğrulanmalıdır. Uzak I/O kullanılıyorsa ilgili saha veri yolu da yapılandırılır. Ağ özellikleri ile veri aktarımı ayarları, koddan ayrı ama uygulamayla birlikte çalışan katmanlardır.

7. Kodu üretin ve simülasyonda sınayın

Build → Generate Code veya F11 ile uygulama kodunu üretin ve mesajlar panelindeki hataları giderin. Ardından Online → Simulation, Online → Login ve Debug → Start adımlarını kullanın. Start için F5 kısayolu da kullanılabilir. İlk girişte simüle edilen uygulamanın oluşturulması istenebilir.

Hata ayıklama sırasında xHighLevel ve xReset değerlerini hazırlayıp Debug → Write Values ile yazın. Tablodaki denemeleri sırayla uygulayın ve xAlarm’ı gözleyin. Simülasyon gerçek I/O kanallarını güncellemez ve saha veri yolu telegramlarını göndermez. Derleme hatasının bulunmaması, uygulamanın bütün çalışma koşullarında doğru olduğunu göstermez.

8. Gerçek PLC’ye bağlanın, yükleyin ve gözleyin

Simülasyondan çıkmak için Logout yapıp Simulation seçeneğini kapatın. Cihazın Communication Settings bölümünde doğru gateway ve bağlantı yolunu belirleyin. Ağ taramasında görünen cihazın gerçekten hedef PLC olduğunu doğrulayın; gerekli kullanıcı yetkileri ve sertifikalar hedefe göre sağlanır.

Online → Login sırasında mevcut uygulamaya bağlı olarak indirme veya çevrimiçi değişiklik seçenekleri gösterilebilir. Download ve online change aynı işlem değildir; gösterilen farkları ve uygulamaya etkilerini değerlendirin. Ardından Debug → Start ile çalıştırın. CODESYS güvenliği açısından bağlantı yetkileri, proje yedeği ve devredeki sürüm kayıtları da bu sürecin parçasıdır.

9. Açılış uygulamasını ve teslim dosyalarını tamamlayın

Boot application, denetleyici açıldığında veya başlatıldığında kullanılan uygulama sürümüdür. Hedefte güncellenmesini kontrol edin; gerektiğinde Online → Create Boot Application kullanılır. Enerji dönüşünde başlangıç değerleri, uyarıların durumu ve çıkışların davranışı ayrıca sınanır. Bilgisayardaki güncel proje ile hedefteki açılış uygulamasının aynı sürüm olması önemlidir.

PLC ile SCADA birlikte çalışıyorsa durum bilgileri, komut yetkileri ve iletişim kesintisi davranışı da test edilir. Teslimde proje arşivi, cihaz ve kütüphane sürümleri, I/O listesi ve test sonuçları birlikte saklanır. Böylece uygulamanın sonraki bakımında yalnızca kod değil, kodun hangi yapılandırmada doğrulandığı da bilinir.

Resmî teknik başvurular: CODESYS Development System, I/O yapılandırması, Login ve yükleme seçenekleri ve açılış uygulaması.