PLC ler, endüstriyel otomasyon için fabrikalarda kullanılan programlanabilir kontrol cihazlarıdır. Örneğin, optik bir sensörün, konveyör üzerinde ilerleyen koliyi görmesi ile harekete geçmesini istediğimiz pnömatik bir silindir var, bu durumda silindiri ve sensörü bir PLC ye bağlarız ve PLC yi ladder dilinde programlayarak sistemi istediğimiz gibi kontrol edebiliriz. Ladder (merdiven) dili, en yaygın ve en kolay plc programlama dilidir, teknisyenlerin kolayca kullanabilmesi için dilden çok bir elektrik şemasına benzemektedir. Raspberry Pi, (bundan sonra RPi olarak belirteceğim) gerçek zamanlı uygulamalar için pek uygun bir seçim değildir, ama milisaniyelerle işimiz yoksa veya eğitim amaçlı olarak PLC yerine kullanabiliriz. Bu yazıda, yerli PLC üreticisi Fultek firmasının kendi üretimi olan PLC modellerinde programlama amaçlı kullanılan ücretsiz Windows programı olan Speed PLC programının, RPi yi PLC olarak kullanabilmesi için gereken RPi ayarlarından bahsedeceğim. RPi yi PLC yaptıktan sonra, yani bu yazıdaki tüm işlemleri sırasıyla yaparsanız, RPi nin içine hiçbir ladder program koymadan bile Modbus TCP Server olarak kullanabileceksiniz.. Modbus konusunu blog sayfamda biraz anlatmıştım. Speed PLC de bulunan dahili PLC Simulator sayesinde hiçbir donanıma (RPi veya PLC) ihtiyaç olmadan da ladder programınızı bilgisayar ekranında görsel olarak çalıştırabilirsiniz.

Speed PLC de Simulator çalışırken
Speed PLC de Simulator çalışırken

Speed PLC programının çalışabilmesi için pc de Java kurulu olması gerekiyor. Kontrol etmek için komut istemine (cmd) girip java -version yazın ve enter a basın, komut tanınmıyorsa Java yı Windows yüklü pc ye bu linkten kurabilirsiniz.

Firmware

RPi yi PLC gibi kullanabilmek için RPi ye bazı programlar yüklememiz gerekiyor, RPi ye yüklenecek yazılımın tamamına firmware diyebiliriz. Firmware yükledikten sonra RPi ve pc arasına ethernet kablosu bağlayıp, RPi yi PLC gibi programlayabiliyor olacağız. Benzer şekilde çalışan RPi ye yüklenebilen CODESYS firmware de var, ücretsiz olarak kullanmak isterseniz 2 saatte bir RPi yi kapatıp açmanız gerekiyor. Burada anlatacağım firmware ise tamamen ücretsizdir..

Speed PLC deki PLC hafıza yapısı, Siemens PLC lerdeki yapı ile benzeşmektedir. Fultek sitesinde RPi 3 için kurulumdan bahsedilmiş fakat bende Raspberry Pi nin ilk modellerinden olan RPi 1 Model B Rev.2 olduğundan yazılımı çalıştırmak biraz uğraştırdı.. RPi ye yüklenecek firmware, Java ile çalışıyor.. Raspbian ı full olarak indirip RPi ye kurarsanız Java 11 kurulu geliyor fakat malesef Java 11, RPi 1 veya RPi Zero W tarafından desteklenmiyor. Bunun nedeni işlemci mimarilerinin ARMv6 olması, RPi 2 ARMv7, RPi 3 ve 4 ARMv8.. Bizim RPi ye kuracağımız Java 8 ise hepsi tarafından desteklenmektedir.. Diğer bir yöntemde ARMv6 olan RPi ye özel bir Java 11 sürümü (Zulu) kurmak ama ben Java 8 kurmayı tercih ettim. (Zulu Java kurarsanız pi4j versiyonunu da 1.4 yapmanız gerekiyor) Ayrıca bu iş için RPi de masaüstüne de ihtiyaç olmadığından, 8GB lık sd kartıma kurmak üzere Raspbian sayfasından Raspberry Pi OS Lite 32-bit (4.4.2022 bullseye) sürümünü indirmekle işe başladım.. Burada anlatacağım işlemleri Pico hariç diğer RPi modellerine de uygulayabilirsiniz. Speed PLC programı ile neler yapılabildiğini veya nasıl kullanıldığını görmek için youtube da “speedplc” veya “plc zero” olarak arama yapabilirsiniz. Ayrıca Fultek sitesindeki youtube linklerine ve buradaki videolara bakabilirsiniz..

