30 Kasım 2015 Pazartesi

CodeSys SoftPLC ile Otomasyona Giriş

CodeSys İlk Program

CodeSys günümüzde bazı PLC'lerde kullanılması yayılmakta olan bir yazılım. Yazılımın içinde kontrol yazılımı ile beraber HMI (Human Machine Interface - Makina İnsan Arabirimi) yazılımı da mevcut. Yazılımı internetten indirip demo modunda çalıştırabiliyorsunuz.

Çok , çok ,çok basit bir uygulama ile temel özelliklerini kullanmasını öğreneceğiz, hem de içimiz ısınır biraz yazılıma. Programı yükledikten sonra ana editörü çalıştıralım:




Karşımıza "Start" ekranı çıkacaktır. Sayfadaki "New Project..." linkini tıklayarak yeni bir proje başlatalım. Karşımıza proje adı, türü ve yerini soran bir diyalog çıkar:


"Templates" bölümünden proje türünü "Empty Project" seçelim, proje adını "ilk" olarak girelim, proje dosyalarının saklanacağı klasörü belirtelim ve "OK" tuşuna basalım. Bir süre bekledikten sonra boş bir proje olarak "ilk" ismi ekranın sol tarafındaki proje ağacında belirecektir. 

Projemize ilk önce bir PLC cihazı eklememiz gerekir. Proje ismine sağ tıklayıp "Add Device" menüsünü tıklayalım: 



Karşımıza kontrolör seçimi için bir diyalog ekranı çıkar burada "Vendor" olarak açılan menüde ilk sıradaki "3S Smart Software Solutions GmBH" üreticisini seçelim. Hemen altına gelen listeden "CODESYS Control RTE" PLC cihazını seçelim ve "Add Device" butonu tıklayarak projemize bu PLC'yi ekleyelim. 



Böylece PLC'mizi projemize eklemiş olduk şimdi PLC içine program ekleyeceğiz. Arada "Save" disketine tıklayıp programı kaydetmeyi unutmayın. Program eklemek için Proje Ağacı'ndaki "Application" nesnesine sağ tıklayıp "Add Object" , oradan da "POU..." seçiyoruz:



Bu bize yeni gireceğimiz programın ne menem bişey olduğunu sorgulayan bir diyalog açar.


Burada program adını "PLC_PRG" , tipini "Program" ve yazım dilini "Ladder Logic" olarak seçelim. "Add" tuşu ile programı projemize ekleyelim. Otomatik olarak yeni eklediğimiz program ortadaki editörde açılacaktır. Tabiiki şimdilik içinde birşey yok:


Şimdilik programın içine bişeyler koymadan, altyapı tanımlamalarımızı bitirelim. PLC içine bir programı koymak onun çalışmasını sağlamaz, bu programın ne şartlar altında çalışacağını göstermemiz gerekiyor. Aynı programı değişik şartlar oluştuğunda da çalıştırabiliriz. Bu bilgisayar programlamadaki "class" (sınıf) tanımlamasına benzer bir yapıdır. Programın bir tanımlandığı yer vardır - ki en son onu yaptık, bir de çalıştırıldığı yer vardır. Bu çalıştırıldığı yerlere "Task" (görev) denir. Şimdi projeye bir de "Task Configuration.." ekleyelim:



Açılan pencereye direk "Add" tuşu tıklayarak görev grubumuzu oluşturalım. İlk görev tanımı da "Task" adıyla otomatik olarak altına gelir. Default olarak bu task sağda açılmış olan özelliklerinden de gördüğünüz üzere her 20 ms'de bir çağırılan periyodik bir task. Bu Task'a programımızı eklersek her 20 ms'de bir programdaki kod çalıştırılacaktır. Bunun için "Task"a sağ tıklayın "Add Object" ve "Program Call.." seçin:


Açılan diyalogda "POU to Call" seçeneği yanındaki "..." yazılı butona tıklayarak bizim "PLC_PRG" programımızı seçin. 


