Modbus sürücüleri (TCP, RTU, ASCII)
Modbus TCP (Ethernet) ile Modbus RTU ve Modbus ASCII (RS-485 / RS-232 seri hat) cihazlarından bobin ve yazmaçları Modicon adresleriyle okumak ve yazmak; birim kimliği, bayt sırası ve seri port ayarları.
Ne zaman kullanılır
Üç Modbus sürücüsü vardır. Adresler, veri tipleri, bayt sırası ve okuma / yazma kuralları üçünde aynıdır; yalnız taşıma farklıdır:
| Sürücü | Ne zaman | Bağlantının adresi |
|---|---|---|
| Modbus TCP | Cihaz Ethernet üzerinden Modbus TCP sunucusu (ya da seri hattı Ethernet'e çeviren bir ağ geçidi var) | IP adresi, port 502 |
| Modbus RTU (seri) | Cihaz RS-485 / RS-232 hattında Modbus RTU konuşuyor (en yaygın seri biçim) | COM portu (COM3), port yok |
| Modbus ASCII (seri) | Cihaz seri hatta Modbus ASCII konuşuyor (çerçeve : ile başlar, CR LF ile biter) | COM portu, port yok |
Adresler Modicon gösterimiyle yazılır: 40001 birinci tutma yazmacıdır, protokoldeki adresi 0'dır.
Cihaz tarafında ön koşullar
- Modbus TCP'de cihazda Modbus TCP sunucusu açık olmalı (varsayılan port
502). - Cihazın birim kimliğini (Unit ID, slave adresi) ve adres haritasını öğrenin. Ağ geçidinin arkasındaki ya da seri hattaki her cihaz kendi adresiyle ayrılır; tek cihazda genellikle
1'dir. - Cihaz belgesindeki adres 1 tabanlı Modicon adresi mi (
40001) yoksa 0 tabanlı protokol adresi mi (0) veriyor? İkinciyse Studio'ya tablo rakamını ve belge adresi + 1'i yazın: protokol adresi100olan tutma yazmacı40101olur. - 32 bitlik değerlerin iki yazmaçta hangi sırayla durduğunu öğrenin (aşağıdaki 32 bit bayt sırası).
- Seri hatta ayrıca cihazın hızını, paritesini, veri ve dur bitini öğrenin.
Modbus TCP bağlantısı kurma
- Bağlantı ekleyin
Bağlantılar bölümünde Ekle, sürücü Modbus TCP. IP adresini yazın, port
502gelir. - Birim kimliği ve bayt sırası

