Schneider Electric EVLINK Wallbox über ModBus TCP

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • CyCl0ne
    Extension Master
    • 05.11.2020
    • 147

    #1

    Schneider Electric EVLINK Wallbox über ModBus TCP

    Hi,

    nachdem ich erfolgreich meine Dimplex WP (System M) angeschlossen habe, wollte ich nun meine Wallbox von Schneider Electric anschliessen.
    Ich hab nun ein paar Fragen, da die Franzosen von der Dokumentation es ein wenig anders machen als z.B. Dimplex. Damit aber auch die ganzen Sachen nicht verloren gehen, würde ich gerne den Thread dann immer nutzen um die Erfahrungen dann auch anderen zugänglich zu machen, die die Wallbox nutzen möchten.

    Kommunikation läuft soweit, ich kann Werte auslesen. Da die Franzosen nicht angeben in welchem Bereich, nutze ich das Tool: CAS Modbus Scanner und schau mir die Werte an. Jetzt die knifflige Frage:

    Um z.B. die Seriennummer auszulesen, soll ich WORD auslesen mit einer Länge von 26 Zeichen. Aber wie mach ich das mit der Loxone? Ich hab nur gesehen das ich als Datentyp 32bit angeben kann (also 2x WORD), muss ich dann 10 x Analogsensor mit 32bit anlegen oder geht das irgendwie anders in Loxone?


    ---
    Ab hier meine Erkenntnis:
    Zum Verbinden: IP Adresse der Box
    Port: 502
    Adresse: 247 (nicht 1 wie man annehmen könnte)

    Folgende Adressen gibt es zum Auslesen (mehr kommen noch):
    register Parameter Type Size Read/Write
    65 LifeBit word 1 Read/Write
    66 Reboot word 1 Read/Write
    67 EVSE_Management word 1 Read/Write
    68 IMaxPLC word 1 Read/Write
    69 CurrentMonitoringMode word 1 Read/Write
    70 InstantCurrentGivenPhaseA word 1 Read/Write
    71 InstantCurrentGivenPhaseB word 1 Read/Write
    72 InstantCurrentGivenPhaseC word 1 Read/Write
    73 RFIDReader Polling Period word 1 Read/Write
    74 PLC Modbus TCP Server IP word 2 Read/Write
    76 PLC Modbus TCP Server DestAddr word 1 Read/Write
    77 Degraded mode configuration word 1 Read/Write
    78 EVSE IP address word 2 Read/Write
    80 EVSE IP Mask word 2 Read/Write
    82 EVSE IP gateway word 2 Read/Write
    84 EVSE IP DNS word 2 Read/Write
    86 RAZ count word 1 Read/Write
    512 Serialnumber word 26 Read

    Update 19.1.2021:
    Nachdem ich es nicht hinbekommen habe mit Logik zu realisieren, hab ich mir ein PicoC Programm geschrieben, Des Weiteren habe ich 3-4 mal mit der Hotline mich besprechen müssen, da die Firma Schneider Elektrik da ein wenig zaghaft ist mit den Infos. Also man muss erst auf ein Problem stossen, dann bekommt man wieder einen Fix. Also nun funktioniert erstmal alles, das Auto wird mit Überschuss Strom geladen. Hier die Schritte die notwendig sind:
    a) Wallbox die Config auslesen als Datei und folgende Werte ändern:
    degradedModeSetPointMono=6
    degradedModeSetPointTri=6
    monophasedLoadSheddingFloorValue=6
    triphasedLoadSheddingFloorValue=6

    Wenn man diese NICHT ändert, verweigert die Box das heruntersetzen auf 6A (ich glaube factory stehen die Tri auf 14).

    b) Folgende Modbus Register "anzapfen", die brauchen wir:
    Input:
    6 CPW State
    358 Station Aktuelle Gesamtleistung

    Output:
    67 IMaxPLC
    150 Fernsteuerbefehlt


    Hier das Pico C Program:
    Code:
    // write program here in PicoC
    #define AI1 0
    #define AI2 1
    #define AI3 2
    #define AI4 3
    #define AI5 4
    #define AI6 5
    
    #define AQ1 0
    #define AQ2 1
    #define AQ3 2
    #define AQ4 3
    
    #define Pause setoutput(AQ1, 4)
    #define Start setoutput(AQ1, 5)
    
    setoutput(AQ2, 6); //Initiere 6A an Wallbox
    
    float PVLeistung; //AI1
    float WBLeistung; //
    float WBStatus; //AI2
    float NetzLeistung;
    int FastCharge = 0;
    int FastChargeAmp = 6;
    int Active = 0; //Wallbox active?
    
    
    float Energy = 0;
    int EnergyCur = 0;
    
    while (TRUE)
    {
    PVLeistung = getinput(AI1);
    WBStatus = getinput(AI2);
    FastChargeAmp= getinput(AI3);
    FastCharge = getinput(AI4); //TRUE, else PV Mode
    NetzLeistung = getinput(AI5); //Solaredge liefert "-" für Netzbezug
    WBLeistung = getinput(AI6)*1000;
    
    if (WBStatus == 9 || WBStatus == 11) Active = TRUE;
    else Active = FALSE;
    
    if (Active) Energy = NetzLeistung + WBLeistung;
    else Energy = NetzLeistung;
    
    setoutput(AQ3, Energy); // Debug
    
    if (Energy >0) EnergyCur = Energy / 690;
    else EnergyCur = 0;
    
    setoutput(AQ4, EnergyCur); // Debug
    
    if (FastCharge)
    {
    setoutput(AQ2, FastChargeAmp);
    if (!Active)
    {
    setoutput(AQ1, 5); // Start
    sleeps(5);
    setoutput(AQ1, 0);
    }
    } else
    {
    if (EnergyCur>16) EnergyCur = 16;
    
    // Wir sind unter den 6A, leg die Box schlafen wenn aktiv
    if (Active)
    {
    if (EnergyCur <6)
    {
    setoutput(AQ1, 4); // Pause
    sleeps(5);
    setoutput(AQ1, 0);
    }
    setoutput(AQ2, EnergyCur);
    } else
    {
    if (EnergyCur >5)
    {
    setoutput(AQ2, EnergyCur);
    setoutput(AQ1, 5); // Start
    sleeps(5);
    setoutput(AQ1, 0);
    }
    }
    }
    
    sleeps(1);
    }

    3) Die Ausgänge/Eingänge vom Pico C verknüpfen:
    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: EVELinkLox.jpg
