Ankündigung

Einklappen
Keine Ankündigung bisher.

Last- / Lademanagement Wallbox mit PV Überschuss

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

    Das geht mit dem modbus writer von Sven ohne Probleme. Darum habe ich da nicht mehr weiter gemacht. Die alfen ist beim lesen aber little und beim schreiben bigendian. Das musst du beachten.
    Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

    Kommentar


      Habe keine Modbus Vorkentnisse, entsprechend mühsam ernährt sich das Eichhörnchen.

      Vielleicht kann jemand bisschen unterstützen.
      Anbei die Debug Übersicht und meine 2 Logikblätter fürs Lesen und Schreiben.
      Ich bin mir schon bei den Kommunikationsobjekten, grundlegend nicht sicher...

      Hab zum teste einfach mal die Temperatur und die Stromstärke der Phase 1 auslesen wollen.
      Wenn das geht müsste der Rest ja nach dem selben Schema folgen, aber es geht nicht
      Beim Lesen wollte ich einfach händisch mal per QC die Stromstärke erhöhen. Habe dazu einen
      Taster konfiguriert, der dann den fixen Wert in der Logik setzen soll. Fraglich ist hier ob ein Taster
      dafür geeignet ist, der toggelt ja. Oder schreibt ihr den Wert, 6, 8, 10, etc. direkt? Wenn ja, wie?
      Angehängte Dateien
      Zuletzt geändert von Marcus81; 04.11.2022, 13:44.

      Kommentar


        Hier noch die gesetzten Einstellungen im Service Installer..

        Bin für jeden Tip dankbar.
        Angehängte Dateien

        Kommentar


          Ich kann nur via PN helfen, ich darf die Bilder meiner Logiken nicht veröffentlichen.
          Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

          Kommentar


            Bei dem 0.7.1 LBS und dem Fehler: NoKeepAlive setzen. Wenn es nicht hilft auch ReconnectAfterEachRead.

            Und IllegalFunction ist der falsche Registertyp. Sicher, dass es Input-Register sind und nicht HoldingRegister?

            Kommentar


              Da das Lesen bei dir noch nicht klappt, hier ein Beispiel mit dem Baustein von Sven zum lesen des aktuell eingestellten Ladestroms:
              Alfen lesen.jpg
              Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

              Kommentar


                Danke, wollte mkich gerade wieder dran machen, passt super. Werde berichten!

                Kommentar


                  Zitat von Marcus81 Beitrag anzeigen
                  Danke, wollte mkich gerade wieder dran machen, passt super. Werde berichten!
                  Du brauchst nicht berichten, du brauchst einfach was von Svens Whisliste auf dem 1. Beitrag an Sven schicken. Das reicht uns vollkommen als Antwort.
                  Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

                  Kommentar


                    Fehlermeldungen kommen keine mehr! Werde jetzt über die kalte Jahreszeit weiter basteln und testen.
                    Vielen Dank und Danke für die tollen Bausteine! SvenB Wunder dich nicht wenn am Montag bei dir
                    Bosch Professional 1x Expert Carbide Multi Wheel Trennscheiben (für Hartholz, Ø 76 mm, Zubehör Mini-Winkelschleifer)​
                    von deiner Wunschliste ankommt
                    Angehängte Dateien

                    Kommentar


                      Zitat von BadSmiley Beitrag anzeigen

                      Du brauchst nicht berichten, du brauchst einfach was von Svens Whisliste auf dem 1. Beitrag an Sven schicken. Das reicht uns vollkommen als Antwort.
                      hehe, du Hellseher (muss mich mal umdrehen ob dur mir über die Schulter schaust), das hast du wohl parallel getippt als ich mein Beitrag verfasst habe - habe nämlich genau das zuvor erledigt

                      Kommentar


                        Danke Marcus81: Liebe meinen kleinen Bosch 12V Trennschleifer. Für so Büro-Junkies genau das Richtige 😉

                        0.8.1 ist nun auch im Download und dort ist "NoKeepAlive" Standard, Discrete Register gehen sowie Coil-Register hatten einen Bug und der ist weg. Nur falls benötigt.

                        Kommentar


                          Zitat von SvenB Beitrag anzeigen

                          0.8.1 ist nun auch im Download und dort ist "NoKeepAlive" Standard, Discrete Register gehen sowie Coil-Register hatten einen Bug und der ist weg. Nur falls benötigt.
                          Alles klar, prima, danke!

                          Kommentar


                            Hallo,
                            kann zwischenzeitlich Jemand bestätigen, dass die Alfen Eve Single S-line den Ladestrom in feineren Schritten als 1A regeln kann? Im Thread gab es da etwas widersprüchliche Aussagen zu. Wenn's geht würde ich mir die bestellen.

                            Kommentar


                              Zitat von Raphael Huckert Beitrag anzeigen
                              Du nutzt am Besten das Register 1210 dafür. Eine Unterschiedliche Ladeleistung pro Phase ist nicht möglich, bzw. das Fahrzeug kann damit nichts anfangen

                              [...]
                              Hier ein Stück Beispielcode für meine Alfen Eve (vielleicht hilft er ja jemandem)
                              Code:
                              from pymodbus.client.sync import ModbusTcpClient [/COLOR]
                              from pymodbus.payload import BinaryPayloadDecoder
                              import pymodbus
                              
                              client = ModbusTcpClient('alfen-sued', port=502, timeout=10)
                              
                              # Product identification registers
                              rr = client.read_holding_registers(100,count=79,unit=200)
                              print(type(rr))
                              
                              decoder = pymodbus.payload.BinaryPayloadDecoder.fromRegisters(rr.registers, byteorder=pymodbus.constants.Endian.Big, wordorder=pymodbus.constants.Endian.Big)
                              # Usecase-1
                              decoded = {
                                 'name': decoder.decode_string(34).decode(),
                                 'manufacturer': decoder.decode_string(10).decode(),
                                 'table_version': decoder.decode_16bit_uint(),
                                 'firmware_version': decoder.decode_string(34).decode(),
                                 'platform_type': decoder.decode_string(34).decode(),
                                 'serial_number': decoder.decode_string(22).decode(),
                                 'date_year': decoder.decode_16bit_int(),
                                 'date_month': decoder.decode_16bit_int(),
                                 'date_day': decoder.decode_16bit_int(),
                                 'date_hour': decoder.decode_16bit_int(),
                                 'date_min': decoder.decode_16bit_int(),
                                 'date_sec': decoder.decode_16bit_int(),
                                 'date_uptime': decoder.decode_64bit_uint(),
                                 'tz': decoder.decode_16bit_int(),
                              }
                              print(decoded)
                              print(decoded['name'])
                              print(type(decoded))
                              
                              # Energy measurements
                              print("Energy measurements:")
                              rr = client.read_holding_registers(300,count=8,unit=1)
                              print(type(rr))
                              print(rr)
                              print(rr.getRegister(0))
                              decoder = pymodbus.payload.BinaryPayloadDecoder.fromRegisters(rr.registers, byteorder=pymodbus.constants.Endian.Big, wordorder=pymodbus.constants.Endian.Big)
                              energy_m = {
                                 'meter_state': decoder.decode_16bit_uint(),
                                 'meter_last_value_timestamp': decoder.decode_64bit_uint(),
                                 'meter_type': decoder.decode_16bit_uint(),
                                 'voltage_phase_V_L1N': decoder.decode_32bit_float(),
                              }
                              print(energy_m)
                              
                              # Read status and transactions
                              print("Status and Transactions:")
                              rr = client.read_holding_registers(1200,count=16,unit=1)
                              print(type(rr))
                              print(rr)
                              print(rr.getRegister(0))
                              decoder = pymodbus.payload.BinaryPayloadDecoder.fromRegisters(rr.registers, byteorder=pymodbus.constants.Endian.Big, wordorder=pymodbus.constants.Endian.Big)
                              status_and_transaction = {
                                 'availability': decoder.decode_16bit_uint(),
                                 'mode3_state': decoder.decode_string(10).decode(),
                                 'actual_applied_max_current': decoder.decode_32bit_float(),
                                 'modbus_slave_max_current_valid_time': decoder.decode_32bit_uint(),
                                 'modbus_slave_max_current': decoder.decode_32bit_float(),
                                 'active_load_balancing_safe_current': decoder.decode_32bit_float(),
                                 'modbus_receive_setpoint_accounted_for': decoder.decode_16bit_uint(),
                                 'charge_using_1_or_3_phases': decoder.decode_16bit_uint(),
                              }
                              print(status_and_transaction)
                              
                              # Limit current to 5A and 1 phase
                              builder = pymodbus.payload.BinaryPayloadBuilder(byteorder=pymodbus.constants.Endian.Big)
                              builder.add_32bit_float(5.0)
                              max_current=builder.to_registers()
                              phases=1
                              
                              print(max_current)
                              rq = client.write_registers(1210,max_current,unit=0x01)
                              rq = client.write_register(1215,phases,unit=0x01)
                              
                              
                              # Read status and transactions
                              print("Status and Transactions:")
                              rr = client.read_holding_registers(1200,count=16,unit=1)
                              print(type(rr))
                              print(rr)
                              print(rr.getRegister(0))
                              decoder = pymodbus.payload.BinaryPayloadDecoder.fromRegisters(rr.registers, byteorder=pymodbus.constants.Endian.Big, wordorder=pymodbus.constants.Endian.Big)
                              status_and_transaction = {
                                 'availability': decoder.decode_16bit_uint(),
                                 'mode3_state': decoder.decode_string(10).decode(),
                                 'actual_applied_max_current': decoder.decode_32bit_float(),
                                 'modbus_slave_max_current_valid_time': decoder.decode_32bit_uint(),
                                 'modbus_slave_max_current': decoder.decode_32bit_float(),
                                 'active_load_balancing_safe_current': decoder.decode_32bit_float(),
                                 'modbus_receive_setpoint_accounted_for': decoder.decode_16bit_uint(),
                                 'charge_using_1_or_3_phases': decoder.decode_16bit_uint(),
                              }
                              print(status_and_transaction)​
                              ​
                              Ergebnis ist

                              Code:
                              <class 'pymodbus.register_read_message.ReadHoldingRegistersResponse'> [/COLOR]
                              {'name': 'Sued\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'manufacturer': 'Alfen NV\x00\x00', 'table_version': 1, 'firmware_version': '6.1.0-4159\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
                              \x00\x00\x00\x00\x00\x00\x00', 'platform_type': 'NG910\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'serial_number': 'ace0097525\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'date_year': 2022, 'date_month': 4, 'dat
                              e_day': 4, 'date_hour': 1, 'date_min': 25, 'date_sec': 55, 'date_uptime': 17899462, 'tz': 60}
                              Sued
                              <class 'dict'>
                              Energy measurements:
                              <class 'pymodbus.register_read_message.ReadHoldingRegistersResponse'>
                              ReadRegisterResponse (8)
                              3
                              {'meter_state': 3, 'meter_last_value_timestamp': 991, 'meter_type': 0, 'voltage_phase_V_L1N': 231.47000122070312}
                              Status and Transactions:
                              <class 'pymodbus.register_read_message.ReadHoldingRegistersResponse'>
                              ReadRegisterResponse (16)
                              1
                              {'availability': 1, 'mode3_state': 'A\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'actual_applied_max_current': 16.0, 'modbus_slave_max_current_valid_time': 856, 'modbus_slave_max_current': 16.0, 'active_load_balancing_safe_current': 16.0, 'modbus_receive_setpoint_accounted_for': 1, 'charge_using_
                              1_or_3_phases': 3}
                              [16544, 0]
                              Status and Transactions:
                              <class 'pymodbus.register_read_message.ReadHoldingRegistersResponse'>
                              ReadRegisterResponse (16)
                              1
                              {'availability': 1, 'mode3_state': 'A\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'actual_applied_max_current': 5.0, 'modbus_slave_max_current_valid_time': 899, 'modbus_slave_max_current': 5.0, 'active_load_balancing_safe_current': 16.0, 'modbus_receive_setpoint_accounted_for': 1, 'charge_using_1_
                              or_3_phases': 1}
                              ​​
                              (war ursprünglich eine Problembeschreibung, aber nachdem ich die Lösung selbst gefunden haben und ich den Beitrag nicht löschen konnte in ein Beispiel umgewandelt)

                              Gruß
                              Rainer
                              Zuletzt geändert von rdorsch; 20.03.2023, 23:05.

                              Kommentar


                                Hallo,

                                anscheinend hat die OpenWB ein Limit für die Umschaltung zw. 1 und 3-phasigem Laden (1x alle n Minuten) um die HW (Relais?) zu schonen. Würde hier nicht auch helfen, den Strom vor dem Umschalten auf Null zu fahren und dann umzuschalten? Oder machen das die WBen bereits automatisch? Mich würde insbesondere interessieren, ob jemand sagen kann, ob das die Alfen Eve bereits macht.

                                Danke und Gruß
                                Rainer

                                Kommentar

                                Lädt...
                                X