PLC-home.pl

...inteligentny dom zarządzany przez sterownik PLC

Interfejs zarządzania termometrami konwertera 1-wire na MODBUS.

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:

Nowy port COM do komunikacji z konwerterem.

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:

Odczyt temperatury 1-wire

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.

Skanowanie magistrali 1-wire

Opcja numer TRZY - listuje wszystkie urządzenia i ich parametry. Kolejno kolumny przedstawiają:

  1. Numer porządowy - w jakim rejestrze MODBUS znajdziemy odczyt temperatury z tego termometru
  2. Ostatnie bajty numeru seryjnego - na wszelki wypadek warto zrobic screenshota gdyby się numeracja pochrzaniła :)
  3. Temperatura na każdym z elementów
  4. 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:

Przypisanie 1-wire do rejestrów MODBUS

Dane 1-wire w sterowniku PLC

Gdy już ponumerujemy termometry, można je odczytać ich temperatury po MODBUS do sterownika PLC:

Dane 1-wire w sterowniku PLC