Modbus TCP
Modbus TCP sürücüsü Modbus TCP cihazlarının register'larını ve coil'lerini okur ve yazar: PLC'ler, sayaçlar, sürücüler (motor) ve Modbus ağ geçitleri. Tüm sürücülerin ortak yanları için bkz. Sürücüler nasıl çalışır.
Protokol ve rol
| Rol | İstemci (master). Cihazlara YTCC bağlanır; Modbus bağlantısı kabul etmez. |
| Taşıma | Modbus TCP. |
| Varsayılan port | 502 |
| Sürücü başına cihaz | Sınırsız. Aynı host ve portu kullanan cihazlar, örneğin bir Modbus ağ geçidinin arkasındaki birkaç birim, tek TCP bağlantısını paylaşır. |
| Sürücü tipi | Modbus TCP (modbus_tcp) |
Cihaz parametreleri
Bunları Drivers → devices görünümünde cihaz üzerinde ayarlayın (bkz. Sürücü ve cihaz ekleme). Boş kutu, içinde gösterilen varsayılanı kullanır.

| Parametre | Varsayılan | Aralık | Anlamı |
|---|---|---|---|
| Host | — (zorunlu) | IP adresi ya da host adı | Cihazın ya da Modbus ağ geçidinin adresi. Host adı DNS ile çözülür. |
| Port | 502 | 1–65535 | Cihazın TCP portu. |
| Unit ID | 1 | 0–255 | Modbus birim kimliği (slave adresi). Cihazlar genellikle 1–247 kullanır; ağ geçidinin arkasında cihazı seçer. |
| Timeout (ms) (Zaman aşımı) | 1000 | 1 ve üstü | Sürücünün okumada ve yazmada her cevabı ne kadar beklediği. |
| Gap tolerance regs (Boşluk toleransı) | 10 | 0–65535 | İki sinyal arasında, sürücü onları ayrı isteklerle okumadan önce kaç kullanılmayan register bulunabileceği. |
| Max block regs (En büyük blok) | 125 | 1–125 | Tek okuma isteğindeki en çok register (işlev kodu 3 ve 4). |
| Set invalid on disconnect (Kopunca geçersiz yap) | açık | açık / kapalı | Bağlantı kopunca cihazın tüm sinyallerini Bad · Not connected yapar. Kapalıyken sinyaller son değerini ve kalitesini korur. |
Host, Port, Unit ID, Timeout (ms) ya da Set invalid on disconnect değişince o cihaz yeniden bağlanır. Gap tolerance regs ya da Max block regs değişikliği bağlantı kopmadan geçerli olur.
Cihazları dosyadan içe aktarırken host, port, unit ID ve zaman aşımı dosyadan gelir.
Sinyal adresi
Adresi sinyalin Value source (Değer kaynağı) sekmesinde, Address — Modbus TCP altında ayarlayın.