Ansichten: 5700
Größe: 42,9 KB
ID: 286741


    Der Schalter, schaltet um zwischen: "FAST Charge" = Lade sofort und "OFF" = Nutze überschüssige Energie aus PV (Achtung, 6a müssen mindestens frei sein das das Auto lädt).

    AI1 = Wird nicht genutzt, ist vorgesehen für Future
    AI2 = CPW State -> Modbus siehe oben
    AI3 = Virtueller Eingang, da könnt ihr die Ampere einstellen die ihr gerne mit FastCharge geladen haben möchtet.
    AI4 = Schalter
    AI5 = Netzpunkt (Achtung SolarEdge Format = "-" Wir brauchen Strom vom Netz, "+" wir haben überschuss.
    AI6 = 358 Modbus, was saugt der Kasten aktuell

    AQ1 = Fernsteuerung Wallbox
    AQ2 = IMaxPLC (Einstellen der Ampere an der Wallbox)

    Bei Fragen.. posten

    ---

    Zuletzt geändert von CyCl0ne; 19.01.2021, 09:16.
  • Tico
    Lox Guru
    • 31.08.2016
    • 1035

    #2
    Um eine Seriennummer mit 26 Worten lesen zu können, benötigen Sie voraussichtlich 7 Modbus-Sensoren.
    6 Sensoren sollten jeweils 4 Zeichen mit Datentyp 32-Bit lesen. Der letzte Sensor sollte Datentyp 16-Bit sein, um die letzten 2 Zeichen zu lesen.

    Beachten Sie, dass Modbus-Adressen in Loxone normalerweise um 1 reduziert werden müssen.

    Aus Adresse 512 wird also 511 in der Config.

    Analoger Sensor 1 -
    IO-Adresse = 511
    Befehl = 3 - Halteregister lesen (4x)
    Datentyp = 32-Bit Ganzzahl ohne Vorzeichen
    Kombiniere 2 Register für 32-Bit-Wert - geprüft
    Reihenfolge der Register - geprüft

    Analoger Sensor 2 -
    IO-Adresse = 513
    Befehl = 3 - Halteregister lesen (4x)
    Datentyp = 32-Bit Ganzzahl ohne Vorzeichen
    Kombiniere 2 Register für 32-Bit-Wert - geprüft
    Reihenfolge der Register - geprüft

    usw.

    515
    517
    519
    521

    Analoger Sensor 7 -
    IO-Adresse = 523
    Befehl = 3 - Halteregister lesen (4x)
    Datentyp = 16-Bit Ganzzahl ohne Vorzeichen

    Dies sollte für jeden Sensor einen dezimalen Hex-Wert zurückgeben.
    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

    Kommentar

    • CyCl0ne
      Extension Master
      • 05.11.2020
      • 147

      #3
      Super, nun verstehe ich wieso es Adressen und Register gibt und die um 1 verschoben sind.

      Jetzt hänge ich an einem anderen Problem, damit die Wallbox Funktion von Loxone das "Car Connected" flag bekommt, muss ich das aus der Box auslesen. Es wird mir aber als "Bitarray" gesendet:
      EVSE_Status Status of current EVSE charging state machine word
      SimplifiedMode3Detected (1: yes, 0 no) bit 0
      Ventilation Mode Detected (1: yes, 0 no) bit 1
      Cluster mode ( 1 clustered mode, 0 standalone mode) bit 2
      Monophased/Triphased charge (0 mono; 1 tri) bit 3
      Shucko plug charging bit 4
      bit 5
      bit 6
      bit 7
      User Type (1 :VIP User, 0 : normal User) bit 8
      bit 9
      alternative energy suspend (1: yes, 0 no) bit 10
      Postpone charge ( 1: postpone enabled, 0: postpone disabled) bit 11
      Maintenance Cmd 1 received (1: yes, 0 no) bit 12
      Booked cmd 2 received (1: yes; 0: no) bit 13
      Suspend Cmd 4 received (1:yes; 0:no) bit 14
      Unavailable Cmd 6 received (1 : yes, 0 : no) bit 15
      Ich hab nirgends was gefunden in Loxone um einen Bitvergleich anzustellen, also sowas wie in c: if (wert &0b00010000 == 0b00010000) ....

      Aktuell errechne ich auch anhand der Phase Amps, wieviel Kw gezogen werden mit dem Bit 3 könnte ich auch die 220v charging erwischen.
      Zuletzt geändert von CyCl0ne; 26.11.2020, 20:29.

      Kommentar

      • Paulchen_Panther
        LoxBus Spammer
        • 14.02.2019
        • 225

        #4
        CyCl0ne
        Meinst du das hier?



        Schöne Grüße!

        Kommentar

        • CyCl0ne
          Extension Master
          • 05.11.2020
          • 147

          #5
          Jaaa, genau das gesucht !! Danke.. Gleich eingebaut und funktioniert. Hier der aktuelle Status:
          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Wallbox.jpg
Ansichten: 2972
Größe: 60,7 KB
ID: 277159

          Was ich nun arbeiten muss, wieso das Wallbox Plugin von Loxone behauptet es sein ein Auto dran, obwohl ich ja lc auf AUS habe. Aber Rest funktioniert schon beim Auslesen, erkenne Kabel angesteckt, wieviel Ampere die Box macht, das Cable macht, das Auto macht etc.

          Kommentar

          • CyCl0ne
            Extension Master
            • 05.11.2020
            • 147

            #6
            Hier mal mein Teil der EVSE Config der Wallbox:
            [EVLINK ENERGY]
            pulseToEnergyFactor=1
            degradedModeSetPointMono=6
            degradedModeSetPointTri=6
            monophasedLoadSheddingFloorValue=6
            triphasedLoadSheddingFloorValue=6
            EMsetting=2
            EMRemoteModBusLifeTimeout=10
            upstreamProtHighTrshld=100
            homeUpstreamProtection=32

            Kommentar

            • Gast

              #7
              Wo bekommt man das ganze MODBUS-Register her?

              Kommentar

              • CyCl0ne
                Extension Master
                • 05.11.2020
                • 147

                #8
                Musst du eine Anfrage bei Schneider Electric machen. Oder du sagst mir welche du brauchst und ich suche dir sie raus.

                Kommentar

                • Gast

                  #9
                  meine erste Anfrage an Schneider war noch nicht ganz Zielführend.
                  Wenn ich es richtig verstanden habe muss ich ein Livebit setzten und die WB setzt dieses wieder zurück.
                  Kannst Du mir sagen in welchem Register die Maximale Ladeleistung geschrieben werden muss?

                  Kommentar


                  • CyCl0ne
                    CyCl0ne kommentierte
                    Kommentar bearbeiten
                    Maximale Ladeleistung ? Meinst du die "variable" Leistung die du gerade schicken möchtest? Das ist Register 67. Siehe oben in der Software:
                    setoutput(AQ2, EnergyCur);

                    AQ2 ist verbunden mit 67 IMAX PLC

                    Das Livebit nutze ich nicht, hat die KNX Software von Schneider auch nicht benutzt.

                    Wenn du wissen möchtest, was MAX möglich ist an der Station gibt es folgende Register:

                    READ IMAXEV Register 16 -> Was sagt das Auto, was möglich ist
                    READ IMAXUser 46 -> Was ist vom User eingestellt in der Box
                    READ IMAXCable 12 -> Was kann das Kabel
                    READ IMAXCard 11 -> ???
                    READ/WRITE IMAXPLC 67 -> Was ist aktuell eingestellt als Max und hier schreiben wir auch rein, was erlauben wir als Max (dynamisch).
                    Zuletzt geändert von CyCl0ne; 26.04.2021, 07:03.
                • Gast

                  #10
                  Mir war bisher gar nicht klar, das die EVLINK Modbus spricht - Prima Sache und Danke für die Inspiration

                  Kannst Du evtl. die von Schneider erfragten Informationen zu den Registern insgesamt zur Verfügung stellen? Dann braucht nicht jeder für sich bei Schneider anklingeln ...
                  Ich wäre auch an einer Gerätevorlage zum Import interessiert, um die einzelnen EA's nicht manuell anlegen zu müssen

                  Ich habe übrigens ein EVLINK Smart G4 T2 mit der Firmware 3300-12

                  Kommentar

                  • Gast

                    #11
                    diese Informationen habe ich von Schneider erhalten.
                    Angehängte Dateien

                    Kommentar

                    • Gast

                      #12
                      Danke für deine schnelle Hilfe

                      Kommentar

                      • CyCl0ne
                        Extension Master
                        • 05.11.2020
                        • 147

                        #13
                        Hier die neueste Version der Software, mit Delay, mein Auto ist am Randbereich der 6A vom schnellen AN/AUS/AN/AUS abgestürzt :-)

                        Code:
                        // write program here in PicoC
                        #define AI1 0
                        #define AI2 1
                        #define AI3 2
                        #define AI4 3
                        #define AI5 4
                        #define AI6 5
                        
                        #define AQ1 0
                        #define AQ2 1
                        #define AQ3 2
                        #define AQ4 3
                        
                        #define Pause setoutput(AQ1, 4)
                        #define Start setoutput(AQ1, 5)
                        
                        setoutput(AQ2, 6); //Initiere 6A an Wallbox
                        
                        float PVLeistung; //AI1
                        float WBLeistung; //
                        float WBStatus; //AI2
                        float NetzLeistung;
                        int FastCharge = 0;
                        int FastChargeAmp = 6;
                        int Active = 0; //Wallbox active?
                        int Timer = 0;
                        
                        float Energy = 0;
                        int EnergyCur = 0;
                        
                        while (TRUE)
                        {
                        PVLeistung = getinput(AI1);
                        WBStatus = getinput(AI2);
                        FastChargeAmp= getinput(AI3);
                        FastCharge = getinput(AI4); //TRUE, else PV Mode
                        NetzLeistung = getinput(AI5); //Solaredge liefert "-" für Netzbezug
                        WBLeistung = getinput(AI6)*1000;
                        
                        if (WBStatus == 9 || WBStatus == 11) Active = TRUE;
                        else Active = FALSE;
                        
                        if (Active) Energy = NetzLeistung + WBLeistung;
                        else Energy = NetzLeistung;
                        
                        setoutput(AQ3, Energy); // Debug
                        
                        if (Energy >0) EnergyCur = Energy / 690;
                        else EnergyCur = 0;
                        
                        setoutput(AQ4, EnergyCur); // Debug
                        
                        if (FastCharge)
                        {
                        setoutput(AQ2, FastChargeAmp);
                        if (!Active)
                        {
                        setoutput(AQ1, 5); // Start
                        sleeps(5);
                        setoutput(AQ1, 0);
                        }
                        Timer = 25;// Falls von Fast Charge nach Eco Mode.. Das wir keine 30sek warten.
                        } else
                        {
                        Timer++; // Ein wenig Delay von 30 Sekunden
                        if (Timer > 30)
                        {
                        if (EnergyCur>16) EnergyCur = 16;
                        
                        // Wir sind unter den 6A, leg die Box schlafen wenn aktiv
                        if (Active)
                        {
                        if (EnergyCur <6)
                        {
                        setoutput(AQ1, 4); // Pause
                        sleeps(5);
                        setoutput(AQ1, 0);
                        }
                        setoutput(AQ2, EnergyCur);
                        } else
                        {
                        if (EnergyCur >5)
                        {
                        setoutput(AQ2, EnergyCur);
                        setoutput(AQ1, 5); // Start
                        sleeps(5);
                        setoutput(AQ1, 0);
                        }
                        }
                        Timer = 0;
                        }
                        }
                        sleeps(1);
                        }

                        Kommentar

                        • ceeage
                          LoxBus Spammer
                          • 03.02.2018
                          • 333

                          #14
                          Hallo,

                          kann ich mit der Schneider Wallbox auch einphasig laden?
                          Sprich das automatisch umgeschaltet wird, je nach PV-Überschuss?

                          Kommentar

                          • CyCl0ne
                            Extension Master
                            • 05.11.2020
                            • 147

                            #15
                            Ja das ist erstmal egal. Du gibst an, wieviel AMPERE die box MAX machen soll. So ist dann auch meine Rechnung:

                            Überschuss / 3 / 230 = Ampere (3p)

                            Überschuss / 1 / 230 = Ampere (1p), wobei du hier auf Schieflast achten musst. Max: 3.68kw

                            Somit ergibt sich folgende Tabelle:
                            Ampere KW (3p) KW (1p)
                            6 4140 1380
                            7 4830 1610
                            8 5520 1840
                            9 6210 2070
                            10 6900 2300
                            11 7590 2530
                            12 8280 2760
                            13 8970 2990
                            14 9660 3220
                            15 10350 3450
                            16 11040 3680

                            Jetzt siehst du auch woher die EVUs die "3.5" haben. Und wieso sie "sauer" werden wenn man mit 7.2kw laden will (Hyundai Kopna alt oder Ioniq), weil das 32A wären.

                            (Kommt noch hinzu das die meisten Häuser nur mit 32A gesichert sind.. etc. etc.)

                            Zuletzt geändert von CyCl0ne; 26.04.2021, 12:32.

                            Kommentar

                            Lädt...