Not: Linkte bahsedilen Fultek PLC Zero, RPi değildir fakat anlatılan Speed PLC programı RPi ile de kullanılabilecektir. PLC Zero, STM32F407VGT6 mikrodenetleyici içeren giriş çıkışları RPi gibi 3.3V olan bir geliştirme kartıdır. Aynı çip STM32F4DISCOVERY geliştirme kartında da kullanılmaktadır. Her ne kadar linkte ”15 dolara PLC edinelim” diyorsa da bu bilgi malesef çip krizi nedeniyle geçmişte kalmıştır. Firma yetkilisi, maliyetlerin artması ve PLC Zero yu satın alan elektronik mühendislerinin kartın çıkışlarına akım çeken malzemeleri direk bağlayıp kartı yaktıktan sonra şikayette bulunmaları nedeniyle bir süre sonra bu kartın satışını durduracaklarını söyledi.. Ben elektrik mühendisi olduğumdan pek üstüme alınmadım 🙂 Neyse ki PLC firmware ini RPi ye kurup çalışmalara devam edebiliriz..

Raspberry Pi İmaj Yöneticisi

SD karta imajı yazmak için kullanılan ve bize birtakım kolaylıklar sağlayan İmaj Yöneticisini (Raspberry Pi Imager) Raspberry Pi resmi sitesinde bulunan linkten indirebilirsiniz.

SpeedPlc 2

İşletim sistemi olarak “Özel imaj kullan” a tıklayıp önceden indirdiğimiz RPi OS Lite dosyasını seçmeliyiz. Sağ alt köşede bulunan ayarlar a tıklayınca aşağıdaki gibi ayarları yapabiliriz. Kullanıcı adı pi, parola da pi olacak, RPi nizde wifi varsa wifi ayarlarını da buraya girebiliriz. RPi de wifi yoksa pc ile aynı ve internet bağlantısı olan network e ethernet kablosu ile bağlamanız gerekir. RPi ye yazılımları internetten yükleyeceğimizden internete bağlı olması gerekiyor. Yazılımları monitör klavye bağlayarak veya burada anlatacağım gibi headless (monitör klavye olmadan) yükleyebiliriz.

Raspberry pi ile plc İmaj Yöneticisi ayarları
İmaj Yöneticisi ayarları

Ayarları yapıp, SD kartı da seçip YAZ butonuna tıklayınca karta yazma işi başlar. İş bitince programı kapatıyoruz ama SD kartı pc den çıkarmıyoruz. SSH ile bağlanabilmek için SD karta SSH isimli boş bir metin belgesi ekleyip .txt uzantısını siliyoruz. Ayrıca pi4j dosyasını da resimdeki gibi zip ten çıkarıp aynı yere koyuyoruz.

SpeedPlc 4

PuTTY ile SSH bağlantısı

SD kartı RPi ye takıp enerji verdikten sonra pc de komut istemine ping raspberrypi.local yazıp enter a basın bir süre sonra RPi den cevap gelmeye başlayacaktır. SSH ile RPi ye bağlanmak için Speed PLC programını açın, üstteki ayarlar butonuna basıp Raspberry Firmware e tıklayın. Açılan pencerede PuTTY Terminal e tıklayın.

SpeedPlc 7
PuTTY Terminal
SpeedPlc 5

Host Name kutusuna raspberrypi.local yazın ve Open a tıklayın. Çıkan soruyu Evet olarak yanıtlayın. Açılan pencerede kullanıcı adı ve parola için pi girip enter a basın. SSH bağlantısı kurulmuş oldu. Bu ekranda cat /proc/cpuinfo komutunu verdiğinizde ARM versiyonu ve RPi model ismi gözükecektir.

SpeedPlc 6

Raspi-config

sudo raspi-config ile RPi ayarlarına girelim. Burada yön tuşları, TAB ve enter tuşları ile bazı ayarlar yapacağız. Interface Options içinde SSH server ı enabled yapalım, yani aktifleştirelim. Grafik hafızayı (masaüstü) düşürmek için Performance Options ta GPU Memory i 16 yapalım, Java ram ı sever.. Finish e tıklayalım, gelen ekranda reboot (yeniden başlatma yapılsın mı?) sorusunu yes olarak yanıtlayın. RPi kapanıp açılacaktır. Aklınızda olsun RPi bir bilgisayar olduğundan direk fişini çekip kapatmak doğru olmaz bunun için önce sudo poweroff komutunu vermek lazım. Biraz bekledikten sonra fişini çekebilirsiniz.