Proje ağacının son hali yukarıdaki gibi olacaktır. Aslında "New Project" dediğimizde "Empty Project" değil de "Standart Project" seçmiş olsak şu anda bulunduğumuz noktaya direk gelecekti. Ancak biz bu yoldan giderek proje ağacında görünenleri daha iyi sindirmiş olduk.

Yaşasın sonunda sıra programı yazmaya geldi. Otomasyonun en temel devresi Start-Stop ile başlayacağız. Yani adları Start ve Stop olan iki buton var, Start butonu basılıp bırakınca motor çalışacak stop butonuna basıp bırakınca motor duracak. 

PLC_PRG adına çift tıklayıp editörde açılmasını sağlayalım. Sağ tarafta "ToolBox" adında bir bölüm var. Burada programda kullanabileceğimiz elemanlar ve fonksiyon modülleri bulunuyor. En alttaki "Ladder Elements" bölümünü yanındaki "+" işaretine tıklayarak açalım:


Bu toolbox'tan istediğimiz elemanı program çizimimize tutup çekebiliriz. Başlayalım , önce yukarıda görüldüğü gibi bir "Contact" (normalde açık kontak) alıp "Start Here.." yazan yere koyalım. Sonra aşağıdaki gibi devam edlim program yazmaya:

Gelelim isimlendirmeye, her kontak ve çıkış üzerinde şu anda "???" yazıyor, yani bizden buralara değişken isimleri yazmamız isteniyor. Şimdi çıkışın üzerine tıklayalım ve "???" yerine "motor" yazıp enter basalım:


Önümüze otomatik değişken tanımlama popup dialog açılacaktır. Burada "Type" olarak "BOOL" seçiyoruz çünkü bu bir ON-OFF değişken. "Scope" olarak default gelmiş olan "VAR" seçersek değişken sadece PLC_PRG içinde erişilebilir olur, "VAR_GLOBAL" seçersek bu değişkene PLC'nin her programı erişebilir, biz bunu seçiyoruz, erişilebilir olsun. VAR_GLOBAL seçince global değişkenleri saklayacağımız bir obje olmadığı için "Object" yanında kırmızı bir "!" işareti belirdi. 


İşarete tıklayıp "<Create object...>" ile yeni bir global değişken grubu oluşturalım. Açılan "Add Object" diyalog penceresinde hiç bir şeye dokunmadan direk "Add" butonunu tıklayalım, geri "Auto Declare" diyaloğuna dönecektir. "OK" butonunu tıklayıp değişken tanımlamayı bitirelim. 

İşte programın son hali:

Kısaca bakalım, "start" butonu basılınca açık olan start kontağı kapanacak enerji "stop" kontağına geçecektir. "stop" kontağı normalde kapalı tip olduğu için enerji onu da geçerek çıkışa ulaşacak ve "motor" aktif olacaktır. "motor" aktif olunca "start" butonuna paralel olan kontağı kapanacak ve "start" butonu bırakılsa dahi motor çalışmaya devam edecektir (elektrikte buna mühürleme de denir). Ancak "stop" butonu basılırsa normalde kapalı olan kontak açılacak ve "motor"a giden enerji kesilecektir. Bu durumda "motor" duracak ve mühürleme kontağı da açılacağı için "stop" butonu bırakıldıktan sonra da "motor" durmaya devam edecektir. 

Hadi çalıştıralım. "Online" menüsünden "Simulation" seçerek simülasyonu aktif edelim. Staus Bar üzerinde kırmızı bir SIMULATION yazısı belirecektir. Bu gerçek bir PLC'ye bağlanmadan programı test edebilmemize yarar. Tekrar "Online" menüsünde bu sefer "Login" seçerek simülasyon PLC'ye bağlanma talep edelim. Bağlanınca karşımıza , hedefteki cihazda bizim yazdığımız projenin bulunmadığını belirtir bir uyarı çıkar. Burada projemizi cihaza "Download" etmek isteyip istemediğimizi sorar. 

 "Yes" butonunu tıklayarak projemizin cihaza yüklenmesini sağlayalım. Program PLC'ye yüklenir ve Status Bar'a bir de PLC durumunu belirten kırmızı STOP yazısı gelir ayrıca programımız da online moda geçmiş değişkenlerin durumuna göre renklenmiştir:


