D0 Zähler auslesen, wie Fehlersuche?

  • Hallo,


    ich habe mich hier neu angemeldet weil ich schon seit einer Weile erfolglos versuche 2 Froetec-Simplex ZG92 mit 2 USB Leseköpfen auszulesen. Ich hatte vor einer Weile mal eine Doku beim Hersteller gefunden, darin stand die Zähler das D0 Protokoll unterstützen. Hier heißt es u.a.:

    Zitat

    optische Datenschnittstelle D0 (M ode C bis 9600 Baud)
    RS485 (M ode C und M ode D feste Baudrate 9600)


    Die RS485 Schnittstelle ist im plombierten Bereich und damit nicht zugänglich.


    Die Köpfe hatte ich im Frühjahr bei Udo bestellt. Angeschlossen sind sie an einem RPI2. Hier habe ich beide USB Ports mit Minicom und stty auf 300bd 7E1 eingestellt. Ein cat /dev/ttyUSB0 wird leider sofort wieder beendet, sodass ich hier keine Ausgabe bekomme. Im vzlogger log steht immer nur read timeout.


    Ich habe beide Leseköpfe mal testweise an mein Windows Notebook angeschlosen und mit hterm getestet. Hier bekomme ich mit den gleichen Einstellungen vom Zähler eine Antwort, wenn auch nur eine Typenkennung und keine Zählerwerte. Vermutlich fehlt noch ein pull-Kommando.
    [Blockierte Grafik: https://picload.org/image/radgoccd/hterm.jpg]


    Das bedeutet für mich das die Port Einstellungen grundsätzlich richtig sind, die Leseköpfe korrekt positioniert sind und funktionieren. Nur was mache ich falsch? Die Einstellungen der Devices und im vzlogger habe ich einige male mit anderen Beispielen verglichen und finde keine Unterschiede.


    vzlogger.conf


    vzlogger log


    d0 log

    Code
    ##### 90.886136121s ( 10998 ms) timeout!
    ##### 90.886654767s (     0 ms) read
    ##### 90.886712267s (     0 ms) TCIOFLUSH and cfsetiospeed
    <<<<< 90.886766798s (     0 ms)
    
    
    #####  1.884838719s ( 10998 ms) timeout!
    #####  1.885047886s (     1 ms) read
    #####  1.885092782s (     0 ms) TCIOFLUSH and cfsetiospeed
    <<<<<  1.885220855s (     0 ms)


    Danke vorab
    Viele Grüße
    Christian

  • Hallo Jau,


    mit /sbin/udevadm info --query=all --name=/dev/ttyUSB0 werden mir die Infos des CP2104 USB to UART Bridge Controller angezeigt, es ist also das richtige device. Wenn ich beide Leseköpfe abziehe verschwinden auch ttyUSB0 und 1. Weitere Geräte per USB sind nicht angeschlossen.
    ich habe jetzt über die udev Rule einen symlink lesekopf0 und lesekopf1 erstellt und diese im vzlogger als Device angegeben. Nach einem neustart ändert sich aber nichts am Fehlerbild des timeout.


    Code
    [Dec 01 07:07:52][d0]   sending pullsequenz send (len:5 is:5).
    [Dec 01 07:08:07][d0]   nothing received for more than 10 seconds
    [Dec 01 07:08:07][d0]   read timed out!, context: 0, bytes read: 0, last byte 0x0
    [Dec 01 07:08:07][mtr0] Got 0 new readings from meter:
    [Dec 01 07:08:07][mtr0] Next reading in 30 seconds
    [Dec 01 07:08:37][d0]   sending pullsequenz send (len:5 is:5).
  • Vielleicht hilft es wenn du die Schnittstelle unter Linux mal manuell setzt statt vzlogger das machen zu lassen:

    Code
    stty -F /dev/ttyUSB0 1:4:da7:a30:3:1c:7f:15:4:10:0:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0



    mfg JAU

    No Shift - No Service

  • Deine vzlogger.conf ist falsch. Vermutlich brauchen die Zähler noch eine Bestätigungssequenz.
    Die Antwort der Zähler: 'ITF5FRP' lässt darauf schließen, dass man die Baudrate nach der Eröffnungssequenz auf 9600bd umschalten kann.
    Die vzlogger.conf sollte so aussehen:


    Bitte die vzlogger.conf komplett austauschen und nicht nur Teile daraus.


    Gruß
    Udo

  • Hallo Udo,


    danke für deine Antwort, ich glaube es hat vor allem die ackseq gefehlt. Jetzt bin ich definitiv weiter, der Zähler antwortet. Mir scheint aber das es nicht das antwortet was er soll:



    Mir ist nicht ganz klar was es mir sagen soll - 738437FF ist dezimal 1938044927.
    Der Wert bleibt gleich, auch wenn ich z.B. 1.8.1 statt 1.8.0 abfrage (Zähler hat HT/NT).


    Edit: Verstehe, das ist Zeilenweise zu lesen. Der erste Wert hat sich mittlerweile doch geändert. Ich schaue mir das heute Nachmittag nochmal an.


    Einen schönen Advent!

  • Hallo Udo,


    ja ich verwende deine Config mit 3 kleinen Änderungen (fehlende Klammern ergänzt, Logpfad angepasst, UUID gesetzt).



    Ich habe mal testweise die ackseq auf "000" und baudrate_read auf 300 geändert.

    Code
    [Dec 07 20:26:43][d0]   sending pullsequenz send (len:5 is:5).
    [Dec 07 20:26:44][d0]   Pull answer (vendor=ITF, baudrate=5, identification=FRP-SMV330100201)
    [Dec 07 20:26:45][d0]   Sending ack sequence send (len:2 is:2,).
    [Dec 07 20:26:45][d0]   DEBUG OBIS_CODE byte  hex= 0
    [Dec 07 20:26:45][d0]   DEBUG OBIS_CODE byte  hex= 0
    [Dec 07 20:27:00][d0]   nothing received for more than 10 seconds
    [Dec 07 20:27:00][d0]   read timed out!, context: 6, bytes read: 2, last byte 0x0
    [Dec 07 20:27:00][mtr0] Got 0 new readings from meter:


    Das Testprogramm von meinem Windows Laptop habe ich auch probiert. Hier bekomme ich in Hex auch nur die Zählerkennung IFTxxxxxx, wie auch im hterm in meinem ersten Thread. Siehe angehängtes Bild.


    Muss ich die Obis Codes nochmal irgendwie angeben das ich die geliefert bekomme? Also muss ich dem Zähler noch irgendein Kommando schicken damit er Werte überliefert?


    Falls sich dieser Zähler irgendwe "speziell" verhält, macht es Sinn ihn Stromlos zu machen (SLS Schalter)? Ich komme aus der IT Branche und allen zum trotz hilft das oft. Bringt es etwas beim Hersteller oder den Stadtwerken nachzufragen? Die Stadtwerke sind klein, Stadt hat 50.000 Einwohner. Hatte anfangs ein TSG welches nicht ordentlich gearbeitet hat und da war es schon schwierig die zu überzeugen das deren Gerät die Ursache ist.

  • Zitat von vault101

    mit 3 kleinen Änderungen (fehlende Klammern ergänzt, Logpfad angepasst, UUID gesetzt).


    Wenn du unser Image benutzt sollte der Log-Pfad auf /tmp/vzlogger.log lautetn.


    Ansonsten gehe ich mal davon aus, dass dein VNB, entweder selbst oder so beim Hersteller bestellt, den Zähler so konfiguriert hat, dass er nur seine Kennung ausgibt.
    Dem nochmals feste auf die Füße treten oder deinen eigenen Zähler dahinter hängen.


    Gruß
    Udo