Firmware için gereken paketleri kuralım

RPi nin internet bağlantısını kontrol etmek RPi ye PuTTY ile bağlanıp ping www.google.com komutunu verelim. Ping ten çıkmak için Ctrl+C yapabilirsiniz. Daha önce SD karta koyduğumuz pi4j dosyasını kurmak için cd /boot ardından sudo dpkg -i pi4j-1.3.deb komutlarını verelim. Ardından bu komutları sırayla verelim, çıkan sorulara Y (evet) cevabını verelim :

sudo apt-get update
sudo apt-get install git-core
cd ~
git clone https://github.com/WiringPi/WiringPi --branch master --single-branch wiringpi
cd ~/wiringpi
sudo ./build

Bu işlemler 5-10dk. sürecektir. Şimdi de biraz daha uzun sürecek olan Java kurulumu için sudo apt-get install openjdk-8-jdk komutunu verelim.. Java kuruldu mu diye kontrol etmek için java -version komutunu verelim..

RPi nin ve PC nin ethernet portuna sabit IP verelim

PC de çalışan Speed PLC programı ile RPi arasında network bağlantısı olması gerekiyor ki ladder programı RPi ye atabilelim. Bunu kolaylaştırmak için ethernet portuna sabit ip vermek gerekiyor. RPi Zero W sahibi iseniz de ethernet portu olmadığından wifi portuna sabit ip verebilirsiniz. Öncelikle Windows pc nin ethernet portuna sabit ip vermemiz gerekiyor.. Ben pc ye 192.168.0.182 verdim.

SpeedPlc 8

