EPever Tracer 3210 AN RS485 USB Kabel Treiber

Die benötigte Hardware zum Nachbau. Bitte hier nur Hardware posten, die man auch selber ausprobiert hat. Nichts posten, nur weil es neu ist.

Moderator: Ulrich

Forumsregeln
Bitte nur Hardware posten, die man selber auch ausprobiert bzw. in Verwendung hat.
Antworten
JgdKdoFhr
Beiträge: 9
Registriert: Mi 22. Jul 2020, 10:28
Hat sich bedankt: 1 Mal

EPever Tracer 3210 AN RS485 USB Kabel Treiber

Beitrag von JgdKdoFhr »

Hallo,

ich bin erst vor Kurzem auf dieses Forum gestoßen, hatte mich allerdings vorher schon mit den Grundsätzen beschäftigt.

Ich habe einen EPever (oder Victron?, denn das sagt er selbst über sich) Tracer 3210AN. An Diesen habe ich per original RS485-US-Kabel einen Raspberry 4b angeschlossen.

Mit der hier angebotenen Software kann ich allerdings keine Verbindung herstellen.

Folgende relevanten log-Einträge gibt es dazu:

Code: Alles auswählen

root@solaranzeige:~# hwinfo --usb
18: USB 00.1: 0000 Unclassified device
  [Created at usb.122]
  Unique ID: WE6o.PaxYSF85F44
  Parent ID: ADDn.mUqILwxEtWB
  SysFS ID: /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4:1.1
  SysFS BusID: 1-1.4:1.1
  Hardware Class: unknown
  Model: "Exar XR21B1411"
  Hotplug: USB
  Vendor: usb 0x04e2 "Exar Corp."
  Device: usb 0x1411 "XR21B1411"
  Revision: "0.01"
  Serial ID: "N9968986551"
  Driver: "cdc_acm"
  Driver Modules: "cdc_acm"
  Speed: 12 Mbps
  Module Alias: "usb:v04E2p1411d0001dcEFdsc02dp01ic0Aisc00ip00in01"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #21 (Hub)
solaranzeige.log

Code: Alles auswählen

23.07. 08:30:51    -Daten:
array (
  28 => 'USB 00.1: 0000 Unclassified device',
  '' => '[Created at usb.122]',
  'Unique ID' => 'WE6o.PaxYSF85F44',
  'Parent ID' => 'ADDn.mUqILwxEtWB',
  'SysFS ID' => '/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4:1.1',
  'SysFS BusID' => '1-1.4:1.1',
  'Hardware Class' => 'unknown',
  'Model' => '"Exar XR21B1411"',
  'Hotplug' => 'USB',
  'Vendor' => 'usb 0x04e2 "Exar Corp."',
  'Device' => 'usb 0x1411 "XR21B1411"',
  'Revision' => '"0.01"',
  'Serial ID' => '"N9968986551"',
  'Driver' => '"cdc_acm"',
  'Driver Modules' => '"cdc_acm"',
  'Speed' => '12 Mbps',
  'Module Alias' => '"usb:v04E2p1411d0001dcEFdsc02dp01ic0Aisc00ip00in01"',
  'Config Status' => 'cfg=new, avail=yes, need=no, active=unknown',
  'Attached to' => '#31 (Hub)',
)
Auszug

Code: Alles auswählen

root@solaranzeige:~# ls -la /dev/ | grep tty
crw-rw-rw-   1 root tty       5,   2 Jul 23 09:18 ptmx
lrwxrwxrwx   1 root root           7 Jul 23 08:29 serial1 -> ttyAMA0
crw-rw----   1 root dialout 166,   0 Jul 23 09:18 ttyACM0
crw-rw----   1 root dialout 204,  64 Jul 23 08:29 ttyAMA0
Die user.config.php habe ich wiefolgt angepasst

Code: Alles auswählen

$USBRegler         = "/dev/ttyACM0";
In meinen vorangegangenen Recherchen hatten verschiedene andere Leute das Problem, dass die im Raspberry OS mitgelieferten Treiber wohl nicht kompatibel mit dem FTDI Gerät sind:
siehe dazu https://www.raspberrypi.org/forums/view ... p?t=171225

Ist diese Problematik bekannt und hat hier schon jemand versucht den Herstellertreiber nachzuladen und damit Erfolg gehabt?

Vielen Dank für die Hilfe.

JgdKdoFhr
Beiträge: 9
Registriert: Mi 22. Jul 2020, 10:28
Hat sich bedankt: 1 Mal

Re: EPever Tracer 3210 AN RS485 USB Kabel Treiber

Beitrag von JgdKdoFhr »

Nachtrag:

Ich habe jetzt den Standard Treiber durch den in diesem Repo https://github.com/kasbert/epsolar-trac ... _common-1a ausgetauscht:
zuerst den Ordner mit dem Treiber auf den Raspberry kopieren

Code: Alles auswählen

apt-get install raspberrypi-kernel-headers
cd xr_usb_serial_common-1a/
make
echo blacklist cdc-acm > /etc/modprobe.d/blacklist-cdc-acm.conf #sorgt dafür, dass der Standardtreiber beim Neustart nicht mehr geladen wird
update-initramfs -u
ich hab dann zur Sicherheit nachmal neugestartet

Code: Alles auswählen

insmod xr_usb_serial_common-1a/xr_usb_serial_common.ko
ls -la /dev/
in der user.config.php folgende Zeile angepasst

Code: Alles auswählen

$USBRegler         = "/dev/ttyXRUSB0";
Logauszug

Code: Alles auswählen

23.07. 14:03:01 |------------   Start  tracer_regler.php  ------------------------ 
23.07. 14:03:01 XX -USB Port kann nicht geöffnet werden. [1]
23.07. 14:03:01 XX -Exit.... 
23.07. 14:03:01 |------------   Stop   tracer_regler.php    ---------------------- 
23.07. 14:04:01 |------------   Start  tracer_regler.php  ------------------------ 
23.07. 14:04:57 !! -Keine gültigen Daten empfangen.
23.07. 14:04:57 |------------   Stop   tracer_regler.php    ---------------------- 
23.07. 14:05:01 |------------   Start  tracer_regler.php  ------------------------ 
23.07. 14:05:57 !! -Keine gültigen Daten empfangen.
23.07. 14:05:57 |------------   Stop   tracer_regler.php    ---------------------- 
Hat Keiner ne Idee?

Und nein, ich werde mir nicht weitere USB-RS485-Adapter anschauen. Dieser funktioniert, getestet mit der grottigen Windows-Software des Herstellers, siehe hier https://www.epsolarpv.com/downsoft.html

Benutzeravatar
Ulrich
Administrator
Beiträge: 5503
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 875 Mal
Kontaktdaten:

Re: EPever Tracer 3210 AN RS485 USB Kabel Treiber

Beitrag von Ulrich »

Einfach für 7 Euro den richtigen Adapter kaufen. Dass ist preiswerter als 2 Tage den Fehler suchen.
Unter Hardware sind eine ganze Reihe von Adaptern aufgefürt, die alle funktionieren.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

JgdKdoFhr
Beiträge: 9
Registriert: Mi 22. Jul 2020, 10:28
Hat sich bedankt: 1 Mal

Re: EPever Tracer 3210 AN RS485 USB Kabel Treiber

Beitrag von JgdKdoFhr »

Waren inkl. Versand 10€

Nichts desto trotz funktionierts immer noch nicht.

dmesg zeigt nun Folgendes:

Code: Alles auswählen

[51294.759153] usb 1-1.4: new full-speed USB device number 3 using xhci_hcd
[51294.895497] usb 1-1.4: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.63
[51294.895510] usb 1-1.4: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[51294.895520] usb 1-1.4: Product: USB2.0-Serial
[51298.574493] usbcore: registered new interface driver usbserial_Wortzensur
[51298.577604] usbserial: USB Serial support registered for Wortzensur
[51298.581033] usbcore: registered new interface driver ch341
[51298.581106] usbserial: USB Serial support registered for ch341-uart
[51298.581195] ch341 1-1.4:1.0: ch341-uart converter detected
[51298.585030] usb 1-1.4: ch341-uart converter now attached to ttyUSB0
wenn ich das Debug-Level der tracer_regler.php auf 10 einstelle, zeigt das Log Folgendes:

Code: Alles auswählen

28.07. 10:23:01 |------------   Start  tracer_regler.php  ------------------------ 
28.07. 10:23:01 o  -Hardware Version: 4B
28.07. 10:23:01 |- -Steuerdatei '1.befehl.steuerung' nicht vorhanden----
28.07. 10:23:01 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3104
    [RegisterCount] => 0001
)

28.07. 10:23:02    -3100 : 
28.07. 10:23:02 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:03    -3100 : 
28.07. 10:23:03 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:04    -3100 : 
28.07. 10:23:04 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:05    -3100 : 
28.07. 10:23:05 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:06    -3100 : 
28.07. 10:23:06 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:07    -3100 : 
28.07. 10:23:07 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:08    -3100 : 
28.07. 10:23:10 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:11    -3100 : 
28.07. 10:23:11 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:12    -3100 : 
28.07. 10:23:12 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:13    -3100 : 
28.07. 10:23:13 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:14    -3100 : 
28.07. 10:23:14 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:15    -3100 : 
28.07. 10:23:15 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:16    -3100 : 
28.07. 10:23:16 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:18    -3100 : 
28.07. 10:23:18 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:19    -3100 : 
28.07. 10:23:19 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:20    -3100 : 
28.07. 10:23:20 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:21    -3100 : 
28.07. 10:23:21 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:22    -3100 : 
28.07. 10:23:22 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:23    -3100 : 
28.07. 10:23:23 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:24    -3100 : 
28.07. 10:23:24 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:25    -3100 : 
28.07. 10:23:25 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:26    -3100 : 
28.07. 10:23:26 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:27    -3100 : 
28.07. 10:23:27 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:28    -3100 : 
28.07. 10:23:28 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:29    -3100 : 
28.07. 10:23:29 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:31    -3100 : 
28.07. 10:23:31 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:32    -3100 : 
28.07. 10:23:32 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:33    -3100 : 
28.07. 10:23:33 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:34    -3100 : 
28.07. 10:23:34 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:35    -3100 : 
28.07. 10:23:35 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:36    -3100 : 
28.07. 10:23:36 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:37    -3100 : 
28.07. 10:23:37 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:38    -3100 : 
28.07. 10:23:38 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:39    -3100 : 
28.07. 10:23:39 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:40    -3100 : 
28.07. 10:23:40 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:41    -3100 : 
28.07. 10:23:41 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:43    -3100 : 
28.07. 10:23:43 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:44    -3100 : 
28.07. 10:23:44 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:45    -3100 : 
28.07. 10:23:45 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:46    -3100 : 
28.07. 10:23:46 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:47    -3100 : 
28.07. 10:23:47 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:48    -3100 : 
28.07. 10:23:48 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:49    -3100 : 
28.07. 10:23:49 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:50    -3100 : 
28.07. 10:23:55 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:56    -3100 : 
28.07. 10:23:56 >  -Die Daten werden ausgelesen...Array
(
    [DeviceID] => 01
    [BefehlFunctionCode] => 04
    [RegisterAddress] => 3100
    [RegisterCount] => 0001
)

28.07. 10:23:58    -3100 : 
28.07. 10:23:58 !! -Keine gültigen Daten empfangen.
28.07. 10:23:58 |------------   Stop   tracer_regler.php    ---------------------- 
Kann man noch irgendwo anders nachschauen, oder gibt es ne Möglichkeit manuell Daten auszulesen um selbst zu Testen zu Debuggen?

Benutzeravatar
Ulrich
Administrator
Beiträge: 5503
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 875 Mal
Kontaktdaten:

Re: EPever Tracer 3210 AN RS485 USB Kabel Treiber

Beitrag von Ulrich »

Hast Du nach dem Anstecken des Adapters den Raspberry neu gestartet? Nur beim Start wird die Serielle Schnittstelle auf die richtige Geschwindigkeit eingestellt.

Für Experten:
Man kann auch, nachdem man an den USB Adaptern irgend etwas geändert hat, folgende Datei aufrufen:

sudo ./var/www/html/usb_init.php

oder bei einer Multi-Regler-Version

sudo ./var/www/html/multi_usb_init.php


Diese beiden Dateien stellen die Geschwindigkeiten der seriellen Schnittstellen ein. Sie werden immer nur beim Booten des Raspberry aufgerufen.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

JgdKdoFhr
Beiträge: 9
Registriert: Mi 22. Jul 2020, 10:28
Hat sich bedankt: 1 Mal

Re: EPever Tracer 3210 AN RS485 USB Kabel Treiber

Beitrag von JgdKdoFhr »

Danke für die Antwort,

nach diversen Tests mit python Skripten habe ich testweise mal das Kabel anders herum geklemmt.

Und siehe da es läuft.

Danke für den Support bis hierher.

Für Alle, die ähnliche Probleme haben:

Die Dokumentation gibt folgendes an:
The RJ45 interface pin define is shown below:
1 Power supply output +5V
2 Power supply output +5V
3 RS-485-B
4 RS-485-B
5 RS-485-A
6 RS-485-A
7 Ground
8 Ground
Diesen Adapter habe ich verwendet -> https://www.amazon.de/gp/product/B016IG ... UTF8&psc=1

Dabei habe ich jeweils beide Adern A auf B und B auf A geklemmt.
Ein Verwechseln ist erstmal nicht tragisch, da die Ströme, die fließen sehr gering sind und beim falsch Klemmen lediglich Sender auf Sender und Empfänger auf Empfänger geklemmt sind. https://www.instructables.com/id/Raspbe ... interface/ diese Seite hat mir beim Debugging sehr geholfen.

Antworten

Zurück zu „Hardware für den Nachbau“