Promotic
WikipediaLinkedInYoutubeTwitterFacebook

PmBACnet - Ovladač pro komunikaci protokolem BACnet

Tento ovladač slouží pro komunikaci se zařízeními, které podporují protokol BACnet. Viz Komunikace protokolem BACnet.
 
Před použitím tohoto ovladače v aplikaci PROMOTIC je vhodné přečíst kapitolu: Komunikace pomocí PROMOTIC ovladačů.
 
Základní vlastnosti ovladače:
- Použití tohoto ovladače je vázáno na zakoupení licence: PmBACnet. S freeeware verzí PmFree nebo při vývoji aplikace (s vývojovou licencí pro testovací účely) je tato komponenta funkční vždy.
- Komunikace je přes Ethernet. Ovladač podporuje výhradně aplikační vrstvu BACnet/IP s transportní vrstvou UDP.
- Ovladač je začleněn do systému PROMOTIC pomocí objektu PmComm.

Ovladač podporuje použití objektu PmCommData (pro čtení i zápis proměnných). Objekt PmCommMsg se používá pouze pro speciální pomocnou zprávu, která zjistí informace o proměnných, které lze vyčítat ze zařízení (viz dále).

Pro snadné přidání tohoto ovladače do aplikace je vhodné použít: Předkonfigurace ve skupině "BACnet protokol"

- Drobnou odlišností od standardu je, že aplikace PROMOTIC je z hlediska této komunikace vždy pouze klientem. Nepodporuje funkce pro vyhledávání zařízení a objektů (Who-Is/I-Am). Primární identifikací cílového zařízení je jeho IP adresa, nikoli číslo zařízení (ovladač s číslem zařízení zatím vůbec nepracuje).

Poznámka: Who-Is slouží k zasílání dotazu typu broadcast (dotaz pro všechny). Následující odpověďi I-Am informují o přítomnosti zařízení a přitom je sděleno číslo zařízení, jeho IP adresa, atd.

- Ovladač nepodporuje segmentaci a COV (Changing of Value).
 
Protokol pracuje s objekty:

Protokol BACnet patří do skupiny objektově orientovaných protokolů. Objekt v BACnet zařízení má svůj typ, své číslo a je tvořen sadou vlastností.

Typ objektu: například analogový vstup, binární výstup, atd. - viz dále.
Číslo objektu: slouží k rozlišení objektů (objektů daného typu může být v zařízení více - nebo nemusí být vůbec). Čísla musí být jedinečná v rámci typu, mohou být v rozsahu 0 až 4 194 302 a nemusí tvořit souvislou řadu.

Zvláštním případem je objekt typu "Device", který je v zařízení vždy právě jednou. Jeho číslo je 4 194 303 (3FFFFF hexa). V ovladači se proto jeho číslo vůbec nazadává.

Vlastnost: určuje další informace o daném objektu, například aktualní hodnota, jednotka, meze, atd. Některé vlastnosti mohou být typu pole (array).

 
Příklad 1: Určitá měřená teplota je reprezentována objektem typu "Analog Input", má číslo například 13 a má sadu vlastností jako například:
"present-value" (aktuální hodnota)
"units" (fyzikální jednotka)
"reliability" (věrohodnost)
"high-limit" (horní mez) atd.
Příklad 2: Každé BACnet zařízení je popsáno jedním objektem "Device", které má vlastnosti například:
"vendor-name" (název výrobce)
"local-time" (čas v zařízení)
"time-of-device-restart" (čas posledního restartu zařízení) atd.
 
Typy objektů:

Následuje seznam ovladačem podporovaných typů objektů:

- Device: Objekt, který má informace o globálních vlastnostech zařízení. Například název a identifikátor výrobce, výrobní číslo, atd.
- Analog Input: Analogová hodnota na vstupu zařízení.
- Analog Output: Analogová hodnota na výstupu zařízení.
- Analog Value: Analogová hodnota uvnitř zařízení.
- Binary Input: Logická hodnota na vstupu zařízení.
- Binary Output: Logická hodnota na výstupu zařízení.
- Binary Value: Logická hodnota uvnitř zařízení.
- Multi-state Input: Vícestavová hodnota na vstupu zařízení.
- Multi-state Output: Vícestavová hodnota na výstupu zařízení.
- Multi-state Value: Vícestavová hodnota uvnitř zařízení.
- Averaging: Průměrování.
- Accumulator: Zásobník.
- PulseConverter: Pulsní konvertor
- CharacterString Value: Textový řetězec.
- Schedule: Plánovač.

