Wattmeter Modbus

Denne sider viser hvordan man tilslutter et wattmeter til en Raspberry Pi. for at kunne forstå denne gennemgang kræves der grundlæggende viden omkring brug af Linux CLI, download af libraries, det vil også være en fordel at have lidt kendskab til Python programmering. Her er et link til fabrikantens dokumentation: PZEM-016 datablad i vejledningen er der taget udklip fra dokumentationen, for at give en forståelse for hvordan forbindelsen til sensoren virker. wattmeteret en forbindes til Raspberry Pi via USB, data overføres serielt via Modbus RTU som er en meget anvendt protokol.

obs. monter wattmeteret kapslet ind for at undgå elektrisk stød!

Her ses et diagram over hele opsætningen, der skal bruges:

  • PZEM-016 wattmeter
  • USB til RS485 omformer
  • 2 leder netværkskabel

  • Der skal bruges tre libraries for at kunne måle effekt.
  • pymodbus skal importeres for at kunne transmittere data mellem PZEM-016 wattmeteret og Raspberry Pi.
  • math skal importeres for at man kan omregne signalerne fra wattmeteret, til den enhed man ønsker at få signalet omregnet til.
  • time skal bruges for at kunne få en pause mellem hver måling, så hukommelsen ikke bliver opbrugt med det samme

 

Der oprettes en variabel som hedder client denne variabel bruges til at oprette forbindelse til wattmeteret. Indstillingen til Modbus wattmeteret er :

  • method=’rtu’  (fordi wattmeteret er forbundet via RS485 Modbus RTU)
  • port=’/dev/ttyUSB0′ (er den port usb stikket er sat i)
  • timeout=1 (det antal sekunder wattmeteret har til at reagere 1 sekund er en typisk standard)
  • stopbits=1 (taget fra fabrikantens dokumentation)
  • bytesize=8 (taget fra fabrikantens dokumentation)
  • parity=’N’ (taget fra fabrikantens dokumentation)
  • baudrate=9600 (taget fra fabrikantens dokumentation)

 

For at få et uendeligt antal målinger startes der et while loop. Der oprettes en variabel som hedder request som bruges til at læse registere med måledata. parametrene som indtastes i client.read_input_registers er:

  • 0x0000 er adressen til regesterne
  • 9 (antallet af register der læses, der er i alt 10 registere som går fra Volt til alarm status)
  • unit=1 (Modbus funktionskode til at kunne læse)

Der oprettes er variabel som hedder watt som bruges til at tage wattmålingen ud af listen, da det er den eneste måling der ønskes. Dataen fra listen skal divideres med 10 for at få det ud i enheden watt.

watt variablen er en int som omdannes til str, for at kunne vise et W sammen med målingen.

time.sleep(1) gør at der kommer en måling hvert sekund

 

Her ses hele programmet og nederst i tabellen ses programmet når det kører.
  • Installer pip (kun den ikke allerede er installeret)
  • installer pymodbus library
  • hent og indtast wattmeterkoden koden i nano på din Raspberry Pi
$ sudo apt-get install python-pip
$ pip install pymodbus
wattmeterkode