Modbus TCP bağlantısının parametreleri: birim kimliği ve 32 bit bayt sırası. Birim kimliği (Unit ID) 0 – 255 (varsayılan
1). 32 bit bayt sırası seçenekleri: ABCD — büyük uçlu (varsayılan), CDAB — word yer değiştirmiş, BADC — bayt yer değiştirmiş, DCBA — küçük uçlu. 16 bitlik değerler her zaman Modbus standardındaki gibi büyük uçludur. - Tag ekleyin
Tag'in adresine Modicon adresini yazın. Adres, tag'in veri tipine göre doğrulanır (Tag adresleri).
- Bayt sırasını sınayın
32 bitlik bir
Realya daDInttag'inin değeri beklenenden çok farklı geliyorsa (ör. çok büyük ya da çok küçük bir sayı) bayt sırasını değiştirin. Bunun için cihazda bilinen bir değer (ör.1.0) tutup doğru değer görünene kadar seçenekleri deneyin.
Modbus RTU ve ASCII (seri hat)
Seri sürücüler Live bilgisayarının bir COM portunu kullanır: bilgisayarın kendi seri portu ya da USB – RS-485 / RS-232 dönüştürücü. Live bilgisayarı hattın master'ıdır; cihazlar soruları yanıtlar.
- COM portunu bulun
Windows'ta Aygıt Yöneticisi›Bağlantı noktaları (COM ve LPT) altında dönüştürücünün port numarasına bakın (ör.
COM3). - Bağlantı ekleyin
Ekle, sürücü Modbus RTU (seri) ya da Modbus ASCII (seri). IP adresi / bilgisayar adı hücresine seri portu yazın (
COM3;com 3daCOM3'e düzeltilir). Port hücresi kilitlidir. - Cihaz adresi ve seri ayar
Cihaz adresi (slave ID) 1 – 247 (varsayılan
1). Hız (baud) 1200 – 115200 (varsayılan9600), Parite Yok (N), Çift (E) (varsayılan) ya da Tek (O), Veri biti 7 ya da 8, Dur biti 1 ya da 2. Varsayılan ayar RTU'da9600 8E1, ASCII'de9600 7E1'dir. RTU'da veri biti 8 olmalıdır. Bütün değerler cihazdaki ayarla aynı olmalıdır.
1234Modbus RTU bağlantısı: adres COM3, cihaz adresi 1, 9600 8E1; Hedef kartı seri ayarı özetler. - Adres — seri sürücüde COM portu (COM3); port alanı kilitlidir.
- Cihaz adresi (slave ID) — 1 – 247; hattaki her cihazda farklı.
- Hız, parite, veri biti, dur biti — cihazla ve aynı porttaki bütün bağlantılarla aynı.
- Hedef — port · seri ayar · cihaz adresi.
- Zaman aşımını ayarlayın
Zaman aşımı (ms) cihazın yanıt vermeye başlaması için beklenen süredir; isteğin ve yanıtın hattaki iletim süresi Live tarafından eklenir. Düşük hızda uzun bloklar bu yüzden zaman aşımına düşmez.
- Tag ekleyin
Adresler ve tipler Modbus TCP ile aynıdır (aşağıdaki tablolar).
Bir hatta birden çok cihaz
Aynı RS-485 hattındaki her cihaz için ayrı bir bağlantı açın: adresleri aynı COM portu, Cihaz adresi'leri farklıdır. Live portu bir kez açar ve bağlantılar arasında paylaştırır; hatta aynı anda yalnız bir soru bulunur, istekler sırayla gider. Bu yüzden bir hatta cihaz arttıkça her cihazın okunma aralığı uzar.
Aynı portu kullanan bağlantıların Modbus türü (RTU ya da ASCII), hızı, paritesi, veri biti ve dur biti aynı olmalıdır. Farklıysa Studio Sorunlar'da hata verir; Live'da ikinci bağlantı kurulmaz ve hata iletisini gösterir. Etkin kapalı bağlantı portu açmaz ve denetime girmez.

- RTU çerçeveleri CRC ile denetlenir; iki çerçeve arasında hat en az 3,5 karakter süresi (19200 baud üstünde 1,75 ms) sessiz bırakılır. ASCII çerçeveleri LRC ile denetlenir.
- Bozuk çerçeve gelince hatta kalan baytlar atılır ve bağlantı yeniden kurulur. USB dönüştürücü çıkarılırsa aynı porttaki bütün bağlantılar kopar ve port yeniden açılmaya çalışılır.
- Çevrimiçi›Bağlantıları sına… seri bağlantıları sınamaz, atlandı sayar. Seri bağlantı ancak Live'da denenir.
Adres aralıkları ve yazmaç kullanımı
| Biçim | Tablo | Veri tipi | Yazma |
|---|---|---|---|
0xxxx (ör. 00001) | Bobin (coil) | Bool | Yapılır |
1xxxx (ör. 10001) | Ayrık giriş | Bool | Salt okunur |
3xxxx (ör. 30001) | Giriş yazmacı | yazmaç tipleri | Salt okunur |
4xxxx (ör. 40001) | Tutma yazmacı | yazmaç tipleri | Yapılır |
4xxxx.b (ör. 40001.5) | Yazmacın biti (b = 0 – 15) | Bool | Yapılır (yazmaç okunur, bit değiştirilir, geri yazılır) |
4xxxxx (ör. 400001) | Altı haneli gösterim: 400001 – 465536 | yazmaç tipleri | Yapılır |
İlk rakam tabloyu, kalan dört ya da beş rakam sıra numarasını (1 – 65536) verir. Her tip şu kadar yazmaç kaplar; tag'in adresi ilk yazmaçtır:
| Tip | Yazmaç sayısı |
|---|---|
Bool, Int, UInt | 1 |
DInt, UDInt, Real | 2 (ör. 40001 ve 40002) |
LReal | 4 |
String | Her yazmaçta 2 karakter: Uzunluk alanındaki karakter sayısının yarısı (yukarı yuvarlanır); varsayılan uzunluk 32, en çok 254 |
Bobin ve ayrık giriş adreslerinde bit numarası yazılmaz; yazmaç adresine Bool verilirse bit numarası zorunludur. Byte ve SInt tipleri Modbus sürücülerinde yoktur.
Okuma ve yazma
- Aynı tablodaki yakın tag'ler tek istekte okunur: en çok 125 yazmaç ya da 2000 bobin, aradaki en çok 8 yazmaç (bobinde 64) boşluk birleştirilir. Cihaz boşluklu okumayı reddederse sürücü bundan sonra yalnızca bitişik tag'leri birleştirir.
- Cihaz bir isteği reddederse o bloktaki tag'ler tek tek okunur; yalnızca sorunlu tag hata alır.
- Yazma bobin için tek bobin yazma, tek yazmaç için tek yazmaç yazma, çok yazmaçlı değerler için çoklu yazmaç yazma isteğiyle yapılır.
Sürücü başvurusu
Modbus ASCII'nin parametreleri, adres biçimleri ve örnekleri Modbus RTU ile aynıdır; sürücü kimliği modbus-ascii'dir ve Veri biti'nin varsayılanı 7'dir.
Modbus TCP
Adresler Modicon gösterimiyle yazılır: 40001 birinci tutma yazmacıdır (protokolde adres 0). 32 bitlik tipler art arda iki yazmaç kullanır.
- Sürücü kimliği
modbus(proje dosyasındaki ad)- Bağlantı
- IP adresi / bilgisayar adı ve port gerekir (varsayılan port
502) - Veri tipleri
BoolIntUIntDIntUDIntRealLRealString
Bağlantı parametreleri
Bağlantı seçiliyken Denetçi penceresinde görünür.
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
| Birim kimliği (Unit ID) | sayı (0 – 255) | 1 | |
| 32 bit bayt sırası | seçim | ABCD — büyük uçlu | ABCD — büyük uçlu · CDAB — word yer değiştirmiş · BADC — bayt yer değiştirmiş · DCBA — küçük uçlu |
| Hakem adresi (Int) | metin | — | Yedekli sunucu çiftinde master bu adrese her saniye artan bir sayaç yazar. PLC programında başka işte kullanılmayan, yazılabilir bir Int adresi olmalı. Boş = bu PLC hakem değil. |
Adres biçimleri
| Biçim | Anlamı |
|---|---|
0xxxx | Bobin — Bool |
1xxxx | Ayrık giriş — Bool, salt okunur |
3xxxx | Giriş yazmacı — salt okunur |
4xxxx | Tutma yazmacı |
4xxxx.b | Yazmacın biti (b = 0 – 15) — Bool |
4xxxxx | Altı haneli gösterim: 400001 – 465536 |
Örnek adresler
| Veri tipi | Örnekler |
|---|---|
Bool | 00001 10001 40001.0 |
| Diğer tipler | 40001 30001 400001 |
Modbus RTU (seri)
RS-485 / RS-232 seri port üzerinden Modbus RTU. Bağlantının adresi seri porttur (ör. COM3). Aynı hattaki her cihaz için ayrı bağlantı açılır; aynı portu kullanan bağlantıların seri port ayarları aynı olmalıdır. Tag adresleri Modbus TCP ile aynıdır: 40001 birinci tutma yazmacıdır.
- Sürücü kimliği
modbus-rtu(proje dosyasındaki ad)- Bağlantı
- Adres sütununa COM portu yazılır (ör.
COM3); hız, parite, veri biti ve dur biti bağlantı parametresidir - Veri tipleri
BoolIntUIntDIntUDIntRealLRealString- Aynı port
- Ayarları aynı olan bağlantılar bir COM portunu paylaşır (RS-485 hattındaki birden çok cihaz); ayarları farklı ikinci bağlantı hata verir.
Bağlantı parametreleri
Bağlantı seçiliyken Denetçi penceresinde görünür.
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
| Cihaz adresi (slave ID) | sayı (1 – 247) | 1 | Cihazın Modbus adresi. Aynı RS-485 hattındaki her cihazın adresi farklıdır; her cihaz için ayrı bağlantı açılır. |
| 32 bit bayt sırası | seçim | ABCD — büyük uçlu | ABCD — büyük uçlu · CDAB — word yer değiştirmiş · BADC — bayt yer değiştirmiş · DCBA — küçük uçlu |
| Hız (baud) | seçim | 9600 | Hız, parite, veri biti ve dur biti cihazın ayarıyla aynı olmalıdır. Aynı seri portu kullanan bütün bağlantılarda da aynıdır. 1200 · 2400 · 4800 · 9600 · 19200 · 38400 · 57600 · 115200 |
| Parite | seçim | Çift (E) | Yok (N) · Çift (E) · Tek (O) |
| Veri biti | seçim | 8 | 7 · 8 |
| Dur biti | seçim | 1 | 1 · 2 |
| Hakem adresi (Int) | metin | — | Yedekli sunucu çiftinde master bu adrese her saniye artan bir sayaç yazar. PLC programında başka işte kullanılmayan, yazılabilir bir Int adresi olmalı. Boş = bu PLC hakem değil. |
Adres biçimleri
| Biçim | Anlamı |
|---|---|
0xxxx | Bobin — Bool |
1xxxx | Ayrık giriş — Bool, salt okunur |
3xxxx | Giriş yazmacı — salt okunur |
4xxxx | Tutma yazmacı |
4xxxx.b | Yazmacın biti (b = 0 – 15) — Bool |
4xxxxx | Altı haneli gösterim: 400001 – 465536 |
Örnek adresler
| Veri tipi | Örnekler |
|---|---|
Bool | 00001 10001 40001.0 |
| Diğer tipler | 40001 30001 400001 |
Sık hatalar
Her satırın başındaki işaret, iletinin Live'da nerede görüneceğini söyler: [bağlantı] sistem menüsünün Bağlantılar bölümünde; [yazma] yazmayı yapan operatöre bildirim penceresinde; [Studio] Studio'daki adres hücresinde ya da Sorunlar listesinde görünür. [tag] okuma sırasındaki tag hatasıdır: tag kalitesiz kalır, iletinin metni bu sürümde Live'da gösterilmez (Tag hataları); metni nedeni anlamak için okuyun.
| İleti | Neden ve çözüm |
|---|---|
[tag] Cihazda bu adres yok (Modbus istisnası 02: geçersiz adres). | Cihaz bu yazmacı ya da bobini tanımıyor. Adres haritasını ve 0 / 1 tabanlı farkını denetleyin. |
[tag] Cihaz bu işlevi desteklemiyor (Modbus istisnası 01). | Cihaz bu tür erişimi (ör. bobin yazma) sunmuyor. |
[yazma] Cihaz değeri kabul etmedi (Modbus istisnası 03: geçersiz değer). | Yazılan değer cihazın izin verdiği aralıkta değil. |
[tag] Ağ geçidi hedef cihaza ulaşamadı (Modbus istisnası 0A). (ya da 0B) | Ağ geçidi birim kimliğindeki cihaza ulaşamıyor; birim kimliğini ve seri hattı denetleyin. |
[yazma] Giriş yazmacı salt okunurdur; yazılamaz. · Ayrık giriş salt okunurdur; yazılamaz. | 1xxxx ve 3xxxx adreslerine yazılamaz; yazılabilir olması gereken değer için 4xxxx kullanın. |
[Studio] Bool tipi için yazmacın biti belirtilmelidir (ör. 40001.0) ya da bobin adresi (0xxxx) kullanılmalıdır. | Studio adres hücresi: Bool tag'e yazmaç adresi bit numarasız verilmiş. |
[bağlantı] Cihaz 2000 ms içinde yanıt vermedi (192.168.0.20:502). … · Cihaz yanıt vermedi (zaman aşımı). | TCP'de ağ, port ya da cihaz; ağ geçidi arkasındaki cihazlarda Zaman aşımı'nı artırın. Seri hatta cihaz adresi, hız / parite, kablo (RS-485'te A / B uçları) ya da cihazın kapalı olması. |
[bağlantı] Geçersiz Modbus yanıtı (…) | Yanıt çerçeveye uymuyor; bağlantı kapatılıp yeniden kurulur. Seri hatta (CRC hatalı), (LRC hatalı) ya da (cihaz adresi uyuşmuyor): hız / parite yanlış, hatta parazit var ya da iki cihaz aynı adreste. |
[bağlantı] COM3 bulunamadı: bu bilgisayarda böyle bir seri port yok. Aygıt Yöneticisi › Bağlantı noktaları (COM ve LPT) listesine bakın. | Port numarası yanlış ya da dönüştürücü takılı değil. |
[bağlantı] COM3 açılamadı: port başka bir programda açık ya da erişim reddedildi. | Portu kullanan başka programı (cihazın ayar yazılımı, terminal programı) kapatın. |
[bağlantı] COM3 başka bir bağlantıda farklı ayarla açık (RTU 9600 8E1; bu bağlantı: RTU 19200 8E1). … | Aynı porttaki bağlantıların seri ayarı farklı; hepsini aynı yapın. |
[bağlantı] COM3 seri portu ile bağlantı koptu (kablo ya da USB seri çevirici çıkarılmış olabilir). | Dönüştürücüyü takın; sürücü kendiliğinden yeniden dener. |
[Studio] Modbus RTU'da veri biti 8 olmalıdır (7 veri biti yalnızca Modbus ASCII'de kullanılır). | RTU bağlantısında Veri biti 7 seçilmiş. Live aynı durumda bağlantıyı kurmaz. |