tMPC-04 - Licznik impulsów z interfejsem Modbus

tMPC-04 to 4-wejściowy licznik impulsów przeznaczony do użytku z dowolnymi licznikami z wyjściami impulsowymi. Komunikuje się za pośrednictwem Modbus RTU, aby udostępniać liczbę zliczonych impulsów, zliczoną energię i oszacowaną moc. Mierzone mogą być także inne miary np. przepływy z liczników wody lub gazu. Konwersja na te jednostki odbywa się na podstawie wprowadzonych przez użytkownika współczynników (np. impulsów na kWh), domyślnie jest to 1000 impulsów na jednostkę.

Specyfikacja techniczna #

Zasilanie5-12 V DC (złącze)
5 V (USB)
Wejścia impulsowe4
Progi poziomu wejściowegoLow = 0 - 1.0 V, High = 1.3 - 25 V
Maksymalna szybkość zliczania~2000 Hz (do 4000 Hz bez szacowania mocy)
InterfejsyModbus RTU (RS485),
Serial (przez USB; 115200 baud)
Wymiary74 x 40 x 30 mm (bez uchwytu DIN)
Waga44 g

Domyślna konfiguracja #

Po wyjęciu z pudełka, tMPC-04 jest wstępnie skonfigurowany z:

Jeśli te ustawienia pasują do twoich liczników energii, urządzenie jest gotowe do natychmiastowego użycia. W przeciwnym razie, w przypadku instalacji z wieloma licznikami impulsowymi lub innymi współczynnikami konwersji impulsów, należy zapoznać się z sekcją Zaawansowana Konfiguracja.

Integracja z LK #

tMPC-04 bezproblemowo integruje się z urządzeniami LK4 oraz LK3.5+. Może być zasilany bezpośrednio z wyjść 5V i GND kontrolera LK. Następnie należy podłączyć go — samodzielnie lub wraz z innymi urządzeniami Modbus — do złącz Modbus A+ i B− w urządzeniu LK, aby nawiązać komunikację.

Po podłączeniu skonfiguruj niestandardowy moduł Modbus w LK, korzystając z gotowego pliku konfiguracyjnego dostępnego w sekcji Do pobrania. Plik ten można łatwo dostosować do własnych potrzeb, np. ograniczając odczyt do wybranych liczników impulsów, wartości energii lub mocy.

Aktualizacja firmware #

Aby zaktualizować oprogramowanie, urządzenie tMPC-04 należy uruchomić w trybie bootloadera. W tym trybie urządzenie pojawia się jako nośnik pamięci masowej o nazwie RPI-RP2 po podłączeniu do komputera. Wystarczy skopiować nowy plik z firmware do tego nośnika. Po zakończeniu kopiowania urządzenie automatycznie się zrestartuje i wznowi normalną pracę z nowym oprogramowaniem.

Uruchamianie trybu bootloadera #

Tryb bootloadera można włączyć na dwa sposoby:

💡 Pliki z oprogramowaniem dostępne są w sekcji Do pobrania.

Zaawansowana konfiguracja #

Aby zmienić ustawienia, musisz podłączyć tMPC-04 do komputera przez USB. Urządzenie może być zasilane przez USB, więc nie są potrzebne żadne dodatkowe połączenia zasilania.

Wymagane oprogramowanie #

Aby nawiązać połączenie z licznikiem impulsów, będziesz potrzebować aplikacji obsługującej komunikację szeregową. Popularne opcje to:

Przykładowy proces konfiguracji #

  1. Wyświetlenie dostępnych portów:
    Uruchom pyserial-ports, aby wyświetlić dostępne porty COM przed podłączeniem urządzenia. Wynik może wyglądać tak:

    COM1
    COM3
    COM15
    COM16
    COM17
    

  2. Podłącz urządzenie
    Podłącz tMPC-04 i uruchom ponownie polecenie. Nowy port COM (np. COM11) będzie reprezentował podłączone urządzenie.

  3. Połącz z tMPC-04
    Użyj następujących parametrów połączenia:

    • Baud rate: 115200
    • Byte size: 8 bits
    • Parity: None
    • Stop bits: 1

    Przykładowe polecenie:

    pyserial-miniterm COM11 115200

  4. Wysyłanie poleceń
    Po połączeniu możesz wydawać polecenia do urządzenia. Każde polecenie musi być zakończone klawiszem Enter. Przydatnym poleceniem jest ? lub help, które wyświetla listę wszystkich dostępnych poleceń (opisanych poniżej).

Lista poleceń #

