Ankündigung

Einklappen
Keine Ankündigung bisher.

readmodbus nach verbindungsverlust immer fehler 2

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    readmodbus nach verbindungsverlust immer fehler 2

    Hallo in die Runde,

    ich habe meinen Solarlog für die PV jetzt im Eibpc2 an laufen. Solange der Solarlog online ist (und das ist er eigentlich immer) läuft das Prima. Nun habe ich gestern ein Backup vom Solarlog gemacht (die haben ne sd karte als datenspeicher drin die gerne mal kaput geht) und dazu war er offline. Nachdem ich ihn wieder online genommen habe baute der eibpc keine Verbindung mehr zu dem Solarlog auf.

    Laut Beschreibung im Handbuch macht er das selbstständig aber bei mir tut er das reproduzierbar nicht. Ich muss das Programm neu übertragen dann läuft es wieder.

    hier das expertenmodul das die daten holt.
    Code:
    Handle=modbusmaster($192.168.3.223$, 502u16, 10u32, 1u08);
    
    if cycle(0,3) then {
    
    // Auslesen des Solarlog
    // Aktuelle Leistung PV Register 3502
    
    ReadStatus1 = readmodbus(Handle, MB_INPUT_REGISTER, 3502u16, Registerwert1, BIG_ENDIAN, BIG_ENDIAN);
    
    Registertext=convert(Registerwert1,Dummy_c);
    Web2Logger(pverzeugung1txt, Registertext,$0.8$);
    PVLeistung=convert(Registerwert1,Dummy_f32);
    write('9/4/100'f32,PVLeistung);
    } endif
    
    if cycle(5,0) then {
    // Heute erzeugter Stromertrag Register 3508
    ReadStatus2 = readmodbus(Handle, MB_INPUT_REGISTER, 3508u16, Registerwert2, BIG_ENDIAN, LITTLE_ENDIAN);
    PVLeistungTag=convert(Registerwert2,Dummy_f32)*0.001f32;
    
    // Gestern erzeugter Stromertrag Register 3510
    ReadStatus3 = readmodbus(Handle, MB_INPUT_REGISTER, 3510u16, Registerwert3, BIG_ENDIAN, LITTLE_ENDIAN);
    PVLeistungTagGestern=convert(Registerwert3,Dummy_f 32)*0.001f32;
    
    // im aktuelle Monat erzeugter Stromertrag #register 3512
    ReadStatus4 = readmodbus(Handle, MB_INPUT_REGISTER, 3512u16, Registerwert4, BIG_ENDIAN, LITTLE_ENDIAN);
    PVLeistungMonat=convert(Registerwert4,Dummy_f32)*0 .001f32;
    
    // im aktuellen Jahr erzeugter Stromertrag Register 3514
    ReadStatus5 = readmodbus(Handle, MB_INPUT_REGISTER, 3514u16, Registerwert5, BIG_ENDIAN, LITTLE_ENDIAN);
    PVLeistungJahr=convert(Registerwert5,Dummy_f32)*0. 001f32;
    } endif
    Der Debugger sagt beim ReadStatusx einfach Fehler 2. Handle steht auf 1.

    Vielleicht kann mir einer mal ne Kerze entzünden damit ich die erleuchtung bekomme denn ich steh ehrlich gesagt im moment etwas im dunkeln.

    #2
    Hi,

    rufe mal den Ereignisspeicher über das EibStudio ab (Fenstermenü -> EibPC->Ereignsise). Da steht genau, wann was nicht geklappt hat.

    Statt Programmübertragung reicht auch ein Neustart des Programms. Ich vermute, dass sich durch das hohe Abfrageintervall von 3 Sekunden die Anfragen "ansammeln", gerade bei einem Timeout von 10 Sekunden.

    Wenn dann die Warteschlange voll ist, kommen erstmal keine neuen Verbindungen mehr rein, bis die anderen abgearbeitet wurden.

    Das Modbus-Gerät sollte "normalerweise" innerhalb 1-2 Sekunden antworten, ist ja lokal. Falls nein, hilft längeres Warten auch nicht.

    Kommentar


      #3
      Hi,
      Ereignisliste ist leer. Und auch wenn ich die ganze Nacht das Ding laufen lasse bleibt es beim Status 2. Er fängt sich nicht mehr. Kann ich irgendwie noch mehr infos irgendwo auslesen. Oder kann ich im Fehlerfall 2 irgendwie die Verbindung neu aufbauen ?

      In ner normalen Progammierung mach ich nen open read und close geht ja hier nicht. Kann ich das irgendiwe auslösen ?

      Kommentar


        #4
        Nein, sollte aber auch nicht nötig sein. Wir schauen uns das mal an und geben Rückmeldung. Auch, warum kein Eintrag im Ereignisspeicher dazu steht.

        Kommentar


          #5
          Zitat von eib1607 Beitrag anzeigen
          Ereignisliste ist leer.
          Hast du nach einem Neustart des Programms (erneuter Übertragung) oder während der Fehler aktiv war geschaut? Die Ereignisse werden nicht über einen Neustart hinweg gespeichert.

          Kommentar


            #6
            Ich hatte das gleiche Verhalten mit meiner Heizungssteuerung. Ich konnte es sogar reproduzieren in dem ich die Steuerung aus dem Netzwerk genommen habe (einfach Netzwerkkabel ziehen). Der EibPC2 hat sich NICHT wieder connected und es gab keinerlei sinnvolle Infos. Ein Schließen des Handles hätte m.E. ausgereicht.

            Mein Tip: Ich habe die ModBus-Verbindung gegen eine Eigenimplementierung auf Basis der TCP-Verbindung ersetzt. Wenn jetzt zwischendurch die Verbindung abreist wird automatisch die Verbindung geschlossen und neu geöffnet (was bei mir ca. alle 1 - 2 Tage passiert). Seit dem habe ich Ruhe und es funktioniert einwandfrei.

            Kommentar


              #7
              Der einfachere Weg ist sicherlich, uns Bescheid zu geben

              Kommentar


                #8
                Fehler gefunden und wird in 4.109 behoben sein.

                Kommentar


                  #9
                  super !
                  zur vervollständigung deiner Nachfrage, ich habe das Ereignisprotokoll und den Debugger immer während des Betriebs abgefragt also nicht nach dem Neustart sondern nach auftreten des Fehlers.

                  Kommentar


                    #10
                    Zitat von foobar0815 Beitrag anzeigen
                    Fehler gefunden und wird in 4.109 behoben sein.
                    Da ich das gleiche Problem (kein Reconnect wenn das Modbus Device weg ist) habe, erlaube ich mir kurz nachzufragen ob man schon weiss wann die 4.109 denn erscheinen wird?
                    Gruss Daniel

                    Kommentar


                      #11
                      Die Freigabetests sind für kommende Woche eingeplant.

                      Kommentar


                        #12
                        Vielen Dank für die erfreuliche Info kurz vor dem Wochenende
                        Gruss Daniel

                        Kommentar


                          #13
                          Lieder gibt's dieses Wochenende kein Update, die Freigabe verzögert sich noch ein paar Tage.

                          Kommentar


                            #14
                            Firmware-Version 4.109 (https://enertex.de/d-downloads.html#eibpc2) ist nun verfügbar und behebt das Problem. Falls ein Gerät vorübergehend nicht erreichbar ist, kommt bei readtcp() wie beschrieben als Rückgabewert 2 zurück. Mit jedem neuen Aufruf wird neu geprüft, so dass die Verbindung automatisch neu aufgebaut wird, falls das Gerät wieder erreichbar ist.

                            Kommentar

                            Lädt...
                            X