Inteligentny Budynek eHouse 1 – statusy sterowników w postaci binarnej

Inteligentny Dom , Inteligentny Budynek eHouse w wersji 1 – ramka statusu sterowników systemu automatyka domu, automatyka budynku. Aby Tworzyć w pełni funkcjonalne, własne oprogramowanie paneli sterujących czy wizualizacji konieczna jest implementacja bezpośredniego dekodowania statusów sterowników eHouse 1 w postaci binarnej.
W zależności od wyboru trybu pracy zwykłego lub rozszerzonego adresu (Extended address), ramka wysłania statusu tych sterowników jest następująca (w nawiasie zaznaczono różnicę dla trybu extended address). Tryb ten jest niezbędny do pracy sterowników pod nadzorem CommManager’a i wysyła on także poza adresem docelowym przesłania zdarzenia, Adres własny aby urządzenie docelowe mogło powiadomić nadawcę o odebraniu zdarzenia (hand-shake). W przypadku interfejsu rs-485 zdecydowanie nie zalecamy prób bezpośredniego łączenia się ze sterownikami, gdyż wysłanie niektórych komend może spowodować np wyczyszczenie pamięci programu sterownika mikroprocesorowego co może zakończyć ich żywot. Inne komendy lub przypadkowe sygnały na magistrali RS-485 mogą zachwiać stabilność systemu lub zdecydowanie spowolnić jego pracę. Natywnie sterowniki automatyka eHouse 1 powinny pracować tylko pod nadzorem aplikacji producenta “eHouse.exe”. Dla bezpieczeństwa można odczytywać status sterowników bez łączenia się z nimi poprzez aplikację eHouse.Exe (przez protokół UDP i sieć LAN). Jest to odczyt bezinwazyjny, nieobciążający ani sterowników ani oprogramowania, a co więcej nie ingerujący w żaden sposób w protokół transmisji po magistrali RS-485.

Inaczej przedstawia się sytuacja pracy sterowników eHouse 1 pod nadzorem CommManagera. CommManager sam może wysyłać statusy sterowników (eHouse 1 i CommManagera w zintegrowanej paczce) protokołem UDP po sieci LAN i dostęp do tych danych jest bezpołączeniowy i nieinwazyjny oraz bezpośrednio z CommManagera. Odbierając dane statusu po UDP nie możemy nic zaszkodzić sterownikom , a co najwyżej źle zinterpretować przychodzące dane. System eHouse nie umożliwia wysyłanie czegokolwiek do sterowników protokołem UDP dla bezpieczeństwa, a dla sterownika nie ma znaczenia czy klient odbiera wysyłane dane po UDP czy nie, ani czy klientów jest 0 czy 250.
Odbieranie danych z systemu automatyki domu eHouse po UDP jest bezpieczne i nie obciąża w żaden sposób sterowników ani oprogramowania eHouse, wysyłające broadcasty (rozgłoszenia) do sieci LAN.

Ramka statusu ma następujący format:
<rozmiar danych>(<adres H Docelowy><adres L Docelowy>)<adres H Własny><adres L własny><komenda><dane 1>…..<dane><dane N><rozmiar danych>(<adres H Docelowy><adres L Docelowy>)<adres H Własny><adres L własny><komenda><dane 1>…..<dane><dane N><0>
1. rozmiar danych
2. Adres H sterownika (Adres H docelowy)
3. Adres L Sterownika (Adres L docelowy)
4. Komenda sterująca (Adres H zwrotny sterownika )
5 Dane 1 bajt (Adres L zwrotny sterownika)
6. Dane 2 bajt (Komenda sterująca)
7 Dane 3 bajt (Dane 1 bajt)
8.. reszta danych dla danej komendy.

W przypadku wysłania statusu sterownika komendą sterującą jest ‘s’. Dalej następują dane w postaci binarnej aby maksymalnie ograniczyć transfer informacji po łączu szeregowym RS-485.

Dla bezpieczeństwa dane są te przesyłane podwójnie aby wyeliminować transmisje obarczone błędami.