Sol başta enerji barı mavi renkte gördüğünüz gibi "start" kontağına kadargeliyor ve kontak açık olduğu için arkasına geçemiyor. Ama hepsinden önce PLC'miz "STOP" konumunda yani değişken değerleri değişse de bir sonuç alamayız, program çalışmıyor. "Debug" menüsünden "Start" seçerek PLC'yi çalıştıralım. Aşağıdaki kırmızı STOP artık yeşil RUN oldu. 

Peki değerleri online olarak nasıl değiştireceğiz? Programın altında bir "Watch" bölümü var burada istediğimiz değikeni görüntüleyip , değer verebiliriz. 


Değişken listesini açalım ve "start" ile "stop" değişkenlerini mouse ile seçip izleme listesine çekelim. 
bu tabloda iki sütun var dikkat etmemiz gereken, "Value" ve "Prepared value". "Value" değişkenin o andaki olan değerini gösterir, "Prepared value" ise değişkenin olmasını istediğimiz değeri girdiğimiz yerdir. Şimdi "start" değişkeni için olan "Prepared value" hücresine tıklayalım değer TRUE olarak gelecektir. Tıklamaya devam edersek olası değerler arasında değişip durur. 


Gördüğünüz üzere "start" değeri değişmedi. Değişimin uygulanması için "Watch" bölümüne sağ tıklayın ve "Write values" seçerek prepared değerlerin PLC'ye yazılmasını sağlayın.


Start verince program animasyonu şöyle olur:

Gördüğünüz gibi enerji "start" ve "stop" kontakları üzerinden geçip "motor"a ulaştı ve "motor" aktif oldu. Şimdi "start" kontağı bıraksa da "motor" çalışamaya devam eder. Hadi "start"ı FALSE yapalım:

Durdurmak için "stop" değerini TRUE yapmak gerekecek:

Durduktan sonra "stop" değerini FALSE yapsak da "motor" hala duruyordur:

Oh ne ala.. Ama kullanıcı operator bir yazılımcı değil değerleri böyle alt seviye işlemlerle değiştirmeyi bilemez. Operatör için sisteme uzaktan müdahale edeceği bir Arabirim (HMI) programı yazmamız gerekiyor.

Uygulamaya sağ tıklayıp "Add object" ve "Visualization" seçiyoruz:


İsim soracaktır , default olan "Visualization" olarak kalsın, "Add" butonu tıklayarak görsel dosyamızı oluşturalım. Proje ağacına görsel dosyamızdan başka şeyler de geldi. Bunlar görseli diğer bilgisayarlarda ve web server üzerinde de çalıştırmak için gerekenler.


Görselimiz boş bir sayfa olarak editörde açıldı. Sağ tarafta ise bu editörde kullanmak için "Properties" ve "Toolbox" sekmelerinden oluşan bir bölme geldi. "Properties" ekrana koyduğumuz objelerin özellikleri ve parametrelerini değiştirmek için kullanılır. "Toolbox" ise ekrana konabilecek objeleri içerir. 


Şimdi Toolbox'ta "Common Controls" bölümünden bir "Button" objesini mouse ile çekip sayfamızın sol üst köşesine yakın bir yere koyalım. Sağdaki özelliklerinden "Texts" başlığı altındaki "Text" özelliğini çift tıklayıp "Start" değeri girerek buton üzerindeki yazıyı ayarlayalım.


Hemen yanına aynı şekilde bir de "Stop" yazılı buton yerleştirelim. 

Bundan sonra hedefimizde motorun çalıştığını gösterecek bir yuvarlak var. Toolbox'ta "Basic" bölümünden bir Ellipse objesini sayfaya sürükleyelim ve boyutunu ayarlayalım:



