A vizsga projektmunkája élesben: egy Modbus TCP-s bővítőmodul beillesztése — és annak megtanulása, hogyan oldunk fel egy kétértelmű gyártói dokumentációt méréssel.
- 21.1 A modul bemutatása
- 21.2 A legfontosabb bekötési tudnivaló: sinking és sourcing
- 21.3 Hálózati beállítás
- 21.4 A regisztertérkép
- 21.5 A kétértelműség — és hogyan oldjuk fel
- 21.6 A CODESYS-oldali konfiguráció
- 21.7 I/O-leképezés és a fixált címek
- 21.8 A bővítés teljes lépéssora
- 21.9 Mit tanít ez a gyakorlat?
- Összefoglalás
- Gyakorlatok
- Ellenőrző kérdések
- Tudáspróba
- A fejezet forrásai
Ez a fejezet a vizsga „modulbővítés” projektmunkájának teljes kidolgozása. Egy Modbus TCP-s, 8 digitális bemenettel és 8 digitális kimenettel rendelkező modult illesztünk a CC100-hoz.
De van egy második, ennél is fontosabb tanulsága. A modul gyártói dokumentációja egy ponton kétértelmű — és a fejezet megmutatja, hogyan lehet egy ilyen helyzetet méréssel feloldani. Ez a készség többet ér, mint bármelyik konkrét regisztercím.
21.1 A modul bemutatása
A gyártó belső azonosítója Modbus_POE_ETH_IO_8CH; a termék megnevezése Industrial 8-Ch
Ethernet Digital Input/Output Module. Érdemes mindkettőt tudni, mert a beszerzésnél a
kereskedők hol az egyiket, hol a másikat használják.
| Jellemző | Érték |
|---|---|
| I/O | „8DI / 8DO isolated digital input/output”2 |
| Bemenet | „5 ~ 36 V, dry contact/wet contact (NPN or PNP type), built-in bidirectional optocoupler”2 |
| Kimenet | „8DO, 5 ~ 40 V, open-drain output, output load 500 mA/channel (MAX)”2 |
| Kimenet (termékoldal) | „Darlington transistor with optocoupler isolation”, „up to 500 mA sink current”5 |
| Tápellátás | „DC 7~36 V”; PoE Ethernet-porton, DC-jacken vagy sorkapcson2 |
| PoE | „IEEE 802.3af” szabvány szerint2 5 |
| Ethernet | „Dual Ethernet interfaces”5 |
| Protokoll | „Modbus RTU protocol or Modbus TCP protocol”2 5 |
| Védelem | „power isolation, optocoupler isolation, resettable fuse, and TVS”5 |
| Kivitel | „Rail-mount case design” — DIN-sínre szerelhető5 |
21.2 A legfontosabb bekötési tudnivaló: sinking és sourcing
Ez a fejezet első komoly buktatója, és a legdrágább, ha elrontod.
A modul kimenetét a két gyártói forrás „open-drain”-nek,2 illetve „Darlington transistor … up to 500 mA sink current”-nek5 nevezi. A két megnevezés nem ellentmondás: mindkettő áramelvezető (sinking, „low-side”) kimenetet jelent — a modul a terhelés negatív oldalát kapcsolja a földre.
A CC100 kimenete viszont „high-side switching”, azaz sourcing: a +24 V-ot kapcsolja (7. fejezet).
| CC100 (sourcing) | Waveshare (sinking) | |
|---|---|---|
| Mit kapcsol a kimenet? | a +24 V-ot | a 0 V-ot |
| Hova kötöd a terhelést? | a kimenet és a 0 V közé | a +24 V és a kimenet közé |
Ha felcseréled: a terhelés vagy egyáltalán nem működik, vagy — ami rosszabb — állandóan bekapcsolva marad, mert a tápvonalon keresztül záródik a kör.
Ellenőrizd a bekötést, mielőtt feszültséget adsz rá.
A modul bemenete NPN és PNP érzékelőt is fogad, mert kétirányú optocsatolós bemeneti fokozata van.2 A CC100 ezzel szemben csak PNP-t fogad (3. és 7. fejezet).
Vagyis vegyes érzékelőparknál a modul bemenete alkalmasabb. Ez jó érv arra, hogy melyik jelet hova kössük.
21.3 Hálózati beállítás
| Paraméter | Amit a forrás mond |
|---|---|
| Modbus TCP port | „a készülék portja automatikusan 502-re változik”3 |
| Soros sebesség | „a soros port beállítása alapértelmezés szerint 115200, és nem módosítható”3 |
| Konfigurálás 1. módja | VirCom szoftver: „több konfigurálható paraméter, az IP-cím előzetes ismerete nélkül”3 |
| Konfigurálás 2. módja | böngésző: a soros portszerver IP-címének beírásával, „például http://192.168.1.200”3 |
| DHCP | a termékoldal szerint a modul támogatja a dinamikus IP-cím megszerzését DHCP-vel5 |
A gyártó saját figyelmeztetése:3
„Az első konfiguráláskor ajánlott csak az IP-címet módosítani, a többi paramétert alapértelmezetten hagyni; a soros portparaméterek módosítása kommunikációs hibát okoz.”
A 192.168.1.200 a gyártói dokumentációban példaként szerepel, nem gyári alapértékként.
A gyári IP-címet és a Modbus unit ID-t a felhasznált források nem mondják ki.
Ezért a könyv nem ad meg konkrét címet, hanem az eljárást írja elő: keresd meg a modult a VirCom eszközzel — ez épp arra való, hogy az IP-cím előzetes ismerete nélkül működjön —, és a ténylegesen talált címet jegyezd fel.
Egy találgatásból leírt cím rosszabb, mint a semmi: órákat lehet elpazarolni egy nem létező cím keresgélésével.
A hálózati beállítás lépései:
- Kösd a modult tápra (7–36 V vagy PoE) és Ethernetre.
- Indítsd el a VirCom eszközt, és keresd meg a modult.
- Jegyezd fel a talált IP-címet és a unit ID-t.
- Állítsd át az IP-címet a CC100-éval egyező alhálózatba (
192.168.1.x, ütközésmentes címre). - Ellenőrizd
ping-gel, majd nyisd meg a modul weblapját böngészőből.
21.4 A regisztertérkép
A gyártói fejlesztői protokoll szerint:4
Digitális kimenetek:
| Cím | Jelentés | Funkciókódok |
|---|---|---|
0x0000–0x0007 |
az 1–8. kimenet egyedi vezérlése | 01, 05, 0F |
0x00FF |
az összes kimenet egyidejű vezérlése | ugyanezek |
Parancsértékek:4 kimenet BE = 0xFF00; KI = 0x0000; átváltás (toggle) =
0x5500.
A 0xFF00 / 0x0000 értékpár pontosan az, amit a Modbus-specifikáció a Write Single Coil
(05) funkciókódnál használ (20. fejezet). A 0x5500 (toggle) viszont gyártóspecifikus
kiterjesztés — más eszközön nem biztos, hogy működik.
Ha hordozható kódot írsz, ne építs rá.
Digitális bemenetek:4 0x10000–0x10007, a 02-es funkciókóddal.
Vezérlő- és konfigurációs regiszterek:4
| Cím | Jelentés | Funkciókódok |
|---|---|---|
0x41000–0x41007 |
„Relay control mode for channel 1~8”, érték 0x0000–0x0003 |
03, 06, 10 |
0x44000 |
eszközcím (device address) tárolása | ugyanezek |
0x48000 |
„Software version — decimálissá alakítva, a tizedespontot két hellyel balra tolva” | ugyanezek |
21.5 A kétértelműség — és hogyan oldjuk fel
Itt jön a fejezet módszertani magja.
A gyártói táblázatban a bemenetek 0x10000-től, a regiszterek 0x41000-től szerepelnek. Ez
öt hexadecimális jegy — a Modbus PDU viszont csak 16 bites címet ismer, azaz
0-tól 65535-ig (20. fejezet).
Öt hexa jegy nem fér el 16 biten. Tehát ez a jelölés nem közvetlen PDU-cím.
A kézenfekvő értelmezés: a vezető jegy a Modbus-tábla azonosítója, a maradék négy jegy a táblán belüli offset. Ez összhangban van a hagyományos, „4xxxx”-jellegű ipari jelöléssel, amelyet a 20. fejezetben már láttunk.
A felhasznált források sehol nem magyarázzák meg a jelölést. A fenti értelmezés logikus, de nem igazolt.
Ezért ez a könyv nem közli tényként. Helyette megmutatja, hogyan lehet méréssel eldönteni — és ez a fejezet legértékesebb része.
A mérés menete
1. Fogalmazd meg a feltételezést. „A 0x10000 a Discrete Inputs tábla 0. elemét
jelenti, tehát a 02-es funkciókóddal a 0-s offsetről olvasható.”
2. Tervezd meg a mérést. Olvass ki a modulból 8 bitet a 02-es funkciókóddal, a 0-s offsettől. Kösd be egy érzékelőt vagy egy egyszerű kapcsolót az 1. bemenetre.
3. Mérj. Kapcsold be az 1. bemenetet, és nézd meg, melyik bit változott meg a kiolvasott 8 bitben.
4. Vond le a következtetést.
| Eredmény | Mit jelent? |
|---|---|
| a 0. bit mozdult meg | a feltételezés helyes: 0x10000 = Discrete Inputs, offset 0 |
| a 7. bit mozdult meg | a csatornák fordított sorrendben vannak leképezve |
| egyik bit sem mozdult | rossz funkciókód, rossz offset, vagy rossz unit ID |
| hibaválasz érkezett | a cím a tartományon kívül van, vagy a funkciókód nem támogatott |
5. Ismételd meg a többi csatornára is, és a kimenetekre az 05-ös kóddal.
6. Írd le a mért, igazolt címtáblázatot — ez lesz a saját dokumentációd, és ez az, amire a programot építed.
A mérnöki munkában rendszeresen találkozol hiányos vagy kétértelmű dokumentációval. Az a különbség egy jó és egy rossz szakember között, hogy a jó nem találgat, hanem kísérletet tervez:
- mit feltételezek,
- milyen méréssel dönthető el,
- mi lesz az eredmény, ha igazam van, és mi, ha nincs,
- és a mérés után leírja az eredményt.
Ez a négy lépés bármilyen ismeretlen eszközre alkalmazható.
A mérés során kimeneteket fogsz kapcsolni. Győződj meg róla, hogy a kimenetekre nincs valódi beavatkozó kötve — a méréshez elég egy LED vagy egy multiméter.
Ha mégis valódi terhelés van rajta, alkalmazd a 24. fejezet elvét: először a biztonságos állapot.
21.6 A CODESYS-oldali konfiguráció
A 20. fejezetből tudod, mit kell beállítani a kliensoldalon:1
| Beállítás | Jelentés |
|---|---|
| Response Timeout (ms) | ameddig a kliens a szerver válaszára vár |
| Auto-reconnect | a megszakadt kapcsolat automatikus helyreállítása |
A távoli eszköz és a csatornák konfigurálása — ahol megadod a modul IP-címét, a unit ID-t, és csatornánként a funkciókódot, az offsetet, a hosszt, valamint azt, hogy ciklikusan vagy éllel kiváltva fusson — a felhasznált gyártói súgólapokon nem szerepelt.
A könyv itt nem ad menüutakat, mert nincs rájuk igazolt forrás. Amit ad: mit kell beállítanod és miért — a konkrét helyeket a saját környezetedben találod meg, és a projektmunkádba képernyőképekkel vedd fel őket.
Ez egyébként pontosan az, amit az értékelés „Paraméterek beállítása” (10%) szempontja kér.
21.7 I/O-leképezés és a fixált címek
Ha a csatornák megvannak, a következő lépés a változókhoz kötés — ugyanaz az I/O Mapping lap, amelyet a 23. fejezet tárgyal.
A kézzel átírt I/O-cím fix szimbólumot kap, és „megakadályozza az automatikus frissítést, ha az eszköz felépítése megváltozik”.6
Bővítéskor pontosan ez történik: az eszköz felépítése megváltozik. Ha korábban valaki kézzel írt át címet, azok nem követik a változást, és a jelek elcsúsznak.
A bővítés előtt nézd át az I/O-térképet, és keresd a fix szimbólummal jelölt sorokat.
És a 25. fejezetből a másik fontos következmény:
Az eszközfa vagy az eszközparaméterek módosítása után teljes letöltés kell.7 Vagyis a gépet le kell állítani.
Ezt a beavatkozás megtervezésekor kell tudni: az üzemnek előre kell számolnia a leállással.
21.8 A bővítés teljes lépéssora
Ez a 25. fejezet kilenclépéses modulcsere-folyamatának alkalmazása erre a konkrét feladatra.
| # | Lépés | Mire figyelj? |
|---|---|---|
| 1 | Archívum és forráskód-feltöltés a bővítés előtti állapotról | ez a visszatérési pont (25. fejezet) |
| 2 | A modul DIN-sínre szerelése, tápellátás (7–36 V vagy PoE) | a PoE-hoz IEEE 802.3af képes switch kell |
| 3 | Ethernet csatlakoztatás: a CC100 második portjára vagy közös switchre | a modulnak két Ethernet-interfésze van5 |
| 4 | IP-cím megkeresése és beállítása VirCom-mal | csak az IP-t módosítsd, a többit hagyd3 |
| 5 | Mérés: a regisztercímek gyakorlati igazolása | 21.5. alfejezet |
| 6 | Bekötés: DI-k (NPN vagy PNP), DO-k sinking módon | 21.2. alfejezet — ez a legkritikusabb |
| 7 | CODESYS: Modbus TCP master, a távoli eszköz és a csatornák felvétele | 21.6. alfejezet |
| 8 | I/O-leképezés változókra; a fix címek ellenőrzése | 21.7. alfejezet |
| 9 | Fordítás, teljes letöltés, próbaüzem | nem online change! |
| 10 | Új archívum, forráskód-feltöltés, verziószám növelése | 25. fejezet |
| 11 | Dokumentálás: bekötési rajz, regisztertáblázat, fotók, jegyzőkönyv | a projektmunka 10%-a |
21.9 Mit tanít ez a gyakorlat?
A vizsga „modulbővítés” projektmunkája ezzel az egy feladattal négy dolgot mér:
| Amit tanulsz | Hol jelenik meg? |
|---|---|
| Modbus TCP kliens-konfiguráció | 20. és 21.6. |
| Sinking és sourcing kimenetek különbsége valós hardveren | 21.2. |
| Hálózati címzés és alhálózat | 9. és 21.3. |
| Regisztercímzés és funkciókódok gyakorlati használata | 20. és 21.4–21.5. |
És egy ötödiket, amit a vizsgakövetelmény nem nevesít, de a szakma igen: hogyan dolgozz hiányos dokumentációval.
Összefoglalás
- A modul 8 DI / 8 DO, leválasztott, Modbus RTU és TCP protokollal, PoE-képes, DIN-sínre szerelhető.
- A kimenet sinking (open-drain), a CC100-é sourcing (high-side) — a terhelést másképp kell bekötni. Ez a fejezet legkritikusabb tudnivalója.
- A bemenet NPN-t és PNP-t is fogad (kétirányú optocsatoló), szemben a CC100 csak PNP-s bemenetével.
- A Modbus TCP port 502; a soros sebesség 115200, nem módosítható. Első konfiguráláskor csak az IP-címet módosítsd.
- A gyári IP-címet és unit ID-t a könyv nem adja meg, mert a források nem mondják ki: VirCom-mal keresd meg, és a ténylegesen talált értéket jegyezd fel.
- A regisztertérkép: kimenetek
0x0000–0x0007(+0x00FFaz összesre), bemenetek0x10000–0x10007, vezérlőregiszterek0x41000-től. - A parancsértékek
0xFF00(be) és0x0000(ki) szabványosak; a0x5500(toggle) gyártóspecifikus. - A címzési jelölés kétértelmű — a könyv nem találgat, hanem méréssel oldja fel: feltételezés → mérés → következtetés → dokumentálás.
- A fixált I/O-címek bővítéskor elcsúsztathatják a jeleket.
- A modulbővítés nem oldható meg online change-dzsel: teljes letöltés kell.
Gyakorlatok
Kösd be a modult tápra és Ethernetre. Keresd meg a VirCom eszközzel, és jegyezd fel: a
talált IP-címet, a unit ID-t, és minden egyéb paramétert, amit lát. Állítsd át az
IP-címet a CC100-éval egyező alhálózatba. Ellenőrizd ping-gel, majd nyisd meg a modul
weblapját. Ne módosíts más paramétert.
Végezd el a 21.5. alfejezet mérését mind a 8 bemenetre. Készíts táblázatot: fizikai csatorna → melyik bit mozdult meg → PDU-offset. Utána ugyanezt a kimenetekre az 05-ös funkciókóddal (LED-del vagy multiméterrel, valódi terhelés nélkül).
A végén írd le a mért címtáblázatot, és hasonlítsd össze a 21.3. ábra feltételezett táblázatával. Egyezik? Ha nem, mi az eltérés?
Köss be ugyanazt a 24 V-os jelzőlámpát egyszer a CC100 egyik kimenetére, egyszer a modul egyik kimenetére. Rajzold le mindkét bekötést. Írd le, mi történne, ha felcserélnéd a két bekötési módot — és ha van rá biztonságos lehetőséged (kisfeszültségű LED, áramkorlátozás), próbáld is ki.
Van két érzékelőd: egy PNP és egy NPN kimenetű. Melyiket hova kötöd — a CC100-ra vagy a modulra —, és miért? Kösd be mindkettőt a helyére, és ellenőrizd a jeleket. Mi történik, ha az NPN-t a CC100-ra próbálod kötni?
Végezd el a 21.8. alfejezet teljes lépéssorát egy valódi feladatra: bővítsd ki a 9. fejezetben készített programodat úgy, hogy a modul egyik bemenete is beleszóljon a vezérlésbe, és az egyik kimenete is jelezzen valamit. Dokumentáld a 25. fejezet szerint: archívum előtte és utána, bekötési rajz, regisztertáblázat, fotók, próbaüzemi jegyzőkönyv.
Ez a gyakorlat lényegében a vizsga projektmunkája — érdemes komolyan venni.
Ellenőrző kérdések
- Hány és milyen I/O-val rendelkezik a modul, és milyen protokollokat támogat?
- Mit jelent, hogy a modul kimenete „open-drain” és „sink current”?
- Miben tér el a modul kimenetének bekötése a CC100-étól?
- Mi történik, ha felcseréled a két bekötési módot?
- Milyen érzékelőtípusokat fogad a modul bemenete, és miért?
- Melyik Modbus-porton dolgozik a modul, és mi a soros sebessége?
- Mit ajánl a gyártó az első konfiguráláskor, és miért?
- Miért nem ad meg a könyv gyári IP-címet?
- Milyen parancsértékkel kapcsolható be és ki egy kimenet? Melyik ezek közül nem szabványos?
- Mi a probléma a
0x10000és0x41000jelöléssel? - Írd le a mérés négy lépését, amellyel a címzés feloldható!
- Mit jelent, ha a mérés során a 7. bit mozdul meg az 1. bemenet bekapcsolásakor?
- Miért veszélyesek a fixált I/O-címek bővítéskor?
- Miért nem oldható meg a modulbővítés online change-dzsel?
Tudáspróba
Válaszd ki az egyetlen helyes választ!
1. A modul kimenete: a) sinking (low-side, open-drain) b) sourcing (high-side) c) relés d) analóg
2. A CC100 kimenete: a) sinking b) sourcing (high-side switching) c) open-drain d) relés
3. A modul bemenete ezt fogadja: a) csak PNP b) csak NPN c) NPN-t és PNP-t is d) csak feszültségjelet
4. A modul Modbus TCP portja: a) 102 b) 502 c) 2404 d) 8080
5. A soros sebesség a modulon: a) 9600, módosítható b) 19200, módosítható c) nincs soros port d) 115200, nem módosítható
6. A kimenet bekapcsolásának parancsértéke:
a) 0x0001
b) 0xFF00
c) 0x5500
d) 0x00FF
7. A 0x5500 parancsérték:
a) gyártóspecifikus toggle (átváltás);
b) szabványos Modbus-érték;
c) a kimenet kikapcsolása;
d) érvénytelen.
8. A bemenetek olvasásához használt funkciókód: a) 01 b) 02 c) 03 d) 05
9. A 0x10000-es jelölés problémája:
a) túl kicsi szám;
b) nem hexadecimális;
c) öt hexa jegy nem fér el a 16 bites PDU-címtérben;
d) nincs vele probléma.
10. A modulbővítés után: a) elég egy online change; b) csak a szimulációt kell frissíteni; c) nem kell letölteni; d) teljes letöltés kell.
A megoldókulcs a B függelékben található.
A fejezet forrásai
-
CODESYS Online Help: Tab „Modbus TCP Client – General” (V4.6.0.0). CODESYS GmbH. (2026-07-29) ↩
-
Waveshare Documentation Platform: Modbus_POE_ETH_IO_8CH – Overview. Waveshare. (2026-07-29) ↩↩↩↩↩↩↩↩
-
Waveshare Documentation Platform: Modbus_POE_ETH_IO_8CH – Module Parameter Configuration. Waveshare. (2026-07-29) ↩↩↩↩↩↩
-
Waveshare Documentation Platform: Modbus_POE_ETH_IO_8CH – Development Protocol (regisztertérkép). Waveshare. (2026-07-29) ↩↩↩↩
-
Waveshare termékoldal: Industrial 8-Ch Ethernet Digital Input/Output Module. Waveshare. (2026-07-29, ellenőrizve: 2026-07-31) A gyári IP-címet, a unit ID-t és a címzési jelölés magyarázatát a termékoldal sem közli. ↩↩↩↩↩↩↩↩↩
-
CODESYS Online Help: Configuring Devices and I/O Mapping (V3.5.22.0). CODESYS GmbH. (2026-07-29) ↩
-
CODESYS Online Help: Command: Online Change (V3.5.22.0). CODESYS GmbH. (2026-07-31) ↩