Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler bei Makroaufruf WebLoggerSize

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

    Fehler bei Makroaufruf WebLoggerSize

    Hallo zusammen,

    ich habe ein kleines Problem mit dem Experten 4.108.

    Ich versuche gerade meinen Solarlog mittels Modbus anzusprechen um mittelfristig fhem Arbeitslos zu machen. Nun bin ich über ein Problem gestolpert für das ich keine erklärung habe.

    Hintergrund , ich bin beim Schmökern durchs Forum über die Loggerfunktion gestolpert und habe die als eigenes Makro Web2Logger eingebaut. Irgendwann habe ich realisiert das es das im EnertexWebV3 gibt und habe die Funktion ersetzt um das 'eigene' Makro wieder zu entfernen. Ergebnis siehe unten ....

    Hier mein Programm
    Code:
    Handle=modbusmaster($192.168.3.223$, 502u16, 10u32, 1u08);
    
    if cycle(0,3) then {
    
    ReadStatus1 = readmodbus(Handle, MB_INPUT_REGISTER, 3502u16, Registerwert1, BIG_ENDIAN, BIG_ENDIAN);
    Registertext=convert(Registerwert1,Dummy_c);
    // Web2Logger(pverzeugung1txt, Registertext,$0.8$);
    WebLoggerSize(pverzeugung1txt, Registertext,$0.8$);
    } endif
    Und hier die Fehlermeldung dazu
    Code:
    >if cycle(0,3) then {ReadStatus1 = readmodbus(Handle, MB_INPUT_REGISTER, 3502u16, Registerwert1, BIG_ENDIAN, BIG_ENDIAN);Registertext=convert(Registerwert1,Dum my_c);Web2Logger(pverzeugung1txt, Registertext,$0.8$);WebLoggerSize(pverzeugung1txt, Registertext,$0.8$);} endif< in der Datei "P:\eibstudio4\Test1_tmp\tmpApp.txt"
    Deklaration der Variable muss eindeutig sein in >TextLogger_Lines=0< in >Mak:webloggersize==>< in >ReadStatus1=readmodbus(Handle,MB_INPUT_REGISTER,3 502u16,Registerwert1,BIG_ENDIAN,BIG_ENDIAN)--Set;Registertext=convert(Registerwert1,Dummy_c)--Set;Mak:web2logger==>if_then change(Registertext) then {__Web2Logger_63__TextLogger_line=Registertext--Set;if_then __Web2Logger_62__TextLogger_Count>TextLogger_Lines then {__Web2Logger_65__TextLogger_Body=$$+convert(setti me(),$$c20)+$$+__Web2Logger_63__TextLogger_line+$$ +split(__Web2Logger_65__TextLogger_Body,0u16,find( __Web2Logger_65__TextLogger_Body,$$,TextLogger_Cut )+4u16)--Set} endif ;__Web2Logger_61__TextLogger_out=__Web2Logger_64__ TextLogger_Header+__Web2Logger_65__TextLogger_Body +$$--Set;weboutput(pverzeugung1txt,__Web2Logger_61__Tex tLogger_out)} endif ;< in >{< in >if_then cycle(0,3)<
    ID:35
    EibParser wurde mit Fehler beendet.
    Wenn ich Web2Logger verwende läßt es sich übersetzen. Verwende ich WebLoggerSize bekomme ich obige fehlermeldung. Der Unterschied ist nur eine leere Zeile im WebLoggerSize zwischen dem endif und dem :end im Makro.

    Kann es sein das das Eibstudio so eigen ist ??


    #2
    Hi,

    das Makro wurde wohl beim Update auf EibStudio 4 nicht richtig "konvertiert". Die Variable TextLogger_Lines wird nicht, wie die anderen Variablen in dem Makro, als lokale variable (mit @ am Ende) angelegt sondern als globale.

    Wird das Makro mehrfach verwendet, gibt es die entsprechende Fehlermeldung.

    Das einfachste ist, das Makro zu kopieren, wieder in einer eigenen Lib auszulagern und anzupassen:
    TextLogger_Lines durch TextLogger_Lines@ ersetzen
    TextLogger_Cut durch TextLogger_Cut@ ersetzen

    und je ein
    :var TextLogger_Lines@
    :var TextLogger_Cut

    davor.

    Alternativ kannst du den Weblogger aus der Logik verwenden. Dazu einfach einen Weboutput mit der Logik verknüpfen und den entsprechenden Logikknoten einfügen.
    Oder du nimmst direkt das neueste Logger-Makro vmfWebLogger aus der Lib EnertexVisuFunctions.

    Kommentar


      #3
      erledigt....
      Zuletzt geändert von EPIX; 27.08.2024, 16:13.
      EPIX
      ...und möge der Saft mit euch sein...
      Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

      Kommentar

      Lädt...
      X