Sterownik 6 zwrotnic do TT
Schemat w formacie PDF
Dla każdej zwrotnicy przygotowanych jest 5 wyprowadzeń: jedno wspólne (oznaczone na schemacie jako gruba szyna), dwa sterujące (podłączone do kolektorów) oraz kontrolne (dwa pozostałe).
Uwaga ! Błąd na schemacie, zamiast układów z otwartym kolektorem
UCY7406 należy zastosować układy UCY7404.
Program do mikrokontrolera 89C2051
Spis elementów potrzebnych do wykonania tego wszystkiego
Spakowana wersja wszystkich ww wymienionych danych
Dzialanie sterownika:
Po odebraniu ramki z informacją i odpowiednim numerem sterownik interpretuje kolejne bajty danych. Sterowanie odbywa się poprzez podanie napięcia (24V) na wspólną szynę i generowanie impulsu na kolejnych wyjciach. Sprawdzanie stanu odbywa się przez podanie stanu niskiego na wspólną szynę i odczyt z poszczególnych wejć.
Sposób komunikacji:
Do komunikacji z ww urządzeniami
przewidziałem protokół zwany IntelHEX, a konkretnie jego pewną przeróbkę
(format danych). Znaczenie poszczególnych bajtów oraz wartości są ustalone
przeze mnie.
Przesyłana ramka informacji wygląda:
:[długość][adres_wezła][adres_urządzenia][komenda][Co zrobić] ...
[CRC]
Legenda:
-
: znacznik poczatku danych,
-
[xxx] bajt w hexadecymalnej postaci np: 1 = 01, 255 = FF, itp.,
-
długosc - ilość bajtów {co zrobić},
-
adres węzła - adres sterownika w sieci wielu podobnych urzadzeń,
-
adres urządzenia - numer urządzenia do którego będzie odnosić się pierwszy
bajt danych {co zrobić},
-
komenda - określenie co zrobić z otrzymanymi danymi
-
00 - steruj bez kontroli,
-
01 - wysteruj z kontrolą,
-
02 - odczytaj stan,
-
03 - wysteruj i odczytaj stan,
-
10h - zmiana predkosci transmisji,
-
80h - przypisanie numeru w sieci,
-
itd, itp.
-
Co zrobić - co zrobić z określonym urządzeniem (pozycja 1, pozycja 2, pozycja
1 do skutku,pozycja 2 do skutku, itd...),
-
CRC - suma kontrolna będąca dopełnieniem sumy wszystkich bajtów do wartości
podzielnej bez reszty przez 100h.
Podczas jednej transmisji można wpisać do 64 (40h) bajtów danych (ograniczenie
ze wzgledu na ilość pamieci w 89C2051). Pierwszy bajt dotyczy urządzenia
o adresie={adres urządzenia}, a kolejne odpowiednio następnych urządzen.
Wszystkie sterowniki są w sieci tzw. slave-mi czyli same nie inicjują
transmisji. Po odebraniu poprawnej ramki danych sterownik odpowiada albo
ramką ok"={:00000001FF} lub danymi o stanie urządzeń.
W przypadku wymuszenia na lini transmisyjnej sygnału niskiego (normalnie
znaczyłoby to w RS232 BREAK) w ciągu 5 sek. wszystkie sterowniki przechodzą
w tryb identyfikacji. Każdy z nich posiada indywidualny czterobajtowy numer
ID, z pomocą którego można ww układ rozpoznać w sieci. Układ zarządzający
po rozpoznaniu wszystkich numerów ID zapamiętuje je w określonej konfiguracji
i przy każdej inicjalizacji wszystkim znanych sterownikom przypisuje jednobajtowy
numer, który jest używany jako adres urządzenia.
Powrot