Driver ten 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 obejżeć "
PROMOTIC wideo kurs 4 - Drivery komunikacyjne".
Podstawowe właściwości drivera:
- Zastosowanie tego drivera wymaga zakup
licencji PmBACnet. Podczas wytwarzania aplikacji w trybie freeware
PmFree lub z
licencją deweloperską oraz podczas jej testowania w runtime element ten jest zawsze funkcjonalny.
- Komunikacja jest 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ć z urządzenia (patrz dalej).
Dla łatwego dodania tego drivera do aplikacji jest dogodne zastosować:
Konfiguracje wstępne w grupie "BACnet"
- 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 odpowiedź I-Am informuje 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 tego samego typu w urządzeniu może być 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.
Typy 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ść logiczna na wejściu urządzenia.
- Binary Output: Wartość logiczna na wyjściu urządzenia.
- Binary Value: Wartość logiczna 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. Przy zapisie 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 dla
VBScript, wtedy będzie wysyłana
BACnet wartość
NULL i wtedy przy zapisie na określonym indeksie w polu zostanie usunięta pozycja.
Zalecone wartości parametrów obiektu PmaComm:
Maksymalna akceptowana długość APDU | Ponieważ 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 (lub jeszcze lepiej zmiennych w obiekcie
PmaData z rozszerzeniem danych
ExtComm) są w tym driverze odczytywane
wszystkie razem w jednej wiadomości. 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 wiadomości (patrz konfigurator "
Maksymalna akceptowana długość APDU") a
transmisja zawiesi się. Dlatego jest zalecane rozdielenie zmiennych do kilka obiektów
PmaCommGroup.
Notatka: Driver
PmBACnet nie wspiera jeszcze podziału wiadomości na wiele pakietów
UDP (tzw.
segmentation). Inne PROMOTIC drivery komunikacyjne automatycznie wykonają podział zmiennych z jednego obiektu
PmaCommGroup do większej ilości wiadomości. W przypadku tego protokołu nie jest to bezpośrednio możliwe, wtedy znacząco doszło by do ograniczenia ilości zmiennych w jednej wiadomości.
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 identyfikator tekstowy pozycji, który służy do adresacji pozycji 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ć w oknie, 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ę.
- IdentyfikatorWłaściwości: Identyfikator może być wprowadzony w postaci nazwy lub jako liczba. Wprowadzanie identyfikatora jako liczby ma sens np. dla niestandardowych właściwości specyficznych dla sterownika PLC.
- 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.
Przykłady formy identyfikatora:
Device.model-name = Nazwa typu urządzenia
AnalogValue.2.present-value.pri8 = Aktualna analogowa wartość o numerze 2. Przy zapisie tej pozycji będzie wysyłana wartość o pryorytecie 8 (patrz
Zapis do właściwości present-value).
BinaryValue.14.present-value[4] = Wartość aktualna pod indeksem 4 w tablicy binarnej o numerze 14
AnalogOutput.15.priority-array[8] = Wartość wyjścia analogowego 15, która jest przyszeregowana priorytetowi 8.
AnalogOutput.15.priority-array =
Tablica priorytetów i wartości wyjść analogowych
15.
Tablica ta jest przechowywana w zmiennej typu
String w formacie
KeyVal. Ten
String zawiera tylko ustawione priorytety z wartościami (np.
"p1:12.8;p8:3.14;". - priorytet 1 z wartością
12.8. oraz priorytet 8 z wartością
3.14).
AnalogInput.20.event-state = Wartość właściwości event-state wejścia analogowego 20.
Zamiast tej właściwości mogą być właściwości na przykład: 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 = Tutaj właściwość jest określona przez liczbę 2048.
Dla właściwego określenia
ItemId jest zalecane:
- 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ść 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łaściwości. To wszak niezawsze musi być odpowiednie. W tym celu zalecane jest wykonanie przynajmniej jednego odczytu.
Ten 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 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 wiadomość ta:
Wiadomość odczyta informacje i zapisze je do łańcucha 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.
Driver
PmBACnet nie wspiera jeszcze podziału wiadomości na wiele pakietów
UDP (tzw.
segmentation). Dlatego wiadomość ta nie działa (zgłasza błąd
abort-segmentation-not-supported) jeżeli urządzenie zawiera wiele obiektów a ich lista nie mieści się w jednym pakiecie.
W celu poprawnego wytworzenia i ustawienia obiektu
PmaCommMsg jest dogodne zastosować konfigurację wstępną:
Jeżeli w tej konfiguracji wstępnej zaznaczysz konfiguratory:
to jest 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.