Po podłączeniu konwertera kabelkiem USB (A-B) Windows wykrywa nowe urządzenie – odpowiedni sterownik dostarczany jest przez Microchip skąd wykorzystałem biblioteki USB. Po zainstalowaniu sterownika pojawia się nowy port serial:
Założenia numeracji i identyfikacji termometrów DS18B20.
Każdy termometr DS18B20 posiada swój unikalny 64-bitowy kod za pomocą którego można go zidentyfikować. Jednak na potrzeby zarządzania domem potrzebne nam jest tylko oznaczenie termometrów od 1 do 16 (to maksymalna ilość termometrów możliwa do zaadresowania moim urządzeniem – wynika z niewielkiej ilości pamięci RAM mikroprocesora PIC18F2550 – znaczna część zajęta przez bibliotekę USB).
Użyłem prostego pomysłu numeracyjnego – nie trzymam numerów seryjnych na mikrokontrolerze, ale numer porządkowy trzymany jest na termometrze ! Każdy termometr ma do dyspozycji 3 bajty pamięci które można zaprogramować, dwa bajty alarmu – podnosi flagę alarmu gdy temperatura zostanie osiągnięta oraz bajt konfiguracji – dokładność odczytu termperatury) Ponieważ nie korzystam z mechanizmów alarmowania dwa dostępne bajty zostają wykorzystane do przechowywania numeru.
Drugi bajt przechowuje identyfikator systemu = 0xFF. Jeśli nie jest on równy 0xFF to znaczy że to nowy termometr w mojej sieci i trzeba go zaadresować. W pierwszym bajcie przechowywany jest numer porządkowy.
Gdy konwerter zostanie zresetowany lub podłączony do sieci zasilającej – najpierw odczytuje z magistrali (specjalnym algorytmem) wszystkie urządzenia 1-wire, następnie odpytuje każdego z koleji o jego numer porządkowy. Numer ten odpowiada numerowi rejestru protokołu MODBUS.
Po co to wszystko ?
Po to, aby odpowiadając sterownikowi PLC dany termometr był zawsze w tym samym rejestrze.
Konfiguracja
Wracając do interfejsu USB – po otwarciu konsoli np. przez putty lub Hyperterminal mamy w menu do wyboru opcje:
Przedstawiane temperatury są w liczbach rzeczywistych – aby otrzymać właściwą temperaturę trzeba ją w systemie prezentacji podzielić przez 10.
Kolejną opcją jest skanowanie magistrali – pomocne gdy dodano nowe urzadzenie.Jeśli znaleziono nowe urządzenie 1-wire to zostaje mu przypisany identyfikator i kolejny numer porządkowy.
Opcja numer TRZY – listuje wszystkie urządzenia i ich parametry. Kolejno kolumny przedstawiają:
- Numer porządowy – w jakim rejestrze MODBUS znajdziemy odczyt temperatury z tego termometru
- Ostatnie bajty numeru seryjnego – na wszelki wypadek warto zrobic screenshota gdyby się numeracja pochrzaniła 🙂
- Temperatura na każdym z elementów
- 3 bajty konfiguracyjne – dwa pierwsze to numery porzadkowe i jeden bajt konfiguracji
Kolejną opcją jest możliwość rnumeracji urządzenia 1-wire – czyli przepisanie go do innego rejestru:
Dane 1-wire w sterowniku PLC
Gdy już ponumerujemy termometry, można je odczytać ich temperatury po MODBUS do sterownika PLC: