0301_merbon_channel

BACnet – stručný úvod do základů 3. díl

Základní nastavení v Merbon IDE

Jen pro pořádek připomeňme, že v této části se jedná o konfiguraci BACnet klienta, tedy „vyčítání“ hodnot z BACnet serveru. (Do objektů a vlastností, které podporují zápis, ovšem samozřejmě klient může i zapisovat.) Podstatné je, že operaci zahajuje klient. Aby se PLC ve funkci klienta mohlo serveru ptát na konkrétní objekty a vlastnosti, musíme při tvorbě aplikace tyto hodnoty zadat jako parametry jednotlivých komunikačních datových bodů v Merbon IDE.

Při definování proměnných postupujeme podobně, jako u ostatních komunikačních protokolů: nejprve v PLC založíme komunikační kanál:

0301_merbon_channel

Obr. Založení BACnet kanálu v Merbon IDE

U kanálu vyplníme pouze název, povolíme ho (Enable = True), vybereme protokol BACnet a zvolíme (jako jedinou možnost) transportní protokol UDP.

Do kanálu vložíme zařízení.

0302_merbon_device

Obr. Založení BACnet device v Merbon IDE

Tato nastavení se týkají objektu typu Device, základního objektu v zařízení, se kterým budeme komunikovat. V jeho parametrech zadáváme instanci objektu Device v BACnet serveru, tedy obvykle 1, a typ síťové adresy – Žádný (None). Ostatní typy síťových adres jsou připraveny na budoucí rozšíření pro další komunikační média.

V UDP parametrech je IP adresa BACnet serveru a jeho UDP port. Místní port, Local port, je přiřazován automaticky, pokud je zadána 0. Číslo místního portu měníme pouze pokud to server vyžaduje, viz výše.

0303_porty

Obr. UDP porty při BACnet komunikaci. Klientem je PLC Domat s Merbon Runtime.

Dalším krokem je definice skupiny I/O bodů:

0304_merbon_group

Obr. Založení BACnet Group v Merbon IDE

Ve skupině se prakticky nic podstatného kromě typu (zde Jen čtení, Read Only) nenastavuje, slouží jen jako „kontejner“ pro I/O body. U jiných protokolů se ve skupině obvykle definují některé společné vlastnosti obsažených I/O bodů.

Dále již můžeme definovat jednotlivé I/O body:

0305_merbon_io

Obr. Založení I/O bodu v Merbon IDE

Základní parametry jsou Typ objektu a Instance objektu. Tyto hodnoty se dozvíme právě pomocí prozkoumání serveru nebo je poskytne dodavatel v podobě tabulky. Property ID bude ve většině případů aktuální hodnota, Present Value. Typ hodnoty je v podstatě dán typem objektu a vlastnosti – u analogových vstupů, výstupů a hodnot to bude pro aktuální hodnotu typ Real. Pro standardní vlastnosti je typ předdefinovaný, takže se nelze splést. Stejný typ musí být vybrán i nahoře v ST Type (označeno červeně).

Aby se k I/O bodu v PLC automaticky vytvořila i globální proměnná, zkontrolujeme, zda je povolena funkce Autogen a zda je jako cílový projekt vybrán aktuální projekt v PLC.

Dalšími parametry se nyní nebudeme zabývat, můžeme přidat další I/O body – nebo projekt zkompilujeme, nahrajeme do PLC a vyzkoušíme, jak komunikuje:

0306_merbon_ok

Obr. Úspěšná komunikace s BACnet serverem

Ze studijních důvodů se na komunikaci můžeme podívat i Wiresharkem. Bude to ale fungovat nejspíš pouze tehdy, pokud místo PLC využijeme Merbon Runtime na Windows na stejném PC, jako běží Wireshark. Proč?

Může za to switch, který optimalizuje komunikaci na síti a pakety vždy posílá jen na ty své porty (konektory), za nimiž se nacházejí cílové adresy. Máme-li na switch připojeno na jednom portu zařízení ve funkci BACnet server, na druhém portu PLC ve funkci BACnet klient a na třetím portu notebook s programem Wireshark, BACnet komunikace probíhá pouze mezi prvním a druhým portem. Pro skenování paketů bychom museli použít buď hub – starší zařízení, které „natvrdo“ kopíruje veškerou komunikaci na všechny své ostatní porty, nebo konfigurovatelný switch, nastavený tak, aby na jeden z portů posílal veškerá data z portů ostatních (toto jde nastavit například u routerů Mikrotik).

Takže úspěšná komunikace vypadá takto:

0307_merbon_wireshark

Obr. Čtení analogové hodnoty BACnet ve Wiresharku

Vidíme, že klient využívá službu Read Property Multiple – pro čtení více hodnot (i když v PLC je zatím třeba definována jen jedna). V telegramu odpovědi (od serveru ke klientovi) můžeme vystopovat zasílanou aktuální hodnotu, Present Value, ve formátu Real (modře zvýrazněný řádek ve spodní části). Vzrůstající číslo za názvem služby (123…129) je tzv. Invoke ID, které server kopíruje do odpovědi, aby klient byl schopen spárovat odpovědi s odeslanými dotazy.

V další části se budeme věnovat zapisování hodnot.

Všechny díly najdete ZDE.