Domowy system sterujący
: środa 27 gru 2017, 00:12
Idea
Koncepcja domowego systemu sterującego (w skrócie HCS) narodziła się jeszcze w latach 90-tych ubiegłego wieku. Z biegiem lat ulegała modyfikacjom i rozrastała się, taka elektroniczna ewolucja naturalna. Z czasem projekt urósł do poważnych rozmiarów i obecnie sprawia wrażenie dość rozbudowanego. Jego zadaniem jest sterowanie wszystkiego co się da (i nawet tego, czego się nie da). Poszczególne elementy całości zostały tak pomyślane, by pozwalały na pracę niejako autonomiczną oraz by mogły stać się elementami bardziej złożonej infrastruktury. Wręcz naturalnym elementem rozwiązania poszczególnych sterowników jest wykorzystanie mikrokontrolerów. Całość generalnie jest oparta o mikrokontrolery AVR oraz ARM. Nie jest istotny wybór rodziny mikrokontrolerów a w tym przypadku był on podyktowany dostępnością procesorów zawierających wymagane funkcjonalne zespoły (dotyczy procesorów AVR bo w tamtych czasach nie było większej alternatywy i tak jakoś zostało). Początkowo stosowane były procki z rodziny C51, ale miały one dość poważną wadę, mianowicie tylko jeden kontroler transmisji szeregowej UART no i mizerne zasoby pamięci RAM, z którą co prawda można sobie jakoś poradzić ale kosztem redukcji pinów portów do sterowania). Z racji, że cała komunikacja oparta jest o transmisję szeregową, często konieczne jest użycie takich mikrokontrolerów, które mają więcej niż jeden szeregowy kanał komunikacyjny.
Wspomniałem o komunikacji między poszczególnymi elementami całości i że jest oparta o transmisję szeregową. W całości wykorzystane są dwie „technologie komunikacyjne” RS232 oraz RS485. Cechą charakterystyczną standardu RS232 jest brak możliwości równoległego łączenia interfejsów ale z drugiej strony pozwala to na większe przepływy danych (z racji stosowania filozofii transmisji w pełnym dupleksie). Z przypadku interfejsu RS485 w układzie jednoparopwym można równolegle łączyć wiele interfejsów, czyli uzyskać na jednym kanale komunikacyjnym możliwość wymiany informacji w wieloma urządzeniami. Jednak taka technologia ma pewne swoje ograniczenie, które wynikają z jednoparowości → transmisja półdupleksowa. Oznacza to, że w danej chwili czasowej mikrokontroler może jedynie nadawać albo odbierać dane (nie może wystąpić jednoczesna transmisja w obu kierunkach). O problemach występujących w obsłudze komunikacji szeregowej z wykorzystaniem półdupleksowej transmisji RS485 będę pisał później.
Nie powinno dziwić, że spięcie kilkudziesięciu sterowników różnej maści i przeznaczenia, które w sumie mają trafić do jednego komputera, wygeneruje konieczność zastosowania kompa mającego bardzo wiele portów szeregowych. Na tym poziomie została przewidziana technologia ethernetowa. Każda gałąź sterowników jest widziana dla warstwy hierarchicznie wyższej jako pojedynczy kanał szeregowy RS232. Z poziomu komputera PC wszystkie sterowniki są widziane jako urządzenia o określonym adresie IP. Koncepcja zakłada techniczną możliwość przesłania danych pomiędzy dowolnymi sterownikami wpiętymi gdziekolwiek. Narzuca to jednocześnie dla „węzłowych” sterowników konieczność realizacji podstawowych funkcji dotyczących przekierowywania danych (routing danych). Z kolei funkcjonalność przekierowywania danych wymaga zawarcia w transmitowanych danych niezbędnych informacji pozwalających na jej realizację.
Na koniec można zadać dość istotne pytanie: po co to wszystko? A odpowiedź... bo to fajna zabawa. Coś zrobić nie po to by to mieć, lecz by zmierzyć się z wyzwaniem, by doświadczyć trudności związanych z pokonaniem wielu problemów, by na koniec bez żalu z tym się rozstać.
Koncepcja domowego systemu sterującego (w skrócie HCS) narodziła się jeszcze w latach 90-tych ubiegłego wieku. Z biegiem lat ulegała modyfikacjom i rozrastała się, taka elektroniczna ewolucja naturalna. Z czasem projekt urósł do poważnych rozmiarów i obecnie sprawia wrażenie dość rozbudowanego. Jego zadaniem jest sterowanie wszystkiego co się da (i nawet tego, czego się nie da). Poszczególne elementy całości zostały tak pomyślane, by pozwalały na pracę niejako autonomiczną oraz by mogły stać się elementami bardziej złożonej infrastruktury. Wręcz naturalnym elementem rozwiązania poszczególnych sterowników jest wykorzystanie mikrokontrolerów. Całość generalnie jest oparta o mikrokontrolery AVR oraz ARM. Nie jest istotny wybór rodziny mikrokontrolerów a w tym przypadku był on podyktowany dostępnością procesorów zawierających wymagane funkcjonalne zespoły (dotyczy procesorów AVR bo w tamtych czasach nie było większej alternatywy i tak jakoś zostało). Początkowo stosowane były procki z rodziny C51, ale miały one dość poważną wadę, mianowicie tylko jeden kontroler transmisji szeregowej UART no i mizerne zasoby pamięci RAM, z którą co prawda można sobie jakoś poradzić ale kosztem redukcji pinów portów do sterowania). Z racji, że cała komunikacja oparta jest o transmisję szeregową, często konieczne jest użycie takich mikrokontrolerów, które mają więcej niż jeden szeregowy kanał komunikacyjny.
Wspomniałem o komunikacji między poszczególnymi elementami całości i że jest oparta o transmisję szeregową. W całości wykorzystane są dwie „technologie komunikacyjne” RS232 oraz RS485. Cechą charakterystyczną standardu RS232 jest brak możliwości równoległego łączenia interfejsów ale z drugiej strony pozwala to na większe przepływy danych (z racji stosowania filozofii transmisji w pełnym dupleksie). Z przypadku interfejsu RS485 w układzie jednoparopwym można równolegle łączyć wiele interfejsów, czyli uzyskać na jednym kanale komunikacyjnym możliwość wymiany informacji w wieloma urządzeniami. Jednak taka technologia ma pewne swoje ograniczenie, które wynikają z jednoparowości → transmisja półdupleksowa. Oznacza to, że w danej chwili czasowej mikrokontroler może jedynie nadawać albo odbierać dane (nie może wystąpić jednoczesna transmisja w obu kierunkach). O problemach występujących w obsłudze komunikacji szeregowej z wykorzystaniem półdupleksowej transmisji RS485 będę pisał później.
Nie powinno dziwić, że spięcie kilkudziesięciu sterowników różnej maści i przeznaczenia, które w sumie mają trafić do jednego komputera, wygeneruje konieczność zastosowania kompa mającego bardzo wiele portów szeregowych. Na tym poziomie została przewidziana technologia ethernetowa. Każda gałąź sterowników jest widziana dla warstwy hierarchicznie wyższej jako pojedynczy kanał szeregowy RS232. Z poziomu komputera PC wszystkie sterowniki są widziane jako urządzenia o określonym adresie IP. Koncepcja zakłada techniczną możliwość przesłania danych pomiędzy dowolnymi sterownikami wpiętymi gdziekolwiek. Narzuca to jednocześnie dla „węzłowych” sterowników konieczność realizacji podstawowych funkcji dotyczących przekierowywania danych (routing danych). Z kolei funkcjonalność przekierowywania danych wymaga zawarcia w transmitowanych danych niezbędnych informacji pozwalających na jej realizację.
Na koniec można zadać dość istotne pytanie: po co to wszystko? A odpowiedź... bo to fajna zabawa. Coś zrobić nie po to by to mieć, lecz by zmierzyć się z wyzwaniem, by doświadczyć trudności związanych z pokonaniem wielu problemów, by na koniec bez żalu z tym się rozstać.