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é shlédnout "
PROMOTIC video kurz 4 - Komunikační ovladače".
Základní vlastnosti ovladače:
- Použití tohoto ovladače vyžaduje zakoupení
licence PmBACnet. Při vývoji aplikace ve freeware módu
PmFree nebo s
vývojovou licencí a při jejím testování v runtime je tato komponenta vždy funkční.
- Komunikace je pro Ethernet (aplikace PROMOTIC je klient). Ovladač podporuje výhradně aplikační vrstvu BACnet/IP s transportní vrstvou UDP.
- Ovladač je začleněn do systému PROMOTIC pomocí objektu
PmaComm.
Ovladač podporuje použití objektu
PmaCommGroup (pro čtení i zápis proměnných). Objekt
PmaCommMsg 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"
- 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-Am informuje 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ů stejného typu v zařízení může být 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 jen 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 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í převodník
- 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.
Uložení 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:
null pro
JavaScript nebo
Empty pro
VBScript, pak se bude posílat
BACnet hodnota
NULL a tedy při zápisu se na zadaném indexu v poli položka smaže.
Doporučené hodnoty parametrů objektu PmaComm:
Maximální akceptovaná délka APDU | Přestože pro BACnet/IP je doporučovaná délka datového paketu aplikační vrstvy 1476 bajt, 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í objektu PmaCommGroup
Proměnné v objektu
PmaCommGroup (nebo ještě lépe proměnné v objektu
PmaData s datovým rozšířením
ExtComm) se v tomto ovladači vyčítají
všechny najednou v jedné zprávě. Ovladač sám neomezuje počet proměnných, ale pokud projektant nastaví v jednom objektu
PmaCommGroup 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ů
PmaCommGroup.
Poznámka: Ovladač
PmBACnet zatím nepodporuje rozdělování zprávy do více
UDP paketů (tzv.
segmentation). Jiné PROMOTIC komunikační ovladače automaticky rozdělují proměnné z jednoho objektu
PmaCommGroup do více zpráv. U tohoto protokolu to však není přímo možné a pokud ano, pak 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
PmaCommGroup na co největší počet.
Proměnné se vyčítají všechny (pokud konfigurátor "
Obnovování dat povoleno" je zatržen). Při zápisu do proměnné se posílá do zařízení jen tato jedna proměnná (pokud konfigurátor "
Automaticky zasílat při zápisu do položky" je zatržen).
Popis konfigurátoru "ItemId":
ItemId je textový identifikátor položky, který slouží k adresaci položky 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 v okně, které se otevře tlačítkem vpravo od konfigurátoru.
Pro zadání lze použít
Makro výraz (vyhodnocuje se po spuštění aplikace).
Textový řetězec pro
ItemId má obecně tvar:
Typobjektu.Čísloobjektu.IdentifikátorVlastnosti[IndexVlastnosti].priN
- Čísloobjektu: Nezadává se pro objekt typu "Device".
- IdentifikátorVlastnosti: Identifikátor lze zadat názvem nebo jako číslo. Zadat identifikátor jako číslo má smysl např. pro nestandardní vlastnosti specifické pro daný PLC automat.
- IndexVlastnosti: (nepovinné) Vlastnost objektu může být i pole - tehdy lze uvést index pole v hranatých závorkách.
Příklady tvaru identifikátoru:
Device.model-name = Název typu zařízení
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
Uložení do vlastnosti present-value).
BinaryValue.14.present-value[4] = Aktuální hodnota na indexu 4 v binárním poli s číslem 14
AnalogOutput.15.priority-array[8] = Hodnota analogového výstupu 15, která je přiřazena prioritě 8.
AnalogOutput.15.priority-array =
Pole priorit a hodnot analogového výstupu
15.
Toto pole se ukláda do proměnné typu
String ve formátu
KeyVal. Tento
String obsahuje pouze nastavené priority s hodnotami (např.
"p1:12.8;p8:3.14;" - priorita 1 s hodnotou
12.8 a priorita 8 s hodnotou
3.14).
AnalogInput.20.event-state = Hodnota vlastnosti event-state analogového vstupu 20.
Místo této vlastnosti mohou být vlastnosti například: object-identifier, object-name, object-type, status-flags, out-of-servis, units, description, device-type, reliability, update-interval, min-pres-value, max-pres-value, resolution, COV-increment, time-delay, notification-class, high-limit, low-limit, deadband, limit-enable, event-enable, acked-transitions, notify-type, event-type-stamps, event-message-texts, profile-name.
AnalogInput.20.2048 = Zde je vlastnost zadaná číslem 2048.
Pro správné zadání
ItemId je doporučeno:
- 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 zápis 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á datový typ hodnoty 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 nejprve zajistit alespoň jeden příjem.
Tento konfigurátor se pro daný ovladač nevyužívá.
Popis komunikace pomocí objektu PmaCommMsg
Objekt
PmaCommMsg lze použít pro speciální komunikace, které nelze provést objektem
PmaCommGroup. 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 objektu
PmaCommGroup je nutno znát 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 přečte informace a uloží je do textového řetězce v kartě "
Data-příjem".
Získané informace touto zprávou dávají přehled o objektech v daném zařízení (seznam objektů s udáním typu a čísla objektu). Tyto informace lze použít při sestavování
ItemId v objektu
PmaCommGroup.
Ovladač
PmBACnet zatím nepodporuje rozdělování zprávy do více
UDP paketů (tzv.
segmentation). Proto tato zpráva nefunguje (hlásí chybu
abort-segmentation-not-supported) pokud zařízení obsahuje mnoho objektů a jejich přehled se nevejde do jednoho paketu.
Pro správné vytvoření a nastavení objektu
PmaCommMsg je vhodné použít předkonfiguraci:
Pokud v této předkonfiguraci zatrhnete konfigurátory:
pak se vytvoří správně nastavený objekt
PmaCommMsg i s obrazem, ve kterém lze zprávu spustit a vyčíst tak požadované informace z PLC automatu.