Raspberry: CAN-Bus-UVR1611, Ein-und Ausgänge von UVR1611 mit RasPi3 und PICAN2-Modul auslesen

    Du hast Probleme beim Login? Schreibe uns im Forum "Probleme mit der Registrierung".
      • 1

      • # 150860

      Raspberry: CAN-Bus-UVR1611, Ein-und Ausgänge von UVR1611 mit RasPi3 und PICAN2-Modul auslesen

      Hallo,

      Auf der Suche nach Informationen zum UVR-CAN-Bus bin ich im Internet auf einige sehr interessante
      GitHub-Repositories von Matthias Hochgatterer gestossen die sich mit can, canopen und uvr1611 beschäftigten.

      Das ganze Projekt ist sehr umfangreich und enthält viel Dokumentation zum CAN-Bus aber auch zur UVR1611.
      Das Interesse war geweckt und nachdem ich von Go nichts verstehe, wollte ich auf jedenfall sehen was das Programm
      uvrdump von meiner UVR1611 über den CAN-Bus auslesen kann. Aber wie so oft bei Linux-Systemen gibt es vorher immer was zu tun.


      Das ganze ist in der Programmier-Sprache Go realisiert worden und sollte auf dem Raspberry Pi mit PICAN2 Modul laufen.

      Das PiCAN 2 Aufsteckmodul für den Raspberry Pi gibts für ca. 45 EURO im Internet zu kaufen.
      Das PiCAN 2 Modul besitzt zwei Schaltkreise. Zum einen den CAN-Bus-Transceiver MCP2551,
      der die 12V CAN-Bus-Signale in TTL-Signale umwandelt und zum zweiten einen
      MCP2515 CAN Controller der über SPI vom Raspberry Pi und dem SocketCAN Treiber angesprochen wird.

      Hier mein Raspberry Pi 3 mit aufgestecktem PiCAN 2 Modul


      Der SocketCAN Treiber, erscheint für die Anwendungsprogramme als can0.
      Um das PICAN2 Modul auf dem Raspberry Pi 3 zum laufen zu bekommen, müssen zuerst in der Datei
      mit sudo nano /boot/config.txt drei Zeilen hinzugefügt werden und dann den Raspberry Pi 3 nochmal neu booten.

      dtparam=spi=on
      dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
      dtoverlay=spi-bcm2835


      Zum starten der CAN-Schnittstelle can0 den nachfolgenden Befehl ausführen.

      sudo /sbin/ip link set can0 up type can bitrate 50000

      mit dem Befehl ifconfig kann überprüft werden ob die CAN-Schnittstelle can0 korrekt gestartet worden ist.

      pi@raspberrypi:~ $ ifconfig
      can0: flags=193<UP,RUNNING,NOARP> mtu 16
      unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)

      Nachdem der UVR-CAN-Bus mit dem PICAN2 über CAN-H und CAN-L verbunden wurde,
      habe ich mit dem Testprogramm candump, das bei PICAN2 dabei ist, probiert meinen UVR-CAN-Bus zu lesen.

      i@raspberrypi:~/pican2-test/can-test_pi2 $ ./candump can0
      can0 738 [1] 05
      can0 738 [8] 05 8A 01 00 00 00 00 00
      can0 701 [1] 05
      can0 73E [1] 05
      can0 4BE [8] 01 F4 4F 01 01 00 00 00
      can0 4BE [8] 01 F4 4F 01 01 00 00 00
      can0 4BE [8] 81 F1 4F 01 01 00 00 00
      can0 481 [8] 01 F0 4F 01 04 08 03 80
      can0 481 [8] 01 F0 4F 02 3F 39 41 01

      can0 481 [8] 01 F0 4F 03 DC 03 41 01
      ...


      das hat schonmal gut geklappt.. die Identifier und Daten kamen mir bekannt vor, hatte ich schon mit dem ESP32 auch so ausgelesen.

      Nachdem der UVR1611-CAN-Bus gelesen werden kann, gehts weiter mit dem Go Projekt, zum eigentlichen Programm uvrdump.

      Die Programmier-Sprache Go versucht, ein besseres C und eine gute Alternative zu C++ zu sein.
      Der geringe Hauptspeicherbedarf von Go-Programmen und die eingebaute Parallelisierung
      machen die Sprache für bestimmte Einsatzgebiete gut geeignet.
      Die Eignung für massiv parallele Systeme mit vielen Prozessoren und Prozessorkernen war eines der zentralen Entwurfsziele von Go.


      Vorher muss auf dem Raspberry Pi mit den nachfolgenden drei Befehlen das Go Paket installiert werden,
      damit das kompilieren vom uvr-Projekt mit den can- und canopen Bibliotheken klappt.


      wget storage.googleapis.com/golang/go1.8.3.linux-armv6l.tar.gz
      sudo tar -C /usr/local -xzf go1.8.3.linux-armv6l.tar.gz
      export PATH=$PATH:/usr/local/go/bin

      Dann die ZIP-Dateien von den drei GitHub-Repositories von Matthias Hochgatterer aus dem Internet auf den Raspberry Pi runterladen.

      GitHub - brutella/can: Connect to a CAN bus in Go
      github.com/brutella/can

      GitHub - brutella/canopen: Communicate with other CANopen nodes ...
      github.com/brutella/canopen

      GitHub - brutella/uvr: Communicate with an UVR1611 over the CAN bus
      github.com/brutella/uvr

      Dann auf dem Raspberry Pi ins Verzeichnis /usr/local/go/src wechseln
      und die zwei folgenden Verzeichnisse github.com/brutella hier anlegen.

      sodass es nachher so aussieht /usr/local/go/src/github.com/brutella

      Dann die Verzeichnisse (can), (canopen) und (uvr) von den ausgepackten ZIP-Dateien jeweils komplett
      in /usr/local/go/src/github.com/brutella in eigene Verzeichnisse kopieren.

      so sollte es nachher aussehen:

      /usr/local/go/src/github.com/brutella/can
      /usr/local/go/src/github.com/brutella/canopen
      /usr/local/go/src/github.com/brutella/uvr

      dann ins Verzeichnis /usr/local/go/src/github.com/brutella/uvr wechseln und einfach make eingeben.

      Damit wird mit Hilfe der Datei Makefile in diesem Verzeichnis ein Go Kompilerlauf gestartet,
      der als Ergebnis eine ausführbare Datei uvrdump in diesem Verzeichnis erzeugt.

      pi@raspberrypi:~/uvr $ make
      GOOS=linux GOARCH=arm GOARM=7 go build cmd/uvrdump.go

      Nachdem der Kompilerlauf erfolgreich war, hab ich mit dem Aufruf vom Programm uvrdump

      über den UVR-CAN-Bus die Eingänge und Ausgänge von meiner UVR1611 auslesen können.

      Shell-Script

      1. pi@raspberrypi:~/uvr $ ./uvrdump
      2. 2018/10/20 15:21:05 uvrdump.go:90: +---------+-----------------+--------+------
      3. 2018/10/20 15:21:05 uvrdump.go:91: | Eingang | Bezeichnung | Status | Wert
      4. 2018/10/20 15:21:05 uvrdump.go:92: +---------+-----------------+--------+------
      5. 2018/10/20 15:21:06 uvrdump.go:95: | 1 | Kollektor | OK | 49.3
      6. 2018/10/20 15:21:06 uvrdump.go:95: | 2 | SP.oben | OK | 73.4
      7. 2018/10/20 15:21:06 uvrdump.go:95: | 3 | Puffer.u | OK | 45.9
      8. 2018/10/20 15:21:06 uvrdump.go:95: | 4 | Puffer.o | OK | 31.3
      9. 2018/10/20 15:21:06 uvrdump.go:95: | 5 | Kollektor2 | OK | 41.6
      10. 2018/10/20 15:21:06 uvrdump.go:95: | 6 | SP.unten | OK | 44.5
      11. 2018/10/20 15:21:06 uvrdump.go:95: | 7 | SP.mitte | OK | 62.9
      12. 2018/10/20 15:21:06 uvrdump.go:95: | 8 | Puffer.m2 | OK | 59.5
      13. 2018/10/20 15:21:07 uvrdump.go:95: | 9 | Puffer.m | OK | 49.2
      14. 2018/10/20 15:21:07 uvrdump.go:95: | 10 | Heizkr.VL | OK | 33.7
      15. 2018/10/20 15:21:07 uvrdump.go:95: | 11 | Heizkr.RL | OK | 25.5
      16. 2018/10/20 15:21:07 uvrdump.go:95: | 12 | Temp.Aussen | OK | 18.1
      17. 2018/10/20 15:21:07 uvrdump.go:95: | 13 | Temp.Raum | OK | 23.6
      18. 2018/10/20 15:21:07 uvrdump.go:95: | 14 | Solar-VL | OK | 60.4
      19. 2018/10/20 15:21:07 uvrdump.go:95: | 15 | Solar-RL | OK | 45.7
      20. 2018/10/20 15:21:07 uvrdump.go:95: | 16 | Durchfl.Sol. | OK | 122.0
      21. 2018/10/20 15:21:07 uvrdump.go:97: +---------+-----------------+--------+------
      22. 2018/10/20 15:21:07 uvrdump.go:60: +---------+-----------------+--------+------+
      23. 2018/10/20 15:21:07 uvrdump.go:61: | Ausgang | Bezeichnung | Mode | Wert |
      24. 2018/10/20 15:21:07 uvrdump.go:62: +---------+-----------------+--------+------+
      25. 2018/10/20 15:21:08 uvrdump.go:65: | 1 | Pumpe-Solar | AUTO | EIN |
      26. 2018/10/20 15:21:08 uvrdump.go:65: | 2 | Ladep.SP. | AUTO | AUS |
      27. 2018/10/20 15:21:08 uvrdump.go:65: | 3 | Anf.Kessel | AUTO | AUS |
      28. 2018/10/20 15:21:08 uvrdump.go:65: | 4 | Ventil | AUTO | AUS |
      29. 2018/10/20 15:21:08 uvrdump.go:65: | 5 | ----- | | AUS |
      30. 2018/10/20 15:21:08 uvrdump.go:65: | 6 | ----- | | AUS |
      31. 2018/10/20 15:21:08 uvrdump.go:65: | 7 | ----- | | AUS |
      32. 2018/10/20 15:21:09 uvrdump.go:65: | 8 | Misch.Hzkr1 | AUTO | AUS |
      33. 2018/10/20 15:21:09 uvrdump.go:65: | 9 | ----- | AUTO | AUS |
      34. 2018/10/20 15:21:09 uvrdump.go:65: | 10 | ----- | | AUS |
      35. 2018/10/20 15:21:09 uvrdump.go:65: | 11 | Vent.Solar | AUTO | AUS |
      36. 2018/10/20 15:21:09 uvrdump.go:65: | 12 | Pumpe-Hzkr | AUTO | EIN |
      37. 2018/10/20 15:21:09 uvrdump.go:65: | 13 | ----- | | AUS |
      38. 2018/10/20 15:21:09 uvrdump.go:67: +---------+-----------------+--------+------+
      Alles anzeigen

      Gruß
      Jürgen
      Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44 und BL-NET;
      2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; PV 3,2kW; Wasserenthärtung

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von SolarEngel ()

      • 2

      • # 150874
      … und jetzt bitte noch das forumübliche Textlayout.
      Das ist ja senioren-seniorenmäßig - ich fühle mich diskriminiert ;)
      HVS25LC / 3100l Puffer / 300l WW / 10m²SolarFK
      UVR1611 / Fubo ca. 180m² / Wahei 16m²
      Eigenbau Keramikventuridüse mit SekLuft-Spalt
      als Kesselsteuerung anstatt AK3000:
      UVR1611E NM/DE + CMI + MTX-Lambdamodul + LSU4.2

    Webutation