ACF System
Budowa i Architektura
ACF System to zestaw urządzeń elektronicznych i oprogramowania. Uściślając nieco temat
oprogramowania należałoby powiedzieć, że jest to zbiór aplikacji i programów pomocniczych.

Sercem systemu jest Jednostka Centralna. W przedstawionym przykładzie pełni ona rolę Serwera, tzn. odpowiada za komunikacje z użytkownikiem – to właśnie aplikacja Serwera udostępnia podgląd obecnego stanu systemu, umożliwia nadzór i sterowanie jego elementami, a także zarządzanie konfiguracją. Serwer udostępnia aplikację webową, interfejs umożliwiający komunikację z aplikacją mobilną, a także z innymi systemami.
Na pokładzie jednostki centralnej działa również aplikacja Koncentratora. Jest to część systemu odpowiedzialna za komunikację z modułami wykonawczymi. Moduły wykonawcze odpowiedzialne są za sterowanie oświetleniem, roletami, odczytywaniem danych wejściowych np. stanu przycisków lub temperatury.
Koncentrator ma do swojej dyspozycji maksymalnie 4 porty komunikacyjne. W chwili obecnej wspierane są interfejsy realizujące protokół w standardzie RS-485. Interfejs jest izolowany optycznie. Oznacza to, że urządzenie odbiorcze konwertuje przychodzący sygnał elektryczny na świetlny. W efekcie nie ma połączenia galwanicznego pomiędzy modułami a koncentratorem. Rozwiązanie to doskonale zabezpiecza system przed nieprawidłowym działaniem lub nawet uszkodzeniem z powodu przepięć elektrycznych, eliminuje również problem wynikający z przepływu prądów wyrównawczych. RS-485 jest to warstwą fizyczną protokołu, natomiast na poziomie warstwy logicznej, czyli już konkretnej implementacji, formatu pakietów danych oraz komunikatów synchronizacyjnych transmisję, zastosowanie znalazł dedykowany protokół zapewniający bezkolizyjną komunikację w czasie rzeczywistym. Dzięki takiemu podejściu reakcja systemu na akcje podjęte przez użytkownika jest błyskawiczna, wszelkie zdarzenia zaistniałe w systemie są komunikowane do serwera niemal natychmiast. Pełna ścieżka komunikacji od modułu, poprzez koncentrator aż do serwera, ma gwarantowany czas realizacji.
Protokół jest dwukierunkowy, co oznacza, że zarówno koncentrator jak również moduł pełnią rolę nadawczo-odbiorczą. Ta cecha protokołu umożliwiła zastosowanie mechanizmu retransmisji. Jego działanie można bardzo krótko opisać na przykładzie. Za każdym razem gdy koncentrator wyśle żądanie w postaci pakietu komunikacyjnego, oczekuje od moduł potwierdzenia, że komunikat został poprawnie odczytany, dobrze zrozumiany, zaś sam moduł przystępuje do realizacji rozkazu. Takie potwierdzenie to nic innego, jak tylko kolejny pakiet, jednak w tym przypadku wysłany przez moduł do koncentratora. Natomiast w sytuacji gdy koncentrator takiego potwierdzenia nie otrzyma, ponawia próbę wysłania rozkazu.
Jednym z największych wyzwań w fazie projektowania i rozwoju tego typu systemów jest zapewnienie stabilnej i niezawodnej komunikacji pomiędzy poszczególnymi elementami systemu. Co więcej jakość komunikacji nie może się degradować wraz z jego rozbudową. W tym miejscu warto odrobinę się cofnąć i zwrócić uwagę na jeszcze jedną z cech zastosowanego protokołu. Jest to protokół bezkolizyjny. Co to oznacza, czym właściwie jest kolizja?
Za każdym razem gdy dwa lub więcej urządzeń rozpocznie nadawanie w tym samym momencie, ich transmisje nałożą się na siebie, wówczas mamy do czynienia z kolizją. Skutkiem takiego zdarzenia będzie degradacja wszystkich pakietów, które brały udział w kolizji. Żaden z odbiorników nie otrzyma poprawnego pakietu danych. Jeśli urządzeń w sieci jest niewiele, wówczas taka sytuacja występuje niezwykle rzadko, natomiast jeśli system jest rozbudowywany i coraz większa liczba użytkowników z niego korzysta, prawdopodobieństwo wystąpienia kolizji rośnie w tempie niemal geometrycznym. W efekcie system pracuje niestabilnie, a reakcja systemu na działanie użytkownika, jest bardziej dziełem przypadku (może tym razem się uda?) niż przewidywalnym i oczekiwanym działaniem.
Zastosowany protokół komunikacyjny do efekt wytężonej pracy twórców ACF System. Każdy z zainstalowanych modułów, ma zarezerwowany slot czasowy, w którym może bezpiecznie prowadzić transmisję bez ryzyka, że inne urządzenie rozpocznie transmisję w tym samym czasie i zakłóci bieżącą komunikację. Po wysłaniu komunikatu, moduł przechodzi w tryb nasłuchu i na podstawie otrzymanych danych synchronizacyjnych a także precyzyjnemu pomiarowi czasu może dokładnie wyliczyć kiedy rozpocząć nadawanie. Jest to szczególnie istotne w przypadku modułów wejść, używanych do realizacji przełączników. Wciśnięcie przycisku, czy też zmiana stanu przełącznika to zdarzenie asynchroniczne, czyli takie, które może wystąpić w dowolnym momencie, kilku użytkowników może użyć różnych przycisków w tym samym czasie, mimo to system musi być przygotowany na obsługę tego typu zdarzeń.
W tym miejscu warto podsumować opisane cechy zastosowanego protokołu:
– optoizolacja – czyli brak połączenia galwanicznego pomiędzy nadawcą i odbiorcą, odbiornik konwertuje przychodzący sygnał elektryczny na świetlny i ten dopiero jest traktowany jako nośnik danych,
– komunikacja dwukierunkowa, zarówno koncentrator jak i moduł, mogą nadawać i odbierać wiadomości,
– mechanizm potwierdzeń i retransmisji, każde żądanie musi zostać potwierdzone przez moduł, w sytuacji braku takiego potwierdzenia, nadawca ponawia próbę,
– komunikacja w rygorze czasu rzeczywistego – wymiana danych odbywa się niesłychanie szybko, wszelkie opóźnienia są redukowane, czasy reakcji są minimalne i co więcej utrzymywane na stałych wartościach, wynikających ze specyfikacji protokołu, nawet retransmisje nie wpływają negatywnie na efektywność działania i nie generują dodatkowych opóźnień, w efekcie dla użytkownika system działa niezawodnie i natychmiastowo, ukrywając przed użytkownikiem zawiłości realizacji technicznej,
– jako ostatnią jednak być może najważniejszą cechą jest możliwość rozbudowy systemu, bez ryzyka degradacji jego parametrów. System będzie działał tak samo efektywnie gdy będzie zainstalowany jeden moduł, lub gdy będzie ich setki.
Każdy z portów RS-485 to osobna linia komunikacyjna. Na jednej linii może znaleźć się do 30 modułów. Ograniczenie to wynika ze specyfikacji elektrycznej protokołu RS -485. Moduły połączone są na zasadzie łańcuszka – czyli przewód biegnie od portu koncentratora do pierwszego modułu, następnie do kolejnego i tak do ostatniego na linii. Należy zwrócić uwagę, że ostatni moduł powinien terminować linię transmisyjną. Terminacja jest realizowana za pomocą rezystora 120 Ohm. Należy również unikać tworzenia rozgałęzień – powinna być to ciągła linia.
Każdy z modułów musi posiadać swój unikalny adres. Podczas procesu produkcji każdemu urządzeniu nadawany jest niepowtarzalny numer seryjny. Jest to wartość 4 bajtowa/32 bity, co daje możliwość wykorzystania ponad 4 miliardów unikalnych numerów seryjnych jednoznacznie identyfikujących każde wyprodukowane urządzenie.
Ze względu na wymagania jakie musi spełnić protokół komunikacyjny, głównie chodzi o jego działanie w czasie rzeczywistym i minimalizację wszelkich opóźnień, tak długi adres znacząco zwiększa rozmiar pakietu danych. Jednak i w tym przypadku twórcy systemu znaleźli rozwiązanie.
Na jednej linii RS-485 może znajdować się maksymalnie 30 modułów, co znacząco ogranicza zakres potrzebnych adresów do 5 bitów. Jest to 6-ścio krotnie mniej niż pełny numer seryjny. Należy zwrócić uwagę, że do poprawnej komunikacji potrzebujemy unikalnych adresów dla każdego modułu w zakresie lokalnym – czyli na linii. Oznacza to że na linii numer '1′, może znajdować się moduł o adresie lokalnym '1′ i taki sam adres może zostać użyty dla innego modułu na linii numer '2′, w takim przypadku nadal nie ma konfl iktu i wszystko będzie działać poprawnie.
W jaki sposób należy nadać adresy modułom? Wielu instalatorów, zapewne pomyśli o dip-switch’ach – zestawie mechanicznych przełączników. Jest to powszechnie stosowana metoda polegająca na ustawianiu odpowiednich zworek w pozycji on/off . Każdy z przełączników odpowiada wartości logicznej 0 lub 1, na odpowiedniej pozycji w słowie binarnym. Kombinacja 5 takich przełączników pozwala zbudować wartość od 0 do 31. Nie inaczej jest w przypadku modułów systemu ACF. Jednak zrezygnowano z zastosowania mechanicznych przełączników, a lokalny adres zapisywany jest w pamięci nieulotnej (EEPROM) modułu. Programowanie adresu, czyli mapowanie jego 32 bitowego numeru seryjnego na 5-cio bitowy adres lokalny odbywa się za pomocą konfiguratora systemu, z poziomu aplikacji webowej. Takie rozwiązanie znacząco uprościło budowę modułu, a ponadto instalator ma podgląd stanu modułów w jednym miejscu z poziomu konfiguratora.
W sytuacji gdy linia osiągnie pełną pojemność – zainstalowane zostanie 30 moduł lub jeśli instalator zdecyduje, że ze względu na specyfikę obiektu, w którym zainstalowany będzie system, np. aby uniknąć rozgałęzień, koncentrator udostępnia kolejny port. Wówczas na następnej linii można zainstalować kolejny zestaw modułów. W ten sposób pojedynczy koncentrator, w pełnej konfiguracji tj. 4 porty RS -485, może obsłużyć do 120 modułów wykonawczych.

Co jednak, gdy i taka pojemność okaże się niewystarczająca? I w tym przypadku projektanci znaleźli sposób aby pokonać to ograniczenie. Jednak przed opisem warto zwrócić uwagę na architekturę systemu.
Zanim omówimy sobie bardziej szczegółowo to zagadnienie, należy wyjaśnić czym właściwie jest Serwer i Koncentrator. Są to aplikacje, czyli niezależne jednostki programistyczne. Każda z nich może pracować na innej maszynie. Jednak aby system funkcjonował poprawnie muszą mieć możliwość komunikować się ze sobą. Do komunikacji pomiędzy nimi wykorzystuje się protokół TCP/IP. Jest to dokładnie ten sam sposób wymiany informacji na jakim oparty jest Internet.
Ponadto aplikacje Serwera i Koncentratora potrzebują bezpiecznej i stabilnej platformy sprzętowej. Jednym z komponentów Systemu ACF jest Jednostka Centralna. Jest to dedykowany mini-komputer z bardzo precyzyjnie dobraną specyfikacją. Zarządza nim tworzona dla tej platformy sprzętowej dystrybucja oparta na systemie linux. Zarówno sprzęt i oprogramowanie są produktem własnym firmy ACF Solutions. Dzięki temu zestaw ten jest bardzo dobrze zoptymalizowany, zarówno pod kątem dostępnych zasobów, jak i wydajności.

