Bu eğitim, bir RevPi temel modülünün, bağımlı cihazlarla bağlantı ve iletişim kurmak için Modbus TCP Master Modülü olarak nasıl kullanılacağını açıklamaktadır. Modbus TCP protokolünü kullanarak endüstriyel iletişim için bir RevPi sistemi kurmak için adım adım kılavuz sağlar. Bu eğitim, Revolution Pi sistemiyle Modbus TCP iletişimini yapılandırmak ve kullanmak isteyen endüstriyel otomasyon profesyonelleri, IoT geliştiricileri ve meraklıları için tasarlanmıştır. RevPi'yi Modbus TCP Master Modülü olarak kullanmak, sensörler, aktüatörler veya diğer endüstriyel ekipmanlar gibi cihazların ağ ortamında kontrol edilmesi veya izlenmesi gereken durumlar için idealdir.
Ön koşullar #
Donanım
✓ RevPi temel modülü
✓ Slave cihaz(lar)
✓ RJ45 konnektörlü eşleşen kablolar
✓ İnternet bağlantısı
Yazılım
✓ Modern web tarayıcısı (örneğin Google Chrome veya Mozilla Firefox).
Sistem Kurulumu
Şunları sağlayın:
✓ RevPi temel modülü ve slave cihazlar aynı ağ üzerinde yer almaktadır.
✓ Tüm slave cihazların IP adresleri üreticinin talimatlarına göre belirlenip belgelendirilmektedir.
✓ Her slave cihazın kendine özgü bir IP adresi vardır.
|
Not
|
RevPi Bookworm Görüntüsünden (08/2025)'den itibaren Modbus sunucusunun varsayılan portlarına izin vermek için RevPi'deki güvenlik duvarının da etkinleştirilmesi gerekir: ▷ Cockpit'teki güvenlik duvarı ayarlarına revpi-modbus-default servisini ekleyin, bakınız Güvenlik Duvarı. |
Adım 1: Donanımı Kurma #
▷ Slave cihazları RJ45 jakı aracılığıyla RevPi'ye bağlayın.
▷ Tüm slave cihazların IP adreslerini ve portlarını not edin.
|
Not
|
Aynı porttaki birden fazla slave cihaza aynı IP adresini atamaktan kaçının, çünkü bu iletişim hatalarına neden olur. |
Adım 2: PiCtory'de Modbus TCP Master'ı Yapılandırma #
▷ PiCtory'yi başlatın.
▷ ATemel modülü ve sanal Modbus TCP Master'ı yapılandırmanıza ekleyin, bkz. Aygıtları Düzenle.
▷ Device Catalog'dan temel modülü sanal DIN rayına sürükleyin.
▷ Device Catalog'da Virtual Devices klasörünü açın.
▷ Modbus TCP Master'ı sanal DIN rayındaki temel modüle sürükleyin.
❯ Modbus TCP Master artık yapılandırmada görünecektir
▷ Modbus TCP Master'ı yapılandırın, bakınız Girişleri ve Çıkışları Yapılandırma
▷ Yapılandırmada Modbus TCP Master'ı seçin.
▷ Device Data penceresinde, daha kolay başvuru için isteğe bağlı olarak uygun I/O adlarını atayın, örneğin Modbus_Input_1.
▷ Value Editor'ü açın ve aşağıdaki parametreleri yapılandırın:
-
slave_IP_address: Modbus TCP slave'inin IP adresi.
-
slave_tcp_port: Varsayılan değer, Modbus spesifikasyonunda belirtildiği gibi
502'dir. Gerekirse bu değiştirilebilir.
▷ Save the configuration and restart the driver to apply the changes.
Adım 3: Modbus Komutlarını Ayarlama #
Genişletilmiş Verileri Açma
▷ Yapılandırmada Modbus TCP Master'ın context menüsünü açın.
▷ Komut yapılandırma arayüzünü açmak için Extended Data'yi seçin.
Modbus Komutlarının Eklenmesi
▷ Aşağıdaki parametreleri kullanarak komutları yapılandırın:
-
Birim Kimliği: Bu adres için slave'in kılavuzuna bakın. Slave adresi yoksayarsa
255kullanın. -
Fonksiyon Kodu: Desteklenen kodlardan birini seçin:
-
READ_COILS: Tek bitleri oku. -
READ_DISCRETE_INPUTS: Tek giriş bitlerini oku. -
READ_HOLDING_REGISTERS: 16-bit registers oku. -
READ_INPUT_REGISTERS: 16-bit input registers oku. -
WRITE_SINGLE_COIL: Tek bir bit yaz. -
WRITE_SINGLE_REGISTER: Bütün bir kaydı yaz. -
WRITE_MULTIPLE_COILS: Ardışık bitleri yaz. -
WRITE_MULTIPLE_REGISTERS: Ardışık kayıtları yaz.
-
-
Register Address: Erişim sağlanacak Modbus kayıt veya bit adresini tanımlayın.
-
Quantity of Registers: Okunacak/yazılacak kayıt veya bit sayısı.
-
Action Interval: Komutun gönderilmesi için gereken zaman aralığı (milisaniye).
-
Device Value: RevPi işlem görüntüsündeki değişkenin adı.
|
Not
|
0 tabanlı adresleme kullanan aygıtlar için yapılandırma sırasında kayıt adresini 1 artırın. |
Yapılandırmayı Kaydetme
▷ Ayarları kaydetmek için öğesini seçin.
▷ Yapılandırmayı etkinleştirmek için öğesini seçin.
Adım 4: Sorun Giderme #
İletişim hataları oluşursa, hata kodları için Modbus_Master_Status kaydını kontrol edin. Yaygın kodlar şunlardır:
-
0x10: Aygıt bulunamadı (belki kablolama sorunu). -
0x11: Cihaz yanıt vermiyor veya kayıt adresi geçersiz. -
110: Bağlantı zaman aşımına uğradı.
Olası hata kaynakları:
-
Uygunsuz kablolama
-
Uygunsuz yapılandırma
-
Çakışan IP adresleri
-
Çakışan Modbus komutları
Daha fazla ayrıntı için resmi Modbus spesifikasyonuna bakın.
Modbus Master Görev Yönetimi ve Hata Kodları
Modbus ana cihazı 32 adede kadar görevi yönetebilir. Her görevin status ve status reset için karşılık gelen bir kaydı vardır.
Bir görevde hata oluşursa, hata kodu Modbus kaydına Modbus_Action_Status[1 … 32]_ yazılır.
Hata, 1 değeri elle ilgili sıfırlama kaydı Action_Status_Reset_[1 … 32]'na yazılana kadar bu kayıtta kalır.
Hata kodları Modbus spesifikasyonunda tanımlanan Modbus istisna kodlarına karşılık gelir.
Hata Kodları #
| Hata Kodu | İsim | Tanım |
|---|---|---|
1 |
ILLEGAL FUNCTION |
Kullanılan fonksiyon koduna izin verilmiyor. Doğru fonksiyon kodunu kullanıp kullanmadığınızı kontrol edin. |
2 |
ILLEGAL DATA ADDRESS |
Kullanılan Modbus kayıt adresi geçerli değil. Kayıt, yazmaya karşı korumalı veya geçersiz. Kayıt adresini kontrol edin. |
3 |
ILLEGAL DATA VALUE |
Kullanılan veri değerlerinin en az bir kısmı geçersiz. Örneğin, çok fazla kayıt girmiş olabilirsiniz. Değerlerinizi kontrol edin. |
13 |
INVALID DATA |
Slave eksik bir pakete yanıt verdi. Bu, bir bağlantı kesintisinden sonra olabilir. Kablolamanızı kontrol edin. |
110 |
CONNECTION TIMED OUT |
Slave yeterince hızlı yanıt vermiyor veya hiç yanıt vermiyor. Yapılandırmanızı ve kablolamanızı kontrol edin. |
Örnek: Modbus TCP Master olarak RevPi ile Sıcaklık Ölçümleri #
Donanım Kurulumu
Bu örnekte Inveo NANO TEMP sıcaklık sensörü Modbus slave'i olarak görev yapmaktadır.
Yapılandırma Ayrıntıları
▷ Aşağıdaki veriler için sensörün kullanım kılavuzuna bakın:
| Parametre | Değer |
|---|---|
IP Address |
|
Port |
|
Modbus Register |
|
Modbus Function |
|
Slave Address |
|
Modbus Komutlarını Tanımlama
▷ Extended Data arayüzünde şunları yapılandırın:
-
Slave Addr.:
1 -
Function Code:
READ_HOLDING_REGISTERS -
Register Addr.:
4004 -
Quantity of Registers:
1 -
Action Interval (ms):
1000 -
Device Value:
Input_Word_1
Veri Sorgulama
▷ Yapılandırmayı kaydedin ve sürücüyü resetleyin.
▷ Bir komut satırı açın ve şunu çalıştırın:
piTest -r Input_Word_1
❯ Slave verilerini alırsınız:
2 Byte-Value of Input_Word_1: 284 dez (=011c hex)
284 değeri 28,4 °C'ye karşılık gelir.