RPi ye PuTTY den ifconfig komutunu verdiğimizde mevcut ip adresleri gözükecektir. Burada eth0 ethernet portu, wlan0 ise wifi portudur. sudo nano /etc/dhcpcd.conf komutunu verelim. eth0 a sabit ip vermek için resimdeki gibi comment (#) leri kaldıralım..

SpeedPlc 9

RPi ye 192.168.0.10 adresini vermiş olduk. Ctrl+X e basıp Y tuşuna ardından enter a basalım. Şimdi sudo reboot komutu ile RPi yi yeniden başlatalım.. Ethernet kablosunu takmadan ifconfig ile ip adresini göremezsiniz. RPi Zero W sahibi iseniz wifi ye sabit ip vermek için interface eth0 yerine aşağıdaki gibi interface wlan0 yazmanız gerekiyor..

interface wlan0
static ip_address=192.168.0.10 / 24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

PC den komut isteminden (cmd) ping 192.168.0.10 komutu ile bağlantıyı test edebiliriz. Artık PuTTY de Host Name kutusuna 192.168.0.10 yazarak da RPi ye bağlanabiliriz..

RPi ye SpeedPlc firmware yükleme

PC de PuTTY açıksa kapatalım.. “PuTTY ile SSH bağlantısı” başlığı altındaki resimde olan pencereye gelelim ve resimdeki bilgileri girelim. Bu kez PuTTY Terminal butonuna değil Load butonuna tıklayalım. Aşağıdaki bilgi mesajı gelecektir..

SpeedPlc 10

Yeni PLC niz hayırlı olsun..

Raspberry Pi ile PLC Devremizi Hazırlayalım

SpeedPlc 12

Bendeki RPi eski olduğundan 26 pin ona göre devreyi kurdum. Sizdeki konektör, Speed PLC programında birazdan göreceğimiz RPi 3 şemasına göre 40 pin olabilir. Devreye 2 buton ve 2 led bağladım. Butonların bir uçlarına 3.3V veriyoruz, diğer uçlarını GPIO17 ve GPIO27 ye bağladım. Ledlerin katodlarını 330ohm ile GND ye bağladım. Ledlerin anodlarını ise GPIO4 ve GPIO22 ye bağladım.

Speed PLC de GPIO adresleme

PC de Speed PLC programını açalım, sol üst köşedeki New butonu ile yeni proje açalım ve gelen pencerede Raspberry Pi yi seçip OK e tıklayalım. Şuan muhtemelen Program sekmesindesin, Hardware (donanım) sekmesine tıklayalım. Kırmızı PLC resmini üzerine çift tık yapalım ve aşağıdaki gibi adreslemeleri yapalım. 2 input, 2 output oluşturuyoruz. Butonlar input, ledler output oluyor PLC için..

SpeedPlc 11

Burada gösterilen pinler RPi 3 içindir, sizdeki RPi modeline göre devrede doğru bağlantıları yaptığınızdan emin olun..

Bağlantıyı test edelim ve ilk programı yükleyelim

SpeedPlc 13

Program tab ında solda Bit Logic altında NO ya çift tık yapın, network tarafında normalde açık kontak oluşacaktır. Sonra yana geçip Q ya çift tık yapın. Ladder programına eklediğiniz elemanları seçip delete tuşu ile silebilir, Ctrl+C ile kopyalayabilir, Ctrl+V ile yapıştırabilirsiniz.. Tanımlarını da resimdeki gibi yapın. D0.X0.6 ve Q0.0 olarak.. D0 dahili data bloktur, sol tarafta Programs -> Data Block yanındaki + ya basarak DB0 a çift tık yaparsanız bu bitleri ve anlamlarını görebilirsiniz. D0.X0.6 1Hz ile sinyal üreten bir bittir. PC ve PLC bağlantısını kontrol etmek için sol üstte soldan 5. butona (Settings veya ayarlar) basıp Plc Connection Settings e tıklayalım, ekrana aşağıdaki pencere çıkacaktır. Ayarlarınız resimdeki gibi ise Connection Test e tıklayın, “Connected to Plc” mesajı geldiyse bağlantı tamam demektir..

SpeedPlc 17
SpeedPlc 14

Şimdi Sağ üstte bulunan butonlardan soldan 4. butona a veya F9 a basın resimdeki pencere çıkacaktır. All Blocks ve Plc Configuration tiklerini yapıp Load a tıklayın, çıkan pencerelerde Evet e tıklayın. Led yanıp sönmeye başlayacaktır.

Start Stop devresi

PLC işlerinin merhaba dünyası olan devreyi yapalım.. Giriş çıkışlara açıklama yapmak için Symbol sekmesini kullanabilirsiniz. Start butonuna basınca led yanacak ve elinizi çekseniz de yanık kalacak, Stop butonuna basınca led sönecektir. Yeni proje açtıysanız, Hardware sekmesindeki ayarları unutmayın..

SpeedPlc 15

Tek buton ile ON/OFF devresi

Butona basınca led yanar, aynı butona tekrar basınca led söner. Programı PLC ye yükledikten sonra sağ üstte bulunan soldan ilk buton ile (F7) plc ye canlı bağlantı kurarak devreyi izleyebilirsiniz. Siemens te M0.0 olarak gösterilen dahili hafıza biti burada F0.0 gibi gösteriliyor. I0.0, Q0.0 gösterimleri Siemens ile aynı zaten.. P_TRIG sayesinde plc, butona basıldığı an (yükselen kenar) 1 çevrim pals almış olur. N_TRIG ise butondan parmak çekildiği anı yakalamak için kullanılır.

SpeedPlc 16

Timer devresi

SpeedPlc 18

Butona basınca led1 500ms yanıp sönecek, ardından led2 1500ms yanıp sönecek. İlk networkte led1 ve led2 normalde kapalı kontak girişlerini koyduk ki ledler yanarken tekrar butona basılamasın.. F1.5 bir nolu byte ın 5. biti demektir. FW10 word hafıza gösterimi olduğundan (10. ve 11. byte lar) ve bir word iki byte tan oluştuğundan 2 nolu timer da FW12 kullanılabilir. FW10 programda kullanıldığından başka bir network te FB10 (tek byte) kullanılamaz, çakışma olur. FD10 ise double word yani dört byte tan (10-13 byte lar) oluşmaktadır. Siemens PLC de de aynı gösterim vardır, F yerine M gelir sadece.. Programda bir eleman seçiliyken F1 tuşuna basarsanız help penceresi çıkar. Bu arada ayarlar butonundan dili Türkçe yapabilirsiniz, yardım dökümanı da Türkçe olur böylece.. F7 ile canlı bağlantı yapmanızı tavsiye ederim, bu şekilde timer değerlerini canlı canlı görebilirsiniz.

Butonsuz timer

SpeedPlc 19

Led1 1 saniye yanar, ardından led2 1 saniye yanar, sonra ikiside 1 saniye söner. İlk satırda timer2 aktif olmadığından timer0 tetiklenir ve sıralı işlem başlar ama bitmez döngü halinde devam eder.

RPi yi kapatıp açsanız bile plc nin çalışmaya devam ettiğini görebilirsiniz. Şimdilik bu kadar olsun.. Sizden gelecek talep ve sorulara göre bu konu kapsamında başka yazılar da yazabilirim.. Hoşçakalın..

1 Yorum

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz