Kontaktné údaje
- info@ipesoft.com
- +421 907 703 854
- Obchodná 9076/3D
010 08 Žilina
Slovensko
© Copyright IPESOFT 2023
V druhej článku o protokole BACnet sme prešli správy a typy hodnôt, ktoré BACnet protokol podporuje.
Zápis hodnoty prebieha pomocou správy WriteProperty-Request. Táto správa obsahuje položky špecifikujúce objekt a atribút, voliteľne index (ak je atribút pole). Nasleduje zapisovaná hodnota (opäť „hocičo“) a voliteľne priorita.
Existuje aj správa WritePropertyMultiple-Request umožňujúca naraz zapísať niekoľko atribútov toho istého objektu, ale D2000 KOM proces ju neimplementuje.
Pokiaľ zapisujeme primitívne (základné) dátové typy, v konfigurácii výstupného meraného bodu je potrebné špecifikovať aplikačný tag a voliteľne aj prioritu (priorita 0 znamená, že sa v požiadavke priorita neposiela). Ako zistiť aplikačný tag? Najjednoduchšie je nakonfigurovať najskôr vstupný meraný bod, zapnúť sledovanie komunikácie a pozrieť logy, aký aplikačný tag bol načítaný.
Takto zapíšeme primitívny dátový typ. Je ale možné, aby D2000 KOM proces dokázal zapísať aj „hocičo“? Odpoveď je – áno. S použitím textového výstupného meraného bodu a tej istej syntaxe na zápis štruktúr, ako bola uvedená vyššie .
Takže napríklad zápis reťazca " { 1{ u23 s34 } 2E56 3r7.89 }" znamená poslanie BACnet štruktúry
SEQUENCE {
[1] SEQUENCE {
Unsigned 23
Signed 34
}
[2] Enumerated 56
[3] Real 7.89
}
Takto je možné riešiť aj zápis časového plánu po jeho editácii užívateľom v schéme D2000.
Na synchronizáciu času slúžia správy TimeSynchronization a UTCTimeSynchronization. Obe majú jediný parameter BACnetDateTime, čo je sekvencia dátumu a času. D2000 KOM proces vie použiť jednu z týchto správ (podľa nastavenia parametra protokolu Time-sync is UTC na stanici) na periodickú synchronizáciu času BACnet zariadenia.
Pomocou requestu GetEventInformation-Request je možné vyžiadať si od zariadenia zoznam objektov, ktoré sú v alarmových stavoch (atribút Event_State nie je v stave Normal), alebo ktorých prechod do alarmového stavu Offnormal, Fault alebo Normal nebol kvitovaný (atribút Acknowledged_Transitions má aspoň jeden bit nastavený). Je to teda ekvivalent procesných alarmov v D2000.
Odpoveďou na GetEventInformation-Request je správa GetEventInformation-Ack, ktorá obsahuje zoznam objektov a pre každý objekt zoznam vlastností:
Na konci zoznamu sa nachádza atribút moreEvents, ktorý má hodnotu True, ak zoznam eventov nie je kompletný (prekročenie dĺžky maximálnej správy a podobne). Vtedy je nutné prekonfigurovať meraný bod a nastaviť Object type a Instance na posledný objekt v zozname, čo spôsobí vygenerovanie novej správy GetEventInformation-Ack (obsahujúcej lastReceivedObjectIdentifier), ktorá bude ďalšiu časť zoznamu eventov. Prekonfigurovanie je možné robiť aj dynamicky zo skriptu s použitím tell príkazu SETPTADDR na dynamické nastavenie adresy meraného bodu. Takto je možné v skripte vyčítať zoznam objektov s alarmami „po stránkach“ a následne ich zobraziť užívateľovi.
Alarmy je následne možné potvrdiť pomocou správy AcknowledgeAlarm-Request. Keďže sa jedná o správu s viacerými položkami, na zápis sa opäť použije textový výstupný meraný bod. Konkrétny príklad potvrdenia alarmu je uvedený v helpe D2000.
Všetci implementátori, s ktorých zariadeniami sme sa stretli (Delta Controls, Klimasoft, Sauter, York, SE-Elektronic), rešpektujú BACnet konvenciu, že objekt je identifikovaný typom a inštanciou. Táto identifikácia sa nachádza vo všetkých správach, ktoré s objektami narábajú alebo ich referencujú, v podobe dátového typu BACnetObjectIdentifier. Jedinou výnimkou je Siemens (niekedy mám dojem, že ich motto je „Think complicated“). Siemens zariadenia rady Desigo slúžiace na správu budov, ktoré BACnet implementujú, používajú na identifikáciu mená objektov. Pri úpravach projektu a jeho rekompilácii a nahraní do Desigo zariadenia sa môžu inštancie objektov zmeniť, ale mená objektov zostávajú. Ako riešíť takúto komplikáciu?
Kvôli podpore Desigo zariadení pribudla do konfigurácie meraného bodu možnosť adresovať ho pomocou mena. BACnet protokol podporuje správu Who-Has na zistenie, či zariadenie obsahuje objekt s požadovaným menom alebo identifikátorom.
Pre všetky merané body adresované menom pošle D2000 KOM proces na začiatku komunikácie požiadavku Who-Has a dostane odpoveď I-Have obsahujúcu identifikátor objektu. Následne už pracuje s meraným bodom štandardne. Keďže BACnet zariadenie môže mať aj stovky objektov a vyčítavanie môže trvať na pomalých linkách (LonWorks, MS/TP) dlho, D2000 KOM proces si ukladá odpovede do cache súboru, takže pri ďalšom spustení už požiadavky posielať nemusí. Po nahraní nového projektu do Desigo zariadenia je nutné cache ručne vymazať. Následne netreba proces D2000 KOM reštartovať, ale stačí uložiť príslušnú komunikačnú stanicu a D2000 KOM proces detekuje zmazanie cache a znovu vykoná proces prevodu mien objektov na identifikátory.
Na predchádzajúcich obrázkoch konfigurácie meraných bodov (napr. Obr 21) je viditeľné tlačidlo Browse. Na čo slúži?
BACnet protokol umožňuje vyčítanie zoznamu objektov zo zariadenia, takže je možné zvoliť objekt (typ objektu a inštanciu, resp. meno objektu) výberom z načítaného zoznamu – za predpokladu, že D2000 KOM proces beží a komunikácia so zariadením je funkčná. Na vyčítanie zoznamu je nutné poznať identifikátor zariadenia, takže browsovanie sa skladá z dvoch fáz:
Fáza 1 – zistenie identifikátora zariadenia. D2000 KOM pošle požiadavku Who-Is a dostane odpoveď I-Am obsahujúcu inštanciu objektu typu Device.
Fáza 2 – postupné čítanie atribútu object-list(76) objektu typu Device. Tento atribút je pole identifikátorov objektov (typ objektu + inštancia). Najskôr sa zistí veľkosť poľa, následne sa pole postupne číta požiadavkmi typu ReadProperty. Pre každý načítaný identifikátor objektu sa ešte vyčítajú jeho atribúty object-name(77) a description(28). Tieto sú priebežne posielané procesu D2000 CNF, takže užívateľ môže sledovať postupné napĺňanie zoznamu objektov. Následne v ňom môže filtrovať a triediť hodnoty, prípadne jeho obsah vložiť do schránky a ďalej spracovať (napr. v Exceli).
Keďže načítanie zoznamu objektov je časovo náročné (rýchlosť je zvyčajne iba niekoľko riadkov za sekundu, na pomalších médiách aj nižšia), D2000 KOM proces si odpamätáva zoznam nájdených objektov a pri nasledujúcej požiadavke dáva k dispozícii výsledky okamžite. Užívateľ si môže vynútiť znovunačítanie zoznamu stlačením tlačidla Refresh v browsovacom okne.
Špecifikácia protokolu BACnet má vyše 570 strán. Tento článok sa vôbec nevenoval niektorým možnostiam, ktoré BACnet ponúka (dynamické vytváranie a mazanie objektov, práca so súbormi, voliteľná segmentácia správ a iné), ale zameral sa na čítanie a zápis hodnôt, prípadne prácu s alarmami, ktoré sú základnou požadovanou funkcionalitou pre nadradený SCADA / MES systém.
2.10.2017, Ing. Peter Humaj, www.ipesoft.com