26.3.2024

Komunikácia - BACnet protokol

Komunikačný protokol BACnet je veľmi zaujímavý a flexibilný protokol. Subjektívne sa jedná o najkomplexnejší a najviac rozšíriteľný protokol, s ktorým som sa v praxi stretol.  Pritom to nie je žiadna novinka z hľadiska doby vzniku ani z hľadiska implementácie protokolu v aplikačnom serveri reálneho času D2000. Skúsme sa naň pozrieť z pohľadu vlastností, použiteľnosti a problémov, s ktorými sa jeho používatelia môžu stretnúť.

 

Protokol BACnet má už v svojom názve zakódovanú cieľovú oblasť použítia. Skratka BACnet znamená Building Automation and Control networks, čo zahŕňa systémy ako HVAC (Heating, Ventilation, Air Conditioning), osvetlenie, kontrola prístupu, požiarne systémy – skrátka systémy automatizácie budov.

BACnet je otvorený protokol vyvíjaný od roku 1987 združením ASHRAE (American Society of Heating, Refrigerating and Air-Conditioning Engineers). Stal sa štandardom ASHRAE/ANSI č. 135 v roku 1995 a ISO štandardom 16484-5 v roku 2003.

Čím je charakteristický a zaujímavý?

Médiá

Fyzická vrstva: BACnet je podporený na viacerých kombináciách fyzických/linkových médií:

  • ISO 8802-3 ("Ethernet") LAN – myslí sa tým „holý“ ethernet bez TCP/IP vrstvy
  • BACnet/IP – komunikácia je zabalená do UDP paketov
  • ARCNET – LAN sieť populárna v 80 rokoch
  • MASTER-SLAVE/TOKEN PASSING (MS/TP) LAN – sériová komunikácia na RS485
  • POINT-TO-POINT (PTP) – napr. modemy alebo RS-232 rozhrania
  • LonTalk LAN (LonWorks)

V počiatkoch implementácie BACnet protokolu v D2000 (rok 2005) bola väčšina nakomunikovaných zariadení vybavených LON interface. Neskôr začali prevažovať BACnet/IP zariadenia. MS/TP je zriedkavé (viem o jednej mikrovlnnej sušičke u zákazníka a minimálne jeden OEM partner má takúto komunikáciu rozbehnutú). Ostatné vyššie spomenuté médiá v D2000 zatiaľ podporené nie sú.

 

Protokolové routovanie

BACnet protokol umožňuje v pakete zadať  parametre Source networkDestination network a Destination Address. Podporuje tak protokolovo definované routovanie správ – t.j. aj medzi rôznymi typmi sietí. Existujú zariadenia – BACnet routre – vybavené viacerými komunikačnými rozhraniami a schopné routovať BACnet správy. Príkladom je Siemens Desigo PXG80-N, čo je BACnet router s Ethernet aj LonTalk rozhraním, používaný na prepojenie medzi BACnet zariadeniami na LonTalk sieti a medzi inými zariadeniami  (napr. nadradeným SCADA systémom) na Ethernet-e.

 

Bacnet-1.png
Obr 1: konfigurácia stanice typu BACnet/IP.
Parametre Adresa a voliteľne Destination address sú štandardné IP adresy,
parametre špecifické pre BACnet/IP sú Register-Foreign-DeviceRFD Time to live.

 

Bacnet-2.png
Obr 2: konfigurácia stanice typu LonWorks.
Parametre Adresa a voliteľne „Destination address“ sú v Lon formáte subnet.node,
parametre špecifické pre LonTalk sú Rpt_timerTx_timer.

  

Bacnet-3.png
Obr 3: konfigurácia stanice typu MS/TP.
Parametre Adresa a voliteľne „Destination address“ sú jednobajtové čísla,
parameter špecifický pre MS/TP je Master

Modelovanie zariadenia

BACnet modeluje fyzické zariadenia ako kolekciu objektov rôznych typov (typ objektu je 10-bitové číslo). Typy objektov definuje norma a zoznam sa v novších verziách postupne rozširuje. Typy 0-127 sú rezervované pre použitie normy, implementátori môžu vyššie typy (128-1023) použiť pre vlastné definície.

 

Bacnet-4.png
Obr 4: časť definície typov objektov z BACnet normy

 

Konkrétny objekt má svoj typ (napr. Analog Input) a svoju inštanciu (22-bitové číslo). Kombinácia typu objektu a inštancie (10+22=32 bitové číslo) postačuje na identifikáciu objektu v BACnet zariadení a používa sa pri všetkých operáciách nad objektom.

Každé fyzické zariadenie obsahuje práve jeden objekt typu Device (8). Norma v prílohe hovorí aj o možnosti viacerých „virtuálnych“ Device objektov, ale v tom prípade sa musí zariadenie tváriť ako router a všetky „virtuálne“ Device objekty sa tvária, že sú na iných sieťach (a dostupné sú pomocou adresácie obsahujúcej unikátnu kombináciu Destination network a Destination Address).

Každý typ objektu má atribúty (vlastnosti) rôznych typov. Norma pre každý typ objektu definuje zoznam atribútov spolu s určením, či sú určené na čítanie (Read) alebo aj na zápis (Write) a či je ich implementácia voliteľná (Optional). Podobne ako je to pri typoch objektov, norma si rezervuje atribúty 0-511 a vyššie necháva k dispozícii implementátorom, takže aj k štandardným typom objektom (napr. Analog Input) môžu doimplementovať neštandardný atribút, ktorý v kontexte konkrétneho zariadenia má zmysel (v prípade Analog Input je možné si predstaviť napr. rôzne štatistiky za poslednú minútu/hodinu – priemer, maximum, minimum..). Konfiguračný dialóg meraného bodu v systéme D2000 umožňuje vybrať typ objektu aj atribút z preddefinovaného zoznamu, alebo zadať ho priamo (číslo typu objektu / číslo atribútu), čo umožňuje adresovať aj implementátorom definované typy objektov a atribúty.

 

Bacnet-5.png
Obr 5: definícia atribútov pre typ objektu Analog Output
spolu s informáciou, či sú Read/Write/Optional

Spôsoby čítania hodnôt

BACnet podporuje dva spôsoby vyčítavania hodnôt:

  • požiadavka typu ReadProperty slúži na jednorazové čítanie zvoleného atribútu konkrétneho objektu (polling).
    Existuje varianta ReadProperty-Multiple, ktorá v rámci jednej požiadavky umožňuje vyžiadať viacero atribútov rôznych objektov.
  • požiadavka typu SubscribeCOV (COV=Change Of Value) slúži na prihlásenie sa k odberu zmien zvoleného atribútu konkrétneho objektu. BACnet klient tak oznamuje BACnet zariadeniu, že má záujem o posielanie notifikácií. Požiadavka SubscribeCOV platí len po dobu v nej špecifikovanú a následne ju treba obnoviť. BACnet zariadenie odpovie štandardne poslaním potvrdenia a aktuálnej hodnoty (špecialitka: konkrétny Saphire Communication Controller, s ktorým sme sa stretli, hodnotu objektu poslal až po zmene, preto existuje parameter stanice Read value after subscribe, ktorý spôsobí poslanie dotazu ReadProperty na zistenie aktuálnej hodnoty).
    Existuje varianta SubscribeCOVProperty, ktorá umožňuje posielanie zmien, iba ak sú väčšie ako špecifikovaná hodnota (t.j. nastavenie filtra priamo na zdroji).
    Je na implementátoroch, či a pre aké typy objektov (a ich konkrétne atribúty) podporia spôsob vyčítavania s použitím SubscribeCOV resp. SubscribeCOVProperty.

Notifikácie sú implementáciou zmenového spôsobu posielania zmien a menej zaťažujú klienta, server aj sieť ako periodické vyčítavanie pomocou pollingu.
Notifikácie môžu byť nepotvrdzované alebo potvrdzované. Potvrdzované notifikácie vyžadujú, aby BACnet klient poslal BACnet zariadeniu potvrdenie o prijatí zmeny (napr. pokiaľ sa jedná o kritické systémy typu zabezpečenie budovy, hlásiče požiaru a pod). Nepotvrdzované notifikácie sa môžu stratiť, na druhej strane majú nižšiu réžiu.

 V pokračovaní článku o týždeň sa budeme venovať štruktúre správ a dátovým typom použitým v protokole BACnet

 

18.9.2017, Ing. Peter Humaj, www.ipesoft.com

 

Iné blogy