Promotic
WikipediaLinkedInYoutubeTwitterFacebook

PmBACnet - Driver do komunikacji protokołem BACnet

Niniejszy driver służy do komunikacji z urządzeniami, które obsługują protokoł BACnet. Patrz Komunikacja protokołem 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:
- Zastosowanie tego drivera wymaga zakup licencji PmBACnet. Z wersją freeeware PmFree lub przy opracowywaniu aplikacji (z licencją deweloperską w celach testowania) element ten zawsze funkcjonuje.
- Komunikacja przebiega dla Ethernetu (aplikacja PROMOTIC jest klientem). Driver wspiera tylko warstwę aplikacji BACnet/IP z warstwą transportową UDP.
- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmaComm.

Driver wspiera wykorzystanie obiektu PmaCommGroup (do odczytu i zapisu zmiennych). Obiekt PmaCommMsg 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 muszą 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 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ę oraz 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 oraz 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: null dla JavaScript lub Empty pro VBScript, 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-klient:
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 bajt, mogą niektóre urządzenia żądać krótszą długość pakietu.

Informację o tej długości udostępnia na przykład wiadomość 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 obiektu PmaCommGroup

Zmienne w obiekcie PmaCommGroup (albo jeszcze lepiej zmiennych w obiekcie PmaData 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 PmaCommGroup 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 PmaCommGroup.

Notatka: Inne PROMOTIC drivery automatycznie wykonają podział zmiennych z jednego obiektu PmaCommGroup 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 PmaCommGroup w jak największej ilości.

 
Odczytywane są wszystkie zmienne (jeżeli konfigurator "Odświeżanie danych zezwolone" jest zaznaczony). Przy zapisie do zmiennej do urządzenia jest odesłana tylko zapisywana zmienna (jeżeli konfigurator "Automatycznie przesyłaj przy zapisie do pozycji" jest zaznaczony).
 
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 zastosować Makro wyrażenie (wartość jest obliczana po 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 dla właściwośc 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 oraz 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 "PmaCommGroup > Parametry > Parametry specjalne":
Niniejszy konfigurator nie jest stosowany przez dany driver.

Opis komunikacji przy pomocy obiektu PmaCommMsg

Obiekt PmaCommMsg można zastosować do specjalnych komunikacji, których nie można wykonać przy pomocy obiektu PmaCommGroup. 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 PmaCommGroup jest konieczne 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 karcie "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 zastosować do ustawienia ItemId w obiekcie PmaCommGroup.

 

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

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

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


Historia:
Pm9.00.03: Usunięty błąd: Nie testowano, czy dotarła odpowiedź od danego zapytania. Wystąpił błąd jeżeli poprzednia odpowiedź dotarła późno po timeoucie.
Pm8.03.11: Nowo wspiera obiekt typu "PulseConverter".
Pm8.03.04: Usprawniono odczyt oraz zapis właściwości weekly-schedule w obiekcie Schedule.
Pm8.02.16: Uogólnienie zapis do urządzenia:
- U present-value teraz można określać również pryorytet zapisu.
- Podczas zapisu wartości null dla JavaScript lub Empty pro VBScript wysyłana jest wartość BACnet NULL i wtedy w urządzeniu dojdzie do usunięcia danych.
Pm8.02.03: Wytworzono
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice