Modbus (épületautomatizálás)

A Modbus nyílt kliens-szerver protokoll, amely lehetővé teszi, hogy a vezérlők soros RS-485 vagy Ethernet hálózaton olvassák és írják az eszközök adatait.

A Modbus egy nyílt üzenetküldő protokoll, amely lehetővé teszi, hogy egy vezérlő olvassa és írja a terepi eszközökben tárolt adatokat. Soros RS-485 buszon fut, ezt Modbus RTU-nak nevezik, vagy Etherneten, ez a Modbus TCP. Néhány fotovoltaikus (PV) inverter és energiamérő kínálja. Például a Fronius GEN24 inverter mindkét változatot támogatja, és továbbítja a Fronius Smart Meter adatait.

Mi a Modbus, és honnan származik?

A Modbus egy alkalmazási rétegbeli üzenetküldő protokoll, amely az OSI-modell 7. rétegében helyezkedik el. Különböző típusú buszokon és hálózatokon lévő eszközök között biztosít kliens-szerver kommunikációt. A Modbus specifikáció 1979 óta az ipar soros de facto szabványaként hivatkozik rá. A kliens kérést küld, a szerver pedig választ ad. A protokoll meghatározza az üzenetformátumot és a függvénykódok készletét. Nem mondja meg, mit jelent egy regiszter, ezt minden eszközgyártó a saját regisztertáblázatában dokumentálja.

A régebbi dokumentumok a master és slave kifejezéseket használják. A Modbus soros vonalra vonatkozó útmutató még ezeket használja, az alkalmazási protokoll specifikáció viszont a kliens és szerver kifejezéseket.

Hogyan működik a Modbus RTU soros buszon?

A Modbus RTU a soros változat. A soros vonalra vonatkozó útmutató a kétvezetékes RS-485 interfészt nevezi a leggyakoribbnak. Az RTU módot minden eszköz számára kötelezőnek írja elő, az ASCII módot pedig opcionálisnak tekinti. Az átviteli módnak és a soros port beállításainak minden, egy vonalon lévő eszköznél azonosnak kell lennie.

Minden tranzakciót egy főeszköz (master) indít. Legfeljebb 247 alárendelt eszköz (slave) osztozik a vonalon, mindegyik egyedi, 1 és 247 közötti címet kap. A slave csak akkor küld adatot, ha a master kéri. Minden keret végén CRC-ellenőrzés található, így a vevő visszautasíthatja a sérült üzenetet. Ha a master egy invertert és egy mérőt kérdez le ugyanazon a kábelen, elküld egy kérést, megvárja a választ, majd a következő eszközt kérdezi meg.

Hogyan ad hozzá a Modbus TCP Ethernet-fejlécet?

A Modbus TCP ugyanazokat a kérés- és válaszadatokat viszi egy TCP/IP-kapcsolaton belül, a bejegyzett 502-es porton. Minden üzenet 7 bájtos MBAP-fejléccel kezdődik. Ez tartalmaz egy tranzakcióazonosítót, amely párosítja a kéréseket és a válaszokat, egy protokollazonosítót, amely Modbus esetén nulla, egy hosszmezőt és egy egységazonosítót. Az átjáró (gateway) az egységazonosító alapján éri el a mögötte lévő, soros vonalon csatlakoztatott eszközt. Az alábbi táblázat összehasonlítja a két változatot.

JellemzőModbus RTUModbus TCP
ÁtvitelSoros vonal, leggyakrabban kétvezetékes RS-485TCP/IP Ethernet felett
Eszközcímzés1 és 247 közötti slave-cím egy buszonIP-cím, átjáró mögött egységazonosítóval
HibaellenőrzésCRC minden keret végénAz MBAP-fejlécben nincs CRC-mező. Az Ethernet-keret saját CRC-32 értéket hordoz
Bejegyzett portNem alkalmazhatóTCP 502-es port
Maximális üzenetméret256 bájt soros vonalon260 bájt TCP-n

Milyen adatokat tehet közzé egy Modbus-eszköz?

A specifikáció négy adattáblát határoz meg. A diszkrét bemenetek és a tekercsek (coil) egyetlen bitet tárolnak. A bemeneti regiszterek és a tartórégiszterek (holding register) 16 bites szavakat tárolnak. A diszkrét bemenetek és a bemeneti regiszterek csak olvashatók. A kliens írhatja a tekercseket és a tartórégisztereket. A protokoll a tekercseket, a diszkrét bemeneteket és a regisztereket nullától címzi. A kézikönyvben 1-től 16-ig számozott tekercsek a vezetéken a 0-tól 15-ig terjedő címeknek felelnek meg. Az adatprotokoll-egység legfeljebb 253 bájtot tartalmaz, így egy olvasási kérés korlátozott blokknyi értéket ad vissza.

AdattáblaMéretHozzáférés
Diszkrét bemenetekEgyetlen bitCsak olvasható
TekercsekEgyetlen bitOlvasás és írás
Bemeneti regiszterek16 bites szóCsak olvasható
Tartórégiszterek16 bites szóOlvasás és írás

Hogyan használják a Modbust a PV-inverterek, mérők és hőszivattyúk?

A Fronius GEN24 kézikönyve megmutatja, hogyan néz ki ez egy inverternél. Az inverter Modbus TCP-t kínál Ethernet felett, és Modbus RTU-t RS-485 felett. Felsorolja az inverteradatok és a mérőadatok regiszterblokkjait. A csatlakoztatott energiamérő a beállítható Modbus-eszközazonosítón keresztül olvasható. Egy otthoni vezérlő beolvashatja ezeket az értékeket, és felhasználhatja a vezérlési logikájában.

Az, hogy egy hőszivattyú kínál-e Modbus-ot, a modelltől és a vezérlőjétől függ. Vásárlás előtt kérje a gyártótól a pontos modell regisztertáblázatát. Mivel a Modbus protokoll nem mondja meg, melyik regiszter melyik értéket tartalmazza, a gyártó kézikönyvében szereplő regisztertáblázat a valódi referencia.

Miben különbözik a Modbus a BACnet-tól és a KNX-től?

A Modbus és a BACnet különböző protokollok. A Modbus függvénykódokat és adattáblákat határoz meg, az egyes értékek jelentését pedig az eszközgyártó adja meg. A BACnet szabványos tulajdonságokkal rendelkező objektumokat határoz meg, amelyek leírják az egyes objektumokat más eszközök számára. A BACnet-bejegyzés ismerteti az objektummodellt.

KérdésModbusBACnet
Mit határoz meg a protokoll?Üzenetformátumot, függvénykódokat és adattáblákatSzabványos tulajdonságokkal rendelkező objektumokat
Ki adja az értéknek a jelentését?Az eszközgyártó, a regisztertáblázatbanAz objektumtípus és annak tulajdonságai
Hogyan írja le magát az eszköz?Nem írja le. Ezt a kézikönyv regisztertáblázata teszi megEszközobjektuma felsorolja a támogatott objektumokat és szolgáltatásokat

A KNX egy harmadik protokoll. A KNX Association nyílt szabványként írja le, és a projektkategóriái között családi házakat is feltüntet. Egy épületautomatizálási rendszer több protokollt is kombinálhat, és egy átjáró köti össze őket. A Modbus az egyik mód arra, hogy egy PV-inverter vagy egy okosmérő adatait ilyen rendszerbe juttassuk.

Mit ellenőrizzen a Modbus-eszközök csatlakoztatása előtt?

Kezdje az eszközkézikönyvekkel, ne a protokollspecifikációval. Derítse ki, hogy az eszköz RTU-t, TCP-t vagy mindkettőt kínál-e, és melyik regisztertáblázat vonatkozik a firmware-verziójára. Minden soros eszköznek adjon egyedi címet, és a teljes buszon azonos beállításokat használjon. Írja be a regisztertáblázatot a projektdokumentációba, mert a kézikönyvek számozása eltérhet a vezetéken használt számozástól.

A biztonságra is figyelni kell. A Modbus Organization külön Modbus Security Protocolt tesz közzé, amely a Transport Layer Security (TLS) protokollt kombinálja a hagyományos Modbus protokollal. Hitelesítéshez X.509v3 tanúsítványokat használ. A Modbus Organization az 1996-os soros vonali dokumentumot elavultnak jelöli, ezért új RS-485 telepítéshez a soros vonalra vonatkozó útmutató V1.02 verzióját használja.

Gyakran ismételt kérdések

Ugyanaz a Modbus, mint a BACnet?
Nem. A Modbus függvénykódokat és adattáblákat használ, és az, hogy az egyes regiszterek mit jelentenek, az eszköz gyártójától függ. A BACnet szabványos tulajdonságokkal rendelkező objektumokat határoz meg, így az eszköz a hálózaton maga írja le a saját adatait.
Miért tolódik el eggyel a regisztercím a Modbus-térképemen?
A protokoll a regisztereket és a tekercseket nullától címzi, a kézikönyvek viszont gyakran egytől számozzák őket. A kézikönyvben 1-től 16-ig számozott regiszterek a hálózaton a 0-tól 15-ig terjedő címeknek felelnek meg. Mielőtt címet írna be a vezérlőbe, olvassa el a dokumentációban a számozásra vonatkozó megjegyzést.
Elég biztonságos a Modbus egy otthoni energiarendszerhez?
Önmagában nem. A hagyományos Modbus protokoll nem rendelkezik TLS-védelemmel. A Modbus Organization közzétett egy Modbus Security Protocol nevű szabványt, amely a protokollal együtt TLS-t alkalmaz és X.509v3 tanúsítványokat használ, ezért érdemes megkérdezni, hogy az eszközei támogatják-e.
Szükségem van átjáróra ahhoz, hogy a Modbus RTU eszközöket Ethernetre kössem?
Igen, ha a vezérlőnek csak Ethernet-csatlakozása van, az eszközök pedig RS-485 buszon vannak. Az átjáró a Modbus TCP és a Modbus RTU között fordít. A TCP-fejléc egységazonosítója (unit identifier) jelöli ki azt a soros eszközt, amelyhez a kérés eljut.
Használhat egy PV inverter és egy energiamérő közös Modbus-kapcsolatot?
Igen, megoszthatnak egy RS-485 buszt, ha mindkettő támogatja a Modbus RTU-t, és mindegyiknek egyedi címe van. Egyes inverterek, például a Fronius GEN24, a csatlakoztatott mérőt is olvassák, és adataikat az inverter saját Modbus-felületén keresztül továbbítják. A regiszterlistákat és a beállításokat a kézikönyvekben találja.
Támogatja a hőszivattyúja a Modbus-t?
Ez a modelltől és a vezérlőjétől függ. Kérje a gyártótól a pontos modell regiszterlistáját. Ha a gyártó nem tesz közzé regiszterlistát, tervezzen más módszert az adatai kiolvasására.

Források

  1. MODBUS Application Protocol Specification V1.1b3 · Modbus Organization · Introduction (de facto standard since 1979), 1.1 Scope (OSI level 7), data model table, 4.1 PDU and ADU sizes, coils addressed from zero
  2. MODBUS over Serial Line Specification and Implementation Guide V1.02 · Modbus.org · 2.1 Master/slave principle, 2.5 Transmission modes, RS-485 interface
  3. MODBUS Messaging on TCP/IP Implementation Guide V1.0b · Modbus Organization · 3.1.3 MBAP Header description, port 502, section on error detection
  4. Specifications and Implementation Guides · Modbus Organization · Specification list
  5. Fronius GEN24: Modbus TCP and RTU · Fronius International GmbH · Modbus TCP and RTU operating instructions
  6. The Language of BACnet: Objects, Properties and Services · BACnet Committee website, article by Bill Swan (Alerton Technologies) · Objects, Device object
  7. KNX: One standard. Every brand. Every system. · KNX Association · Home page