Start butonunu bizim PLC'deki "start" değişkenine bağlamak için butonun "Input configuration" başlığı altında "Tap" alt başlığındaki "Variable" özelliğini çift tıklıyor ve beliren "..." yazılı butona tıklayarak otomatik değişken seçim ekranını açıyoruz:


Açılan pencereden "Application" altında "GVL" altında "start" değişkenini seçip "OK" tuşuna basıyoruz. "Tap" değişkeni özelliği ile butona basılınca "start" değerinin TRUE, bırakılınca FALSE olmasını belirtiyoruz.


Aynı şekilde "Stop" butonuna da "stop" değişkenin bağlayalım ve sırayı daireye getirelim.

Ben dairenin motor çalışmazken koyu gri , çalışırken yeşil boyalı olmasını istiyorum. Bu yüzden dairenin "Colors" başlığı altındaki özelliklerini aşağıdaki gibi ayarladım:


Renk değişimini değişkene bağlamak içinse "Colorvariables" başlığı altındaki "Togglecolor" değerine "motor" değişkenini bağlıyoruz.

Artık görselimiz denemeye hazır ancak bunları denemek için gerçek bir PLC'de programları çalıştırmalıyız. Bu amaçla önce "Online" menüsünden simülasyonu kapatalım. 

CodeSys programı kurulumuyla beraber bilgisayarda çalıştırmak üzere bir SoftPLC yazılımı gelir. Bu versiyonda adı "CODESYS Control Win V3". Önce PLC tipimizi buna değiştireceğiz. Cihaza sağ tıklayıp açılan menüden "Update Device..." seçiyoruz. 



Açılan cihaz seçim penceresinden CODESYS Control Win V3 cihazını seçip "Update" butonuna tıklıyor ve sonrasında seçim penceresini kapatıyoruz. Cihazımız değişti ama ismi değişmedi. İsterseniz özelliklerinden adını değiştirebilirsiniz. 

Şimdi "Login" olmak için SoftPLC'mizi çalıştıralım:


Bir DOS ekranında bi sürü yazılarla yazılım PLC çalışmaya başlar. "Online" - "Login" dediğimizde şu hatayı alırsak:


Programlardan "CODESYS Gateway V3" programını çalıştırın bu program PLC ve geliştirme yazılımı arasında bağlantı kuran bir ara yazılımdır. 

Login olurken program yüklenmesini isteyip istemediğinizi sorar "Yes" tıklayın ve program yüklensin. "Debug" menüden "Start" seçerek PLC'yi çalıştırmaya başlayın.

Görseli kullanmak için 3 değişik yol var. İlki hemen editördeki görsel sayfası. Bu sayfa online olunca otomatikman runtime moda geçer ve buradan butonlara basarak programınızı deneyebilirsiniz. 

İkincisini ise "CODESYS Control Win V3" programı açar ve aşağıdaki gibi Windows taskbar üzerinden tıklayarak açabilirsiniz:



Üçüncü ve en güzel seçenek ise web server üzerinden PLC görseline ulaşmak. Tarayıcınızı açın ve adres olarak http://localhost:8080/webvisu.htm adresini girin:


Bundan sonra cep telefonunuz ya da tabletten bilgisayarınızın IP adresini yazarak dışardan PLC'ye erişmeyi deneyin:

Kolay Gelsin, sorunuz olursa bana yazın...




4 yorum:

  1. çok teşekkürler emeğine sağlık başarılar

    YanıtlaSil
  2. Malesef tarayıcıdan bağlanamadım. bu kadara oldu artık umarım bunuda hallederim :)

    YanıtlaSil
  3. evet tarıyıcıdanda bağlandım teşekkürler.simülasyon modunda iken akıllı telefondan simülasyona bağlanabilirmiyiz.yani projenin bu haliyle.bir soru sormak istiyorum opc server uygulmasını similasyon modunda yapabişirmiyiz kolay gelsin.

    YanıtlaSil
  4. çok güzel bir çalışma hazılamışsınız teşekkürler.

    YanıtlaSil