| Alan | Değerler | Anlamı |
|---|---|---|
| Register | Holding register, Input register, Coil, Discrete input | Register tablosu. |
| Address (0-based) (Adres, 0 tabanlı) | 0–65535 | Cihaza gönderildiği hâliyle adres. Holding register 40001, 0 adresidir. |
| FC read (FC okuma) | 3, 4, 1, 2 | Okuma işlev kodu: 3 holding register, 4 input register, 1 coil, 2 discrete input. |
| FC write (FC yazma) | boş | Boş bırakın. Değer okunan adrese yazılır; bkz. Yazma. |
| Quantity (Adet) | 1 ve üstü | Değerin kapladığı register sayısı. |
| Word order (Kelime sırası) | (device), Big endian, Little endian, Word swapped | 32 ya da 64 bitlik bir değerin register sırası. Aşağıya bakın. |
| Data kind (Veri türü) | (from signal type), Bit, Int16 … Float64, Text, Bit field | Register'ların nasıl okunduğu. Bkz. Veri türleri. |
Read now (Şimdi oku) adresi cihazdan bir kez okur ve değeri ya da hatayı gösterir; hiçbir şey yazılmaz. Adresi kurarken denetlemek için kullanın.
İçe aktarma dosyalarında adres söz dizimi
Sinyalleri dosyadan içe aktarırken (bkz. Excel ya da CSV ile içe ve dışa aktarma) adresi address sütununa şu biçimlerden biriyle yazın:
| Biçim | Örnek | Sonuç |
|---|---|---|
| Register sözcüğü ve 0 tabanlı adres | holding 1, input 0, coil 0, discrete 5 | Holding register 1, input register 0, coil 0, discrete input 5 |
| Kısa sözcükler | hr, ir, co, di ya da 4x, 3x, 0x, 1x | Yukarıdaki sözcüklerle aynı |
| 1 tabanlı Modbus numarası, 5 ya da 6 hane | 40001, 400001, 30010, 00001, 10001 | İlk hane: 4 holding, 3 input, 0 coil, 1 discrete; kalanın 1 eksiği adrestir |
200 gibi yalın bir sayı reddedilir. İçe aktarma okuma işlev kodunu ve adedi register'dan ve veri tipinden belirler
(32 bitlik tiplerde 2, 64 bitlik tiplerde 4 register).
Kelime sırası
| Kelime sırası | 32 bitlik A B C D değerinin bayt sırası |
|---|---|
| Big endian (varsayılan) | A B C D, Modbus standardı |
| Word swapped (Kelime takaslı) | C D A B |
| Little endian | D C B A |
(device) big endian kullanır. Dördüncü sıra, bayt takaslı (B A D C), Advanced: raw params (JSON) içinde
ayarlanır ("word_order": "BADC").
Veri türleri
| Veri türü | Register | Değer |
|---|---|---|
| Bit | 1 coil ya da discrete input | Açık ya da kapalı |
| Int16, UInt16 | 1 | İşaretli ya da işaretsiz 16 bit tamsayı |
| Int32, UInt32, Float32 | 2 | 32 bit tamsayı ya da kayan noktalı sayı |
| Int64, UInt64, Float64 | 4 | 64 bit tamsayı ya da kayan noktalı sayı |
| Text (Metin) | Quantity | Metin, register başına iki karakter |
| Bit field (Bit alanı) | 1 | Bir register'ın birkaç biti, sayı olarak. İlk biti ve bit sayısını Advanced: raw params (JSON) içinde ayarlayın (bit_offset, bit_count). |
(from signal type) (sinyal tipinden) sinyalin veri tipini kullanır. Sinyalde ayarlı ölçek ve ofset okumadan sonra uygulanır (değer = ham × ölçek + ofset); ham register değeri sinyalin ham değeri olarak kalır.
Filter and deadband (Süzgeç ve ölü bant) altında küçük değişiklikleri bastırabilir (Deadband), iki değer arasına Min interval (ms) koyabilir, değeri yumuşatabilir ve sıçramaları reddedebilirsiniz. Bu ayarlar tüm sürücülerde geçerlidir.
Okuma
Sürücü tarama yapar. Bir cihazın sinyallerini işlev koduna ve tarama periyoduna göre gruplar, komşu register'ları tek istekle okur: en çok Max block regs register (blokta 32 ya da 64 bitlik bir değer varsa 120) ve en çok 2000 coil ya da discrete input, hiçbir boşluk Gap tolerance regs'ten büyük olmadıkça. Bağlantı açılınca her bloğu bir kez okur; cihaz ilk iyi cevaptan sonra bağlı sayılır.
Her bloğun ne sıklıkla okunacağını sinyalin tarama sınıfı belirler; bkz. Değerler ne sıklıkla okunur.
Yazma
Access'i Read / Write ya da Write only olan bir sinyal yazılabilir. Sürücü işlev kodunu değerden seçer:
| Değer | İşlev kodu |
|---|---|
| Coil (Bit) | 5 Tek coil yaz |
| 16 bit register | 6 Tek register yaz |
| 32 ve 64 bitlik değerler, metin | 16 Çoklu register yaz |
- Değer okunan adrese yazılır; bu yüzden yazılabilir bir sinyale Register, Address ve FC read verin.
- Veri türü Bit olan sinyal coil olarak yazılır (işlev kodu 5). Onu ancak Register'ı Coil ise yazılabilir yapın.
- Bit, Int16 … Float64 ve Text değerleri yazılabilir.
- Cihaz bağlı değilse komut hemen reddedilir. Çevrimdışı olan bir cihazı bekleyen komut iptal edilir, sonra gönderilmez.
- Her cihaz en çok 4 bekleyen komut kabul eder; fazlası Previous command in progress (Önceki komut sürüyor) olarak reddedilir.
- Cihaz istisnayla cevap verirse komut Device returned an error (Cihaz hata döndürdü) ile reddedilir; bağlantı sürer.
- Sinyal yazdıktan sonra geri okumaya ayarlıysa sürücü başarılı yazmanın hemen ardından değeri yeniden okur.
Operatörlerin komutu nasıl gönderip onayladığı için bkz. Komut gönderme.
Kalite eşlemesi
| Durum | Sinyallerin kalitesi |
|---|---|
| Okuma başarılı | Good |
| Cevap çok kısa ya da çevrilemiyor | O sinyal için Bad |
| İstisna 02 (geçersiz veri adresi) | Sürücü, reddedilen adresi bulana kadar isteği böler; o sinyal Bad, diğerleri normal okunur |
| Diğer istisnalar (01, 03, 04 …) | O isteğin sinyalleri için Bad; bağlantı sürer |
| Zaman aşımı, bağlantı hatası, istisna 05 ya da 06 | Bağlantı kapatılıp yeniden açılır; Set invalid on disconnect açıksa cihazın tüm sinyalleri Bad · Not connected |
Değeri kalitesiyle birlikte okuyun. Kalitesi Bad ya da Bad · Not connected olan değeri kullanmayın; bkz. Değerleri ve durumları okuma.
Zaman damgaları
Modbus bir değerin zamanını taşımaz. Her iki zaman damgası için değerin YTCC'ye geliş zamanı kullanılır; sinyal detayı Time source: protocol carries no time (Zaman kaynağı: protokol zaman taşımıyor) gösterir.
Tanılama
- Cihaz durumu. Cihaz ilk iyi cevaptan sonra bağlı, bağlantı kopunca bağlı değil olarak görünür. Geçersiz ayarlı bir cihaz bağlanmaz ve nedenini gösterir.
- Haberleşme alarmı. Bağlantısız 5 saniyeden sonra cihaz başına bir alarm; bkz. Sürücüler nasıl çalışır.
- Read now. Value source sekmesinde Read now sinyalin son okuma hatasını gösterir, örneğin Modbus exception 02 — Illegal data address (holding 102, unit 3, FC3) ya da Timeout — no response from 10.0.0.30:502 (unit 1) within 1000 ms.
- Sinyal detayı. Çalışma ekranında sinyal detayı sürücüyü, cihazı ve protokol adresini gösterir, örneğin holding 1. Bkz. Bir sinyalin detaylarına bakma.
| Belirti | Olası neden |
|---|---|
| Cihazın tüm sinyalleri Bad · Not connected | Yanlış host ya da port, cihaz kapalı, güvenlik duvarı ya da birim Timeout (ms) içinde cevap vermiyor |
| Bir sinyal Bad, diğerleri iyi | Adres cihazın register haritasının dışında (istisna 02) ya da adet yanlış |
| 32 bitlik değer yanlış görünüyor ama değişiyor | Word order yanlış |
| Değer bir register kaymış | Cihaz belgesi 1'den sayıyor: adresin 1 eksiğini kullanın |
| Komut Signal not found ile reddediliyor | Sinyal yazılabilir değil; sinyalde Access'i rw yapın |
Desteklenen işlev kodları
| Kod | İşlev | Destek |
|---|---|---|
| 1 | Coil oku | Evet |
| 2 | Discrete input oku | Evet |
| 3 | Holding register oku | Evet |
| 4 | Input register oku | Evet |
| 5 | Tek coil yaz | Evet |
| 6 | Tek register yaz | Evet |
| 15 | Çoklu coil yaz | Evet, tekil değerlerde kullanılmaz |
| 16 | Çoklu register yaz | Evet |
Sürücü 01–08, 10 ve 11 istisna kodlarını tanır ve adlarını hata metninde gösterir.