Ana içeriğe geç

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şımaModbus TCP.
Varsayılan port502
Sürücü başına cihazSı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ü tipiModbus 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.

Name, Description, Active, Gap tolerance regs, Host, Max block regs, Port, Set invalid on disconnect, Timeout (ms) ve Unit ID ile Modbus TCP cihaz formu.

ParametreVarsayılanAralıkAnlamı
Host— (zorunlu)IP adresi ya da host adıCihazın ya da Modbus ağ geçidinin adresi. Host adı DNS ile çözülür.
Port5021–65535Cihazın TCP portu.
Unit ID10–255Modbus birim kimliği (slave adresi). Cihazlar genellikle 1–247 kullanır; ağ geçidinin arkasında cihazı seçer.
Timeout (ms) (Zaman aşımı)10001 ve üstüSürücünün okumada ve yazmada her cevabı ne kadar beklediği.
Gap tolerance regs (Boşluk toleransı)100–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)1251–125Tek okuma isteğindeki en çok register (işlev kodu 3 ve 4).
Set invalid on disconnect (Kopunca geçersiz yap)açıkaçı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.

Station.OutletFlow sinyalinin Value source sekmesi: Register Holding register, Address (0-based) 1, FC read 3, Quantity 1, Word order (device), Data kind UInt16.

AlanDeğerlerAnlamı
RegisterHolding register, Input register, Coil, Discrete inputRegister tablosu.
Address (0-based) (Adres, 0 tabanlı)0–65535Cihaza gönderildiği hâliyle adres. Holding register 40001, 0 adresidir.
FC read (FC okuma)3, 4, 1, 2Okuma 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 swapped32 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 fieldRegister'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ÖrnekSonuç
Register sözcüğü ve 0 tabanlı adresholding 1, input 0, coil 0, discrete 5Holding register 1, input register 0, coil 0, discrete input 5
Kısa sözcüklerhr, ir, co, di ya da 4x, 3x, 0x, 1xYukarıdaki sözcüklerle aynı
1 tabanlı Modbus numarası, 5 ya da 6 hane40001, 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 endianD 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üRegisterDeğer
Bit1 coil ya da discrete inputAçık ya da kapalı
Int16, UInt161İşaretli ya da işaretsiz 16 bit tamsayı
Int32, UInt32, Float32232 bit tamsayı ya da kayan noktalı sayı
Int64, UInt64, Float64464 bit tamsayı ya da kayan noktalı sayı
Text (Metin)QuantityMetin, register başına iki karakter
Bit field (Bit alanı)1Bir 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 register6 Tek register yaz
32 ve 64 bitlik değerler, metin16 Ç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​

DurumSinyallerin kalitesi
Okuma başarılıGood
Cevap çok kısa ya da çevrilemiyorO 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 06Bağ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.
BelirtiOlası neden
Cihazın tüm sinyalleri Bad · Not connectedYanlış host ya da port, cihaz kapalı, güvenlik duvarı ya da birim Timeout (ms) içinde cevap vermiyor
Bir sinyal Bad, diğerleri iyiAdres 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şiyorWord order yanlış
Değer bir register kaymışCihaz belgesi 1'den sayıyor: adresin 1 eksiğini kullanın
Komut Signal not found ile reddediliyorSinyal yazılabilir değil; sinyalde Access'i rw yapın

Desteklenen işlev kodları​

KodİşlevDestek
1Coil okuEvet
2Discrete input okuEvet
3Holding register okuEvet
4Input register okuEvet
5Tek coil yazEvet
6Tek register yazEvet
15Çoklu coil yazEvet, tekil değerlerde kullanılmaz
16Çoklu register yazEvet

Sürücü 01–08, 10 ve 11 istisna kodlarını tanır ve adlarını hata metninde gösterir.