Polecenie Opis
address? | a? Odczytuje aktualny adres Modbus (Slave ID).
address=X | a=X Ustawia adres Modbus. Parametry: X – adres do ustawienia, liczba z zakresu <1, 255>.
debounce_time? | d? Pobiera czas debounce dla liczników impulsów (w ms).
debounce_time=X | d=X Ustawia czas debounce dla liczników impulsów. Definiuje minimalną długość impulsu, krótsze będą ignorowane i nie będą liczone. Parametry: X — wartość w ms, liczba <0, 65_535>, dla 0 funkcja jest wyłączona.
power_estimation? | pe? Pobiera flagę szacowania mocy dla liczników impulsów (0 - WYŁ., 1 - WŁ.).
power_estimation=X | pe=X Ustaw flagę szacowania mocy dla liczników impulsów. Określa, czy szacowanie mocy jest włączone. Można je wyłączyć, jeśli nie jest potrzebne lub w celu poprawy zakresu pomiaru częstotliwości impulsów z ~2 kHz na ~4 kHz (ograniczenie wynikające z czasu trwania impulsu i kształtu pozostaje). Parametry: X - wartość 0 - WYŁ. / 1 ​​- WŁ., liczba <0, 1>.
auto_save? | as? Odczytuje wartość funkcji autozapisu. Jest to interwał w sekundach, w którym liczniki są zapisywane do pamięci.
auto_save=X | as=X Ustawia wartość funkcji autozapisu. Parametry: X – czas w sekundach, liczba z zakresu <0, 65 535>; wartość 0 wyłącza funkcję.
counter_cfX? | ccfX? Pobiera współczynnik konwersji dla licznika impulsów. Parametry: X — numer licznika <1, 4>.
counter_cfX=Y | ccfX=Y Ustaw współczynnik konwersji dla licznika impulsów: liczbę impulsów na jednostkę, np. imp/kWh. Parametry: X - numer licznika <1, 4>; Y - liczba impulsów, liczba <1, 65_535>.
counterX? | cX? Pobierz wartość licznika impulsów, tj. liczbę impulsów, które zliczył. Parametry: X - numer licznika <1, 4>.
counterX=Y | cX=Y Ustaw wartość licznika impulsów. Parametry: X - numer licznika <1, ​​4>; Y - liczba impulsów, liczba <0, 1_073_741_823>.
read_status | rs Odczytaj zapisany status liczników.
save_config | sc Zapisuje konfigurację do pamięci Flash. Należy użyć po zmianie adresu Modbus, współczynników przeliczeniowych liczników, czasu tłumienia (debounce) oraz ustawień autozapisu — aby zachować je po restarcie.
save_status | ss Zapisz stan liczników impulsów w pamięci Flash. Należy je wywołać po zmianie wartości liczników impulsów (liczby impulsów), aby zachować je po ponownym uruchomieniu.
read_registers | rr Odczytuje wartości rejestrów Modbus.
read_definitions | rd Odczytuje definicje rejestrów Modbus: nazwa, adres, typ.
bootloader Uruchamia urządzenie w trybie bootloadera w celu aktualizacji oprogramowania. Po podłączeniu do komputera urządzenie pojawi się jako dysk o nazwie RPI-RP2, na który należy skopiować plik firmware z rozszerzeniem uf2. Następnie urządzenie automatycznie zrestartuje się i uruchomi w trybie normalnej pracy.
restart Restartuje urządzenie.
verbose=X Włącza lub wyłącza tryb szczegółowy (verbose), który wyświetla więcej komunikatów.
help | ? Wyświetla pomoc z listą dostępnych poleceń.

Typowe przypadki użycia #

Niektóre polecenia przydają się tylko w szczególnych przypadkach, które przedstawiam poniżej.

Dokładność pomiarów #

Dokładność pomiarów impulsów zależy od częstotliwości, czasu trwania impulsu i czasów narastania/opadania. W trybie normalnym z szacowaniem mocy, impulsy powinny trwać nie krócej niż 0,34 ms. W trybie wysokiej prędkości (bez szacowania mocy) czas trwania impulsu może wynosić zaledwie 0,19 ms.

W większości aplikacji błędy pomiarów nie powinny przekraczać 0,1%.

Rejestry Modbus #

Poniżej przedstawiono listę rejestrów Modbus dostępnych w urządzeniu.
Lista odpowiada wynikowi komendy read_definitions i zawiera nazwy, adresy, typy i dzielniki.

| Name                           | Addr | Type   | Func         | Divisor |
| ------------------------------ | ---- | ------ | ------------ | ------- |
| uptime                         | 3000 | uint32 | 0x04 (IREG)  |         |
| counter1                       | 3002 | uint32 | 0x04 (IREG)  |         |
| counter2                       | 3004 | uint32 | 0x04 (IREG)  |         |
| counter3                       | 3006 | uint32 | 0x04 (IREG)  |         |
| counter4                       | 3008 | uint32 | 0x04 (IREG)  |         |
| counter1_energy                | 3010 | uint32 | 0x04 (IREG)  |    1000 |
| counter2_energy                | 3012 | uint32 | 0x04 (IREG)  |    1000 |
| counter3_energy                | 3014 | uint32 | 0x04 (IREG)  |    1000 |
| counter4_energy                | 3016 | uint32 | 0x04 (IREG)  |    1000 |
| counter1_power                 | 3018 | uint32 | 0x04 (IREG)  |    1000 |
| counter2_power                 | 3020 | uint32 | 0x04 (IREG)  |    1000 |
| counter3_power                 | 3022 | uint32 | 0x04 (IREG)  |    1000 |
| counter4_power                 | 3024 | uint32 | 0x04 (IREG)  |    1000 |
| version_major                  | 3100 | uint16 | 0x04 (IREG)  |         |
| version_minor                  | 3101 | uint16 | 0x04 (IREG)  |         |
| version_patch                  | 3102 | uint16 | 0x04 (IREG)  |         |
| address                        | 4000 | uint16 | 0x03 (HREG)  |         |
| debounce_time                  | 4001 | uint16 | 0x03 (HREG)  |         |
| counter1_conversion_factor     | 4002 | uint16 | 0x03 (HREG)  |         |
| counter2_conversion_factor     | 4003 | uint16 | 0x03 (HREG)  |         |
| counter3_conversion_factor     | 4004 | uint16 | 0x03 (HREG)  |         |
| counter4_conversion_factor     | 4005 | uint16 | 0x03 (HREG)  |         |
| auto_save                      | 4006 | uint16 | 0x03 (HREG)  |         |
| power_estimation               | 4007 | uint16 | 0x03 (HREG)  |         |