BACnet server
BACnet server slouží k poskytování dat protokolem BACnet / UDP klientům, jako jsou například vizualizační programy (SCADA). Proměnné z Mervis Runtime se mapují na standardní objekty BACnet, a to buď ve vlastnostech proměnných Mervis, nebo při ručním sestavování tabulky objektů v BACnet zařízení. Tyto objekty jsou pak k dispozici na BACnet serveru, který běží v PLC. BACnet klienti si tyto objekty a jejich vlastnosti mohou vyčítat a případně do nich i zapisovat.
Platformy a typy objektů
Podporované hardwarové platformy jsou tyto:
mark220
mark320
markMX
IMIO105
IMIO110
ICIO205
mark125
Windows RT
wall - všechny typy
Na ostatních platformách není BACnet server podporován.
Aktuálně jsou podporovány následující typy BACnet objektů:
- Analog Input - čtení
- Analog Value - čtení, zápis
- Analog Output - čtení, zápis
- Multistate Input - čtení
- Multistate Value - čtení, zápis
- Multistate Output - čtení, zápis
- Binary Input - čtení
- Binary Value - čtení, zápis
- Binary Output - čtení, zápis
- Schedule (bool, multistate, real) - čtení, zápis
Podrobnosti včetně podporovaných vlastností objektů jsou uvedeny v PICS.
Založení kanálu
Aby PLC mohlo pracovat jako BACnet server, je nutné založit komunikační kanál tohoto typu. Klikneme pravým tlačítkem na PLC a vybereme Přidat kanál serveru. (Do tohoto kanálu se pak vkládá Device object.)
Ve vlastnostech kanálu zvolíme Protokol: BACnet server. Linkový protokol je UDP. (Komunikace BACnet / MS/TP - po sériové lince RS485 - zatím není podporována. V případě potřeby použijte BACnet router.)
Zařízení (device) představuje základní (povinný) objekt, pod nímž se v síti BACnet definují další objekty. Device obsahuje jejich seznam (po úspěšném nakonfigurování a spuštění viditelný např. v programu Yabe - Yet Another BACnet Explorer, dostupný na https://sourceforge.net/projects/yetanotherbacnetexplorer/):
Jako „kontejner“ pro BACnet objekty slouží Device Object, proto nejprve definujeme tento objekt:
V kontextovém menu kanálu zvolíme Přidat zařízení serveru.
Název PLC (zde „PLCbtest“) se přenáší do BACnet vlastností (property) objektu Device - Object Name a Description.
- Název - pro info, není jinde použit
- Povolit - aby komunikace fungovala, zařízení musí být povoleno.
- IP adresa zařízení - vyplňte 127.0.0.1, zde nepoužito
- Místní port - vyplňte 47808, zde nepoužito
- Port zařízení - standardní číslo UDP portu pro BACnet je 47808 (v hexadecimálním zápise je to BAC0, což se pamatuje lépe), doporučuje se toto číslo dodržet pro kompatibilitu s některými cizími zařízeními, která toto číslo portu vyžadují.
- Instance zařízení - musí být unikátní v síti BACnet, aby identifikátor objektu Device byl rovněž unikátní.
- Heslo pro management - zařízení BACnet je možné dálkově spravovat, např. restartovat. Přístup pro správu zařízení by měl být chráněn heslem, které se zadává zde.
- Typ síťové adresy - v této verzi je podporován pouze BACnet / UDP, nechte proto nastavení Žádný.
Nyní definujeme objekty s hodnotami, tedy objekty namapované na Mervis proměnné.
Definování objektů s hodnotami
Dvojitým kliknutím na zařízení se otevře tabulka s mapováním proměnných Mervis na objekty BACnet.
Datové body se do tabulky definují dvěma způsoby:
1. Přímo v prohlížeči proměnných
Vlastnosti BACnet se vyplňují přímo při tvorbě programu. Jsou součástí metadat proměnných. Tento způsob má tu výhodu, že tabulka BACnet objektů v Device se generuje automaticky při kompilaci a není nutné ji pak editovat ručně.
- Klikneme na proměnnou, kterou chceme zpřístupnit protokolem BACnet
- Pro příslušné PLC nastavíme parametr BACnet viditelné: True a potvrdíme
- BACnet device se vybere automaticky
- Automaticky se nastaví typ datového bodu (zde Analog Value). Pokud chceme typ datového bodu změnit, můžeme zde vybrat z přípustných typů. Například AI… by byl typický Analog Input, protože slouží jen pro čtení (do Analog Value lze přes BACnet zapisovat, což zde u vstupu nedává smysl).
- Pokud je zadána i fyzikální jednotka (Metadata proměnné - Jednotka), např. „°C“, přenese se do tabulky jako BACnet property Units s příslušným kódem.
- Název datového bodu - text se projeví v BACnet properties Object Name a Description
- Typ datového bodu - automaticky nastavenou hodnotu lze upravit výběrem ze seznamu přípustných (relevantních) typů objektů
- Alarmový bod - viz dále
- [název_PLC]: BACnet viditelné - proměnná se mapuje na objekt BACnet do vybraného Device
- [název_PLC]: Zařízení BACnet - BACnet Device, do něhož se proměnná mapuje (obvykle je definováno pouze jedno zařízení na PLC, pak dojde k automatickému namapování na tento Device)
- (Metadata proměnné)
- Jednotka - textový řetězec s názvem jednotky (například °C) se Mervis IDE pokusí přeložit na kód standardní jednotky BACnet (např. 62 DEGREES-CELSIUS) a takto se jednotka objeví i v tabulce BACnet objektů.
Výše uvedené kroky lze provést i hromadně, pokud v Prohlížeči proměnných vybereme více bodů (Ctrl+ levý klik nebo Shift + šipka dolů).
Při příští kompilaci jsou vygenerovány BACnet identifikátory objektů (BACnet Object IDs) a tabulka v Zařízení (Device) je úplná.
2. Ručním vyplněním v tabulce objektů v BACnet Device
- Rozklikneme BACnet zařízení
- Pravým kliknutím do tabulky, vybereme Přidat proměnnou
- Vybereme proměnnou, kterou chceme přidat jako objekt BACnet. Je možné vybrat i více proměnných najednou (Ctrl + klik nebo Shift + šipka dolů).
- Pokud je to nutné, ve vlastnostech změníme typ objektu
- U binárních objektů můžeme změnit polaritu (při Reverse je Aktivní text ve stavu False)
V tabulce se přidané objekty objeví s nevyplněnými čísly instance objektu a tedy i identifikátory objektu. (Identifikátor objektu se skládá z instance objektu a standardního kódu typu objektu, jde o bitovou kompozici těchto dvou údajů.)
Při příští kompilaci se objekty automaticky očíslují. Toto číslování nelze upravovat.
Proměnnou lze do tabulky napojit pouze jednou. Není tedy možné definovat více BACnet objektů, napojených na stejnou proměnnou. Pokud je již v tabulce objekt, napojený na určitou proměnnou, tato proměnná již není ve výběru pro napojování dalšího objektu.
Vlastnosti BACnet, které se přebírají z metadat proměnných
Každý typ BACnet objektu má podle standardu definován určitou množinu povinných a nepovinných vlastností (properties). Některé z nich se vyplňují ručně, jiné se přebírají z metadat proměnných v systému Mervis.
Například objekt typu Analog Value má tyto vlastnosti (zdroj: ASHRAE BACnet Standard, 1995):
Povinné vlastnosti jsou značeny v třetím sloupci písmenem R(equired). W znamená Writable. O je Optional, nepovinná vlastnost. Mervis podporuje většinou pouze povinné vlastnosti.
- Object Identifier: vytváří se automaticky jako kombinace označení typu objektu (zde Analog Value) a instance objektu (pořadové číslo 0 až 4194302).
- Object Name: přebírá se z Mervis Názvu objektu (lze editovat).
- Object Type: Je dáno automatickým přiřazením, případně výběrem typu objektu v Mervis vlastnosti Typ datového bodu.
- Present Value: Hodnota proměnné, základní vlastnost, která nás zajímá.
- Status Flags: z flagů In Alarm, Fault, Overridden, Out of service jsou podporovány pouze flagy InAlarm, který je aktivní, pokud k objektu je připojen alarmový bod a tento bod je ve stavu jiném než Normal, a Overridden, který je aktivní, je-li namapovaná proměnná v manuálním módu.
- Event State: Pokud je k objektu připojen alarmový bod, při jeho stavu jiném než Normal přechází tato vlastnost do stavu Offnormal. Jinak je vlastnost ve stavu Normal.
- Out Of Service: V této verzi trvale False.
- Units: Pokud je u Mervis proměnné vyplněna jednotka (například °C), Mervis IDE se text pokusí přeložit na kód standardní jednotky BACnet (např. 62 DEGREES-CELSIUS).
- High Limit: u nastavitelných hodnot vysoká mez, na tuto hodnotu je vhodné omezit nastavování. směrem nahoru
- Low Limit: u nastavitelných hodnot nízká mez, na tuto hodnotu je vhodné omezit nastavování směrem dolů.
Notification classes
Notification classes neboli notifikační třídy jsou objekty, které určují pravidla pro zasílání informací o událostech. Pokud v některém z ostatních objektů dojde ke změně, která se má poslat ostatním účastníkům v systému, je vyslána notifikace. Každé hlášení má definovanou prioritu, která určuje, jak se s informací má nakládat při dalším zpracování. Priority jsou od 0 (nejvyšší, pro kritické události) do 255 (nejnižší, pro málo významné události).
Notifikační třídu je možné přiřadit objektu (např. analogovému vstupu - Analog Input) až tehdy, má-li objekt vybrán alarmový bod. Jakmile alarmový bod přejde ze stavu Normal do jiného stavu nebo stav posléze změní, do sítě BACnet je vyslána notifikace s prioritou, která je právě definována v notifikační třídě. Každý objekt s přiřazeným alarmovým bodem musí mít zároveň přiřazenu nějakou notifikační třídu, jinak projekt nejde zkompilovat. Při založení BACnet serveru je automaticky založena i notifikační třída „Třída_1“, která je defaultně přiřazována všem založeným objektům s alarmovými body.
Přídání notifikační třídy
- Pravým tlačítkem klikněte na tabulku s notifikačními třídami a vyberte Přidat notifikační třídu.
- Potvrďte změny tlačítkem OK.
- Ve vlastnostech třídy vyplňte název třídy (Název objektu) a priority pro jednotlivé typy událostí.
- V tabulce BACnet objektů je již možné vybrat definovanou třídu.
Pokud si nejste jisti nebo nechcete priority využívat, použijte předdefinovanou třídu.
Export do souborů EDE
Soubory EDE (Engineering Data Exchange) jsou textové soubory ve formátu CSV, které popisují objekty BACnet a jejich vlastnosti v zařízení BACnet. Slouží pro standardizovaný offline přenos dat mezi systémy, zejména pro import objektů do BACnet klienta (SCADA). Pokud dodavatel BACnet serveru tyto soubory poskytne, technik, konfigurující BACnet klienta nemusí objekty a jejich vlastnosti zadávat ručně, ale naimportuje je z těchto souborů.
EDE soubory je vhodné generovat až poté, co bylo dokončeno sestavování tabulky BACnet objektů v zařízení. Při mazání a vkládání objektů může dojít k přečíslování identifikátorů objektu.
- Pravým tlačítkem klikněte na BACnet kanál
- Vyberte Export EDE souboru
- V informačním poli Výsledky se zobrazí hlášení o úspěšném exportu. Exportuje se do adresáře s projektem, do podadresáře BACnet-export.
Výsledkem exportu jsou čtyři soubory. Název souboru se skládá z názvu projektu, GUID projektu a standardní částí názvu.
...EDE: základní soubor s objekty a jejich vlastnostmi, např. #Engineering-Data-Exchange;;;;;;;;; PROJECT_NAME;"<undefined>";;;;;;;; VERSION_OF_REFERENCEFILE;1;;;;;;;; TIMESTAMP_OF_LAST_CHANGE;13.08.19;;;;;;;; AUTHOR_OF_LAST_CHANGE;HONZA-PC - Jan;;;;;;;; VERSION_OF_LAYOUT;2;;;;;;;; #mandatory;mandatory;mandatory;mandatory;mandatory;mandatory;optional;optional;optional; # keyname;device obj.-instance;object-name;object-type;object-instance;unit-code;hi-limit;low-limit;state-text-reference; "prom1";1;"prom1";0;1;62;200;0;; "prom2";1;"prom2";1;1;47;100;0;; "prom3";1;"prom3";2;1;16;362;80;; "prom5";1;"prom5";4;1;95;;;; "prom6";1;"prom6";3;1;95;;;; "main.T17_Boolean_Scheduler";1;"T17_Boolean_Scheduler";17;4;95;;;; "main.T18_Real_Scheduler";1;"T18_Real_Scheduler";17;2;95;;;; "main.T19_Int_Scheduler";1;"T19_Int_Scheduler";17;3;95;;;; "prom4";1;"prom4";5;1;95;;;; "prom6_out";1;"prom";5;4;95;;;; "prom01";1;"prom01";14;1;95;;;1; "prom02";1;"prom02";19;1;95;;;1; "prom";1;"prom";13;1;95;;;1; "prom1_out";1;"prom1_out";2;3;95;100;0;; "hw.IMIO10x_DO2";1;"IMIO10x_DO2";3;2;95;;;; "hw.IMIO10x_AI1";1;"IMIO10x_AI1";2;5;95;100;0;; ...ObjTypes: použité typy objektů s číselným kódováním podle standardu BACnet, např. #Encoding of BACnet Object Types;;; #Code;Object Type;; "0";"AnalogInput";; "1";"AnalogOutput";; "2";"AnalogValue";; "3";"BinaryInput";; "4";"BinaryOutput";; "5";"BinaryValue";; "13";"MultistateInput";; "14";"MultistateOutput";; "17";"Schedule";; "19";"MultistateValue";; ...StateTexts: výčet stavů pro objekty typu multistate, např. #State Text Reference;;;;;; #Reference Number;0;1;2;3;4; 1;Normal;Active;ActiveAcked;AckedMemory;Memory; ...Units: použité fyzikální jednotky s číselným kódováním podle standardu BACnet, např. # Unit Texts Reference; "16";"JOULES" "47";"WATTS" "62";"DEGREES-CELSIUS" "95";"NO-UNITS"
Je možné, že některé programy vyžadují mírně odlišný formát souboru (jiné pozice mezer, znaky „#“ atd.). V případě nekompatibility kontaktujte technickou podporu Domat Control System. Export EDE souborů v Mervis IDE byl testován s významnými vizualizačními programy a dodržuje známé standardy.
Testovací poznatky
Pro nastavování výjimek v časových program v software Desigo Insight je možné využít pouze časový program T19 Int. Časové programy T17 Bool a T18 Real neumožňují zápis výjimek.