Reasumując na pokładzie Jednostki Centralnej znajdują się tylko te komponenty elektroniczne, które są niezbędne do pracy i realizacji wymaganych funkcjonalności, natomiast oprogramowanie czyli system operacyjny wraz ze sterownikami, zawiera wyłącznie potrzebne linie kodu, starannie dopasowane do zastosowanego sprzętu. Dzięki temu system zużywa minimalne zasoby sprzętowe i nadal działa efektywnie. Nawet kilkunasto-tygodniowy test pod pełnym obciążeniem w temperaturze pokojowej 23C nie spowodował przekroczenia temperatury procesora powyżej 45 stopni Celsjusza i to z wykorzystaniem wyłącznie pasywnego chłodzenia (tylko radiator, bez żadnego wentylatora). Takie podejście zapewnia zarówno znakomity poziom niezawodności systemu jak i znacząco obniża koszty produkcji a tym samym końcową cenę dla użytkownika. Koleją zaletą budowy dedykowanego komputera jest elastyczność w kwestii wyposażenia go w dedykowane interfejsy własnego pomysłu.
Posiadając wiedzę na temat budowy sytemu, możemy zastanowić się nad możliwymi sposobami rozbudowy systemu. Jeśli Serwer i Koncentrator to aplikacje, natomiast Jednostka Centralna to komputer, to możemy je rozdzielić i multiplikować. W podstawowej wersji, użytkownik korzysta z jednej Jednostki Centralnej, na której będzie działać aplikacja Serwera i Koncentratora. W sytuacji gdy liczba zainstalowanych modułów nie przekracza 120, takie rozwiązanie jest optymalne. Natomiast gdy pojawi się potrzeba rozbudowy systemu, to wówczas można to zrobić, bez potrzeby ingerencji w istniejącą instalację. W takim przypadku, należy zainstalować dodatkową jednostkę centralną, wówczas będzie pracować na niej wyłącznie aplikacja Koncentratora.
Reasumując, w instalacji potrzebna jest tylko jedna instancja aplikacji Serwera, natomiast może istnieć wiele instancji aplikacji Koncentratora. Aplikacja serwera jest w stanie obsłużyć wiele Koncentratorów, co więcej jest jej obojętne na jakim urządzeniu aplikacja koncentratora działa, ważne jest aby aplikacje mogły się ze sobą komunikować.








