A 20. fejezet („Modbus TCP és Modbus RTU") gyakorlatainak részletes megoldásai és a tudáspróba megoldókulcsa. Előbb dolgozd ki magad, csak utána ellenőrizz!

Gyakorlatok — megoldások

20.1. feladat — Számold ki a korlátot

Megoldás

A válasz PDU felépítése: funkciókód (1 bájt) + bájtszámláló (1 bájt) + adat.

  1. Rendelkezésre álló hely az adatnak: 253 − 1 − 1 = 251 bájt
  2. Egy regiszter 2 bájt: 251 / 2 = 125,5
  3. Egész regiszter fér el: 125

Tehát egyetlen 03-as válaszban legfeljebb 125 tartóregiszter olvasható ki.

Az adatlapok gyakran ennél kevesebbet engednek. Lehetséges okok: a gyártó kisebb belső puffert használ; az eszköz lassú, és a hosszú válasz időtúllépést okozna; vagy a regisztertartomány maga rövidebb. A gyakorlat szabálya: az eszköz korlátja az irányadó, nem az elméleti maximum.

20.2. feladat — Fordítsd le a címeket

Megoldás

Adat Funkciókód PDU-cím Írható?
hőmérséklet — 3. bemeneti regiszter 04 (bemeneti regiszterek olvasása) 2 nem — a bemeneti regiszter csak olvasható
kapcsolási küszöb — 12. tartóregiszter olvasás: 03; írás: 06 (egy regiszter) vagy 16 (több regiszter) 11 igen

Az indoklás a címzési szabály: a protokoll a táblákat 0-tól címzi, a dokumentációk viszont gyakran 1-től sorszámoznak. A „3. regiszter” tehát a 2-es PDU-címen található — ez az egyes eltolódás (20.3).

⚠ Gyakori hiba: a 4x/3x előtagos, hagyományos jelölést PDU-címként használni. A 40013 nem egy 40013-as című regiszter, hanem a 12-es PDU-című tartóregiszter.

20.3. feladat — Időzítés számokkal

Megoldás

Egy karakter 11 bit (1 start + 8 adat + 1 paritás + 1 stop).

9600 bit/s:

  • 1 karakter: 11 / 9600 = 0,001 146 s ≈ 1,146 ms
  • t1,5 = 1,5 × 1,146 = 1,72 ms
  • t3,5 = 3,5 × 1,146 = 4,01 ms

115 200 bit/s:

  • 1 karakter: 11 / 115 200 = 0,000 095 5 s ≈ 0,0955 ms
  • t1,5 = 0,143 ms
  • t3,5 = 0,334 ms

Miért nehezebb nagy sebességen? Mert az időablakok arányosan rövidülnek: a t1,5 115 200 baudon már 0,14 ezredmásodperc. Ekkora szünetet egy pufferelő USB-átalakító, egy megterhelt operációs rendszer vagy egy nem valós idejű illesztő véletlenül is okozhat — és ilyenkor a vevő úgy látja, hogy az üzenet hiányos (20.7).

20.4. feladat — Tervezz meg egy buszt

Mintamegoldás

A busz vázlata:

KÓD
CC100 (RS-485, master)
  │  A/B érpár + közös föld (GND), sodrott, árnyékolt
  ├── [150 Ω]  ← lezárás a törzsvonal ELSŐ végén (a masternél)
  ├── mérő 1 (cím 1)
  ├── mérő 2 (cím 2)
  ├── mérő 3 (cím 3)
  ├── mérő 4 (cím 4)
  ├── mérő 5 (cím 5)
  └── mérő 6 (cím 6) ── [150 Ω]  ← lezárás a törzsvonal MÁSIK végén

Soros paraméterek (mindegyik eszközön azonosan): 19 200 bit/s (a Modbus alapértelmezése), 8 adatbit, páros paritás, 1 stopbit. Ha az eszközök nem tudnak páros paritást, akkor a szabvány szerinti pótmegoldás 2 stopbit — de a lényeg, hogy mind a négy beállítás egyezzen.

A két leggyakoribb hibapont a rajzon:

  1. a lezáróellenállás hiánya vagy rossz helye (nem a törzsvonal két végén, hanem valamelyik középső eszköznél);
  2. a közös föld elhagyása — a két jelvezeték önmagában nem elég, a vevőknek közös referenciára van szükségük.

⚠ Gyakori hiba: 120 Ω-os lezárás alkalmazása „mert az RS-485-nél az a szokásos”. A Modbus-specifikáció 150 Ω / 0,5 W értéket ír elő (20.8).

20.5. feladat — Készíts hibakeresési döntési fát

Mintamegoldás — a döntési fa csomópontjai

Döntés Mivel ellenőrzöd? Ha nem
Van fizikai kapcsolat? LED-ek a porton, kábel, switch kábel/port csere
Válaszol a ping? ping <IP> a PC-ről IP-cím, alhálózati maszk, VLAN ellenőrzése
Nyitva az 502-es port? portvizsgáló, vagy a szerver naplója tűzfal, szolgáltatás indítása
Jó a unit ID? az eszköz dokumentációja / webfelülete unit ID javítása
Jó a funkciókód a táblához? a regisztertérkép: bit vagy szó, írható vagy sem funkciókód javítása
Jó a cím? 0-tól vagy 1-től induló számozás — próba egy szomszédos címmel offset javítása (egyes eltolódás)
Időben válaszol? a master válaszidő-túllépése, a napló timeout növelése, terhelés csökkentése

A folyamatábrát az 5. fejezet jelöléseivel kell megrajzolni: rombuszok a döntéseknek, téglalapok a beavatkozásoknak, és minden ág záruljon vissza (5.3).


Tudáspróba — megoldókulcs

# Válasz Indoklás Szakasz
1 a A Coils tábla bitalapú és írható (a Discrete Inputs csak olvasható). 20.2
2 b A PDU-ban a címzés 0-tól 65 535-ig megy — az elemek számozása viszont 1-től. 20.3
3 c A 03-as funkciókód olvas tartóregisztert (a 04 az input regisztert). 20.4
4 b A PDU legnagyobb mérete 253 bájt; a 256 a soros ADU, a 260 a TCP ADU. 20.5
5 c Egy Modbus RTU-buszon legfeljebb 247 slave lehet (1…247 címtartomány). 20.6
6 d A keretek között 3,5 karakteridőnyi csend kell (a kereten belül max. 1,5). 20.7
7 b A Modbus TCP regisztrált portszáma 502. 20.9
8 c Az MBAP-fejléc 7 bájt. 20.9
9 b A specifikáció 150 Ω / 0,5 W lezárást ír elő a törzsvonal két végére — a széles körben emlegetett 120 Ω általános RS-485 gyakorlat, nem a Modbus-előírás. 20.8
10 a A CODESYS-szerveren a holding regiszterek a %IW területen vannak (a mestertől érkező adat = bemenet). 20.12

Mennyire volt hasznos ez a fejezet?

Még nincs értékelés.