Komendą przesyłania statusu jest ‘s’,
Ramka statusu sterowników inteligentnego domu eHouse 1 oraz opis numeru bajtu (index z przesunięciem zależnym od trybu pracy (normalnym lub extended adres). To stałe przesunięcie nazwano poniżej TCP_INDEX_INC. W zależności od trybu może ona przyjąć wartość 3 dla extended address lub 0 dla normalnej transmisji. Przy pisaniu oprogramowania warto uwzględnić ten parametr jako zmienną, gdyż pozwoli nam to na łatwą manipulację danymi w późniejszych wersjach systemu jeśli ramka zostanie przesunięta w taki czy inny sposób.

Indeksy poszczególnych bajtów ramki statusu ze sterowników eHouse 1 (od początku ramki):

STATUS_ADC        = 1+2+TCP_INDEX_INC;   //wartości przetworników A/C po 2 bajty 1B=MSB, 2B=LSB !!!! nie dla HM wartość napięcia = (x/1024)*Vcc gdzie Vcc=5V.
STATUS_OUT              =17+2+TCP_INDEX_INC;   //stany wyjść cyfrowych pierwszy index

//każde wyjście 1 bit LSb najmniejszy nr, MSb największy
STATUS_IN        =20+2+TCP_INDEX_INC;   //stany wejść cyfrowych LSb najmniejszy nr, MSb największy
STATUS_INT        =21+2+TCP_INDEX_INC; //stany wejść cyfrowych cd (przerwania) LSb najmniejszy nr, MSb największy
STATUS_OUT25             =22+2+TCP_INDEX_INC;  //stany wyjść od 25 ..32 analogicznie jak wyjścia
STATUS_LIGHT            =23+2+TCP_INDEX_INC;   //status ściemniaczy 1B jeden ściemniacz
STATUS_ZONE_PGM         =26+2+TCP_INDEX_INC;   //nr bieżącej strefy dla EM
STATUS_PROGRAM          =27+2+TCP_INDEX_INC;    // nr bieżącego programu
STATUS_INPUTEXT_A_ACTIVE=28+2+TCP_INDEX_INC; //wejścia inputextendera A w stanie aktywnym
STATUS_INPUTEXT_B_ACTIVE=32+2+TCP_INDEX_INC; //wejścia inputextendera B w stanie aktywnym
STATUS_INPUTEXT_C_ACTIVE=36+2+TCP_INDEX_INC; //wejścia inputextendera C w stanie aktywnym
STATUS_INPUTEXT_A     =40+2+TCP_INDEX_INC; //wejścia inputextendera A Alarmy i Warningi
STATUS_INPUTEXT_B     =50+2+TCP_INDEX_INC; // wejścia inputextendera B Alarmy i Warningi
STATUS_INPUTEXT_C    =60+2+TCP_INDEX_INC; // wejścia inputextendera C Alarmy i Warningi
// Status HeatManagera
STATUS_ADC_HEART        =1+2+TCP_INDEX_INC; // pomiary temperatur z 16 czujników analogicznie jak dla RM
STATUS_OUT_HEART              =33+2+TCP_INDEX_INC;  //stany wyjść cyfrowych analogicznie jak dla RM
WENT_MODE= 51+TCP_INDEX_INC;
RECU_MODE:= 50+TCP_INDEX_INC;
CURRENT_PGM:=38+TCP_INDEX_INC;

// status commmanagera  zintegrowany ze statusem sterowników eHouse 1 (instalacja hybrydowa) eHouse 1 pod nadzorem CommManagera
STATUS_EHOUSE1_DEVS        =0;            //miejsce na status urządzeń podłączonych do RS485 (eHouse 1) jak wyżej 71 bajtów
STATUS_ADC_ETH            =72;            //adc pomiary 16 wejść * 2B    przetworniki A/C notacja jak dla RM Vcc=3.3V
STATUS_ADC_ETH_END        =STATUS_ADC_ETH+32;    //koniec pomiarów z przetworników
STATUS_OUT_I2C            =STATUS_ADC_ETH_END;  //2 razy i2c razy 10 rej po 8  //max=160 wyjść    przy module rozszerzeniowym
STATUS_INPUTS_I2C        =STATUS_OUT_I2C+20;     //2 razy i2c razy 6 rej po 8    //max 96 wejść  przy module rozszerzeniowym
STATUS_ALARM_I2C        =STATUS_INPUTS_I2C+12;    // wejścia w stanie alarm (w odniesieniu do maski dla aktualnej strefy zabezpieczeń)
STATUS_WARNING_I2C        =STATUS_ALARM_I2C+12;        // wejścia w stanie warning (w odniesieniu do maski dla aktualnej strefy zabezpieczeń)
STATUS_MONITORING_I2C            =STATUS_WARNING_I2C+12;    // wejścia w stanie monitoring (w odniesieniu do maski dla aktualnej strefy zabezpieczeń)
STATUS_PROGRAM_NR        =STATUS_MONITORING_I2C+12; // numer programu CommManagera
STATUS_ZONE_NR            =STATUS_PROGRAM_NR+1; //numer strefy CommManagera
STATUS_ADC_PROGRAM        =STATUS_ZONE_NR+1; //numer programu przetworników ADC
STATUS_LIGHT_LEVEL        =STATUS_ADC_PROGRAM+2;        //status 3 ściemniacze                                                    //sciemniacze 3 * 2B

Przykład obliczenia wartości temperatury ze statusu HM

i= index wejścia analogowego 0..15 dla HM funkcją gettemplm(msb,lsb);

TEMPHM[i]:=gettemplm(str[STATUS_ADC_HEART+i*2+TCP_INDEX_INC],str[STATUS_ADC_HEART+i*2+1+TCP_INDEX_INC])’
Tworzenie oprogramowania sterująco kontrolnego i wizualizacji stanu inteligentnego domu eHouse dla Windows
sterowanie oświetleniem, automatyka oświetleniowa
oprogramowanie paneli wizualizacji inteligentnego domu eHouse tworzenie

2 thoughts on “Inteligentny Budynek eHouse 1 – statusy sterowników w postaci binarnej”

Comments are closed.