Skip to content

AWSb24/heizstab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Heizstab (Schneider ATV320 / Frequenzumrichter via Modbus TCP)

HACS Custom

Home-Assistant-Integration zur Steuerung eines Heizstabs, der über einen Schneider Altivar ATV320 Frequenzumrichter (FU) per Modbus TCP angebunden ist. Ersetzt die Steuerung über Helfer (input_boolean / input_number) und Node-RED durch native Entities.

Nicht mit Schneider Electric affiliiert. Die Register-Adressen stammen aus der öffentlich dokumentierten ATV320-Kommunikationsparameter-Referenz; die Hersteller-Dokumente selbst sind nicht Teil dieses Repositories.

Installation

HACS (empfohlen)

  1. HACS → ⋮ → Benutzerdefinierte Repositories → diese URL als Typ Integration hinzufügen.
  2. „Heizstab" installieren, Home Assistant neu starten.
  3. Einstellungen → Geräte & Dienste → Integration hinzufügen → „Heizstab".

Manuell

  1. Ordner custom_components/heizstab nach config/custom_components/ kopieren.
  2. Home Assistant neu starten und die Integration hinzufügen.

Config Flow

Feld Bedeutung Standard
Name Anzeigename des Geräts Heizstab
IP-Adresse Host des Modbus-TCP-Gateways
Port TCP-Port (Gateway, z. B. 4196) 502
Unit-ID Modbus-Adresse des FU (Param ADD) 1
Maximalleistung Heizstab (W) Bezugsleistung (100 %) 6000
Timeout (s) Antwort-Timeout pro Anfrage 5
Reconnect-Timeout (s) Wartezeit vor Reconnect 2

Über Konfigurieren (Optionen) lassen sich nachträglich anpassen: Abfrageintervall (Standard 5 s, muss < FU-Timeout TTO = 30 s sein), Frequenz bei Maximalleistung (f_max, Regelungs-Kalibrierung), Spannung bei Maximalleistung (U_max, Anzeige-Kalibrierung), Leistungen und Timeouts.

Erzeugte Entities

Entity (Beispiel) Typ Register Beschreibung
select.heizstab_betriebsart select 8501 Aus / Manuell / Automatik
number.heizstab_soll_leistung number 8502 Soll-Leistung in W
button.heizstab_fehler_quittieren button 8501 Störung quittieren
sensor.heizstab_ist_leistung sensor 3208 (UOP) Ist-Leistung in W (aus Spannung)
sensor.heizstab_spannung_heizstab sensor 3208 (UOP) Spannung in V
sensor.heizstab_ausgangsfrequenz sensor 3202 (RFR) Frequenz in Hz (alle 30 s)
sensor.heizstab_soll_frequenz sensor kommandierter Sollwert in Hz
sensor.heizstab_netzspannung sensor 3207 (ULN) Netzspannung (Diagnose)
sensor.heizstab_thermischer_zustand_fu sensor 3209 (THD) Thermik % (Diagnose)
binary_sensor.heizstab_heizt binary_sensor 3201 Bit 2 Betrieb freigegeben
binary_sensor.heizstab_storung binary_sensor 3201 Bit 3 Störung
binary_sensor.heizstab_einschaltbereit binary_sensor 3201 Bit 0 Einschaltbereit (Diagnose)
binary_sensor.heizstab_eingeschaltet binary_sensor 3201 Bit 1 Eingeschaltet (Diagnose)
binary_sensor.heizstab_einschaltsperre binary_sensor 3201 Bit 6 Einschaltsperre (Diagnose)

Die genauen entity_ids leiten sich aus dem vergebenen Gerätenamen ab.

Betriebsarten

  • Aus – FU wird gestoppt (Steuerwort 6 = einschaltbereit, Sollwert 0).
  • Manuell – FU folgt der Soll-Leistung, die du selbst (UI) setzt.
  • Automatik – FU folgt ebenfalls der Soll-Leistung; diese wird von einer externen Automation aus dem PV-Überschuss gesetzt.

Die Integration übernimmt die komplette CiA402-Steuersequenz (6 → 15 zum Starten, 128 = Fehler-Reset) und schreibt Steuerwort + Sollwert in jedem Schreib-Zyklus – das hält auch den Modbus-Watchdog des FU am Leben.

Automatikbetrieb anbinden

Die Überschuss-Berechnung bleibt bewusst außerhalb der Integration. Beispiel- Automation, die den Netzbezug ausregelt:

alias: Heizstab PV-Überschuss
trigger:
  - platform: state
    entity_id: sensor.solarnet_leistung_vom_netz
condition:
  - condition: state
    entity_id: select.heizstab_betriebsart
    state: automatik
action:
  - variables:
      ueberschuss: "{{ (0 - states('sensor.solarnet_leistung_vom_netz') | float(0)) - 300 }}"
      soll: "{{ [[ueberschuss, 0] | max, 6000] | min }}"
  - service: number.set_value
    target:
      entity_id: number.heizstab_soll_leistung
    data:
      value: "{{ soll }}"
mode: single

Technische Hinweise

  • FU-Profil CHCF = SEP (CiA402, Steuerung + Sollwert über Modbus).
  • Sollwert-Register 8502: 1000 = 100,0 Hz.
  • Soll-Leistung wird per Vorsteuerung (open-loop) gestellt: Register = √(P/Pmax) × f_max × 10 (Leistung ~ U² ~ Register²), nur per Slew-Rate (CONTROL_MAX_RATE) sanft nachgeführt. Bewusst ohne Rückführung: Die Spannungsmessung kommt über die EMI-gestörte Modbus-Strecke verfälscht/verzögert an → jede echte Regelung schwingt auf. Vorsteuerung kann prinzipiell nicht schwingen. Genauigkeit über f_max kalibrieren: f_max_neu = f_max × √(P_soll / P_real). Im Automatikbetrieb schließt Node-RED die Schleife auf das zuverlässige Smart-Meter-Signal (Netzeinspeisung).
  • Zwei Abtastraten (spart Modbus-Last auf der EMI-Strecke):
    • Jeden Zyklus (scan_interval, Standard 5 s): Block 3207–3209 (Netz-/Heizstabspannung, Thermik) lesen + Steuerwort/Sollwert schreiben.
    • Alle 30 s (STATUS_INTERVAL): Block 3201–3202 (ETA-Status + Ausgangsfrequenz). ETA ist für die Vorsteuerung unkritisch → Status-Sensoren und Fehler-/Starterkennung aktualisieren im 30-s-Takt.
    • Strom (LCR), Drehmoment (OTR) und Motorleistung (OPR) werden nicht gelesen (der FU liefert sie bei diesem Aufbau konstant 0).
  • Ist-Leistung = Pmax × (U / U_max)² aus der Heizstabspannung (UOP, Reg 3208), geglättet (Zeitkonstante POWER_SMOOTHING_TAU). U_max kalibrieren über eine isolierte Messung (Last mit Heizstab minus Grundlast).
  • Timeout kurz halten (Standard 5 s): Bei laufendem Heizstab gehen über EMI sporadisch Modbus-Antworten verloren; das Steuerwort wird pro Zyklus zuerst geschrieben, damit der FU-Watchdog (TTO 30 s) gefüttert bleibt.
  • Registerquelle: ATV320-Kommunikationsparameter-Referenz (Schneider Electric).

Lizenz

MIT — siehe LICENSE.

About

Home Assistant Integration zur Steuerung eines Heizstabs via Schneider ATV320 Frequenzumrichter (Modbus TCP)

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages