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 RTU | Modbus TCP |
|---|---|---|
| Átvitel | Soros vonal, leggyakrabban kétvezetékes RS-485 | TCP/IP Ethernet felett |
| Eszközcímzés | 1 és 247 közötti slave-cím egy buszon | IP-cím, átjáró mögött egységazonosítóval |
| Hibaellenőrzés | CRC minden keret végén | Az MBAP-fejlécben nincs CRC-mező. Az Ethernet-keret saját CRC-32 értéket hordoz |
| Bejegyzett port | Nem alkalmazható | TCP 502-es port |
| Maximális üzenetméret | 256 bájt soros vonalon | 260 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ábla | Méret | Hozzáférés |
|---|---|---|
| Diszkrét bemenetek | Egyetlen bit | Csak olvasható |
| Tekercsek | Egyetlen bit | Olvasás és írás |
| Bemeneti regiszterek | 16 bites szó | Csak olvasható |
| Tartórégiszterek | 16 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és | Modbus | BACnet |
|---|---|---|
| Mit határoz meg a protokoll? | Üzenetformátumot, függvénykódokat és adattáblákat | Szabványos tulajdonságokkal rendelkező objektumokat |
| Ki adja az értéknek a jelentését? | Az eszközgyártó, a regisztertáblázatban | Az 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 meg | Eszkö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
- 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
- MODBUS over Serial Line Specification and Implementation Guide V1.02 · Modbus.org · 2.1 Master/slave principle, 2.5 Transmission modes, RS-485 interface
- MODBUS Messaging on TCP/IP Implementation Guide V1.0b · Modbus Organization · 3.1.3 MBAP Header description, port 502, section on error detection
- Specifications and Implementation Guides · Modbus Organization · Specification list
- Fronius GEN24: Modbus TCP and RTU · Fronius International GmbH · Modbus TCP and RTU operating instructions
- The Language of BACnet: Objects, Properties and Services · BACnet Committee website, article by Bill Swan (Alerton Technologies) · Objects, Device object
- KNX: One standard. Every brand. Every system. · KNX Association · Home page