Promotic
WikipediaLinkedInYoutubeTwitterFacebook

PmBACnet - Driver do komunikacji poprzez protokół BACnet

Niniejszy driver służy do komunikacji z urządzeniami, które obsługują protokół BACnet. Patrz Komunikacja poprzez protokół BACnet.
 
Przed zastosowaniem tego drivera w aplikacji PROMOTIC należy zaznajomić się z rozdziałem: Komunikacja przy pomocy driverów PROMOTIC.
 
Podstawowe właściwości drivera:
- Wykorzystanie tego drivera jest powiązane z zakupem licencji: PmBACnet. Z wersją freeeware PmFree lub przy opracowywaniu aplikacji (z licencją deweloperską w celach testowania) element ten zawsze funkcjonuje.
- Komunikacja przebiega poprzez Ethernet. Driver obsługuje tylko warstwę aplikacji BACnet/IP z warstwą transportową UDP.
- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmComm.

Driver umożliwia wykorzystanie obiektu PmCommData (do odczytu i zapisu zmiennych). Obiekt PmCommMsg jest stosowany tylko do specjalnej pomocniczej wiadomości, która stwierdzi dane zmiennych, które można odczytywać ze sterownika (patrz dalej).

Dla łatwego dodania tego drivera do aplikacji jest dogodne zastosować: Konfiguracje wstępne w grupie "BACnet protokół komunikacyjny"

- Niewielkią różnicą od normy jest, iż aplikacja PROMOTIC jest z punktu widzenia tej komunikacji zawsze użytkownikiem. Nie obsługuje funkcję dla wyszukiwania urządzeń oraz obiektów (Who-Is/I-Am). Podstawową identyfikacją urządzenia docelowego jest jego adres IP, a nie numer urządzenia (driver z numerem urządzenia narazie w ogóle nie działa).

Notatka: Who-Is używany jest do przesyłania zapytania typu broadcast (zapytanie dla wszystkich). Następujące odpowiedzi I-Am informują o obecności urządzenia a jednocześnie jest przekazany numer urządzenia, jego adres IP, itd.

- Driver nie obsługuje segmentację oraz COV (Changing of Value).
 
Protokół obsługuje obiekty:

Protokół BACnet należy do grupy obiektowo orientowanych protokołów. Obiekt w urządzeniu BACnet ma własny typ, numer oraz tworzy go zestaw właściwości.

Typ obiektu: na przykład wejście analogowe, wyjście binarne, itd. - patrz dalej.
Numer obiektu: służy do rozróżnienia obiektów (obiektów danego typu może być w urządzeniu więcej - lub też żaden). Numery musczą być w ramach typu wyjątkowe, mogą być w zakresie 0 aż 4 194 302 oraz nie musi tworzyć ciągłą serię.

Specjalnym przypadkiem jest obiekt typu "Device", który w urządzeniu występuje zawsze tylko raz. Jego numer to 4 194 303 (3FFFFF hexa). Dlatego jego numer w ogóle nie określa się w driveru.

Właściwość: określa następne informacje o danym objikcie, na przykład aktualna wartość, jednostka, marginesy, itd. Niektóre właściwości mogą być typu pole (array).

 
Przykład 1: Niektóra zmierzona temperatura jest reprezentowana obiektem typu "Analog Input", ma numer na przykład 13 oraz ma zestaw właściwości jako na przykład:
"present-value" (wartość aktualna)
"units" (jednostka fizykalna)
"reliability" (wiarygodność)
"high-limit" (Zakres górny) itd.
Przykład 2: Każde urządzenie BACnet jest opisane jednym obiektem "Device", ktere ma właściwości na przykład:
"vendor-name" (nazwa producenta)
"local-time" (czas w urządzeniu)
"time-of-device-restart" (czas ostatniego restartu urządzenia) itd.
 
Rodzaje obiektów:

Następuje lista driverem obsługiwanych rodzajów obiektów:

- Device: Obiekt, który ma informacje o globalnych właściwościach urządzenia. Na przykład nazwę i identyfikator producenta, numer produktu, itd.
- Analog Input: Wartość analogową na wejściu urządzenia.
- Analog Output: Wartość analogową na wyjściu urządzenia.
- Analog Value: Wartość analogową w urządzeniu.
- Binary Input: Wartość logiczną na wejściu urządzenia.
- Binary Output: Wartość logiczną na wyjściu urządzenia.
- Binary Value: Wartość logiczną w urządzeniu.
- Multi-state Input: Wartość kilkustanową na wejściu urządzenia.
- Multi-state Output: Wartość kilkustanową na wyjściu urządzenia.
- Multi-state Value: Wartość kilkustanową w urządzeniu.
- Averaging: Uśrednienie.
- Accumulator: Rejestr.
- PulseConverter: Konwerter impulsowy
- CharacterString Value: Łańcuch tekstowy.
- Schedule: Scheduler.

W tym obiekcie jest wspierana również właściwość "weekly-schedule". Właściwość tą można odczytywać oraz do niej zapisywać a w systemie PROMOTIC posiada typ danych String i jest to tekst w formacie CSV zawierający dzień (1=Poniedziałek - 7=Niedziela), czas oraz wartość. Notatka: Do odczytu oraz zapisu do pliku można zastosować metody Pm.FileCsvRead i Pm.FileCsvWrite.

Właściwość "exception-schedule" narazie nie jest driverem wspierana.

 
Typy danych:

BACnet używa następujące typy danych:

- boolean - W aplikacji PROMOTIC jest reprezentowany przez typ danych: Boolean.
- unsigned integer - W aplikacji PROMOTIC jest reprezentowany przez typ danych: Long.
- signed integer - W aplikacji PROMOTIC jest reprezentowany przez typ danych: Integer.
- real - W aplikacji PROMOTIC jest reprezentowany przez typ danych: Single.
- double - W aplikacji PROMOTIC jest reprezentowany przez typ danych: Double.
- character string - W aplikacji PROMOTIC jest reprezentowany przez typ danych: String.
- bit string - W aplikacji PROMOTIC jest reprezentowany przez typ danych: Long. Narazie jest ograniczone do 32 bitów oraz nie można stwierdzić ile bitów jest ważnych. Narazie jest przeznaczony tylko do odczytu, nie można zapisywać.

W niektórych przypadkach są łańczhy bitów wykorzystywane jako tzw. BACnet Status Flags. W tym przypadku są wykorzystane tylko 4 bity o następującym znaczeniu:

- bit 0: in-alarm
- bit 1: fault
- bit 2: overriden (przełączone na sterowanie ręczne)
- bit 3: out-of-service
- enumerated - Dla właściwości units konwertuje wartość na String niosącą informację o jednostkach fizykalnych przyszeregowanych normą (wartość tą można tylko odczytać). Dla innych wartości konwertuje wartość na typ Byte z numerem wymienionej wartości (te wartości można odczytać oraz zapisać).
- date - W aplikacji PROMOTIC jest reprezentowany przez typ danych: Date.
- time - W aplikacji PROMOTIC jest reprezentowany przez typ danych: Date.
 
Zapis do właściwości present-value:

Właściwość present-value tworzy pole pryorytetowe (present-value) z 16 pryorytetowymi wartościami. Podczas zapisu można określić pryorytet, wtedy również indeks w polu gdzie zostanie zapisana wartość. Jeżeli zapisywana wartość będzie ustawiona na typ danych Variant o wartości Empty, wtedy będzie wysyłana BACnet wartość NULL i wtedy podczas zapisu na określonym indeksie w polu zostanie usunięta pozycja.

 

Zalecone wartości parametrów:

Zalecane wartości dla pozycji Parametry Ethernet:
Adres sieciowyAdres IP urządzenia. Ponieważ driver narazie nie obsługuje wyszukiwanie urządzenia, adres IP służy tutaj jako główny identyfikator urządzenia zamiast numeru urządzenia.
Numer portu TCP/UDP47808 (zdefiniowane normą BACnet, wartość heksadecymalna jest BAC0)
Typ transmisji EthernetUDP
Opis i zalecane wartości dla pozycji Parametry protokołu:
Maksymalna akceptowana długość APDUPonieważ dla BACnet/IP jest zalecana długość pakietów danych warstwy aplikacji 1476 byte, mogą niektóre urządzenia żądać krótszą długość pakietu.

Informację o tej długości udostępnia na przykład komunikat typu "Wczytanie przeglądu wszystkich dostępnych informacji z urządzenia" - patrz dalej.

Norma zezwala następujące alternatywne długości (octets = ilość bajtów):

50 octets
128 octets
206 octets (fits LanTalk frame)
480 octets (fits ARCNET frame)
1024 octets
1476 octets (fits ISO 8802-3 frame) (domyślnie)

Opis komunikacji przy pomocy obiektów PmCommData

Zmienne w obiekcie PmCommData (albo jeszcze lepiej zmiennych w obiekcie PmData z rozszerzeniem danych ExtComm) są w tym driverze odczytywane wszystkie razem w jednym powiadomieniu. Driver smaotny nie ogranicza ilość zmiennych, ale jeżeli projektant ustawi w jednym obiekcie PmCommData dużą ilość zmiennych, wtedy może dojść do przekroczenia wielkości powiadomienia (patrz konfigurator "Maksymalna akceptowana długość APDU") a transmisja zawiesi się. Dlatego jest wskazanym rozdielenie zmiennych do większej ilości obiektów PmCommData.

Notatka: Inne PROMOTIC drivery automatycznie wykonają podział zmiennych z jednego obiektu PmCommData do większej ilości powiadomień. W przypadku tego protokołu nie jest to bezpośrednio możliwe, wtedy znacząco doszło by do ograniczenia ilości zmiennych w jednym powiadomieniu. Dlatego ustawienie jest w kompetencji projektanta, który w taki sposób może optymalizować ilości zmiennych w jednym obiekcie PmCommData w jak największej ilości.

 
Odczytywane są wszystkie zmienne (jeżeli jest włączony konfigurator Odświeżanie danych zezwolone). Przy zapisie do zmiennej do urządzenia jest odesłana tylko zapisywana zmienna (jeżeli jest wybrany konfigurator Automatycznie przesyłaj przy zapisie do pozycji).
 
Opis konfiguratora ItemID:

ItemId jest identyfikatorem tekstowym pozycji, który służy do adresacji parametru w urządzeniu. Z konfiguratora ItemID driver stwierdzi, w jaki sposób ma zostać wartość pozycji wczytana lub wysłana. Tekst można wpisać ręcznie, lub ułożyć przy pomocy okna, które zostanie otwarte przy pomocy przycisku wprawo od konfiguratora. Do wprowadzenia można wykorzystać Makro wyrażenie (wartość jest obliczana przy uruchomieniu aplikacji).

 
Łańcuch tekstowy dla ItemId ma ogólnie postać:

TypObiektu.NumerObiektu.IdentyfikatorWłaściwości[IndeksWłaściwości]priN

- NumerObiektu: Dla obiektu typu "Device" nie określa się.
- IndeksWłaściwości: (opcjonalne) Właściwość obiektu może być również tablica - wtedy można na końcu w nawiasach prostokątnych podać indeks tablicy.
- priN: (opcjonalne) Określa się tylko w przypadku właściwości present-value. N to priorytet podczas zapisu. Patrz Zapis do właściwości present-value.
 
Przykłady formy identyfikatora:
1) Device.model-name = Nazwa typy urządzenia
2) AnalogValue.2.present-value.pri8 = Aktualna analogowa wartość o numerze 2. Podczas zapisu tej pozycji będzie wysyłana wartość o pryorytecie 8 (patrz Zapis do właściwości present-value).
3) BinaryValue.14.present-value[4] = Wartość aktualna pod indeksem 4 w tablicy binarnej o numerze 14
 
Dla właściwego określenia ItemId jest wskazane:
- Przy pomocy wiadomości typu "Wczytanie przeglądu wszystkich dostępnych informacji z urządzenia" stwierdzić, co wszystko dane urządzenie zawiera (patrz dalej).
- Dla określania weartości w konfiguratorze ItemID należy użyć okno wyboru, które można otworzyć przy pomocy przycisku wprawo od pola wprowadzania.
 
Ostrzeżenie odnośnie zapisu wartości do urządzenia:

Wprowadzeniem ItemId zostanie zdefiniowany wymagany BACnet obiekt i właściwość. Nie definiuje się tetaj BACnet typ danych. Podczas odczytu wartości driver rozpozna typ danych wartości oraz zapamięta to dla danej zmiennej. Podczas zapisu wartości do urządzenia driver już wie w jakim formacie powinien daną wartośc wysłać.

Jeżeli nie dojdzie przynajmniej do jednej transmisji, wtedy driver nie musi poprawnie wiedzieć, jaki BACnet typ dla danej zmiennej urządzenie stosuje. Wtedy driver wstępnie ustawi dowolny typ, który wywnioskuje z nazwy BACnet własciwości. To wszak niezawsze musi być odpowiednie. W tym celu zalecane jest wykonanie przynajmniej jednego odczytu.

Opis konfiguratora PmCommData > Parametry > Parametry specjalne:
Niniejszy konfigurator nie jest stosowany przez dany driver.

Opis komunikacji przy pomocy obiektów PmCommMsg

Obiekty PmCommMsg można wykorzystać do specjalnych komunikacji, których nie można wykonać przy pomocy obiektu PmCommData. W przypadku tego drivera komunikacyjnego jest zaimplementowana tylko jedna specjalna wiadomość:
 
- Wczytanie przeglądu wszystkich dostępnych informacji z urządzenia:

W celu poprawnego ustawienia konfiguratora ItemId w zmiennych dla obiektu PmCommData jest konieczna znajomość informacji o dostępnych obiektach w danym urządzeniu. Takie informacje można odczytać z urządzenia i to właśnie wykonuje opisywana wiadomość komunikacyjna:

Wiadomość odczyta informacje i zapisze je do pliku tekstowego w zakładce Dane-odbiór.

Dzięki informacjom uzyskanym przy pomocy tej wiadomości można uzyskać listę obiektów danego urządzenia (lista obiektów z określeniem typu oraz numeru obiektu). Uzyskane informacje można z kolei wykorzystać do ustawienia ItemId w obiekcie PmCommData.

 

W celu poprawnego wytworzenia i ustawienia obiektu PmCommMsg jest dogodne zastosować konfigurację wstępną::

Jeżeli w tej konfiguracji wstępnej zaznaczysz konfiguratory:

to zostanie wytworzony poprawnei ustawiony obiekt PmCommMsg razem z panelem, w któreym można wiadomość uruchomić i odczytać w ten sposób informacje ze sterownika.

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