W pracy trafił się temat gadania po protokole Modbus. Przy użyciu standardowego Modbusa RTU. W dość znacznej prędkości 9600 🙂 A co najlepsze, to wyjście z urządzenia jest RS232, do tego przejście na RS485 i w takiej postaci mam się podłączyć 🙂

Poczytałem, poszukałem i co nieco się dowiedziałem od strony praktycznej.

Na początek mamy zdefiniowanych kilka bytów, określających rodzaje danych.
Rodzaje rejestrów zdefiniowanych przez protokół Modbus:

  • Coil – jest to 1 bitowy rejestr, wykorzystywany do kontroli wyjścia. Może być do odczytu i/lub do zapisu
  • Discrete Input – jest to 1 bitowy rejestr, używany jako wejście. Może być tylko do odczytu
  • Input Register – 16 bitowy rejestry, używany jako wejście. Może być tylko do odczytu
  • Holding registers – najbardziej uniwersalne 16 bitowe rejestry. Mogą być do odczytu i do zapisu. Może być używany np. do wejść, wyjść, danych konfiguracyjnych lub dowolnych danych wymagających przechowania

Jak widać, wielkiej filozofii nie ma, o ile mamy dokumentację techniczną producenta co gdzie pod jakim adresem siedzi.

Ponieważ nie mogę nic mówić o projekcie z pracy, postanowiłem podłączyć się do centrali wentylacyjnej, która to gada sobie po RS485 i Modbus z dowolnym urządzeniem master.
Ogólno dostępna dokumentacja do central wentylacyjnych firmy SystemAir.

Mamy tutaj rozpisane dokładnie jakie są rejestry, pod jakimi adresami, czy można je zapisywać czy odczytywać i jakiego są rodzaju.
Drugą istotną informacją jest adres i prędkość transmisji. Każde urządzenie slave w Modbus musi mieć swój unikalny adres. I tak na przykładzie centrali, mamy domyślnie adres 1. Pod taki adres się dobijamy, żeby np. odczytać informację o prędkości wentylacji, która to jest dostępna pod adresem 101 (czyli 101 – 1, zgodnie z dokumentacją).

W dokumentacji widzimy też, że rejestr ten może być zapisany nową wartością, i tak możemy odczytać i zmienić szybkość działania wentylatorów w centrali.

Na tej podstawie powstał prosty sterownik, oparty na starej płytce, pół-uniwersalnej na ESP8266.

Płytka jest identyczna z postem: Sterowanie pompą obiegową od cyrkulacji. Wlutowany został tylko transceiver MAX3485 do komunikacji po RS485 z centralą.

W wyniku pół dnia siedzenia nad kodem, mamy prostą aplikację do monitorowania danych i konfiguracji centrali przez stronę www.

W planach połączenie centrali z czujnikami środowiskowymi i sterowanie bardziej automatyczne siłą wentylacji z automatu.