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
Maksymalna szybkość zliczania~2000 Hz (do 4000 Hz bez szacowania mocy)
InterfejsySerial (przez USB; 115200 baud),
Modbus
Wymiary71 x 42 x 37 mm
Waga40 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 można łatwo używać z LK4 lub LK3. Licznik można zasilać bezpośrednio z wyjść 5V i GND urządzenia LK. Następnie podłączasz je do jednej magistrali Modbus. Następnie skonfiguruj niestandardowy moduł Modbus na LK za pomocą presetu konfiguracji dostępnego w sekcji Do pobrania - możesz go zmodyfikować, aby odczytywać tylko wybrane parametry.

Aktualizacja firmware

Aby zaktualizować firmware, użyj polecenia bootloader lub naciśnij fizyczny przycisk FLASH na urządzeniu przed jego włączeniem (aby uzyskać dostęp do przycisku, trzeba otworzyć obudowę). Nowy firmware można następnie przesłać, kopiując jego plik do pamięci RPI-RP2, która jest dostępna, gdy urządzenie jest w trybie bootloadera. Krótko po tym urządzenie zrestartuje się i wznowi normalne działanie.

Pliki z oprogramowaniem sprzętowym można znaleźć 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
bootloader Uruchamia urządzenie w trybie bootloadera w celu aktualizacji firmware. Po podłączeniu do komputera pojawi się jako urządzenie pamięci masowej o nazwie `RPI-RP2`, na które należy skopiować plik firmware o rozszerzeniu `uf2`. Następnie urządzenie uruchomi się ponownie w trybie normalnym.
restart Restartuje urządzenie.
address? | a? Pobiera adres Modbus (Slave ID).
address=X | a=X Ustawia adres Modbus. Parametry: X — adres do ustawienia, liczba <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? Pobierz wartość funkcji auto-save. Jest to interwał w sekundach, w którym liczniki są zapisywane.
auto_save=X | as=X Ustaw wartość funkcji auto-save. Parametry: X - wartość w sekundach, liczba <0, 65_535>, dla 0 funkcja jest wyłączona.
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.
read_registers | rr Odczytaj wartości rejestrów Modbus.
read_definitions | rd Odczytaj definicje rejestrów Modbus (nazwa, adres, typ).
save_config | sc Zapisz konfigurację w pamięci Flash. Należy je wywołać po zmianie adresu Modbus, współczynników konwersji liczników, czasu odbicia i funkcji automatycznego zapisywania, aby zachować je po ponownym uruchomieniu.
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.
verbose=X Włącz lub wyłącz tryb szczegółowy, który wyświetla więcej komunikatów.
help | ? Wyświetl ten komunikat pomocy 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

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)  |