Proxus, toplu okuma ve otomatik bayt takası (byte swapping) yapabilen yüksek performanslı bir Modbus TCP sürücüsü sağlar.
Desteklenen Protokol Varyantları
| Protokol Tipi | Açıklama |
|---|---|
Modbus_Tcp | Standart Modbus TCP |
Modbus_Rtu_OverTcp | TCP üzerinden kapsüllenmiş Modbus RTU |
ModbusAscii_OverTcp | TCP üzerinden kapsüllenmiş Modbus ASCII |
Bağlantı Parametreleri
Temel Ayarlar
| Parametre | Tip | Zorunlu | Varsayılan | Açıklama |
|---|---|---|---|---|
| Host | string | Evet | - | PLC veya Gateway'in IPv4 adresi |
| Port | int | Hayır | 502 | Standart Modbus TCP portu |
| PollingInterval | int | Hayır | 1000 | Milisaniye cinsinden okuma döngüsü aralığı |
| ConnectTimeout | int | Hayır | 3000 | Bağlantı zaman aşımı (ms) |
| ReceiveTimeout | int | Hayır | 3000 | Yanıt zaman aşımı (ms) |
Modbus'a Özgü Ayarlar
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
| Station | byte | 1 | Ünite Kimliği / Slave ID (1-255) |
| AddressStartWithZero | bool | true | 0 tabanlı adresleme kullan |
| DataFormat | enum | ABCD | Bayt sırası (ABCD, DCBA, BADC, CDAB) |
| IsStringReverse | bool | false | String bayt sırasını tersine çevir |
| IsCheckMessageId | bool | true | Yanıt mesaj kimliğini doğrula |
| Crc16CheckEnable | bool | true | CRC16 kontrolünü etkinleştir (sadece RTU) |
Station parametresi (Ünite Kimliği), bir Modbus gateway üzerinden birden fazla cihaza bağlanırken kritiktir. Gateway arkasındaki her cihazın benzersiz bir İstasyon Kimliği vardır.
Veri Sayfası (Datasheet) Adreslerini Dönüştürme
Cihaz veri sayfaları genellikle farklı adresleme kuralları kullanır. Bunları Proxus formatına nasıl dönüştüreceğiniz aşağıda açıklanmıştır:
Yaygın Veri Sayfası Formatları
| Veri Sayfası Formatı | Anlamı | Proxus Formatı |
|---|---|---|
40001 | Holding Register 1 | x=3;0 |
40100 | Holding Register 100 | x=3;99 |
30001 | Input Register 1 | x=4;0 |
30100 | Input Register 100 | x=4;99 |
00001 | Coil 1 | x=1;0 |
10001 | Discrete Input 1 | x=2;0 |
HR100 / 4x100 | Holding Register 100 | x=3;99 |
IR50 / 3x50 | Input Register 50 | x=4;49 |
Çoğu cihaz veri sayfası 1-tabanlı adresleme (ilk kayıt = 1) kullanır, ancak Modbus protokolü 0-tabanlı adresleme (ilk kayıt = 0) kullanır.
Veri sayfası adreslerinden her zaman 1 çıkarın:
- Veri sayfası
40100diyorsa → Proxus:x=3;99 - Veri sayfası
30050diyorsa → Proxus:x=4;49
Dönüşüm Formülü
Proxus Adresi = Veri Sayfası Adresi - Taban - 1
Taban Değerleri:
40001 serisi → Taban = 40000 (Holding Registers, FC03)
30001 serisi → Taban = 30000 (Input Registers, FC04)
10001 serisi → Taban = 10000 (Discrete Inputs, FC02)
00001 serisi → Taban = 0 (Coils, FC01)Gerçek Dünya Örnekleri
| Cihaz/Sensör | Veri Sayfası | Proxus Adresi | Veri Tipi |
|---|---|---|---|
| Enerji Analizörü - Voltaj | 30001 | x=4;0 | Float |
| Enerji Analizörü - Akım | 30003 | x=4;2 | Float |
| VFD - Motor Hızı | 40201 | x=3;200 | UShort |
| VFD - Çalışma Komutu | 00001 | x=1;0 | Bool |
| Sıcaklık Sensörü | 30101 | x=4;100 | Short |
Adres Sözdizimi
Proxus, tüm Modbus fonksiyon kodları için esnek adres formatlarını destekler.
Temel Format
En basit format sadece kayıt adresidir:
{adres}Örnek: 100 varsayılan fonksiyon kodunu (Holding Registerlar için 03) kullanarak 100. kaydı okur.
Genişletilmiş Format
İstasyon kimliği ve fonksiyon kodu üzerinde açık kontrol için:
s={istasyon};x={fonksiyon};{adres}| Bileşen | Açıklama | Değerler |
|---|---|---|
s= | İstasyon/Slave ID | 1-255 |
x= | Fonksiyon Kodu | 1, 2, 3, 4 |
w= | Yazma Fonksiyon Kodu (opsiyonel) | 5, 6, 15, 16 |
{adres} | Kayıt adresi | 0-65535 |
Örnekler
| Adres | Açıklama |
|---|---|
100 | Kayıt 100, varsayılan fonksiyon kodu |
x=3;100 | Holding Register 100 (FC03) |
x=4;100 | Input Register 100 (FC04) |
s=2;100 | Slave ID 2 üzerindeki Kayıt 100 |
s=2;x=3;100 | Slave ID 2 üzerindeki Holding Register 100 |
s=5;x=4;500 | Slave ID 5 üzerindeki Input Register 500 |
Fonksiyon Kodları
| Kod | Alan | Erişim | Açıklama |
|---|---|---|---|
| 01 | Coils | Oku/Yaz | Ayrık çıkışlar (bitler) |
| 02 | Discrete Inputs | Sadece Oku | Ayrık girişler (bitler) |
| 03 | Holding Registers | Oku/Yaz | 16-bit kayıtlar |
| 04 | Input Registers | Sadece Oku | 16-bit giriş kayıtları |
Standart Notasyon Eşlemesi
Geleneksel 5 basamaklı veya 6 basamaklı Modbus notasyonunu tercih ederseniz:
| Notasyon | Fonksiyon Kodu | Proxus Karşılığı |
|---|---|---|
000001 - 009999 | FC01 (Coils) | x=1;0 |
100001 - 109999 | FC02 (Discrete Inputs) | x=2;0 |
300001 - 309999 | FC04 (Input Registers) | x=4;0 |
400001 - 409999 | FC03 (Holding Registers) | x=3;0 |
Belirsizliği önlemek için açık x={fonksiyon};{adres} formatını kullanın. Farklı satıcılar standart notasyonu farklı yorumlayabilir.
Veri Tipleri
Çoklu kayıt değerleri ardışık kayıtlardan otomatik olarak yeniden oluşturulur.
| Tip | Boyut | Kayıtlar | Açıklama |
|---|---|---|---|
| Bool | 1 bit | N/A | Coils veya Discrete Inputs |
| Short | 16 bit | 1 | İşaretli tamsayı |
| UShort | 16 bit | 1 | İşaretsiz tamsayı |
| Int | 32 bit | 2 | İşaretli 32-bit tamsayı |
| UInt | 32 bit | 2 | İşaretsiz 32-bit tamsayı |
| Long | 64 bit | 4 | İşaretli 64-bit tamsayı |
| ULong | 64 bit | 4 | İşaretsiz 64-bit tamsayı |
| Float | 32 bit | 2 | IEEE 754 tek hassasiyet |
| Double | 64 bit | 4 | IEEE 754 çift hassasiyet |
| String | Değişken | N | ASCII dizesi (uzunluk gerektirir) |
Bayt Sırası (Byte Order)
Farklı cihazlar çoklu kayıt değerleri için farklı bayt sıralaması kullanır. ByteOrder ayarını Cihaz Profilinde yapılandırın:
| Ayar | Açıklama | Örnek (0x12345678) |
|---|---|---|
ABCD | Big Endian | 12 34 56 78 |
DCBA | Little Endian | 78 56 34 12 |
BADC | Mid-Big Endian | 34 12 78 56 |
CDAB | Mid-Little Endian | 56 78 12 34 |
Float veya Int32 değerleri aşırı büyük, küçük veya anlamsız görünüyorsa, bayt sırası muhtemelen yanlıştır. Farklı ByteOrder ayarlarını deneyin.
Performans Özellikleri
Toplu Okuma (Batch Reading)
Sürücü, bitişik adresleri otomatik olarak tek istekte gruplar:
- Kayıtlar
100, 101, 102, 103→ Tek okuma isteği - 2 kayıttan büyük boşluklar grubu böler
- Ağ gidiş-dönüşlerini önemli ölçüde azaltır
Sorgulama Aralıkları
Farklı kayıtlar için farklı sorgulama hızları yapılandırın. Hızlı değişen değerler (örneğin motor hızı) 100ms'de sorgulanırken, yavaş değişen değerler (örneğin sıcaklık) 5000ms'de sorgulanabilir.
Endüstriyel Kullanım Örnekleri
Modbus, birden çok sektörde yaygın olarak kullanılan en çok yönlü sürücümüzdür:
- Üretim: Eski PLC'leri, VFD'leri (Değişken Frekanslı Sürücüler) ve basit IO bloklarını entegre etme.
- Enerji ve Altyapı: Güç sayaçlarından, güneş invertörlerinden ve batarya yönetim sistemlerinden gerçek zamanlı veri toplama.
- Madencilik: Çıkarma verimliliğini optimize etmek için havalandırma fanlarını, pompaları ve kırıcıları izleme.
Sorun Giderme
| Hata | Neden | Çözüm |
|---|---|---|
| Timeout | Cihaz yanıt vermiyor | IP, Port, İstasyon Kimliğini kontrol edin |
| Illegal Data Address | Kayıt mevcut değil | Cihaz kılavuzunda kayıt numarasını doğrulayın |
| Illegal Function | Fonksiyon kodu desteklenmiyor | Veri alanı için doğru fonksiyon kodunu kullanın |
| Gateway Path Unavailable | Yanlış İstasyon Kimliği | Gateway arkasındaki cihaz için Ünite Kimliğini doğrulayın |
| Timeout | PollingInterval çok kısa | PollingInterval'ı artırın veya ağ gecikmesini kontrol edin |
| Checksum Error | Gürültü veya yanlış ayarlar | Baud Hızı, Parite (RTU) ayarlarını doğrulayın veya paraziti kontrol edin |
Bayt sırası sorunları için Bayt Sıralama Sorunları bölümüne bakın. Adres dönüştürme için Modbus Adres Sözdizimi bölümüne bakın.
Resmi Kaynaklar
- Modbus Organizasyonu: Modbus Spesifikasyonları
- Uygulama Rehberi: TCP/IP Üzerinde Modbus Mesajlaşma