Używamy plików cookies (tzw. ciasteczka) by spersonalizować treść i ogłoszenia oraz by analizować ruch na stronie.  W sposób automatyczny dzielimy się informacjami o Twoim użyciu tego portalu z dostawcami ogłoszeń, którzy mogą połączyć te informacje z informacjami, które im udzieliłaś/łeś lub, które sami zebrali. Korzystanie z witryny bez zmiany ustawień dotyczących cookies oznacza, że będą one zamieszczane w Państwa urządzeniu końcowym.  Możecie Państwo dokonać w każdym czasie zmiany ustawień dotyczących cookies zmieniając opcje przeglądarki.

Most do sieci 1-wire firmy ESERA Automation

Są osoby, które nie mają ochoty na pracę z Raspberry Pi i amatorskimi podzespołami.  Mimo intensywnego przekonywania, mój brat odmówił współpracy z RPi i linuxem.  Chciał mieć coś, co po prostu będzie działać...

Aby połączyć jego rozbudowaną w międzyczasie sieć 1-wire ze sterownikiem WAGO 750, zamówiłem moduł "1-Wire Buskoppler SPS" firmy esera automation.  Jest to moduł konwersji RS232 z 1-Wire, który podłączyć można bezpośrednio do portu serwisowego WAGO przez przygotowany przez sprzedawcę kabel.  Unika się w ten sposób konieczności dokupienia osobnego modułu RS232 (lub RS485 do innych rozwiązań). Całość kosztowała nas niecałe 400 PLN z dostawą do Polski. Sam moduł wyceniony jest na 70 EUR. Oto, jak wygląda on po zainstalowaniu:

Esera

Instalacja i uruchamianie przebiegło zaskakująco sprawnie.  Moduł zasilany jest 24 VDC i posiada 2 kanały 1-wire.  Firmowy kabel należy wetknąć w port serwisowy i... to tyle!

Na stronie esera automation znaleźć można kompletny przykład programu do obsługi modułu 1-wire oraz kopie biblioteki OWOS.  Oto, co trzeba zrobić:

1. Dodać bibliotekę owos_9_1.lib oraz biblioteki pomocnicze, z których najbardziej kłopotliwa może być oscat_basic_333.lib (o tym, jak dodać ją do programu piszę w odrębnym artykule).

Esera2

2. Skonfigurować globalną zmienną do obsługi komunikacji.

Przykład z dostarczonej przez producenta paczki przewiduje wykorzystanie najróżniejszych urządzeń sieci 1-wire.  W moim przypadku były to wyłącznie termometry DS1820.  Program wyglądał więc następująco:

Esera3

W zmiennej DS1820_Anzahl wpisać należy liczbę obsługiwanych urządzeń... Może być nieco większa od tego, co funkcjonuje w naszej sieci.  Jeśli, natomiast, wpiszemy zbyt małą liczbę, moduł nie będzie odnajdywał nowych, dodatkowych czujników.

Definicja tablicy DS1820 podana jest jako przykład z 2 pustymi polami.  Zostawiamy je tak na tym etapie i będziemy wypełniać w dalszych krokach.

3. Dodać nowy program (np. o nazwie oneWire) i uzupełnić go, jak poniżej:

Esera4

4. W Task Manager dodać 1 zadanie wykonujące program oneWire co 80ms;

Esera5

Tyle powinno wystarczyć, by moduł został uruchomiony... to jednak za mało, by sprawnie go obsługiwać.  Poszczególne czujniki nie wyskoczą w jakiś magiczny sposób w tabeli wypełnionej odczytami.  Trzeba wykonać kilka konfiguracyjnych kroków.  Kompilujemy i uruchamiamy program, a następnie:

1. Zmieniamy wartość zmiennej globalnej owp.ID_suchen.was_suchen.DS1820 na TRUE i wciskamy CTRL+F7 by zmiana została uwzględniona:

Esera6

2. Zmieniamy wartość zmiennej globalnej owp.ID_suchen.neue_ID_suchen na TRUE. Po wciśnięciu CTRL+F7 uruchomi się cykl poszukiwania nowych czujników DS1820 w podłączonej sieci 1-wire.  

3. Jeśli nowe urządzenia zostaną odnalezione, informacje o tym znajdziemy:

- w globalnej zmiennej owp.ID_suchen.anzahl_gefunden.DS1820, gdzie wykazana będzie ilość znalezionych czujników

- w globalnej tablicy DS1820, gdzie w poszczególnych polach dodane będą dane nowych czujników.

4. Po znalezieniu czujnika należy zmodyfikować program w sekcji definicji zmiennych globalnych, uzupełniając dane tablicy DS1820. Poniżej przykład z uzupełnionym 1 nowym czujnikiem.

Esera7

Dzięki temu sterownik po ponownym uruchomieniu od razu będzie miał dostęp do danych zdefiniowanych czujników, bez konieczności uruchamiania cyklu wyszukiwania.

Aby usprawnić sobie cały proces wyszukiwania i dodawania nowych czujników, zbudować można prostą wizualizację, która pozwoli tap'ować zmienne owp.ID_suchen.was_suchen.DS1820 i owp.ID_suchen.neue_ID_suchen, i która wyświetli wyniki poszukiwań.

Esera9

Ostatecznie - temperatury odczytane z poszczególnych czujników dostępne są w globalnej tablicy DS1820[x].Temperatur.

To tyle :) Gdyby pominąć fakt, że zmienne i bloki funkcyjne mają niemieckie nazwy, całość przebiegła zaskakująco sprawnie.  Na ten moment, do 1 kanału podpiętych jest 10 czujników i całość działa sprawnie.  Wydaje się więc, że moduł 1-Wire Buskoppler SPS wystarczy do obsługi domu bez konieczności instalowania hub'ów 1-wire.