V tomto objektu je podporována i vlastnost "weekly-schedule". Tuto vlastnost lze číst i zapisovat a v systému PROMOTIC má datový typ String a je to text ve formátu CSV obsahující den (1=Pondělí - 7=Neděle), čas a hodnotu. Poznámka: Pro čtení a zápis do souboru lze použít metody Pm.FileCsvRead a Pm.FileCsvWrite.

Vlastnost "exception-schedule" zatím není ovladačem podporována.

 
Datové typy:

BACnet používá následující datové typy:

- boolean - V aplikaci PROMOTIC je reprezentován datovým typem: Boolean.
- unsigned integer - V aplikaci PROMOTIC je reprezentován datovým typem: Long.
- signed integer - V aplikaci PROMOTIC je reprezentován datovým typem: Integer.
- real - V aplikaci PROMOTIC je reprezentován datovým typem: Single.
- double - V aplikaci PROMOTIC je reprezentován datovým typem: Double.
- character string - V aplikaci PROMOTIC je reprezentován datovým typem: String.
- bit string - V aplikaci PROMOTIC je reprezentován datovým typem: Long. Zatím je omezeno na 32 bitů a nelze poznat kolik bitů je platných. Zatím je také jen pro čtení, nelze zapisovat.

V některých případech jsou bitové stringy využívány jako tzv. BACnet Status Flags. V tom případě jsou využity pouze 4 bity s následujícím významem:

- bit 0: in-alarm
- bit 1: fault
- bit 2: overriden (přepnuto na ruční ovládání)
- bit 3: out-of-service
- enumerated - Pro vlastnost units převádí hodnotu na String nesoucí informaci o fyzikálních jednotkách přiřazených normou (tuto hodnotu lze jen číst, nelze zapisovat). U ostatních hodnot převádí hodnotu na typ Byte s číslem vyjmenované hodnoty (tyto hodnoty lze číst i zapisovat).
- date - V aplikaci PROMOTIC je reprezentován datovým typem: Date.
- time - V aplikaci PROMOTIC je reprezentován datovým typem: Date.
 
Zapis do vlastnosti present-value:

Vlastnost present-value tvoří prioritní pole (priority-array) s 16 prioritními hodnotami. Při zápisu lze určit prioritu a tedy index v poli kam se hodnota zapíše. Pokud zapisovaná hodnota bude nastavena na datový typ Variant s hodnotou Empty, pak se bude posílat BACnet hodnota NULL a tedy při zápisu se na zadaném indexu v poli položka odmaže.

 

Doporučené hodnoty parametrů:

Doporučené hodnoty pro Parametry Ethernet:
Síťová adresaIP adresa zařízení. Jelikož ovladač zatím nepodporuje vyhledávání zařízení, IP adresa zde slouží jako hlavní identifikátor zařízení namísto čísla zařízení.
Číslo TCP/UDP portu47808 (definováno v normě BACnet, hexadecimální hodnota je BAC0)
Typ Ethernet přenosuUDP
Popis a doporučené hodnoty pro Parametry protokolu:
Maximální akceptovaná délka APDUPřestože pro BACnet/IP je doporučovaná délka datového paketu aplikační vrstvy 1476 byte, mohou některá zařízení vyžadovat kratší délku paketu.

Informaci o této velikosti poskytuje například zpráva typu "Načtení přehledu všech dostupných informací ze zařízení" - viz dále.

Norma připouští následující alternativní velikosti (octets = počet bajtů):

50 octets
128 octets
206 octets (fits LanTalk frame)
480 octets (fits ARCNET frame)
1024 octets
1476 octets (fits ISO 8802-3 frame) (přednastaveno)

Popis komunikace pomocí objektů PmCommData

Proměnné v objektu PmCommData (nebo ještě lépe proměnné v objektu PmData s datovým rozšířením ExtComm) se v tomto ovladači vyčítají všechny najednou v jedné komunikační zprávě. Ovladač sám neomezuje počet proměnných, ale pokud projektant nastaví v jednom objektu PmCommData mnoho proměnných, pak lze přesáhnout velikost povolené zprávy (viz konfigurátor "Maximální akceptovaná délka APDU") a přenos selže. Je proto doporučeno rozdělit proměnné do více objektů PmCommData.

