...
Podporované typy a verzie zariadení
Konfigurácia komunikačnej linky
Konfigurácia komunikačnej stanice
Konfigurácia meraných bodov
Scheduler v zariadeniach Siemens Desigo
Scheduler v zariadeniach Delta Controls
Informácie o eventoch
Informácie o alarmoch
Poznámka k cachovaniu adries
Poznámka k zariadeniam Delta Controls
Poznámka k zariadeniam E-DDC3.1
Poznámka k zariadeniam Klimasoft MBG-MSTP
Poznámka k zariadeniam Siemens Desigo
Poznámka k iLON 10 Ethernet adaptéru
Poznámka k implementácii BACnet MS/TP
Poznámka k podpore BBMD (BACnet Broadcast Management Devices)
Tell príkazy
Literatúra
Zmeny a úpravy
Revízie dokumentu
Podporované typy a verzie zariadení
...
- komunikácia v sieťach Ethernet (BACnet/IP) a LONTalk
- obmedzená podpora MS/TP siete (master-slave token-passing na RS-485): bez automatického vyhľadávania Master staníc
- podpora BACnet routra (prepojenie medzi BACnet/IP a LONTalk sieťami)
- čítanie a zápis jednoduchých hodnôt (binárne, celočíselné, reálne, reťazce, dátum, čas atď.) aj ľubovoľných ASN sekvencií
- podpora pollingového spôsobu čítania dát (správy ReadProperty-Request a ReadPropertyMultiple-Request)
- podpora zmenového spôsobu čítania dát (voliteľná registrácia pomocou správ SubscribeCOV-Request, resp. SubscribeCOVProperty-Request a následné spracovanie ConfirmedCOVNotification-Request a UnconfirmedCOVNotification-Request)
- zápis hodnôt správou WriteProperty-Request
- dynamická zmena adresy meraného bodu pomocou TELL príkazu SETPTADDR (na načítanie hodnôt objektov typu schedule)
- práca s objektmi typu schedule (časové plány)
...
Parametre protokolu linky
Kľúčové slovo | Plný názov | Popis | Jednotka | Náhradná hodnota |
---|
| Debug Input | Rozšírené debug informácie o vstupných dátach. Význam jednotlivých bitov:- 1. bit - debugovanie parsovania ASN správy
- 2. bit - debugovanie názvov meraných bodov, ktorým prišla nová hodnota
- ostatné bity - zatiaľ nepoužité
| - | 0 |
| Debug Timeout Queue | Rozšírené debug informácie o správach v časovej fronte. | - | False |
| Device Instance | Nenulová hodnota spôsobí, že KOM proces odpovedá na požiadavku Who-Is správou I-Am, v ktorej uvádza zadané Device Instance. Nulová hodnota spôsobí, že Who-Is požiadavky budú ignorované. | - | 0 |
| Receive Buffer | (iba pre TCP/IP-UDP linku) Veľkosť prijímacieho buffra nastavovaná na UDP sockete. Hodnota 0 znamená, že sa veľkosť buffra nemení. Štandardná veľkosť na Windows XP je 8192 bajtov, pri väčšom počte staníc, resp. intenzívnejšej komunikácii je vhodné buffer zväčšiť. | bytes | 0 |
| Receive Only | Ak je hodnota True, žiadnej stanici na linke sa neposielajú žiadne správy. Parameter je použiteľný napr. pri odposluchu komunikácie LonTalk: Na linke sa nakonfiguruje adresa zhodná s adresou existujúceho LonTalk zariadenia a nakonfiguruje sa stanica s adresou zariadenia, ktorého komunikáciu potrebujeme odpočúvať. V logovacom súbore linky sa bude nachádzať zaznamenaná komunikácia medzi zariadeniami. RO=True zabezpečí, že KOM proces neovplyvní komunikáciu vlastnými príkazmi a odpoveďami. | - | False |
| Send Count | (iba pre LonWorks linku) počet opakovania jedného paketu - prednastavená hodnota je 1, ale v určitých situáciách pri použití iLON(tm)10 Ethernet Adapter-a prvá správa akoby neprešla a komunikácia začala korektne fungovať, keď sa nastavil SC=2. Poznámka: neskôr bolo zistené, že na vine bolo neukončenie Free topology zbernice terminátorom, ale parameter bol už implementovaný.. | - | 1 |
| Send Delay | (iba pre LonWorks linku) doplnok parametra SC, ktorý udáva oneskorenie (v ms) po každom poslaní paketu. | ms | 0 |
| Vendor ID | Parameter Vendor ID správy I-Am (viď parameter Device Instance). | - | 1 |
Parametre protokolu linky špecifické pre BACnet MS/TP
Kľúčové slovo | Plný názov | Popis | Jednotka | Náhradná hodnota |
---|
| MS/TP baud rate | Rýchlosť linky. Tento parameter slúži na prepočet niektorých timeoutov, ktoré sú v parametroch protokolu linky zadávané kompatibilne s normou v bitových časoch, tj. v násobkoch doby, ktorú si pri konkrétnej nastavenej prenosovej rýchlosti vyžiada prenos 1 bitu. | bits/sec | 9600 |
| MS/TP Nmax_info_frames | Maximálne množstvo informačných rámcov, ktoré môže KOM proces vyslať pred tým, ako musí odovzdať token. Norma nešpecifikuje konkrétnu hodnotu, iba hovorí, že pokiaľ táto hodnota v zariadení nie je konfigurovateľná, musí byť 1. Čím väčšia hodnota je nastavená, tým menšie množstvo času ostane pre ostatných Mastrov, ale na druhej strane sa zmenšuje množstvo rámcov bez informačného obsahu. | - | 5 |
| MS/TP Nmin_octets | Minimálne množstvo dát (bajtov) prijatých na linke, ktoré musí prijať KOM pred vyhlásením linky za "aktívnu". | - | 4 |
| MS/TP my address | Adresa KOM procesu na linke RS-485. Platná hodnota je z intervalu 0 - 127. Adresa sa musí líšiť od adries ostatných zariadení na linke (ich adresy budú uvedené v konfiguráciách staníc). | - | 1 |
| Tframe_abort | Minimálny čas (zadávaný v dĺžke vysielania bitov, t.j. závislý od parametra MS/TP baud rate), po ktorého vypršaní, bez prijatia ďalšieho znaku počas prijímania rámca, sa celý rámec zahodí. Podľa normy môžu implementácie používať aj väčšie hodnoty, ktoré neprekročia v absolútnom čase hodnotu 100 ms. | bits | 60 |
| Tno_token | Čas (zadávaný v ms) po ktorého vypršaní bez prijatia dát bude vyhlásená strata tokenu. | ms | 500 |
| Treply_timeout | Minimálny čas (zadávaný v ms), ktorý musí KOM čakať, kým stanica začne odpovedať na požiadavku. | ms | 255 |
| Tslot | Čas (zadávaný v ms), počas ktorého môže stanica vygenerovať token. | ms | 10 |
| Tusage_timeout | Minimálny čas (zadávaný ms), ktorý musí KOM čakať, kým partner začne používať token alebo odpovie na Poll for master rámec. Štandardná hodnota je 20 ms, podľa normy môžu implementácie používať aj väčšie hodnoty, ktoré neprekročia 100 ms. | ms | 20 |
Kotva |
---|
| komunikacna_stanica |
---|
| komunikacna_stanica |
---|
|
Konfigurácia komunikačnej stanice
...
- Typ stanice: Stanica nakonfigurovaná na linke TCP/IP-UDP musí mať typ BACnet/IP, stanica nakonfigurovaná na linke LonWorks musí mať typ LonWorks. Stanica nakonfigurovaná na linkách SerialOverUDP Device Redundant alebo Serial musí mať typ MS/TP.
- Adresa:
- Stanica BACnet/IP: IP adresa stanice (v tvare A.B.C.D, napr. 172.16.0.99)
- Stanica LonWorks : adresa LON subsiete a LON uzla (v tvare subnet.node, kde subnet je 8-bitové číslo a node je 7-bitové číslo)
- Stanica MS/TP: číslo nodu na linke (0-254, adresa 255 je broadcast)
- Port: (iba pre BACnet/IP): číslo UDP portu stanice (podľa normy 0xBAC0, tj. 47808)
- Doména: (iba pre LonWorks): 0 alebo 1, súvisí s konfiguráciou linky. Na linke LonWorks je možné nakonfigurovať príslušnosť k jednej alebo dvom doménam, na stanici BACnet sa výberom domény udáva, do ktorej domény zariadenie patrí (výber ovplyvňuje 'domain' bit v LON adrese)
- Source network: číslo zdrojovej siete (tj. siete, do ktorej patrí KOM proces). Pre linku LonWorks sa štandardne nenastavuje, pre linku TCP/IP-UDP je to 16-bitové číslo (alebo sa nenastavuje, viď nižšie Poznámka 2).
Kotva |
---|
| destionation_network |
---|
| destionation_network |
---|
|
Destination network: 16-bitové číslo cieľovej siete (tj. siete, do ktorej patrí zariadenie, s ktorým KOM proces komunikuje).
Pre linku LonWorks sa nastavuje v prípade, že KOM proces komunikuje so zariadením, ktoré sa nachádza za BACnet routrom. V takom prípade Adresa stanice je adresa BACnet routra a Destination address je adresa cieľového zariadenia.
Pre linku TCP/IP-UDP sa parameter Destination network podobne použije iba v prípade komunikácie medzi rôznymi sieťami BACnet.
Poznámka 1: Táto konfigurácia bola otestovaná nasledovne:- Linka: TCP/IP-UDP
- Typ stanice: BACnet/IP
- Adresa: 172.16.99.1 (adresa BACnet routra PXG80-N)
- Destination network: 1
- Destination address: 1.1 (adresa PXC22 na LON sieti za BACnet routrom
KOM proces komunikoval so zariadením PXC22 pripojeným k LON sieti prostredníctvom BACnet routra PXG80-N. Komunikácia medzi KOM procesom a BACnet routrom je po sieti Ethernet, preto je linka typu TCP/IP-UDP. Komunikácia medzi BACnet routrom a stanicou PXC22 prebiehala po sieti LON.
Poznámka 2: Riešili sme podobnú konfiguráciu, kde bol použitý Delta Controls DSM-RTR (pripojený po Ethernet sieti) a za ním cez MS/TP rozhranie pripojené zariadenie Klimasoft MBG (gateway na M-Bus). V skúšanej konfigurácii sa komunikácia rozbehla, pokiaľ nebola nakonfigurovaná Source network, ale iba Destination network (konkr. hodnota 50020) a Destination address (konkr. 96). Pritom v inom prípade v podobnej konfigurácii komunikácia fungovala aj s parametrom Source network, takže treba vyskúšať a poexperimentovať, ktoré nastavenie sieťových parametrov, ktorému zariadeniu vyhovuje.
...
- Resubscribe interval: Čas v sekundách, po uplynutí ktorého sa znovu posiela stanici žiadosť o posielanie zmien meraných bodov. Tento parameter sa týka meraných bodov s Request type rovným SubscribeCOV alebo SubscribeCOVProperty.
- Max APDU: Maximálna veľkosť správy (APDU=application protocol data unit), ktorú KOM proces posiela. Prednastavené hodnota je:
- 1467 oktetov pre linku TCP/IP-UDP
- 487 oktetov pre linky SerialOverUDP Device Redundant alebo Serial (BACnet MS/TP)
- 55 oktetov pre linku LonWorks (obmedzenia sú dané veľkosťami paketov, ktoré sú schopné protokoly siete Ethernet a LonWorks prepraviť, v prípade LonWorks je maximálna hodnota 206 a hodnota 55 je kvôli obmedzeniam iLON 10 Ethernet adaptéra)
Menenie prednastavenej hodnoty má zmysel kvôli testovaniu a na prispôsobenie sa staniciam, ktoré sú schopné spracovať iba menšie správy. V súčasnosti zmenšenie parametra Max APDU má vplyv iba na veľkosť a množstvo správ ReadPropertyMultiple-Request. Tieto správy slúžia na periodické čítanie hodnoty meraného bodu (viď konfigurácia meraného bodu).
Poznámka: Nastavenie Max APDU nemá vplyv na veľkosť parametra max-APDU-length-accepted v APDU BACnet-Confirmed-Request-PDU, ktorým KOM proces oznamuje partnerovi, akú najväčšiu správu je schopný spracovať. Tento parameter je konfigurovaný pomocou parametra protokolu stanice Segment-Response.
- Priorita: priorita správy v BACnet protokole. Existujú 4 priority, prednastavená je Normal, vyššie sú Urgent, CriticalEquipment a LifeSafety.
- Rpt_timer & reply: (iba pre LonWorks): parametre Repeat timer a Retry protokolu LonTalk. Prednastavené hodnoty sú 1 a 1.
- Tx_timer: (iba pre LonWorks): parameter Tx_timer protokolu LonTalk. Prednastavená hodnota je 3.
- Timeout a retry: timeout v milisekundách na potvrdenie správy. Prednastavená hodnota je podľa protokolu BACnet 3000 ms. Po vypršaní timeoutu sa správa posiela opäť a to až retry-krát. Ak nie je prijaté žiadne potvrdenie, zvýši sa počítadlo chýb na stanici.
Poznámka: Pri testovaní zariadenia Siemens PXC64-U (komunikácia cez LonTalk) bolo potrebné nastaviť Retry=8, Timeout=300 (viac opakovaní s kratším timeoutom), v dôsledku toho bolo treba zvýšiť aj hodnoty COM_ERR=10, HARD_ERR=20, aby pri opakovaní posielania správy neprechádzala stanica do chybového stavu.
...
Parametre protokolu stanice
Kľúčové slovo | Plný názov | Popis | Jednotka | Náhradná hodnota |
---|
| Read After Subscribe | Parameter ovplyvňuje merané body s Request type = SubscribeCOV alebo SubscribeCOVProperty. Nastavenie hodnoty na True spôsobí, že po výzve SubscribeCOV resp. SubscribeCOVProperty pošle KOM proces následne aj požiadavku na čítanie (ReadProperty-Request). Pozn: Štandardne parameter netreba nastavovať, pretože ako odpoveď na SubscribeCOV resp. SubscribeCOVProperty väčšina zariadení pošle okrem potvrdenia aj aktuálnu hodnotu. Parameter bol implementovaný kvôli komunikácii so Saphire Communication Controller rev.077-0210, ktorý poslal iba potvrdenie, ale nie aktuálnu hodnotu. | - | False |
| Receive-send Delay | Oneskorenie medzi prijatím odpovede stanice a poslaním ďalšieho paketu. | ms | 0 |
| Segment-Response | Bajt obsahujúci Max Segs a Max Resp parametre (viď špecifikáciu protokolu BACnet). Povolené sú iba niektoré hodnoty z intervalu 0-127, ktoré špecifikuje norma BACnet. Hodnotu 128 interpretuje KOM proces ako default:- LonWorks linka: hodnota sa nastaví na 0x70 (akceptovaných je viac ako 64 segmentov, max. dĺžka správy 50 bajtov)
- TCP/IP-UDP linka: hodnota sa nastaví na 0x75 (akceptovaných je viac ako 64 segmentov, max. dĺžka správy 1476 bajtov)
- Serial a SerialOverUDP Device Redundant linka: hodnota sa nastaví na 0x73 (akceptovaných je viac ako 64 segmentov, max. dĺžka správy 480 bajtov)
| - | 128 |
| Time-Synchronization UTC | Parameter má význam, iba ak je povolená synchronizácia v konfigurácii stanice na záložke "Časové parametre". Ak je hodnota parametra True (default), časová synchronizácia je vykonávaná pomocou správy UTCTimeSynchronization-Request (synchronizácia v UTC čase). Ak je hodnota parametra False, časová synchronizácia je vykonávaná pomocou správy TimeSynchronization-Request (synchronizácia v lokálnom čase). Poznámky:- Odporúčame synchronizáciu v UTC čase, pokiaľ ju zariadenie podporuje - je tak možné vyhnúť sa problémom s prechodom časov.
- Požiadavky na časovú synchronizáciu sú nepotvrdzované správy - t.j. od zariadenia nepríde odpoveď ani v prípade, ak podporuje časovú synchronizáciu, ani keď ju nepodporuje.
- Časová synchronizácia bola otestovaná na zariadení Siemens PXC36-E.D (HW=V3.02). Toto zariadenie podporuje synchronizáciu cez UTC aj lokálny čas. Je možné vyčítať aktuálny čas a dátum ako property local-date(56) a local-time(57) objektu typu Device(8).
Z tohto objektu je možné vyčítať aj property utc-offset(119) udávajúci offset lokálneho času od UTC (v minútach, t.j. -60 je stredoeurópsky pásmový čas) ako aj property daylight-savings-status(24) udávajúci, či pracuje zariadenie na letnom čase (v septembri 2012 bola na testovanom zariadení hodnota True). Po časovej synchronizácii sa hodnoty local-date(56) a local-time(57) príslušne zmenili.
| - | True |
Konfigurácia meraných bodov
...
- Request type: čítanie a zápis vlastností objektov je možný niekoľkými spôsobmi:
- ReadProperty - periodické čítanie vlastnosti objektu systémom výzva-odpoveď, periódu pollingu je nastaviteľná na stanici na záložke Časové parametre. Na výzvu sa použije správa ReadProperty-Request, zariadenie ako odpoveď posiela správu ReadProperty-Ack. Periodické čítanie zaťažuje sieť a je neefektívne, preto pokiaľ zariadenie podporuje posielanie zmenových dát, odporúčame použiť SubscribeCOV alebo SubscribeCOVProperty.
Správa ReadProperty-Request je posielaná iba vtedy, ak je zaškrtnutý checkbox Subscribe/read. - ReadPropertyMultiple - podobné ako predchádzajúce, na rozdiel od ReadProperty sa v jednej výzve aj odpovedi posiela niekoľko vlastností, takže komunikácia je efektívnejšia. Na výzvu sa použije správa ReadPropertyMultiple-Request, zariadenie ako odpoveď posiela správu ReadPropertyMultiple-Ack.
Správa ReadPropertyMultiple-Request je posielaná iba vtedy, ak je zaškrtnutý checkbox Subscribe/read. - WriteProperty - zapisovanie hodnôt správou WriteProperty-Request. Je nutné špecifikovať aj parameter Application tag. Ak je zaškrtnuté Subscribe/read, po zápise sa spätne číta zapísaná hodnota správou ReadProperty-Request.
- SubscribeCOV - čítanie hodnoty objektu zmenovým spôsobom. Ak je zaškrtnutý checkbox Subscribe/read, po štarte KOM pošle správu SubscribeCOV-Request, ktorou oznámi zariadeniu, že chce byť informovaný o zmenách hodnoty objektu. Je možné špecifikovať, či zariadenie má posielať potvrdzované (správa ConfirmedCOVNotification-Request) alebo nepotvrdzované (UnconfirmedCOVNotification-Request) notifikácie. Potvrdzovaná notifikácia je správa, ktorá vyžaduje explicitné potvrdenie KOM-u správou BACnet-SimpleACK-PDU, takže zaťažuje sieť potvrdeniami, ale pravdepodobnosť, že sa notifikácia stratí, je podstatne menšia ako u nepotvrdzovanej (ak zariadenie nedostane potvrdenie, správu opakuje).
Poznámka 1: Okrem dynamickej registrácie správou SubscribeCOV-Request môžu niektoré zariadenia podporovať statickú registráciu (uloženú v konfigurácii), takže nie je potrebné sa registrovať a checkbox Subscribe/read môže byť odškrtnutý.
Poznámka 2: Registrácia môže byť posielaná v pravidelných intervaloch (napr. kvôli možnému výpadku napájania zariadenia). Interval posielania registrácie sa nastavuje na stanici ako parameter Resubscribe interval. Kotva |
---|
| subscribecovproperty |
---|
| subscribecovproperty |
---|
|
SubscribeCOVProperty - podobné ako SubscribeCOV, navyše je možné špecifikovať aj Property identifier (takže je možné sledovať aj zmeny iných vlastností objektov ako iba hodnoty) a prípadne Increment - veľkosť prírastku, ktorý spôsobí poslanie zmeny (t.j. pásmo necitlivosti).
Posielaná správa je SubscribeCOVProperty-Request.
Poznámka: Testované zariadenie Siemens PXC64-U nepodporovalo parameter Increment.- WhoIs-identifikačná správa Who-Is-Request na zistenie, aký Device Object zariadenie obsahuje. Odpoveďou je správa I-Am-Request (obsahuje polia iAmDeviceIdentifier, maxAPDULengthAccepted, segmentationSupported, vendorID). Ak je meraný bod typu TxtI, všetky tieto informácie sú v textovej podobe extrahované do hodnoty meraného bodu. Keď takto identifikujem Device Object, môžem si nakonfigurovať meraný bod na načítanie vlastnosti object-list identifikovaného Device Object-u a ak zariadenie túto vlastnosť implementuje, vráti zoznam identifikátorov všetkých objektov, ktoré obsahuje. Následne je možné zisťovať vlastnosti týchto objektov (object-name, location, description, present-value ..)
Poznámka: Pre zariadenie Siemens PXC64-U je nutné čítať vlastnosť object-list s nastaveným Array index, pričom Array index=0 udáva počet prvkov poľa, prístup k jednotlivým prvkom poľa je cez Array index=1 až N. - WhoHas-identifikačná správa Who-Has-Request na zistenie mena objektu z identifikátora objektu alebo naopak. Odpoveďou je správa I-Have-Request (obsahuje polia deviceIdentifier, objectIdentifier a objectName). Správa Who-Has-Request sa posiela iba raz pri inicializácii meraného bodu (resp. po TELL príkaze SETPTADDR) a slúži na prevod medzi menami a identifikátormi objektov.
Správa Who-Has-Request bude obsahovať buď meno alebo identifikátor objektu podľa toho, či je na meranom bode nakonfigurovaný Address type ako Name alebo Object type+Instance.
Podľa toho, či je zaškrtnuté Subscribe/read, môže sa použiť informácia z cache, čo je podstatne rýchlejšie ako zisťovanie z komunikácie. Kotva |
---|
| readwritescheduler |
---|
| readwritescheduler |
---|
|
ReadWriteScheduler: na výzvu sa použije správa ReadProperty-Request, na zápis WriteProperty-Request, pričom pri zápise sa zapisuje N dvojíc čas-hodnota. Konfigurácia sa používa na čítanie a zápis objektov typu schedule, podrobnejší popis viď Scheduler v zariadeniach Siemens Desigo. Kotva |
---|
| geteventinformation |
---|
| geteventinformation |
---|
|
GetEventInformation: zistenie zoznamu objektov, ktoré sú v alarmovom alebo chybovom stave alebo potrebujú kvitovanie, podrobnejší popis viď Informácie o eventoch. Kotva |
---|
| acknowledgealarm |
---|
| acknowledgealarm |
---|
|
AcknowledgeAlarm: kvitovanie alarmov, ktorých zoznam bol načítaný requestom GetEventInformation. Podrobnejší popis viď Informácie o alarmoch. Meraný bod musí byť textový výstup (TxtO).
- Address type: Každý objekt v protokole BACnet je adresovaný cez Identifikátor objektu. Pri návrhu aplikácie v systéme Desigo sú objekty reprezentované názvami, pričom adresa objektu nie je prístupná a môže sa meniť v dôsledku zmien aplikácie. Zariadenia Delta Controls majú naopak objekty, ktorých adresy zadáva tvorca aplikácie. Z tohto dôvodu sú možné dva spôsoby zadávania adresy meraného bodu zodpovedajúce dvom Address type:
- Name: zadá sa meno objektu. Typ objektu a číslo inštancie sa zistia dynamicky z komunikácie. Kvôli nezahlcovaniu komunikačných liniek pri štarte KOM procesu sa využíva ukladanie údajov do BACnet cache.
- Object type + Instance: zadá sa typ objektu a číslo inštancie. Vhodné pre BACnet objekty s konštantnými adresami.
- Object type: typ objektu, ktorého vlastnosti chcem čítať/zapisovať. Je možné použiť preddefinované typy alebo zapísať číslo nového typu objektu, ktoré si zadefinoval výrobca zariadenia. Typ objektu je 10-bitové číslo.
- Instance: poradové číslo objektu v rámci typu objektu. Každý objekt má v rámci zariadenia unikátny Object Identifier, čo je dvojica [Object type, Instance]
- Object Name: názov objektu, keď Address type= Name, t.j. keď adresa meraného bodu sa zisťuje dynamicky z komunikácie. Object Name musí byť zadaný presne, t.j. netolerujú sa zbytočné medzery na začiatku ani na konci a aj malé a veľké písmená sa musia zhodovať s názvom objektu, ktorý je uložený v zariadení, s ktorým sa komunikuje.
- Property type: typ vlastnosti - pre Simple sa zadáva iba PropertyIdentifier, pre Complex treba zadať aj Complex address. Komplexný typ vlastnosti je potrebný pri parsovaní implementátorom definovaných rozšírení štandardných správ (Abstract Syntax & Notation). Pri posielaní správ ReadProperty-Request, ReadPropertyMultiple-Request, SubscribeCOV-Request, SubscribeCOVProperty-Request je Complex address ignorovaná,
- Property identifier: identifikátor vlastnosti objektu. Je možné použiť preddefinované vlastnosti alebo zapísať číslo novej vlastnosti, ktoré si zadefinoval výrobca zariadenia. Identifikátor vlastnosti je typu Enumerated Value, vlastnosti 0-511 sú rezervované pre BACnet, čísla 512-4194303 sú použiteľné pre výrobcov zariadení.
- Array index: niektoré vlastnosti môžu byť definované ako polia hodnôt, v tom prípade je možné čítať alebo zapisovať konkrétnu položku poľa.
Kotva |
---|
| application_tag |
---|
| application_tag |
---|
|
Application tag: nutné špecifikovať pri zápise hodnoty (Request type=WriteProperty) a prípadne aj pre iné typy žiadostí, pokiaľ parsovaná odpoveď obsahuje kontextové tagy, ktorých aplikačný typ nie je známy, pretože ide o implementátorom definované rozšírenie správ. Výnimkou je výstupný textový bod, ktorý sa pri nešpecifikovanom aplikačnom tagu chápe ako 'AnyTree' a slúži na zápis ľubovoľnej užívateľom zadanej ASN sekvencie.
Poznámka: Pokiaľ je zapisovaná hodnota Invalid, nezapíše sa ako definovaný Application tag, ale ako Application tag "Null". Kotva |
---|
| complex_address |
---|
| complex_address |
---|
|
Complex address: adresa tagu v 'strome' v prípade implementátorom definovaných rozšírení správ.
Príklad adresy: [1].[3].2.1
Popis:
[1] - kontextový tag č.1 (predpokladá sa, že je to sekvencia),
[3] - v rámci tejto sekvencie kontextový tag č.2 (opäť musí byť sekvencia),
2 - v rámci tejto sekvencie druhý tag v poradí (opäť sekvencia),
1 - v rámci tejto sekvencie prvý tag v poradí.
Adresa v 'strome' sa začína od úrovne propertyValue (viď príklady správ nižšie).
Najjednoduchší spôsob zobrazenia parsovanej správy je zapnutie debugu na linke a sledovanie výpisov na konzole alebo v logu linky.
Príklad 1: Majme zariadenie, ktoré obsahuje objekt typu 2 (Analog Value) s číslom inštancie 1 a predpokladajme, že zariadenie posiela ako hodnotu objektu trojicu čísel, z ktorých prvá je aktuálna hodnota, druhá minútový priemer a tretia desaťminútový priemer. Výpis parsovanej správy môže byť nasledovný:
=== ASN Body beg ===
objectIdentifier (tag 0) OBJID 2 analog-value,1
listOfResults (tag 1) SEQUENCE {
propertyIdentifier (tag 2) ENUM 85 present-value
propertyValue (tag 4) SEQUENCE {
REAL 1.40000E+00
REAL 1.10000E+00
REAL 1.30000E+00
}
}
=== ASN Body end ===
Ak máme záujem o všetky tri hodnoty, nakonfigurujem 3 merané body, (Object type=analog_value, Instance=1, Property-identifier=present-value, Property-type=complex), ktoré sa budú líšiť komplexnou adresou (pre prvý bod 1, pre druhý 2, pre tretí 3). Iba jeden meraný bod by mal mať zaškrtnutý checkbox Subscribe/read, pretože odpoveďou na jednu žiadosť je správa s troma hodnotami. Pri posielaní správ ReadProperty-Request, ReadPropertyMultiple-Request, SubscribeCOV-Request, SubscribeCOVProperty-Request ani WriteProperty-Request sa komplexná adresa nepoužíva.
Poznámka: Ak by bol nakonfigurovaný meraný bod s Property-type=simple, jeho hodnota by sa po parsovaní správy nastavila na prvú nájdenú hodnotu (v príklade 1.40000E+00).
Príklad 2: Zariadenie Siemens Desigo PXC64-U má meraný bod (Object type=schedule, Instance=6, zaškrtnutý Subscribe-read, Property-identifier=weekly-schedule, Property-type=complex, Array index=1, Complex address=1). Na linke je zapnutý debug. Po uložení meraného bodu KOM proces pošle požiadavku a vypíše odpoveď:
=== ASN Body beg ===
objectIdentifier (tag 0) OBJID 17 schedule,6
propertyIdentifier (tag 1) ENUM 123 weekly-schedule
propertyArrayIndex (tag 2) UNSIGNED 1
propertyValue (tag 3) SEQUENCE {
SEQUENCE {
TIME 0:0:0.0
UNSIGNED 2
TIME 4:0:0.0
UNSIGNED 3
TIME 22:0:0.0
UNSIGNED 1
}
}
=== ASN Body end ===
V propertyValue sa nachádza sekvencia 6 hodnôt (striedavo čas a kladné číslo). Ak chceme pristupovať k prvému času, treba nastaviť Complex address=1.1, ak k prvému kladnému číslu, treba nastaviť Complex address=1.2, t.j. prvý element - sekvencia - a v rámci neho druhý element v poradí (UNSIGNED 2). Ak potrebujeme pristupovať k viacerým časom a/alebo hodnotám naraz, stačí nakonfigurovať niekoľko meraných bodov, z ktorých iba jeden bude mať zaškrtnuté Subscribe/read.
Poznámka 1: Hodnota meraného bodu po vytvorení a uložení s komplexnou adresou 1 zostane Unknown, pretože nakonfigurovaná komplexná adresa 1 zodpovedá 1. prvku v rámci propertyValue, čo je sekvencia a nie jednoduchý zobraziteľný typ.
Poznámka 2: Meraný bod typu Text je schopný obsiahnuť nielen jednoduchú hodnotu ale aj ľubovoľnú ASN sekvenciu. Jednotlivé hodnoty budú zapísané podľa pravidiel pre zápis ASN sekvencie. Ak v predchádzajúcom príklade nastavíme Complex address=1 a meraný bod zmeníme na textový vstup alebo výstup, jeho hodnota bude reťazec " T0:0:0.0; u2; T4:0:0.0; u3; T22:0:0.0; u1; ". Ak bude Property-type=complex, ale Complex address nebude zadaná, výsledok bude " 0{ T0:0:0.0; u2; T4:0:0.0; u3; T22:0:0.0; u1; }".- Increment: prírastok zmeny hodnoty vlastnosti objektu, ktorý spôsobí reportovanie zmeny (viď popis SubscribeCOVProperty).
- Confirmed: ak je checkbox zaškrtnutý, pre nakonfigurované Request typy SubscribeCOV a SubscribeCOVProperty špecifikuje, či zariadenie má posielať potvrdzované (správa ConfirmedCOVNotification-Request) alebo nepotvrdzované (UnconfirmedCOVNotification-Request) notifikácie.
Kotva |
---|
| subscriberead |
---|
| subscriberead |
---|
|
Subscribe/read: ak je checkbox zaškrtnutý, sú pre nakonfigurované Request typy posielané príslušné správy na čítanie/registráciu zmien hodnôt:
ReadProperty: správa ReadProperty-Request
ReadPropertyMultiple: správa ReadPropertyMultiple-Request
SubscribeCOV: správa SubscribeCOV-Request
SubscribeCOVProperty: správa SubscribeCOVProperty-Request
ReadWriteScheduler: správa ReadProperty-Request
...
Poznámka: Pomocou Ctrl+C je možné skopírovať obsah dialógu Bacnet Item Browser do clipboardu. Pokiaľ je vyznačený konkrétny riadok, skopíruje sa iba ten.
Poznámka: Vo verziách z 20.12.2018 a novších bolo implementované recyklovanie prehliadacieho dialógu. Pokiaľ je dialóg zavretý tlačidlom Cancel alebo po výbere objektu, v skutočnosti je iba skrytý a je k dispozícii pre browsovanie iného meraného bodu v rámci tej istej stanice, takže sa zachováí stromová štruktúra prehliadaných objektov. Kliknutie na krížik vpravo hore spôsobí skutočné zavretie dialógu.
![Prehliadanie adresného priestoru Prehliadanie adresného priestoru](/download/attachments/84346905/protokol_bacnet_prehliadanie.png?version=1&modificationDate=1507828498637&api=v2)
Zápis ľubovoľnej ASN sekvenciePomocou nakonfigurovaného meraného bodu typu textový výstup (TxtO) s nenastaveným aplikačným tagom je možné zapísať ľubovoľnú ASN sekvenciu. Pravidlá zápisu sú nasledovné:
...
Čítanie schedulera (atribút weekly-schedule)
- Hodnotu po hodnote: dynamickou zmenou komplexnej adresy (1.1, 1.2, 1.3 atď) v skripte je možné vyčítať všetky hodnoty a časy podobne ako pre iné vlastnosti.
- Všetky časy a hodnoty pre jeden deň naraz:
- Typ hodnoty: Textový vstup (čítanie schedulera) alebo Textový výstup (čítanie aj zápis)
- Request type: ReadProperty (čítanie schedulera) ReadWriteScheduler (čítanie aj zápis)
- Subscribe/read: Y
- Object type: schedule(17)
- Instance: číslo inštancie (napr. 6) zistené z konfigurácie Desigo alebo pomocou WhoIs requestu.
- Property type: Complex
- Property identifier: weekly-schedule(123)
- Array index: 1 až 7 podľa načítavaného dňa
- Application tag: ak nie je udaný, použije sa Unsigned (potrebný iba pri zápise hodnoty)
- Complex address: 1 (adresa sekvencie)
Do textovej hodnoty sa načítajú časy a hodnoty oddelené bodkočiarkou (
...
viď Poznámka 2).
Pri zápise hodnoty schedulera je potrebné si uvedomiť, že hodnota môže byť poslaná
...
s rôznymi aplikačnými tagmi (Unsigned, Signed), pričom zariadenie očakáva konkrétny tag (najjednoduchšie sa dá zistiť načítaním hodnoty pri zapnutom debugu na linke). Aplikačný tag hodnoty je konfiguračne určený položkou Application tag v konfigurácii. Platné hodnoty Application tag sú Boolean, Unsigned, Signed, Real a Double. V prípade, že je nastavený iný typ, sa automaticky posiela Unsigned hodnota. Typ hodnoty je možné dynamicky zmeniť - ak je prvý znak zapisovanej textovej hodnoty B,U,S,R alebo D, je chápaný ako (B)oolean, (U)nsigned, (S)igned, (R)eal alebo (D)ouble.
Zápis schedulera (atribút weekly-schedule)
- Nutné je nakonfigurovať Request type=ReadWriteScheduler a do meraného bodu typu Textový výstup priradiť postupnosť dvojíc čas a hodnota oddelených bodkočiarkou, napr. "0:0:0; 1; 2:30:40.5; 2; 5:00:00;1".
- Aby sa po uložení konfigurácie D2000 alebo po štarte KOM procesu nezapisovala do schedulera 'prázdna sekvencia', je textový reťazec s dĺžkou 0 ignorovaný. Preto, ak je potrebné vymazať časový plán schedulera pre konkrétny deň, do meraného bodu je treba priradiť reťazec nenulovej dĺžky, ktorý neobsahuje žiadny čas ani hodnotu: " ".
Kotva |
---|
| note_schedulersiemens |
---|
| note_schedulersiemens |
---|
|
Poznámka: Okrem špecializovaného requestu ReadWriteScheduler je možné zapísať weekly-schedule aj cez zápis ASN sekvencie, napr. hodnote "0:0:0; 1; 2:30:40.5; 2; 5:00:00;1" z predchádzajúceho príkladu zodpovedá sekvencia "{ T0:0:0 u1; T2:30:40.5 u2; T5:0:0 u1 }" pričom konfigurácia meraného bodu sa líši iba v Request type=ReadProperty. Navyše je možné zapísať časový plán na celý týždeň, ak sa nenastaví Array index a hodnota obsahuje 7 sekvencií na jednotlivé dni, napr. "{ T0:10:0 u3 T1:3:0 u1; } {T2:0:0.0 u2 T5:30:10.0; u3; } { T6:0:0.0 u2 T7:0:0.0 u3} { T20:0:0.33; u1} { T21:0:0.0; u1} { T22:0:0.0; u2} 0 { T0:0:0.0; u3; T1:2:0.0; u1; T2:0:0.0; u2; T5:30:10.0; u3}".
...
S pôvodným firmvérom zariadenie (2.01.05) nereagovalo na Who-Is, po upgrade firmvéru na verziu 2.01.16 sa toto chovanie opravilo a korektne funguje aj WriteProperty.
...
...
Poznámka k zariadeniam ...
Siemens Desigo
...
Podľa dokumentu "DESIGO INSIGHT: Installation, setup and communication - Engineering guide" odporúčané adresné nastavenia pre komunikácu cez LonWorks sú:
- DomainID: 0x49
- SubnetID: 1
- NodeID:
- 1..100 - adresy rezervované pre automatizačné stanice (PX) a systémové zariadenia (BACnet routre)
- 101..120 - operátorské zariadenia a management stanice DESIGO INSIGHT
- 121..127 - dočasné operátorské zariadenia (napr. operátorská jednotka PXM20) a nástroje (DTS)
Poznámka k zariadeniam Klimasoft MBG-MSTP...
Testovacia konfigurácia Testovacia konfigurácia obsahovala Moxa NPort 5150 (prevodník z UDP na RS485) pripojený k prevodníku MBG-MSTP, ktorý komunikoval s meračom tepla Siemens UH50-A21R-SK06-G. Vyčítavané boli analógové vstupy, prevodník MBG-MSTP podporoval iba ReadProperty.
Komunikáciu s testovacou zostavou sa podarilo oživiť v nasledujúcej konfigurácii:
...
KOM proces pošle kvôli prevodu textového názvu nakonfigurovaného v adrese M.Des2_test Who-Has požiadavku na zariadenie Des2. Pri posielaní sa použije IP adresa Rtr2 10.0.0.2.
Rtr2 prepošle požiadavku do LON siete na Des2 (podľa parametrov Destination network=12 a Destination address=2.2 uvedených v konfigurácii stanice B.Des2). Z BACnet/LON zariadenia Des2 príde broadcast odpoveď I-Have. Keďže BACnet router Rtr2 je bez podpory BBMD, prepošle odpoveď (za predpokladu, že je tak nakonfigurovaný) BACnet routru Rtr1, ktorý má podporu BBMD.
Rtr1 prepošle I-Have správu ako UDP paket KOM procesu, pretože je nakonfigurovaný parameter stanice B.Des1 Register-Foreign-Device a teda KOM proces sa registroval ako príjemca broadcast správ u Rtr1). Takto sa I-Have správa dostane do KOM procesu s inou IP adresou ako bola pôvodná výzva. Vyššie popisovaná funkcionalita spáruje takúto odpoveď s výzvou od stanice B.Des2 na základe zhody textového názvu objektu v poslanej výzve.
Z popísaného postupu zároveň vyplýva jedno konfiguračné obmedzenie - všetky popísané činnosti sa dejú v kontexte jednej linky, takže je nutné, aby na jednej linke sa nachádzali všetky stanice, ktoré sú v pôsobnosti jedného BBMD zariadenia.
Tell príkazy...
Príkaz | Syntax | Popis |
STWATCH | STWATCH MenoStanice | Tell príkaz pošle na stanicu príkazy ReadProperty, ReadPropertyMultiple a Subscribe podľa konfigurácie jednotlivých meraných bodov. |
Literatúra
...
ANSI/ASHRAE Standard 135-2001: BACnet - A Data Communication Protocol for Building Automation and Control Networks
ASN.1 Complete by Prof. John Larmouth
Info |
---|
|
O protokole BACnet si môžete prečítať aj blogy: |
Zmeny a úpravy
...