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ę.
| Zasilanie | 5-12 V DC (złącze) 5 V (USB) | 
|---|---|
| Wejścia impulsowe | 4 | 
| Progi poziomu wejściowego | Low = 0 - 1.0 V, High = 1.3 - 25 V | 
| Maksymalna szybkość zliczania | ~2000 Hz (do 4000 Hz bez szacowania mocy) | 
| Interfejsy | Modbus RTU (RS485), Serial (przez USB; 115200 baud) | 
| Wymiary | 74 x 40 x 30 mm (bez uchwytu DIN) | 
| Waga | 44 g | 
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.
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.
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.
Tryb bootloadera można włączyć na dwa sposoby:
bootloader.💡 Pliki z oprogramowaniem dostępne są w sekcji Do pobrania.
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.
Aby nawiązać połączenie z licznikiem impulsów, będziesz potrzebować aplikacji obsługującej komunikację szeregową. Popularne opcje to:
      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
      Podłącz urządzenie
      Podłącz tMPC-04 i uruchom ponownie polecenie. Nowy port COM (np. COM11) będzie reprezentował podłączone urządzenie.
    
      Połącz z tMPC-04
      Użyj następujących parametrów połączenia:
    
Przykładowe polecenie:
pyserial-miniterm COM11 115200
      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).
    
| 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ń. | 
Niektóre polecenia przydają się tylko w szczególnych przypadkach, które przedstawiam poniżej.
address=X w celu zmiany adresu na unikalny.
  debounce_time=X, które spowoduje ignorowanie krótszych impulsów.
  auto_save=X, co spowoduje okresowe zapisywanie ich stanu w pamięci trwałej. Należy pamiętać o zużyciu pamięci flash, ponieważ ma ona ograniczoną liczbę zapisów (szacowaną na 100 tys.). Dlatego podczas korzystania z tej funkcji należy wybrać wartość, która jest akceptowalnym kompromisem. Na przykład wartość 300 (sekund) powinna pozwalać na około 1 rok działania, a 1800 powinna pozwalać na ponad 5,5 roku.address=X, debounce_time=X, power_estimation=X, auto_save=X, counter_cfX=Y, należy użyć polecenia save_config, aby zapisać zmiany w pamięci trwałej. W przeciwnym razie zostaną utracone przy utracie zasilania lub ponownym uruchomieniu urządzenia.
  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%.
  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)  |         |