Poznámka: Jiné PROMOTIC komunikační ovladače automaticky rozdělují proměnné z jednoho objektu PmCommData do více zpráv. U tohoto protokolu to však není přímo možné a pokud ano tak by to velmi omezilo počet proměnných v jedné zprávě. Nastavení počtu se proto nechává na projektantovi, který tak může optimalizovat počty proměnných v jednom objektu PmCommData na co největší počet.

 
Proměnné se vyčítají všechny (pokud je povolen konfigurátor Obnovování dat povoleno). Při zápisu do proměnné se posílá do zařízení jen tato jedna proměnná (pokud je povolen konfigurátor Automaticky zasílat při zápisu do položky).
 
Popis konfigurátoru ItemID:

ItemId je textový identifikátor položky, který slouží k adresaci veličiny v zařízení. Z konfigurátoru ItemID ovladač pozná, jak se má hodnota položky přijímat nebo vysílat. Text lze buď napsat ručně, nebo sestavit pomocí okna, které se otevře tlačítkem vpravo od konfigurátoru. Pro zadání lze použít Makro výraz (vyhodnocuje se při spouštění aplikace).

 
Textový řetezec pro ItemId má obecně tvar:

TypObjektu.ČísloObjektu.IdentifikátorVlastnosti[IndexVlastnosti].priN

- ČísloObjektu: Nezadává se pro objekt typu "Device".
- IndexVlastnosti: (nepovinné) Vlastnost objektu může být i pole - tehdy lze uvést index pole v hranatých závorkách.
- priN: (nepovinné) Zadává se pouze u vlastnosti present-value. N je priorita při zápisu. Viz Zapis do vlastnosti present-value.
 
Příklady tvaru identifikátoru:
1) Device.model-name = Název typu zařízení
2) AnalogValue.2.present-value.pri8 = Aktuální analogová hodnota s číslem 2. Při zápisu této položky se bude posílat hodnota s prioritou 8 (viz Zapis do vlastnosti present-value).
3) BinaryValue.14.present-value[4] = Aktuální hodnota na indexu 4 v binárním poli s číslem 14
 
Pro správné zadání ItemId je doporučeno:
- Pomocí zprávy typu "Načtení přehledu všech dostupných informací ze zařízení" zjistit co vše dané zařízení obsahuje (viz dále).
- Pro zadávání hodnoty v konfigurátoru ItemID použít výběrové okno, které lze otevřít tlačítkem vpravo od zadavatele.
 
Upozornění pro zapis hodnot do zařízení:

Zadáním ItemId se definuje požadovaný BACnet objekt a vlastnost. Nedefinuje se zde ale BACnet datový typ. Při příjmu hodnoty ovladač pozná jakého typu hodnota je a zapamatuje si to u dané proměnné. Při zaslání hodnoty do zařízení pak již ovladač ví v jakém tvaru má hodnotu poslat.

Pokud však nedojde k alespoň jednomu příjmu, pak ovladač nemusí přesně vědět, jaký BACnet typ pro danou proměnnou zařízení používá. Ovladač tehdy přednastaví typ na nějaký vhodný, který odvodí z názvu BACnet vlastnosti. Toto však nemusí někdy odpovídat. Proto je doporučeno při zasílání hodnoty nejdřív zajistit alespoň jeden příjem.

Popis konfigurátoru PmCommData > Parametry > Speciální parametry:
Tento konfigurátor se pro daný ovladač nevyužívá.

Popis komunikace pomocí objektů PmCommMsg

Objekty PmCommMsg lze použít pro speciální komunikace, které nelze provést objektem PmCommData. V případě tohoto ovladače je implementována pouze jedna speciální zpráva:
 
- Načtení přehledu všech dostupných informací ze zařízení:

Pro správné nastavení konfigurátoru ItemId v proměnných pro objekt PmCommData je nutná znalost informace o dostupných objektech v daném zařízení. Tyto informace lze ze zařízení vyčíst a právě to dělá tato zpráva:

Zpráva vyčte informace a uloží je do textového řetězce v záložce Data-příjem.

Získané informace touto zprávou dávají přehled o objektech v daném zařízením (seznam objektů s udáním typu a čísla objektu). Tyto informace lze pak použít při sestavování ItemId v objektu PmCommData.

 

Pro správné vytvoření a nastavení objektu PmCommMsg je doporučeno použít předkonfiguraci::

Pokud v této předkonfiguraci zatrhnete konfigurátory:

pak se vytvoří správně nastavený objekt PmCommMsg i s obrazem, ve kterém lze zprávu spustit a vyčíst tak požadované informace z PLC.

© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice