Modbus ile Giriş/Çıkış çoğaltma
Bazen yapacağımız projede PLC'de (STM32F103C8T6) bulunan 8 adet giriş, 12 adet çıkış bacağı yetmeyebilir. Böyle bir durumda, ana programı yazacağımız master PLC'nin yanına ilave slave PLC'ler koyabiliriz. Böylece Modbus RTU sayesinde G/Ç sayısını dilediğimiz kadar artırabiliriz. Yukarıdaki şemada, 2 tane PLC ile 16 girişli ve 24 çıkışlı bir sistem elde edilmiştir. 1 Tanesi master, 2 tanesi slave olarak 3 tane PLC, kullanırsak, 24 giriş ve 36 çıkışlı bir sistem olacaktır.
Her bir PLC'de sadece programlama (GX Developer) için kullanılan USB portunun dışında modbus için bağımsız olarak kullanılabilen 2 adet seri port bulunmaktadır.. Yukarıdaki şemada, master PLC’nin rx, tx bacakları, slave PLC’nin rx, tx bacaklarına bağlanmıştır. Bacaklar arasında, tx1-rx2 ve rx1-tx2 şeklinde bağlantı yapılmalıdır.
- UART1 : Slave PLC için modbus bağlantısının yapıldığı port (A9, A10)
- UART2 : Master PLC için modbus bağlantısının yapıldığı port (A2, A3)
Modbus iletişimi ile PLC’nin merker veya yardımcı röle diye adlandırılan M bit’leri yazılıp okunabiliyor. Modbus’da bunlar coil olarak geçiyor. Aynı şekilde modbus ile okunup yazılabilen holding register’lar ise PLC’de D harfi ile numaralandırılan 16-bit’lik (word) hafızalardır. D0-D9 arasındaki register’lar, cihaza pil bağlanırsa kalıcı hafıza olarak da kullanılabilirler.
Örnek olarak, slave PLC'nin X0 girişine bir buton, Y0 çıkışına bir LED bağladım. Diyelim ki butona basıldığı sürece LED'in yanmasını istiyoruz. Slave'e bağlı olan LED ve butonu , master üzerine yazacağımız ladder ile kontrol ediyor olacağız.
Varsayılan olarak yani firmware yüklendiği anda PLC'nin UART1 ve UART2 port'larının slave olduğunu belirtmiştim. Dolayısı ile slave PLC'ye configurator programı ile bağlanmaya gerek kalmıyor. Master PLC'nin UART2 portunu ayarlamak için configurator programını kullanmak gerekiyor. Bu ayarı yapmak için configurator programında UART2 sekmesine geliyoruz. Önce hız ayarını 57.600 yaptıktan sonra "Modbus master" seçeneğine tıklıyoruz. Burada "Add slave" butonuna tıklayarak, sağdaki tabloya 2 satır eklememiz gerekiyor..
Burada master sorgusunda, slave'den 8 adet merker hafıza okunacağını belirtiyoruz. Slave'de 0 numaralı adresten okunan bilgilerin, master'da M300'den itibaren yazılmasını istiyoruz. Bu sorgu, slave cihazın X0-X7 girişlerini okumak için kullanılacak.
Burada K2, 2 tane 4-bit (nibble) anlamına geliyor. K2X0, X0-X7 arasındaki ( 8 adet bit'i kapsar. [MOV K2X0 K2M0] şu demektir; X0-X7 arasındaki girişleri al, M0-M7 arasındaki merker hafızalara kaydet. [MOV D11 K3Y0] bu da benzer şekilde; D11 register'ının içeriğindeki bit'leri al, Y0-Y13 arasındaki çıkışlara yaz.
Configurator programında yaptığımız ayar sayesinde, slave'de M0'a kaydedilen X0 içeriği, master'da M300'e gelmektedir. Ladder'da M300, 1 ise D11'e 1 yaz, M300, 0 ise D11'e 0 yaz, demiş oluyoruz. Yani slave'e bağlı butona basınca, bilgi, modbus üzerinden master'a gidiyor. Master ladder'ı sayesinde, butona basılınca (M300), aynı şekilde D11 bilgisi master'dan slave'e gidiyor ve LED yanıyor..
Yorumlar
Yorum Gönder