PLC Modbus Master

PLC Modbus Master

Fulmatic 7 PLC Modbus Master olarak kullanabilir ve bir veya daha çok Modbus Slave cihaz ile haberleşebilirsiniz. Seri port ile bilgi gönderip almak için Plc komutlarından MASTER komutu kullanılır. Bu komut ilk önce data gönderir ve sonrasında cevap almayı bekler. Daha fazla bilgi için Master komutunun yardım sayfasını Speed PLC programında okuyunuz.

Modbus protokolü hakkında daha fazla bilgi için buraya tıklayınız.

Tek bir cihaz ile haberleşmek isterseniz işlem son derece basittir. Aşağıdaki resimde örnek kodu görebilirsiniz.

Modbus Master Tek Slave Cihaz için.
  • Q 500.0 bir yapılarak haberleşme başlatılır. Master komutu D1.B0 adresinden itibaren 8 bayt datayı seri porttan gönderir.
  • Gönderim başladığında Busy biti F 100.2 True olur.
  • Gönderim tamamlandığında Sent biti F 100.1 True olur.
  • Sent biti True olduktan sonra T.MSec Timeout zamanı içerisinde cevap gelmelidir. Cevap gelmediği taktirde Aynı sorgu tekrar gönderilir.
  • Cevap geldiğinde Done biti F 100.0 True olur.
  • Kodun ikinci satırında Done biti True olduğunda aynı sorguyu tekrar göndermek için T 0 çalışmaya başlar. Set edilen sürenin sonunda Done biti False yapılır.
  • Bir sonraki saykılda Done bitinin False olduğunu gören Master komutu tekrar gönderimde bulunur. Böylece işlem sonsuza dek devam eder.
  • Q 500.0 biti False yapılarak iletişim sonlandırılır.

Örnek kodumuzda gönderilen datalar Data blok 1 içerisinde B0 dan itibaren 8 bayttır.

Gönderilen Baytlar

Modbus sorgu yapısını öğrenmek için https://www.fultek.com.tr/modbus-iletisimi/ burayı ziyaret ediniz. Örneğimizde slave cihazın Analog Input tablosundan sıfırıncı adresten (30001 veya 300001) itibaren 2 register okumak istedik. Bu sorguyu alan slave cihazın cevabı ise aşağıdadır.

Alınan Baytlar

Value 1 ve Value 2’de cihazdan okumak istediğimiz verileri görebilirsiniz.

PLC ile Üç Slave cihazdan okuma

Bu örneğimizde PLC’ye Rs485 ile üç adet slave cihaz bağladık. Modbus Rtu ile sırayla bu cihazları okuyacağız. Bu işlem için yukarıdaki kodun benzerinden üç cihaz için hazırladık.

Modbus Kodu
  • Network 1’de görüldüğü gibi Q 500.0, Q 500.1 ve Q 500.2 bitlerinin hepsi False ise Q 500.0 True yapılıyor. Böylece haberleşme ilk cihazdan başlatılıyor.
  • Şimdi ikinci network’e bakalım. Tek cihaz ile yaptığımızdan farklı bir işlem yapmalıyız. İlk cihazı okumayı denemeli, sonuç ne olursa olsun bir sonraki cihaza geçmeliyiz. Okumanın başarılı olduğu Done biti F 100.0’ın True olması ile anlaşılır. Başarısız olduğu ise T 100 timerının taşması yani True olması ile anlaşılır.
  • Master komutunda timeout süresi 250 ms. T 100 ise 200 ms’dir. Böylece Master komutu sorguyu tekrar göndermeyi denemeden T 100 zamanı dolacaktır. Eğer bu esnada Done biti True olursa T 100 zamanı dolmadan resetlenecektir.
  • İkinci satırda cevap başarılı şekilde alındığında bir sonraki cihaz ile haberleşmeyi başlatmak için T 200 zamanlayıcısı ile 50 ms’lik bir gecikme yapıyoruz.
  • Üçüncü ve dördüncü satırlarda Cihaz 1’in haberleşmesi kapatılıyor ve Cihaz 2’nin haberleşmesi açılıyor.
  • Enson hücrede RS (Reset Set) komutu ile Q 600.0 okuma başarılı ise False, başarısız ise True yapılıyor. Böylece haberleşmenin sağlanamadığı cihazları belirlemiş oluyoruz.
  • İkinci network’ün benzeri üç ve dördüncü networklerde 2. ve 3. cihazlar için olan kodu görebilirsiniz. Bu projeyi buradan https://www.fultek.com.tr/Download/Modbus_3_Station indirebilirsiniz.

PLC ile 14 Slave cihazdan okuma

Teorik olarak tek bir Rs485 hattında 255 cihaz olabilir. Pratikte bu mümkün olmayacaktır. Bu örneğimizde her bir cihaz için ayrı bir kod yazmak yerine tek bir kod yazdık ve tüm cihazları bu kod ile okuduk.

Modbus
  • Bu kod yukarıdaki örneklerde açıkladığımız kodunsırayla tüm istasyonlar ile haberleşmesi için revize edilmiş halidir.
  • Kodumuz bir istasyona sorguyu gönderir. Başarısız olduğunda aynı istasyona üç defa sorgu gönderir ve sıradaki istasyona geçer. Başarısız olduğunda kaç defa göndereceği Satır 4 Sütun 4 kesiştiği yerde ki FB 109 > 2 komutu ile belirlenir. Okuma başarılı olduğunda ise sıradaki istasyonla devam eder.
  • Datablok 1 bayt 0 (D1.B0) gönderilen sorgudaki istasyon adresidir. Kod içerisinde diğer cihazı okumak için INC_UI (Artırma) komutu ile istasyon adresi artırılır. En büyük istasyon adresi olan 14’ten büyük olduğunda ise en küçük istasyon adresi olan 1 set edilir.
Data blok 1 Gönderilen
Data blok 2 Alınan
Data blok 3 Haberleşme hataları
Data blok 4 okunan değerler
  • Data blok 1 gönderdiğimiz baytları görebilirsiniz. Bayt 0 istasyon adresi olup her cihaz için farklıdır.
  • Data blok 2’de slave cihazdan gelen cevaplar vardır. Value 1 ve Value 2 okunan değerlerdir. PLC kodu ile okunan bu değerler Data blok 4 içerisinde ilgili istasyon için ayrına yere transfer edilir. PLC kodunda bu işlem için FIELD_W komutu kullanılmıştır.
  • Data blok 3 ise cihazların haberleşme hatalarını gösterir. Haberleşme başarılı olduğunda 0 başarısız olduğunda 1 olacaktır.
  • Bu plc kodunu https://www.fultek.com.tr/Download/Modbus_14_Station buradan indirebilirsiniz.

No Responses to “PLC Modbus Master”

Trackbacks/Pingbacks

  1. Modbus Master-Slave - PLC | HMI | SCADA | SOFTWARE | FULTEK LTD - […] Fulmatic 7 PLC’lerde Modbus Master kodu için buraya tıklayınız. […]

Leave a Reply