RevPi'nizi bir Modbus sunucusu (master) veya bir Modbus istemcisi (slave) olarak kullanabilirsiniz. Bu tür iletimler için, ilgili sanal aygıtlar PiCtory aracılığıyla arayüz olarak kullanılabilir.
|
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, bkz. Güvenlik Duvarı. |
Giriş ve çıkış verileri için sanal cihaz başına en fazla 32 kayıt kullanılabilir. Ek giriş ve çıkışlar için en fazla 30 Modbus sanal cihazı yapılandırılabilir.
-
ModbusTCP Slave
-
ModbusTCP Slave (512 I/O kelimesi)
-
ModbusRTU Slave
-
ModbusRTU Slave (512 I/O kelimesi)
-
ModbusTCP Master
-
ModbusTCP Master (150 giriş kelimesi)
-
ModbusRTU Master
-
ModbusRTU Master (150 giriş kelimesi)
Diğer saha veri yollarıyla karşılaştırıldığında Modbus, veri alışverişi için basit bir alternatiftir. Modbus protokolü açıktır ve sunucu-istemci iletişimine dayanır. Prensipte, ağdaki her katılımcı veri gönderebilir. Ancak pratikte iletişim her zaman sunucu tarafından başlatılır.
İletim Türleri (seçim) #
-
Modbus RTU (Uzak Terminal Ünitesi):
-
Seri iletişim
-
Veriler ikili biçimde iletilir
-
-
Modbus TCP (İletim Kontrol Protokolü)
-
TCP/IP ağları için Genişletilmiş Modbus RTU
-
Modbus Server #
-
Modbus istemcilerinden veri talep eder
-
Herhangi bir veri sağlamadığı için istemci gibi davranır
Modbus Client #
-
Veri sağlar
-
Veri sağladığı için sunucu görevi görür
Modbus Register #
Modbus kaydı, Modbus protokolünde veri depolama ve iletimi için kullanılan 16 bitlik (2 bayt) bir bellek alanıdır. Kayıtlar, 0 ile 65.535 (imzasız) arasındaki değerleri depolayabilir.
Mevcut kayıtlar cihaza özeldir. Kayıtlar 0 veya 1'den başlayarak sayılır.
Modbus Veri Modelindeki Kayıt Türleri #
Modbus, farklı erişim haklarına sahip dört bellek alanı tanımlar.
Input Registers (40001 … 49999) #
-
Okunabilir ve yazılabilir
-
Ayar noktalarının ve yapılandırma verilerinin depolanması
-
Fonksiyon kodu 03 (okuma), 06/16 (yazma)
Input Registers (30001 … 39999) #
-
Salt okunur
-
Ölçülen değerler için sensör verileri
-
Fonksiyon kodu 04 (okuma)
Coils (00001 … 09999) #
-
Bireysel bitler, okunabilir ve yazılabilir
-
Dijital çıkışlar (açık/kapalı durumları)
Discrete Inputs (10001 … 19999) #
-
Bireysel bitler, salt okunur
-
Dijital girişler
Adresleme #
Kayıt adreslemesi bağlama göre değişir:
-
Protocol level: 0-based (0 … 65535)
-
User level: 1-based with prefix (örneğin, ilk tutma kaydı için 40001)
Örnek:
40001 nolu tutma kaydı protokol düzeyine adres 0 olarak aktarılır.
Veri Yorumlama #
Bir kayıt yalnızca 16 bit depoladığından, daha büyük veri türleri birkaç kayıt arasında dağıtılır:
-
32-bit float: 2 ardışık kayıt
-
64-bit double: 4 ardışık kayıt
-
Strings: Kayıt başına veya paketlenmiş bir karakter (kayıt başına 2 karakter)
Bayt Sırası #
Bir kayıttaki ve birden fazla kayıttaki baytların yorumlanması değişebilir:
-
Big-endian: Önce yüksek dereceli bayt (Modbus standardı)
-
Little-endian: Düşük sıralı bayt ilk
-
For multi-register values, ek olarak: Kelime sırasına dikkat edin
Örnek:
-
Sıcaklık değeri: 23,5 °C
-
Ölçekleme: Değer × 10 depolandı
-
Register içeriği: 235 (0x00EB)
-
İletim: [0x00][0xEB]
Fonksiyonlar veya Hizmetler #
-
Verilere erişimi uygulayın
-
Ayrım
-
Okuma
-
Yazma
-
İkisi birden
-
-
Veri genişliği
-
Data word (2 bytes)
-
Bit
-
-
Hangi işlevlerin uygulanacağı cihaza bağlıdır
Sorgu Verileri #
▷ Modbus sunucusu ile Modbus istemcisi arasındaki veri bağlantısını yapılandırın.
-
Modbus TCP – Ağ yapılandırması (statik IP adresleri, ağ maskesi)
-
Modbus RTU – Seri arayüz (baud hızı, veri bitleri, eşlik, durdurma bitleri)
▷ Modbus sunucusunda istemci tarafından sağlanan ilgili işlevi çağırın.
Modbus RTU İstemci Kimliği #
Modbus RTU'da istemci kimliği zorunludur ve aşağıdaki işlevlere sahiptir:
-
Veriyolundaki her cihazın 1 - 247 değer aralığındaki benzersiz adreslenmesi.
-
Master'ın slave'lere adreslemesini sağlar.
-
Aynı veri yolundaki her cihazın benzersiz bir istemci kimliğine sahip olması gerekir.
-
ID 0 yayın mesajları için ayrılmıştır.
Modbus TCP Birim Kimliği #
Birim kimliği, doğrudan cihaz tanımlaması veya ağ geçidi adreslemesi için kullanılır:
-
Birim kimliği, IP adresi üzerinden doğrudan adreslenen belirli bir Modbus TCP cihazını tanımlar. Bu durumda, birim kimliği işlevsel olarak istemci kimliğine karşılık gelir.
-
Veya birim kimliği, Modbus TCP-RTU ağ geçidinin arkasındaki cihazları adresler. Aşağıdakiler geçerlidir: 1-247 birim kimlikleri, arkalarındaki Modbus RTU cihazlarını adreslerken, 255 birim kimliği ağ geçidinin kendisini adresler.
Doğru ayar cihaz türüne bağlıdır: Doğrudan Modbus TCP cihazları için cihaza özgü birim kimliği kullanılır; ağ geçidi yapılandırmaları için hedef cihazın birim kimliği (1 … 247) veya ağ geçidinin kendisi için 255 kullanılır.
Modbus Fonksiyon Kodları (örnekler) #
Kod |
Fonksiyon |
0x01 |
Read coils |
0x02 |
Read discrete inputs |
0x03 |
Read holding registers |
0x04 |
Read Input Registers |
0x05 |
Write Single Coil |
0x06 |
Write Single Register |
Modbus RTU için gerekli bilgilerin örneği:
-
Serial interface parameters: 9600 baud, 8 data bits, 1 stop bit, no parity
-
Client address: 1
-
Modbus register: 1000
-
Modbus function: READ_INPUT_REGISTER
Modbus TCP için gerekli bilgilerin örneği:
-
IP address of the client: 192.168.0.103
-
Unit ID: 255
-
Client register: 1000
-
Modbus function: READ_HOLDING_REGISTER