Innovenergy_trunk/csharp/App/Backend/Services/AlarmKnowledgeBase.cs

1507 lines
130 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

namespace InnovEnergy.App.Backend.Services;
/// <summary>
/// Static knowledge base for Sinexcel and Growatt alarms.
/// Provides pre-defined diagnostics without requiring Mistral API calls.
/// Data sourced from vendor alarm documentation.
/// </summary>
public static class AlarmKnowledgeBase
{
/// <summary>
/// Tries to find a pre-defined diagnostic for the given alarm description.
/// Returns null if the alarm is not in the knowledge base.
/// </summary>
public static DiagnosticResponse? TryGetDiagnosis(string alarmDescription)
{
if (string.IsNullOrWhiteSpace(alarmDescription))
return null;
// Normalize the description for lookup
var normalized = alarmDescription.Trim();
// Try exact match first
if (SinexcelAlarms.TryGetValue(normalized, out var sinexcelDiag))
return sinexcelDiag;
if (GrowattAlarms.TryGetValue(normalized, out var growattDiag))
return growattDiag;
// Try case-insensitive match for Sinexcel (alarm names may vary in casing)
var lowerDesc = normalized.ToLowerInvariant();
foreach (var kvp in SinexcelAlarms)
{
if (kvp.Key.ToLowerInvariant() == lowerDesc)
return kvp.Value;
}
return null;
}
// ── Sinexcel Alarms ──────────────────────────────────────────────────────
// Register addresses: 0x1048 - 0x10D5
// Recovery types: AUTO (wait), MANUAL (fix and restart), SERVICE (contact service)
private static readonly IReadOnlyDictionary<string, DiagnosticResponse> SinexcelAlarms = new Dictionary<string, DiagnosticResponse>
{
// Grid-related alarms
["AbnormalGridVoltage"] = new()
{
Explanation = "The inverter has detected that the grid voltage is outside the acceptable operating range. The system requires manual intervention to recover.",
Causes = new[] { "Utility grid voltage fluctuation or instability", "Poor or loose grid connection at the inverter terminals", "Local transformer issues", "High load demand on the local grid" },
NextSteps = new[] { "Check the grid voltage with a multimeter at the inverter terminals", "Verify all grid connection wiring is tight and undamaged", "Contact your utility provider if the grid voltage is persistently abnormal", "Restart the inverter after the issue is resolved" }
},
["AbnormalGridFrequency"] = new()
{
Explanation = "The inverter has detected that the grid frequency is outside the acceptable range (typically 50 Hz or 60 Hz ± tolerance). The system will not operate until the frequency returns to normal.",
Causes = new[] { "Grid instability or disturbance from the utility", "Generator frequency drift if running on a generator", "Rapid load changes on the local grid" },
NextSteps = new[] { "Check whether the grid frequency is stable", "If operating with a generator, verify the generator's frequency setting matches the inverter specification", "Wait for the grid to stabilise, then restart the inverter" }
},
["InvertedSequenceOfGridVoltage"] = new()
{
Explanation = "The phase sequence of the three-phase grid voltage is reversed. This is a wiring issue that prevents safe operation.",
Causes = new[] { "Incorrect wiring of grid phases during installation (L1, L2, L3 swapped)", "Rewiring work carried out without checking phase order" },
NextSteps = new[] { "Power off the entire system safely before touching any wiring", "Swap any two of the three phase wires at the grid connection to correct the sequence", "Power the system back on and verify the alarm clears" }
},
["GridVoltagePhaseLoss"] = new()
{
Explanation = "One or more phases of the three-phase grid connection are missing. The inverter cannot operate safely on an incomplete three-phase supply.",
Causes = new[] { "Blown fuse on one of the grid phases", "Loose or disconnected phase wire at the inverter terminals or distribution board", "Grid-side circuit breaker tripped on one phase", "Cable damage interrupting one phase" },
NextSteps = new[] { "Check all three phase connections at the inverter input terminals", "Verify fuses and circuit breakers for each phase", "Inspect cables for visible damage or loose connections", "Restore the missing phase and restart after repair" }
},
["AbnormalGridCurrent"] = new()
{
Explanation = "The grid current is abnormal, which may indicate overcurrent or current imbalance between phases.",
Causes = new[] { "Grid-side short circuit or wiring fault", "System load exceeding capacity", "Faulty current sensor giving wrong readings", "Ground fault causing current leakage" },
NextSteps = new[] { "Check for short circuits in the wiring and load side", "Reduce system load and see if the alarm clears", "Verify current sensor connections and operation", "Repair the underlying fault, then restart the inverter" }
},
// Output-related alarms
["AbnormalOutputVoltage"] = new()
{
Explanation = "The inverter's output voltage is outside acceptable limits. This can affect connected loads and indicates a fault condition.",
Causes = new[] { "Internal inverter control fault", "Overload condition on the output", "Grid voltage influence affecting output regulation" },
NextSteps = new[] { "Check all connected loads and disconnect any that may be causing overload", "Verify inverter output voltage settings match your installation requirements", "Power cycle the inverter; if the alarm returns, contact a service technician" }
},
["AbnormalOutputFrequency"] = new()
{
Explanation = "The inverter's output frequency is abnormal, which may affect sensitive equipment.",
Causes = new[] { "Internal control system fault affecting frequency regulation", "Heavy or sudden load transients causing frequency deviation" },
NextSteps = new[] { "Reduce connected load and check if the frequency stabilises", "Power cycle the inverter; if persistent, contact service" }
},
["AbnormalNullLine"] = new()
{
Explanation = "The neutral (null) line connection is abnormal. A missing or damaged neutral can cause voltage imbalance and dangerous conditions.",
Causes = new[] { "Loose or disconnected neutral wire at the inverter or distribution board", "Neutral wire damaged or broken", "Incorrect wiring during installation" },
NextSteps = new[] { "Power off the system safely before inspecting any wiring", "Check all neutral wire connections at the inverter and distribution panel", "Repair any wiring issues found, then restart after confirming correct connections" }
},
["AbnormalOffGridOutputVoltage"] = new()
{
Explanation = "The off-grid (backup) output voltage is abnormal. Loads connected to the backup output may not receive correct voltage.",
Causes = new[] { "Overload on the backup output exceeding inverter capacity", "Internal inverter hardware issue", "Battery voltage too low to maintain stable output" },
NextSteps = new[] { "Disconnect or reduce the load on the backup output", "Check battery state of charge and allow charging if low", "Power cycle the inverter; if persistent, contact service" }
},
// Temperature alarms
["ExcessivelyHighAmbientTemperature"] = new()
{
Explanation = "The ambient temperature around the inverter is too high. The inverter may reduce output power to protect itself from heat damage.",
Causes = new[] { "Poor ventilation around the inverter installation", "High environmental temperature (heat wave, summer peak)", "Direct sunlight exposure heating the inverter enclosure", "Other equipment nearby generating excessive heat" },
NextSteps = new[] { "Improve airflow and ventilation around the inverter", "Provide shade if the inverter is installed outdoors or in direct sunlight", "Consider adding forced cooling (fan) if in an enclosed space", "The inverter will recover automatically once temperature drops to safe levels" }
},
["ExcessiveRadiatorTemperature"] = new()
{
Explanation = "The inverter's heat sink (radiator) temperature is too high. The inverter uses the heat sink to dissipate heat during operation.",
Causes = new[] { "Blocked or obstructed air vents preventing heat dissipation", "Cooling fan failure reducing airflow", "High ambient temperature", "Excessive load causing more heat generation" },
NextSteps = new[] { "Clean air vents and any dust filters — dust buildup is a common cause", "Check that the cooling fan is running (listen for fan noise during operation)", "Reduce load temporarily to lower heat generation", "Repair or replace the fan if faulty, then restart the inverter" }
},
["PcbOvertemperature"] = new()
{
Explanation = "The printed circuit board (PCB) inside the inverter has reached too high a temperature.",
Causes = new[] { "Inadequate cooling or poor ventilation inside the enclosure", "High ambient temperature affecting internal components", "Excessive power output over an extended period" },
NextSteps = new[] { "Improve ventilation around the inverter", "Check that the cooling fan is operating correctly", "Allow the inverter to cool down before restarting" }
},
["DcConverterOvertemperature"] = new()
{
Explanation = "The DC converter section of the inverter is overheating.",
Causes = new[] { "High charging or discharging current sustained for a long period", "Poor cooling or blocked vents", "High ambient temperature in the installation area" },
NextSteps = new[] { "Reduce power flow through the system temporarily", "Improve ventilation and check fan operation", "Allow cooling, then restart the inverter" }
},
["InverterOvertemperatureAlarm"] = new()
{
Explanation = "The inverter temperature is rising toward dangerous levels. This is an early warning before thermal shutdown occurs.",
Causes = new[] { "Output power overload running for extended time", "Poor ventilation trapping heat around the inverter", "Cooling fan failure", "High ambient temperature in the installation area" },
NextSteps = new[] { "Reduce connected load immediately", "Check that the cooling fans are running and vents are clear", "The inverter will recover once it cools; fix the underlying cause before full restart" }
},
["InverterOvertemperature"] = new()
{
Explanation = "The inverter has overheated and protective shutdown has activated.",
Causes = new[] { "Sustained overload condition generating excessive heat", "Cooling system failure (blocked vents, dead fan)", "Extreme environmental temperatures" },
NextSteps = new[] { "Allow the inverter to cool down fully before attempting restart", "Check fans and ensure all ventilation openings are clear", "Reduce system load and improve cooling before restarting" }
},
["DcConverterOvertemperatureAlarm"] = new()
{
Explanation = "The DC converter temperature alarm is active — temperature is approaching the shutdown threshold.",
Causes = new[] { "High power throughput sustained over time", "Inadequate cooling or blocked vents" },
NextSteps = new[] { "Reduce power flow temporarily to allow cooling", "Check fan operation and clear any ventilation blockages", "Allow temperature to drop, then restart the inverter" }
},
// Insulation and safety alarms
["InsulationFault"] = new()
{
Explanation = "An insulation fault has been detected, indicating possible current leakage to ground. This is a safety-critical condition that must be investigated before resuming operation.",
Causes = new[] { "Damaged cable insulation on PV, battery, or grid cables", "Moisture or water ingress into cable connections or enclosures", "Component insulation breakdown inside the inverter", "Ground fault in the PV array — common after storm damage" },
NextSteps = new[] { "Do not touch the system — insulation faults can cause electric shock", "Power off the system safely from all disconnects", "Inspect all cables for visible insulation damage, especially in areas exposed to weather", "Perform an insulation resistance test on PV strings and wiring", "Repair damaged insulation before restarting" }
},
["LeakageProtectionFault"] = new()
{
Explanation = "The ground fault or leakage current protection has tripped. Leakage current to ground has exceeded the safe threshold.",
Causes = new[] { "Ground fault somewhere in the system wiring", "Damaged cable insulation allowing current to leak to earth", "Moisture getting into cable connectors or junction boxes", "Faulty RCD or GFCI device" },
NextSteps = new[] { "Power off the system before inspection", "Check for ground faults by inspecting all cable connections and insulation", "Look for moisture in connectors, junction boxes, and cable glands", "Repair the fault, then restart the system" }
},
["AbnormalLeakageSelfCheck"] = new()
{
Explanation = "The inverter's leakage current self-check has failed during startup.",
Causes = new[] { "Self-check circuit fault inside the inverter", "An actual ground fault present in the system", "Leakage current sensor malfunction" },
NextSteps = new[] { "Power off safely and check the system grounding connections", "Inspect wiring for insulation damage that may be causing leakage", "If wiring checks out, the inverter's internal sensor may be faulty — contact service" }
},
["PoorGrounding"] = new()
{
Explanation = "Poor or inadequate grounding connection has been detected. Proper grounding is essential for safety and lightning protection.",
Causes = new[] { "Loose ground (earth) connection at the inverter", "Corroded or oxidised ground terminal", "Ground cable resistance too high due to soil conditions or undersized cable", "Missing or disconnected ground wire" },
NextSteps = new[] { "Power off safely and check all ground/earth connections at the inverter", "Clean any corroded terminals and tighten all ground connections", "Measure ground resistance and compare with installation specification", "Repair grounding, then restart the inverter" }
},
// Fan and cooling alarms
["FanFault"] = new()
{
Explanation = "The cooling fan has failed or is not operating correctly. Without adequate cooling, the inverter will overheat and shut down.",
Causes = new[] { "Fan motor has failed and is no longer spinning", "Fan blade blocked by debris or foreign objects", "Loose or disconnected fan power connector", "Fan control circuit fault" },
NextSteps = new[] { "Visually inspect the fan and check if it spins when the inverter is running", "Remove any obstructions from the fan blades", "Check that the fan power connector is securely plugged in", "Replace the fan if it is not working — do not run the inverter without cooling" }
},
// Power supply alarms
["AuxiliaryPowerFault"] = new()
{
Explanation = "The auxiliary power supply inside the inverter has failed. This internal supply powers the control electronics.",
Causes = new[] { "Internal power supply component failure", "Input voltage issue affecting the auxiliary supply", "Electronic component failure on the control board" },
NextSteps = new[] { "Power cycle the inverter — switch off, wait 30 seconds, then switch back on", "If the alarm persists after restart, the auxiliary supply likely needs replacement — contact a service technician" }
},
// Model and configuration alarms
["ModelCapacityFault"] = new()
{
Explanation = "The inverter has detected a model or capacity configuration mismatch — the system settings do not match the hardware.",
Causes = new[] { "Incorrect model configuration set during commissioning", "Firmware version incompatible with hardware model", "Hardware components replaced without updating configuration" },
NextSteps = new[] { "Verify the inverter model settings in the configuration menu", "Check that the firmware version is compatible with this hardware revision", "Contact your installer or service team to correct the configuration, then restart" }
},
// Lightning and surge protection
["AbnormalLightningArrester"] = new()
{
Explanation = "The surge protection device (SPD / lightning arrester) has either failed or activated due to a surge event.",
Causes = new[] { "Lightning strike or voltage surge has triggered and possibly destroyed the SPD", "SPD component has reached end-of-life and failed", "SPD wiring fault" },
NextSteps = new[] { "Check the SPD status indicator (most SPDs have a visual fault indicator)", "Replace the SPD cartridge if it has triggered or shows fault", "After replacing, restart the inverter" }
},
// Island protection
["IslandProtection"] = new()
{
Explanation = "Island protection is active — the inverter has disconnected from the grid to prevent back-feeding power into a dead grid. This is a safety feature.",
Causes = new[] { "Utility grid power outage in your area", "Grid voltage or frequency outside acceptable limits", "Intentional grid disconnection by the utility" },
NextSteps = new[] { "Wait for the utility grid to restore and stabilise", "The inverter will automatically reconnect and resume normal operation once the grid is healthy", "No action required unless the outage is prolonged" }
},
// Battery 1 alarms
["Battery1NotConnected"] = new()
{
Explanation = "Battery 1 is not detected or not connected. The inverter cannot find the battery on the DC bus.",
Causes = new[] { "Battery disconnect switch is open (turned off)", "Loose or disconnected battery cable at inverter or battery terminal", "Battery BMS has shut down the battery due to a protection event", "Battery fuse has blown" },
NextSteps = new[] { "Check the battery disconnect switch and ensure it is in the ON position", "Inspect battery cable connections at both the inverter and battery ends", "Check the battery BMS status indicator for any fault codes", "Inspect and replace fuse if blown, then restart the inverter" }
},
["Battery1Overvoltage"] = new()
{
Explanation = "Battery 1 voltage is too high. Charging has been limited or stopped to protect the battery.",
Causes = new[] { "Battery being overcharged beyond its maximum voltage", "BMS malfunction allowing voltage to rise too high", "Incorrect battery voltage or capacity settings in the inverter", "Cell imbalance causing some cells to over-charge" },
NextSteps = new[] { "Check the battery state of charge and current voltage", "Verify battery charging voltage settings in the inverter configuration", "Check BMS operation and any BMS fault indicators", "Repair the underlying cause, then restart the inverter" }
},
["Battery1Undervoltage"] = new()
{
Explanation = "Battery 1 voltage is too low. Discharging has been limited or stopped to protect the battery from deep discharge.",
Causes = new[] { "Battery has been discharged too deeply", "Individual battery cell failure reducing total capacity", "BMS cutoff due to low voltage protection", "High load draining the battery faster than it charges" },
NextSteps = new[] { "Allow the battery to recharge from PV or grid", "Check for any unusually high loads drawing excessive power", "Verify battery health — aging batteries may not hold charge", "Repair the underlying cause, then restart the inverter" }
},
["Battery1DischargeEnd"] = new()
{
Explanation = "Battery 1 has reached its minimum state of charge (discharge end point). The system will stop discharging to protect the battery.",
Causes = new[] { "Battery has been fully discharged to the configured SOC limit", "High power consumption exceeding available solar or grid charging" },
NextSteps = new[] { "Wait for the battery to recharge from PV or grid power", "Consider reducing overnight power consumption to preserve battery capacity", "This alarm will clear automatically once sufficient charge is restored" }
},
["Battery1Inverted"] = new()
{
Explanation = "Battery 1 polarity is reversed. Operating with reversed polarity can cause severe damage to the inverter and battery.",
Causes = new[] { "Battery cables connected with positive and negative swapped during installation", "Installation error — positive cable on negative terminal or vice versa" },
NextSteps = new[] { "IMMEDIATELY power off the entire system — do not attempt to charge or discharge", "Disconnect the battery cables carefully after power is off", "Reconnect with correct polarity: positive to positive (+) terminal, negative to negative ()", "Check for any damage to cables, fuses, or the inverter before restarting" }
},
["Battery1OverloadTimeout"] = new()
{
Explanation = "Battery 1 has been operating under overload conditions for too long and has triggered protection.",
Causes = new[] { "Sustained high load continuously exceeding battery discharge rating", "Battery undersized for the connected load", "Battery degradation reducing available power capacity" },
NextSteps = new[] { "Reduce the total load on the system", "Review whether the battery is correctly sized for peak load requirements", "Repair the underlying cause, then restart the inverter" }
},
["Battery1SoftStartFailure"] = new()
{
Explanation = "Battery 1 failed to complete the soft-start (pre-charge) sequence during startup.",
Causes = new[] { "Pre-charge circuit fault preventing controlled startup", "Significant voltage mismatch between battery and DC bus", "Contactor or relay issue in the battery connection path" },
NextSteps = new[] { "Check battery voltage and compare to the DC bus voltage", "Verify the pre-charge circuit and contactors are operating correctly", "Repair the underlying fault, then restart the inverter" }
},
["Battery1PowerTubeFault"] = new()
{
Explanation = "Battery 1 power electronics (IGBT or MOSFET transistors) have failed. This is a hardware fault requiring professional service.",
Causes = new[] { "Power semiconductor (IGBT/MOSFET) has failed due to overstress", "Damage from overcurrent or short circuit event", "Component manufacturing defect that has developed over time" },
NextSteps = new[] { "Do not attempt to restart the system", "Contact a qualified service technician — this requires internal hardware repair or replacement", "Do not operate the system until the fault is professionally repaired" }
},
["Battery1InsufficientPower"] = new()
{
Explanation = "Battery 1 cannot provide sufficient power to meet the current load demand.",
Causes = new[] { "Battery state of charge is too low", "Load demand temporarily exceeds battery's maximum discharge power", "Battery capacity has degraded due to aging" },
NextSteps = new[] { "Wait for the battery to recharge from PV or grid", "Reduce load if possible during periods of low battery charge", "This alarm should clear automatically once battery has sufficient charge" }
},
["Battery1BackupProhibited"] = new()
{
Explanation = "Battery 1 is currently prohibited from providing backup power, typically due to a BMS protection state.",
Causes = new[] { "Battery BMS has activated a protection preventing discharge", "Battery in maintenance or calibration mode", "Battery SOC is below the minimum level required for backup operation" },
NextSteps = new[] { "Check the BMS status and any BMS fault indicators", "Allow the battery to charge above the minimum backup SOC threshold", "Repair any BMS issues, then restart the inverter" }
},
// Battery 2 alarms (similar to Battery 1)
["Battery2NotConnected"] = new()
{
Explanation = "Battery 2 is not detected or not connected. The inverter cannot find the second battery on the DC bus.",
Causes = new[] { "Battery 2 disconnect switch is open", "Loose or disconnected battery cable at inverter or battery terminal", "Battery 2 BMS has shut down due to a protection event", "Battery 2 fuse has blown" },
NextSteps = new[] { "Check the Battery 2 disconnect switch is in the ON position", "Verify battery cable connections at both inverter and battery terminals", "Check the Battery 2 BMS status for any fault codes", "Inspect and replace fuse if blown, then restart the inverter" }
},
["Battery2Overvoltage"] = new()
{
Explanation = "Battery 2 voltage is too high. Charging has been limited or stopped to protect the battery.",
Causes = new[] { "Battery 2 being overcharged beyond its maximum voltage", "BMS malfunction allowing voltage to rise too high", "Incorrect battery voltage settings in the inverter" },
NextSteps = new[] { "Check Battery 2 state of charge and voltage", "Verify charging settings in the inverter configuration", "Check BMS operation and any fault indicators, then restart" }
},
["Battery2Undervoltage"] = new()
{
Explanation = "Battery 2 voltage is too low. Discharging has been limited to protect the battery from deep discharge.",
Causes = new[] { "Battery 2 has been discharged too deeply", "Individual cell failure reducing total capacity", "BMS low voltage protection cutoff" },
NextSteps = new[] { "Allow Battery 2 to recharge from PV or grid", "Check battery health — aging batteries lose capacity", "Repair the underlying cause, then restart the inverter" }
},
["Battery2DischargeEnd"] = new()
{
Explanation = "Battery 2 has reached its minimum state of charge. Discharging has stopped to protect the battery.",
Causes = new[] { "Battery 2 has been fully discharged to the configured SOC limit", "High power consumption exceeding available charging" },
NextSteps = new[] { "Wait for Battery 2 to recharge from PV or grid power", "This alarm will clear automatically once sufficient charge is restored" }
},
["Battery2Inverted"] = new()
{
Explanation = "Battery 2 polarity is reversed. This is a dangerous condition that must be corrected immediately.",
Causes = new[] { "Battery 2 cables connected with positive and negative swapped", "Installation error during initial wiring" },
NextSteps = new[] { "IMMEDIATELY power off the entire system", "Disconnect Battery 2 cables carefully after power is confirmed off", "Reconnect with correct polarity and check for any damage before restarting" }
},
["Battery2OverloadTimeout"] = new()
{
Explanation = "Battery 2 has been operating under overload conditions for too long.",
Causes = new[] { "Sustained high load continuously exceeding Battery 2 discharge rating", "Battery 2 degradation reducing available power" },
NextSteps = new[] { "Reduce the total system load", "Check whether Battery 2 is correctly sized for the load requirements", "Restart the inverter after reducing load" }
},
["Battery2SoftStartFailure"] = new()
{
Explanation = "Battery 2 failed to complete the soft-start sequence during startup.",
Causes = new[] { "Pre-charge circuit fault for Battery 2", "Voltage mismatch between Battery 2 and the DC bus" },
NextSteps = new[] { "Check Battery 2 voltage and compare to DC bus voltage", "Inspect pre-charge circuit and contactors for Battery 2, then restart" }
},
["Battery2PowerTubeFault"] = new()
{
Explanation = "Battery 2 power electronics (IGBT or MOSFET transistors) have failed. Professional service is required.",
Causes = new[] { "Power semiconductor failure due to overstress, overcurrent, or component degradation", "Short circuit event damaging the power stage" },
NextSteps = new[] { "Do not restart the system", "Contact a qualified service technician for internal hardware repair" }
},
["Battery2InsufficientPower"] = new()
{
Explanation = "Battery 2 cannot provide sufficient power to meet the current load demand.",
Causes = new[] { "Battery 2 state of charge too low", "Load demand exceeds Battery 2 maximum discharge power", "Battery capacity degraded due to aging" },
NextSteps = new[] { "Wait for Battery 2 to recharge", "Reduce load during periods of low battery charge", "This alarm should clear once the battery has recovered charge" }
},
["Battery2BackupProhibited"] = new()
{
Explanation = "Battery 2 is currently prohibited from providing backup power.",
Causes = new[] { "Battery 2 BMS protection is active preventing discharge", "Battery 2 SOC is below the minimum backup threshold" },
NextSteps = new[] { "Check Battery 2 BMS status for fault codes", "Allow Battery 2 to charge above the minimum SOC required for backup, then restart" }
},
// Lithium battery specific alarms
["LithiumBattery1ChargeForbidden"] = new()
{
Explanation = "The lithium battery 1 BMS has forbidden charging. The battery management system has determined that charging is unsafe at this time.",
Causes = new[] { "Battery is already fully charged — no more charge needed", "Battery temperature is outside the safe charging range (too hot or too cold)", "BMS protection has activated due to cell voltage imbalance or internal fault", "Cell imbalance requiring balancing before charging can resume" },
NextSteps = new[] { "Check battery temperature — charging is typically blocked below 0°C or above ~45°C", "Check BMS status display or indicators for fault codes", "Allow the battery to reach normal temperature before charging", "If the issue persists at normal temperature, contact battery service" }
},
["LithiumBattery1DischargeForbidden"] = new()
{
Explanation = "The lithium battery 1 BMS has forbidden discharging. The battery management system has determined that discharging is unsafe at this time.",
Causes = new[] { "Battery is at or below minimum state of charge — too empty to safely discharge", "Battery temperature is outside the safe discharging range", "BMS low-voltage protection has activated", "Cell imbalance or internal BMS protection event" },
NextSteps = new[] { "Allow the battery to recharge from PV or grid until SOC is above the minimum threshold", "Check battery temperature — discharging is blocked in very cold conditions", "Check BMS status for any specific fault codes", "If the battery won't accept charge, contact battery service" }
},
["LithiumBattery2ChargeForbidden"] = new()
{
Explanation = "The lithium battery 2 BMS has forbidden charging.",
Causes = new[] { "Battery 2 is already fully charged", "Battery 2 temperature is outside the safe charging range", "BMS protection event on Battery 2" },
NextSteps = new[] { "Check Battery 2 temperature and BMS status", "Allow temperature to normalise before charging", "If the issue persists, check BMS fault codes" }
},
["LithiumBattery2DischargeForbidden"] = new()
{
Explanation = "The lithium battery 2 BMS has forbidden discharging.",
Causes = new[] { "Battery 2 is at minimum state of charge", "Battery 2 temperature is outside the safe discharging range", "BMS protection event on Battery 2" },
NextSteps = new[] { "Allow Battery 2 to recharge from PV or grid", "Check battery temperature and BMS status for fault codes", "If the battery will not recharge, contact battery service" }
},
["LithiumBattery1Full"] = new()
{
Explanation = "Lithium battery 1 is fully charged. Charging has automatically stopped.",
Causes = new[] { "Battery has reached 100% state of charge", "Cell voltage has reached maximum safe level" },
NextSteps = new[] { "This is normal operation — no action required", "Monitor battery health periodically to ensure cells are balancing correctly" }
},
["LithiumBattery1DischargeEnd"] = new()
{
Explanation = "Lithium battery 1 has reached the end of its discharge cycle — minimum safe SOC reached.",
Causes = new[] { "Battery has been discharged to the configured minimum SOC limit", "High overnight or daytime load depleted the battery" },
NextSteps = new[] { "Allow the battery to recharge from solar or grid power", "Consider reducing consumption during low-sunlight periods to preserve charge" }
},
["LithiumBattery2Full"] = new()
{
Explanation = "Lithium battery 2 is fully charged. Charging has automatically stopped.",
Causes = new[] { "Battery 2 has reached 100% state of charge" },
NextSteps = new[] { "This is normal operation — no action required", "The system will automatically resume charging if SOC drops" }
},
["LithiumBattery2DischargeEnd"] = new()
{
Explanation = "Lithium battery 2 has reached the end of its discharge cycle.",
Causes = new[] { "Battery 2 has been discharged to the configured minimum SOC limit" },
NextSteps = new[] { "Allow Battery 2 to recharge from solar or grid power", "This alarm will clear automatically once charge is restored" }
},
["LeadBatteryTemperatureAbnormality"] = new()
{
Explanation = "The lead-acid battery temperature is outside the normal operating range.",
Causes = new[] { "Battery overheating due to high ambient temperature or excessive charge current", "Temperature sensor fault giving incorrect readings", "Very cold environmental temperature slowing chemical reactions" },
NextSteps = new[] { "Check the battery temperature directly if safe to do so", "Improve battery ventilation or cooling if overheating", "Verify the temperature sensor is correctly connected and functioning", "Repair the underlying cause, then restart the inverter" }
},
["BatteryAccessMethodError"] = new()
{
Explanation = "The battery access method is incorrectly configured — the inverter and battery are not set up to communicate using the same protocol.",
Causes = new[] { "Incorrect battery communication protocol selected in inverter settings", "Battery type or model not matching the configured access method" },
NextSteps = new[] { "Check the battery communication settings in the inverter configuration", "Ensure the battery type and communication protocol match the connected battery, then restart" }
},
// PV 1 alarms
["Pv1NotAccessed"] = new()
{
Explanation = "PV string 1 is not detected or accessible. The inverter cannot see any voltage or current from PV string 1.",
Causes = new[] { "PV string 1 disconnector or isolator is open (turned off)", "Cable damage interrupting the string circuit", "PV module fault within the string", "No sunlight available (night or heavy cloud)" },
NextSteps = new[] { "Check the PV string 1 disconnector is in the ON position", "Verify all cable connections on PV string 1", "Check for shading or obstructions on the panels", "Repair any cable or connector damage found, then restart" }
},
["Pv1Overvoltage"] = new()
{
Explanation = "PV string 1 voltage exceeds the maximum DC input voltage of the inverter. This can damage the inverter.",
Causes = new[] { "Too many PV modules connected in series for this inverter model", "Cold temperature causing module Voc to increase significantly", "System design error — string was incorrectly sized" },
NextSteps = new[] { "Check how many modules are in series and compare to the inverter's maximum input voltage specification", "Verify Voc at the lowest expected site temperature — voltage must stay below inverter maximum", "Reduce the number of modules in series if necessary" }
},
["AbnormalPv1CurrentSharing"] = new()
{
Explanation = "PV string 1 current sharing is abnormal, suggesting uneven current flow in the string.",
Causes = new[] { "Mismatched PV modules with different electrical characteristics", "Partial shading on some panels causing bypass diodes to activate", "Module fault reducing current in part of the string" },
NextSteps = new[] { "Check for shading or soiling on PV string 1 panels", "Verify that all modules in the string are the same model and not damaged", "Repair the underlying fault, then restart the inverter" }
},
["Pv1PowerTubeFault"] = new()
{
Explanation = "The PV 1 DC converter power electronics (IGBT/MOSFET) have failed. This is a hardware fault.",
Causes = new[] { "IGBT or MOSFET failure due to overcurrent, overvoltage, or long-term degradation", "Short circuit or surge event damaging the power stage" },
NextSteps = new[] { "Do not restart the system", "Contact a qualified service technician for hardware repair" }
},
["Pv1SoftStartFailure"] = new()
{
Explanation = "PV string 1 failed to complete the soft-start (pre-charge) sequence during startup.",
Causes = new[] { "Pre-charge circuit fault preventing controlled startup", "PV voltage significantly different from expected DC bus level" },
NextSteps = new[] { "Check PV string 1 voltage at the inverter input terminals", "Repair any pre-charge circuit fault, then restart the inverter" }
},
["Pv1OverloadTimeout"] = new()
{
Explanation = "PV string 1 has been delivering excessive power beyond its rated capacity for too long.",
Causes = new[] { "PV array is oversized relative to the DC converter rating", "DC converter capacity limitation exceeded by strong irradiance" },
NextSteps = new[] { "Review whether the PV array sizing matches the inverter DC input rating", "Repair the underlying cause, then restart the inverter" }
},
["Pv1InsufficientPower"] = new()
{
Explanation = "PV string 1 is not providing enough power. This is typically a weather-related condition.",
Causes = new[] { "Low solar irradiance due to cloud cover or weather", "Shading on PV string 1 panels", "Early morning or late evening low sun angles" },
NextSteps = new[] { "Wait for better sunlight conditions — this will resolve on its own", "Check for new shading sources such as trees, buildings, or debris", "This alarm will clear automatically when irradiance recovers" }
},
["Photovoltaic1Overcurrent"] = new()
{
Explanation = "PV string 1 current is exceeding the inverter's maximum DC input current.",
Causes = new[] { "PV array is oversized with too many strings in parallel", "Ground fault causing abnormal current path", "Short circuit in part of the PV string" },
NextSteps = new[] { "Check PV string 1 configuration — verify number of parallel strings", "Inspect for ground faults or short circuits in the wiring", "Repair the underlying fault, then restart the inverter" }
},
// PV 2 alarms
["Pv2NotAccessed"] = new()
{
Explanation = "PV string 2 is not detected or accessible.",
Causes = new[] { "PV string 2 disconnector is open", "Cable damage on string 2", "No sunlight available" },
NextSteps = new[] { "Check the PV string 2 disconnector is ON", "Verify cable connections on string 2", "Repair any damage found, then restart the inverter" }
},
["Pv2Overvoltage"] = new()
{
Explanation = "PV string 2 voltage exceeds the maximum DC input voltage.",
Causes = new[] { "Too many PV modules in series on string 2", "Cold temperature increasing module Voc above inverter limits" },
NextSteps = new[] { "Verify string 2 module count and Voc against inverter specification", "Reduce modules in series if necessary to stay within voltage limits" }
},
["AbnormalPv2CurrentSharing"] = new()
{
Explanation = "PV string 2 current sharing is abnormal.",
Causes = new[] { "Mismatched or degraded modules in string 2", "Partial shading on string 2 panels" },
NextSteps = new[] { "Check string 2 panels for shading or soiling", "Repair the underlying fault, then restart the inverter" }
},
["Pv2PowerTubeFault"] = new()
{
Explanation = "The PV 2 DC converter power electronics have failed. Professional service is required.",
Causes = new[] { "Power semiconductor (IGBT/MOSFET) failure", "Damage from overcurrent or surge event" },
NextSteps = new[] { "Do not restart the system", "Contact a qualified service technician for hardware repair" }
},
["Pv2SoftStartFailure"] = new()
{
Explanation = "PV string 2 failed to complete the soft-start sequence.",
Causes = new[] { "Pre-charge fault on the PV 2 converter", "PV 2 voltage mismatch with DC bus" },
NextSteps = new[] { "Check PV string 2 input voltage", "Repair pre-charge fault, then restart the inverter" }
},
["Pv2OverloadTimeout"] = new()
{
Explanation = "PV string 2 has been delivering excessive power for too long.",
Causes = new[] { "PV string 2 array is oversized for the converter rating", "Prolonged high irradiance exceeding converter limits" },
NextSteps = new[] { "Review PV string 2 sizing versus inverter specification", "Repair the underlying cause, then restart the inverter" }
},
["Pv2InsufficientPower"] = new()
{
Explanation = "PV string 2 is not providing enough power. Typically weather-related.",
Causes = new[] { "Low solar irradiance or heavy shading on string 2", "Early morning or late evening sun angle too low" },
NextSteps = new[] { "Wait for better sunlight conditions", "Check for new shading sources on string 2 panels" }
},
// PV 3 alarms
["Pv3NotConnected"] = new()
{
Explanation = "PV string 3 is not connected or not detected.",
Causes = new[] { "PV string 3 disconnector is open", "Cable disconnected or damaged on string 3", "No sunlight available" },
NextSteps = new[] { "Check the PV string 3 disconnector is ON", "Verify cable connections on string 3", "Repair any damage found, then restart" }
},
["Pv3Overvoltage"] = new()
{
Explanation = "PV string 3 voltage exceeds the maximum DC input voltage.",
Causes = new[] { "Too many PV modules in series on string 3", "Cold temperature causing module Voc to rise above inverter limits" },
NextSteps = new[] { "Check string 3 module count against inverter maximum input voltage specification", "Reduce modules in series if voltage exceeds limits at minimum site temperature" }
},
["Pv3AverageCurrentAnomaly"] = new()
{
Explanation = "PV string 3 average current is abnormal, indicating uneven performance within the string.",
Causes = new[] { "Module mismatch or degradation within string 3", "Partial shading affecting some panels in string 3" },
NextSteps = new[] { "Inspect string 3 panels for shading, soiling, or damage", "Repair the underlying fault, then restart the inverter" }
},
["Pv3PowerTubeFailure"] = new()
{
Explanation = "PV 3 power electronics have failed. Professional service is required.",
Causes = new[] { "Power semiconductor failure from overstress or component aging", "Damage from overcurrent or surge" },
NextSteps = new[] { "Do not restart the system", "Contact a qualified service technician for internal hardware repair" }
},
["Pv3SoftStartFailure"] = new()
{
Explanation = "PV string 3 failed to complete the soft-start sequence.",
Causes = new[] { "Pre-charge circuit fault on PV 3 converter", "Voltage mismatch between PV 3 and the DC bus" },
NextSteps = new[] { "Check PV string 3 voltage at inverter terminals", "Repair pre-charge fault, then restart the inverter" }
},
["Pv3OverloadTimeout"] = new()
{
Explanation = "PV string 3 has been delivering excessive power for too long.",
Causes = new[] { "PV string 3 array oversized for the converter rating", "Sustained high irradiance exceeding DC converter limits" },
NextSteps = new[] { "Review PV string 3 sizing versus inverter specification", "Repair the underlying cause, then restart the inverter" }
},
["Pv3ReverseConnection"] = new()
{
Explanation = "PV string 3 is connected with reversed polarity. This is a wiring error that must be corrected before operation.",
Causes = new[] { "PV string 3 positive and negative cables swapped during installation", "Incorrect cable connection at the inverter DC input" },
NextSteps = new[] { "Do not attempt to restart — reversed polarity can damage components", "Power off completely, then swap PV string 3 positive and negative connections", "Verify correct polarity before restarting" }
},
// PV 4 alarms
["Pv4NotConnected"] = new()
{
Explanation = "PV string 4 is not connected or not detected.",
Causes = new[] { "PV string 4 disconnector is open", "Cable disconnected or damaged on string 4", "No sunlight available" },
NextSteps = new[] { "Check the PV string 4 disconnector is ON", "Verify cable connections on string 4", "Repair any damage found, then restart" }
},
["Pv4Overvoltage"] = new()
{
Explanation = "PV string 4 voltage exceeds the maximum DC input voltage.",
Causes = new[] { "Too many PV modules in series on string 4", "Cold temperature causing module Voc to rise above inverter limits" },
NextSteps = new[] { "Check string 4 module count against inverter maximum input voltage", "Reduce modules in series if voltage exceeds specification" }
},
["Pv4AverageCurrentAnomaly"] = new()
{
Explanation = "PV string 4 average current is abnormal.",
Causes = new[] { "Module mismatch or degradation within string 4", "Partial shading affecting panels in string 4" },
NextSteps = new[] { "Inspect string 4 panels for shading, soiling, or damage", "Repair the underlying fault, then restart the inverter" }
},
["Pv4PowerTubeFailure"] = new()
{
Explanation = "PV 4 power electronics have failed. Professional service is required.",
Causes = new[] { "Power semiconductor failure from overstress or aging", "Damage from overcurrent or surge event" },
NextSteps = new[] { "Do not restart the system", "Contact a qualified service technician for hardware repair" }
},
["Pv4SoftStartFailure"] = new()
{
Explanation = "PV string 4 failed to complete the soft-start sequence.",
Causes = new[] { "Pre-charge circuit fault on PV 4 converter", "Voltage mismatch between PV 4 and the DC bus" },
NextSteps = new[] { "Check PV string 4 voltage at inverter terminals", "Repair pre-charge fault, then restart the inverter" }
},
["Pv4OverloadTimeout"] = new()
{
Explanation = "PV string 4 has been delivering excessive power for too long.",
Causes = new[] { "PV string 4 array oversized for the converter rating", "Sustained high irradiance exceeding DC converter capacity" },
NextSteps = new[] { "Review PV string 4 sizing versus inverter specification", "Repair the underlying cause, then restart the inverter" }
},
["Pv4ReverseConnection"] = new()
{
Explanation = "PV string 4 is connected with reversed polarity. This must be corrected before operation.",
Causes = new[] { "PV string 4 positive and negative cables swapped during installation", "Incorrect cable connection at the inverter DC input" },
NextSteps = new[] { "Do not restart — power off completely first", "Swap PV string 4 positive and negative connections to correct polarity", "Verify polarity before restarting" }
},
["InsufficientPhotovoltaicPower"] = new()
{
Explanation = "Total available PV power is insufficient for the current load or system requirements.",
Causes = new[] { "Low solar irradiance due to cloud cover or weather", "Evening or morning — sun angle too low for full output", "Significant shading on one or more PV strings" },
NextSteps = new[] { "Wait for better sunlight conditions — this typically resolves on its own", "Check for shading on panels and remove if possible", "This alarm clears automatically when irradiance improves" }
},
// DC Bus alarms
["DcBusOvervoltage"] = new()
{
Explanation = "The internal DC bus voltage is too high. This may indicate an energy imbalance in the system.",
Causes = new[] { "Excessive charging power flowing into the DC bus without load to consume it", "Regenerative load feeding energy back into the DC bus", "DC bus voltage control fault" },
NextSteps = new[] { "Check the power balance between generation, load, and storage", "Repair the underlying fault, then restart the inverter" }
},
["DcBusUndervoltage"] = new()
{
Explanation = "The internal DC bus voltage is too low, preventing normal operation.",
Causes = new[] { "Load is drawing more power than is available from all sources", "Power supply or battery issue limiting DC bus voltage", "Battery approaching depletion" },
NextSteps = new[] { "Reduce load on the system", "Check all power sources — PV, grid, and battery — are functioning", "Repair the underlying cause, then restart the inverter" }
},
["DcBusVoltageUnbalance"] = new()
{
Explanation = "The DC bus voltage is unbalanced between the positive and negative halves.",
Causes = new[] { "Capacitor failure in the DC bus capacitor bank", "DC bus control issue", "Asymmetric loading between the two DC bus halves" },
NextSteps = new[] { "Check the DC bus capacitor bank for failed capacitors", "Repair the underlying fault, then restart the inverter" }
},
["BusSlowOvervoltage"] = new()
{
Explanation = "A slow, gradual rise in DC bus voltage beyond safe limits has been detected.",
Causes = new[] { "Gradual voltage rise due to charging imbalance over time", "Charging control issue allowing slow voltage creep" },
NextSteps = new[] { "Check charging power control and verify settings are correct", "Repair the underlying fault, then restart the inverter" }
},
["HardwareBusOvervoltage"] = new()
{
Explanation = "The hardware-level DC bus overvoltage protection has triggered. This is a severe overvoltage condition.",
Causes = new[] { "Severe overvoltage event from an external source or internal failure", "Component failure causing uncontrolled voltage rise" },
NextSteps = new[] { "Do not restart — this requires professional inspection", "Contact a service technician to investigate the cause of the overvoltage" }
},
["BusSoftStartFailure"] = new()
{
Explanation = "The DC bus failed to pre-charge and soft-start properly during startup.",
Causes = new[] { "Pre-charge resistor or circuit fault", "DC bus capacitor failure preventing proper charge-up", "Relay or contactor in the pre-charge path not operating correctly" },
NextSteps = new[] { "Check the pre-charge circuit and all associated relays", "Repair the underlying fault, then restart the inverter" }
},
// Inverter power tube and hardware faults
["InverterPowerTubeFault"] = new()
{
Explanation = "The main inverter power electronics (IGBT or MOSFET transistors) have failed. This is a hardware fault requiring professional service.",
Causes = new[] { "Power semiconductor failure due to prolonged overstress", "Overcurrent damage from a short circuit event", "Thermal damage from overheating", "Component end-of-life failure" },
NextSteps = new[] { "Do not attempt to restart — continued operation risks further damage", "Contact a qualified service technician immediately", "Hardware repair or module replacement is required" }
},
["HardwareOvercurrent"] = new()
{
Explanation = "Hardware overcurrent protection has tripped — the current has exceeded the absolute hardware limit.",
Causes = new[] { "Short circuit in the output wiring or connected loads", "Severe overload exceeding hardware protection threshold", "Internal power electronics component failure" },
NextSteps = new[] { "Do not restart until the cause is identified", "Contact a service technician to inspect for short circuits and component damage" }
},
["DcConverterOvervoltage"] = new()
{
Explanation = "The DC converter input or output voltage is too high.",
Causes = new[] { "Input voltage (PV or battery) exceeding converter limits", "DC converter voltage control fault" },
NextSteps = new[] { "Check PV and battery voltage levels", "Repair the underlying cause, then restart the inverter" }
},
["DcConverterHardwareOvervoltage"] = new()
{
Explanation = "The DC converter hardware overvoltage protection has triggered — a severe overvoltage condition has occurred.",
Causes = new[] { "Severe overvoltage at the DC converter input or output", "Lightning surge or external voltage spike" },
NextSteps = new[] { "Do not restart — contact a service technician to inspect for damage before any further operation" }
},
["DcConverterOvercurrent"] = new()
{
Explanation = "The DC converter current is too high.",
Causes = new[] { "Overload condition drawing too much current through the converter", "Short circuit in the DC circuit" },
NextSteps = new[] { "Reduce the load or charging/discharging power", "Check for short circuits, then restart the inverter" }
},
["DcConverterHardwareOvercurrent"] = new()
{
Explanation = "DC converter hardware overcurrent protection has triggered — absolute current limit exceeded.",
Causes = new[] { "Severe overcurrent from short circuit or hardware failure", "Power electronics fault causing uncontrolled current flow" },
NextSteps = new[] { "Do not restart — contact a service technician to inspect for damage before any further operation" }
},
["DcConverterResonatorOvercurrent"] = new()
{
Explanation = "The DC converter resonator circuit is experiencing overcurrent.",
Causes = new[] { "Resonance condition causing excessive current oscillation in the converter", "DC converter control issue affecting the resonant circuit" },
NextSteps = new[] { "Repair the underlying fault, then restart the inverter; if persistent, contact service" }
},
// Overload alarms
["SystemOutputOverload"] = new()
{
Explanation = "The total system output power is overloaded — more power is being demanded than the system can safely deliver.",
Causes = new[] { "Too many high-power loads connected simultaneously", "Total load demand exceeds the inverter's rated output capacity", "Short circuit in one of the connected loads" },
NextSteps = new[] { "Disconnect some loads to reduce total power consumption", "Check for any short circuits or faults in connected equipment", "Repair the underlying cause, then restart the inverter" }
},
["InverterOverload"] = new()
{
Explanation = "The inverter is overloaded — the load is drawing more power than the inverter is rated for.",
Causes = new[] { "Connected load power exceeds the inverter's rated continuous output", "High inrush current from large motors or compressors at startup", "Short circuit in a connected load" },
NextSteps = new[] { "Reduce the total connected load", "Stagger the startup of large appliances to reduce inrush current", "Repair the underlying cause, then restart the inverter" }
},
["InverterOverloadTimeout"] = new()
{
Explanation = "The inverter has been overloaded for too long and has tripped protection.",
Causes = new[] { "Sustained overload condition running beyond the inverter's short-term overload capability", "Inverter undersized for the actual load requirements" },
NextSteps = new[] { "Permanently reduce the connected load", "Consider upgrading to a larger inverter if the load is necessary", "Repair the underlying cause, then restart the inverter" }
},
["LoadPowerOverload"] = new()
{
Explanation = "The connected load power exceeds the system capacity.",
Causes = new[] { "Too many high-power appliances running simultaneously", "A new high-power device added that exceeds system rating" },
NextSteps = new[] { "Reduce load by switching off non-essential appliances", "Stagger use of high-power devices, then restart the inverter" }
},
["BalancedCircuitOverloadTimeout"] = new()
{
Explanation = "The phase balancing circuit has been overloaded for too long.",
Causes = new[] { "Unbalanced loading across phases — one phase carrying much more than others", "A single phase is significantly overloaded" },
NextSteps = new[] { "Redistribute loads more evenly across the three phases", "Repair the underlying cause, then restart the inverter" }
},
// Soft start failures
["InverterSoftStartFailure"] = new()
{
Explanation = "The inverter failed to complete its soft-start sequence during power-up.",
Causes = new[] { "Pre-charge resistor is faulty, preventing controlled DC bus charge-up", "Contactor or relay not closing correctly during startup sequence", "DC bus capacitor issue affecting pre-charge", "Control board fault preventing startup sequence completion" },
NextSteps = new[] { "Power cycle the system — switch off all disconnects, wait 30 seconds, then power back on", "Check the DC bus voltage rises smoothly during pre-charge", "If the fault persists, contact a service technician" }
},
// DSP and firmware alarms
["Dsp1ParameterSettingFault"] = new()
{
Explanation = "DSP 1 (digital signal processor) has detected an incorrect parameter configuration.",
Causes = new[] { "One or more inverter parameters set outside valid range", "Firmware corruption affecting parameter storage", "Configuration mismatch after firmware update" },
NextSteps = new[] { "Review all inverter parameter settings and correct any out-of-range values", "Reset parameters to factory defaults if unsure of correct values", "Repair the underlying cause, then restart the inverter" }
},
["Dsp2ParameterSettingFault"] = new()
{
Explanation = "DSP 2 has detected an incorrect parameter configuration.",
Causes = new[] { "One or more parameters set outside valid range", "Firmware corruption affecting parameter storage" },
NextSteps = new[] { "Review and correct parameter settings", "Repair the underlying cause, then restart the inverter" }
},
["DspVersionCompatibilityFault"] = new()
{
Explanation = "The DSP firmware version is incompatible with other system components.",
Causes = new[] { "Firmware versions between DSP and other boards do not match", "Incomplete or failed firmware update leaving components on different versions" },
NextSteps = new[] { "Update all firmware components to the same compatible version", "Contact technical support if the correct version is unknown" }
},
["CpldVersionCompatibilityFault"] = new()
{
Explanation = "The CPLD (Complex Programmable Logic Device) version is incompatible with the system.",
Causes = new[] { "CPLD firmware mismatch with other components", "Incomplete firmware update" },
NextSteps = new[] { "Perform a complete firmware update to ensure all components are on matching versions", "Restart the inverter after updating" }
},
["CpldCommunicationFault"] = new()
{
Explanation = "Communication with the CPLD internal chip has failed.",
Causes = new[] { "Internal communication bus fault between DSP and CPLD", "CPLD chip failure" },
NextSteps = new[] { "Power cycle the system — this may restore communication", "If the fault persists after restart, contact a service technician" }
},
["DspCommunicationFault"] = new()
{
Explanation = "Communication with the DSP has failed.",
Causes = new[] { "Internal communication bus fault", "DSP hardware failure" },
NextSteps = new[] { "Power cycle the system", "If the fault persists after restart, contact a service technician" }
},
// Output DC component alarms
["OutputVoltageDcOverlimit"] = new()
{
Explanation = "A DC voltage component has appeared in the AC output voltage, exceeding the allowed limit.",
Causes = new[] { "Control loop drift introducing DC offset into output", "Voltage sensor offset error", "Hardware issue in the output stage" },
NextSteps = new[] { "Restart the inverter — this often clears transient offsets", "If persistent, contact a service technician" }
},
["OutputCurrentDcOverlimit"] = new()
{
Explanation = "A DC current component has appeared in the AC output current, exceeding the allowed limit.",
Causes = new[] { "Control issue introducing DC offset in output current", "Current sensor fault or calibration error" },
NextSteps = new[] { "Restart the inverter", "If the fault persists, contact service for sensor inspection" }
},
// Relay alarms
["RelaySelfCheckFails"] = new()
{
Explanation = "The relay self-check has failed during startup or periodic testing.",
Causes = new[] { "Relay contact fault — contact may be damaged or welded", "Relay driver circuit fault", "Relay contacts have welded shut due to overcurrent" },
NextSteps = new[] { "Check relay operation by listening for click sounds during startup", "Repair the underlying fault, then restart the inverter" }
},
["InverterRelayOpen"] = new()
{
Explanation = "The inverter output relay is unexpectedly open when it should be closed.",
Causes = new[] { "Relay driver circuit fault preventing the relay from closing", "A protection event has tripped the relay open" },
NextSteps = new[] { "Check for other active protection alarms that may have opened the relay", "Repair the underlying fault, then restart the inverter" }
},
["InverterRelayShortCircuit"] = new()
{
Explanation = "The inverter relay contacts have welded shut (short circuit). The relay cannot open when required.",
Causes = new[] { "Relay contacts welded by excessive current during a fault event", "Relay component failure" },
NextSteps = new[] { "Do not restart — a welded relay is a safety hazard", "Contact a service technician to inspect and replace the relay" }
},
["OpenCircuitOfPowerGridRelay"] = new()
{
Explanation = "The grid connection relay is unexpectedly open.",
Causes = new[] { "Grid relay fault preventing normal closure", "Protection event has opened the grid relay", "Relay driver circuit issue" },
NextSteps = new[] { "Check for other active alarms that may explain the relay opening", "Inspect the relay and driver circuit, then restart the inverter" }
},
["ShortCircuitOfPowerGridRelay"] = new()
{
Explanation = "The grid relay contacts have welded shut and cannot open when needed.",
Causes = new[] { "Relay contacts welded by excessive current from a fault event", "Relay component failure or end-of-life" },
NextSteps = new[] { "Do not restart — contact a service technician to replace the relay before operating" }
},
["GeneratorRelayOpenCircuit"] = new()
{
Explanation = "The generator connection relay is unexpectedly open.",
Causes = new[] { "Generator relay fault preventing closure", "Protection event that opened the relay", "Relay driver circuit issue" },
NextSteps = new[] { "Check for other active alarms that may explain the relay state", "Inspect the relay circuit, then restart the inverter" }
},
["GeneratorRelayShortCircuit"] = new()
{
Explanation = "The generator relay contacts have welded shut and cannot open.",
Causes = new[] { "Relay contacts welded by excessive current", "Generator relay component failure" },
NextSteps = new[] { "Do not restart — contact a service technician to replace the generator relay before operation" }
},
// Abnormal inverter
["AbnormalInverter"] = new()
{
Explanation = "A general inverter abnormality has been detected. Check for any other more specific alarm codes that may indicate the root cause.",
Causes = new[] { "Internal control system fault with no more specific diagnostic available", "Multiple minor faults occurring simultaneously", "Power electronics operating outside normal parameters" },
NextSteps = new[] { "Power cycle the inverter and check if other specific alarms appear on restart", "Check all input voltages and load levels for abnormal values", "If the alarm persists, contact a service technician with the full alarm log" }
},
// Parallel operation alarms
["ParallelCommunicationAlarm"] = new()
{
Explanation = "Communication between the parallel-connected inverters has failed. Without communication, the inverters cannot synchronise and share load correctly.",
Causes = new[] { "Communication cable between parallel inverters is damaged or disconnected", "Parallel communication interface failure on one unit", "Settings mismatch between parallel units" },
NextSteps = new[] { "Check all parallel communication cables between inverter units", "Verify that all parallel settings (voltage, frequency, droop settings) match on all units", "Repair the underlying fault, then restart the inverter system" }
},
["ParallelModuleMissing"] = new()
{
Explanation = "One of the expected parallel inverter modules is not responding.",
Causes = new[] { "A parallel module has gone offline or powered down", "Communication link to one module has been lost", "A module has tripped on its own alarm" },
NextSteps = new[] { "Check all parallel inverter units for individual alarms or power loss", "Repair the underlying fault on the missing module, then restart" }
},
["DuplicateMachineNumbersForParallelModules"] = new()
{
Explanation = "Two parallel inverter modules have been configured with the same unit ID number, causing a conflict.",
Causes = new[] { "Configuration error — same unit number assigned to two different units during setup", "Duplicate address not detected during initial commissioning" },
NextSteps = new[] { "Access each unit's settings and assign a unique unit ID to each", "Repair the configuration, then restart the inverter system" }
},
["ParameterConflictInParallelModule"] = new()
{
Explanation = "A parameter conflict exists between parallel-connected inverter modules — their settings do not match.",
Causes = new[] { "Key parameters such as voltage setpoint, frequency, or droop settings differ between units", "One unit was updated or reconfigured without updating the others" },
NextSteps = new[] { "Compare settings across all parallel units and synchronise them to the same values", "Repair the configuration conflict, then restart the system" }
},
// System derating
["SystemDerating"] = new()
{
Explanation = "The system is operating at reduced output power (derating) to protect itself. Performance will be below rated levels until the underlying cause is resolved.",
Causes = new[] { "High inverter temperature causing thermal derating", "Input voltage (PV or grid) at the edge of operating range", "Component reaching operational limits" },
NextSteps = new[] { "Check inverter temperature and improve ventilation if overheating", "Verify input voltages are within the inverter's normal operating range", "Identify and resolve the specific derating cause — check if other alarms are also active" }
},
// PV access method
["PvAccessMethodErrorAlarm"] = new()
{
Explanation = "The PV input configuration method is incorrectly set, causing a mismatch between the physical wiring and the software configuration.",
Causes = new[] { "PV string wiring does not match the selected configuration (e.g. series vs parallel setting wrong)", "Wiring connected in a way not matching the inverter's configured PV access method" },
NextSteps = new[] { "Check the PV configuration settings and compare with the actual physical wiring", "Correct either the settings or the wiring to match, then restart" }
},
// Reserved alarms
["ReservedAlarms4"] = new()
{
Explanation = "Reserved alarm 4 is active. This alarm code is not documented in standard alarm tables.",
Causes = new[] { "An undocumented internal condition has been detected" },
NextSteps = new[] { "Monitor the system for other alarms that may give more context", "Contact technical support with the full alarm log if this persists" }
},
["ReservedAlarms5"] = new()
{
Explanation = "Reserved alarm 5 is active. This alarm code is not documented in standard alarm tables.",
Causes = new[] { "An undocumented internal condition has been detected" },
NextSteps = new[] { "Monitor the system for other alarms that may give more context", "Contact technical support with the full alarm log if this persists" }
},
// Meter alarms
["ReverseMeterConnection"] = new()
{
Explanation = "The energy meter is installed or wired in reverse. Meter readings (import/export) will be incorrect until this is corrected.",
Causes = new[] { "Current transformer (CT) installed facing the wrong direction", "Meter L and N wires connected in reverse at installation" },
NextSteps = new[] { "Do not rely on meter readings until corrected", "Contact your installer or a qualified electrician to reverse the CT or correct the meter wiring" }
},
// Seal pulse
["InverterSealPulse"] = new()
{
Explanation = "The inverter seal pulse signal is active, indicating output limiting is in effect.",
Causes = new[] { "A protection function has activated output limiting", "External signal or grid code compliance function limiting output" },
NextSteps = new[] { "Check system status for other active alarms explaining the limiting", "Repair the underlying cause, then restart the inverter" }
},
// Diesel generator alarms
["AbnormalDieselGeneratorVoltage"] = new()
{
Explanation = "The diesel generator voltage is outside the acceptable range for the inverter to connect to it.",
Causes = new[] { "Generator output voltage not adjusted to correct level", "Generator AVR (automatic voltage regulator) fault", "Generator underloaded or overloaded affecting output voltage" },
NextSteps = new[] { "Check and adjust the generator voltage output to match inverter specifications", "Inspect the AVR if voltage cannot be stabilised, then restart" }
},
["AbnormalDieselGeneratorFrequency"] = new()
{
Explanation = "The diesel generator frequency is outside the acceptable range.",
Causes = new[] { "Generator engine speed not correctly set for target frequency", "Governor fault causing frequency instability" },
NextSteps = new[] { "Adjust generator speed to achieve correct frequency (50 Hz or 60 Hz as applicable)", "Inspect and repair the governor if frequency cannot be stabilised, then restart" }
},
["DieselGeneratorVoltageReverseSequence"] = new()
{
Explanation = "The diesel generator is connected with reversed phase sequence.",
Causes = new[] { "Generator output wires connected in wrong phase order (L1, L2, L3 swapped)" },
NextSteps = new[] { "Do not restart — contact a qualified electrician to correct the generator phase wiring before operating" }
},
["DieselGeneratorVoltageOutOfPhase"] = new()
{
Explanation = "The generator voltage is out of phase with the grid or system, preventing synchronisation.",
Causes = new[] { "Synchronisation issue — generator not locking to grid phase angle", "Phase angle mismatch between generator and grid" },
NextSteps = new[] { "Check synchronisation settings and ensure the generator supports auto-sync with this inverter", "Repair the synchronisation fault, then restart" }
},
["GeneratorOverload"] = new()
{
Explanation = "The diesel generator is overloaded — the system is drawing more power than the generator is rated to supply.",
Causes = new[] { "Total load demand exceeds generator rated capacity", "Battery charging combined with load demand exceeding generator rating", "Generator undersized for the installation" },
NextSteps = new[] { "Reduce load or reduce battery charge rate to bring total demand within generator capacity", "Restart the inverter after load is reduced" }
},
};
// ── Growatt Alarms ───────────────────────────────────────────────────────
// Keys match GrowattWarningCode and GrowattErrorCode enum member names
private static readonly IReadOnlyDictionary<string, DiagnosticResponse> GrowattAlarms = new Dictionary<string, DiagnosticResponse>
{
// Warnings (200-series: PV/String)
["StringFault"] = new()
{
Explanation = "A string fault has been detected. One or more PV strings may have issues affecting power generation.",
Causes = new[] { "PV panel fault or damage within the string", "String wiring issue or loose connection", "Damaged or corroded MC4 connector", "Module degradation causing reduced or no output" },
NextSteps = new[] { "Check if PV panels are visually normal — look for cracks, discolouration, or damage", "Inspect string cable connections and MC4 connectors for damage or corrosion", "Look for damaged cables along the string route", "Have a technician test each string with a multimeter if the fault does not clear" }
},
["PvStringPidQuickConnectAbnormal"] = new()
{
Explanation = "PV string or PID quick-connect terminals are abnormal.",
Causes = new[] { "Loose or improperly latched quick-connect terminal", "Damaged quick-connect housing", "Corrosion or oxidation on terminal contacts" },
NextSteps = new[] { "Power off the system before inspecting any terminals", "Check all quick-connect terminals and ensure they are fully latched", "Clean corroded contacts and reconnect securely" }
},
["DcSpdFunctionAbnormal"] = new()
{
Explanation = "The DC surge protection device (SPD) function is abnormal. The SPD protects against lightning and voltage surges on the DC side.",
Causes = new[] { "DC SPD has triggered or failed after a surge event", "SPD cartridge has reached end-of-life", "SPD wiring fault" },
NextSteps = new[] { "Power off the system and check the DC SPD indicator — most SPDs have a visual fault flag", "Replace the SPD cartridge if it has triggered or shows fault", "Restart the inverter after replacement or inspection" }
},
["PvShortCircuited"] = new()
{
Explanation = "PV1 or PV2 string appears to be short-circuited.",
Causes = new[] { "Cable insulation damage causing a direct short between positive and negative conductors", "MC4 connector failure causing internal short", "Module junction box fault creating a short circuit path" },
NextSteps = new[] { "Power off all DC disconnectors before inspection", "Check PV1 and PV2 strings individually for short-circuit symptoms (zero voltage reading, abnormal heat)", "Inspect cables for damage and test isolation resistance", "Repair or replace damaged cables/connectors before restarting" }
},
["PvBoostDriverAbnormal"] = new()
{
Explanation = "The PV boost converter driver circuit is abnormal.",
Causes = new[] { "Boost driver circuit fault or component failure", "EMI interference affecting the driver signal", "Internal hardware issue on the inverter board" },
NextSteps = new[] { "Restart the inverter — transient driver faults often clear on reboot", "If the fault persists after restart, contact the manufacturer for service" }
},
["AcSpdFunctionAbnormal"] = new()
{
Explanation = "The AC surge protection device (SPD) function is abnormal. The SPD protects against lightning and surges on the AC side.",
Causes = new[] { "AC SPD has triggered or failed after a surge event", "SPD cartridge has reached end-of-life", "AC SPD wiring fault" },
NextSteps = new[] { "Power off the system and check the AC SPD indicator", "Replace the AC SPD cartridge if it shows a fault or has triggered", "Restart the inverter after replacement or inspection" }
},
["DcFuseBlown"] = new()
{
Explanation = "The DC fuse has blown, interrupting the PV input to the inverter.",
Causes = new[] { "Overcurrent in the DC circuit from PV array exceeding fuse rating", "Short circuit in DC wiring causing fuse to blow", "Fuse fatigue after repeated overcurrent events" },
NextSteps = new[] { "Power off all DC switches and disconnectors before working on the circuit", "Locate and inspect the DC fuse — it will appear visually blown or measure open with a multimeter", "Identify and repair the cause of overcurrent before replacing the fuse", "Replace fuse with correct rating, then restart the inverter" }
},
["DcInputVoltageTooHigh"] = new()
{
Explanation = "The DC input voltage from the PV array exceeds the inverter's maximum safe input voltage. This can damage the inverter immediately.",
Causes = new[] { "Too many PV modules connected in series, exceeding maximum string voltage", "Cold temperature increasing module open-circuit voltage (Voc) above inverter limit", "System design error — string was incorrectly sized for this inverter" },
NextSteps = new[] { "Turn off the DC switch immediately to protect the inverter", "Measure the actual DC voltage before reconnecting", "Recheck the string design — verify Voc at minimum expected temperature does not exceed inverter maximum", "Reconfigure the string by reducing modules in series if needed" }
},
["PvReversed"] = new()
{
Explanation = "The PV string polarity is reversed — positive and negative connections are swapped.",
Causes = new[] { "PV string cables connected with positive and negative reversed at the inverter or junction box", "Installation error during initial wiring" },
NextSteps = new[] { "Power off all DC disconnectors before working on the wiring", "Identify the reversed connection — check PV string polarity with a multimeter", "Swap the positive and negative connections to correct polarity before restarting" }
},
["PidFunctionAbnormal"] = new()
{
Explanation = "The PID (Potential Induced Degradation) protection function is abnormal.",
Causes = new[] { "PID module fault or configuration error", "Communication issue between inverter and PID module" },
NextSteps = new[] { "Restart the inverter — this often clears transient PID faults", "Check PID module settings and connections if it persists after restart" }
},
["PvStringDisconnected"] = new()
{
Explanation = "A PV string has been disconnected or is not delivering power.",
Causes = new[] { "DC disconnector or isolator for this string is open", "Cable has come loose or disconnected at a connector", "MC4 connector failure" },
NextSteps = new[] { "Check that all PV string disconnectors are in the ON position", "Verify cable connections at both panel and inverter ends", "Reconnect any loose connections and restart the inverter" }
},
["PvStringCurrentUnbalanced"] = new()
{
Explanation = "The currents from different PV strings are significantly unbalanced, suggesting one string is performing worse than the others.",
Causes = new[] { "Shading on some modules in one string but not others", "Module mismatch or degradation in part of the array", "Partial string failure — some modules not contributing", "Soiling or bird droppings on panels in one area" },
NextSteps = new[] { "Check all PV panels for shading, soiling, or visible damage", "Compare string voltages and currents individually to identify the underperforming string", "Clean panels if soiling is visible and check for new shading sources" }
},
// Warnings (300-series: Grid/AC)
["NoUtilityGrid"] = new()
{
Explanation = "No utility grid connection is detected, or grid power has failed.",
Causes = new[] { "Utility grid outage in your area", "AC circuit breaker between inverter and grid has tripped", "AC grid cable disconnected at the inverter or distribution board", "Utility maintenance work disconnecting the local supply" },
NextSteps = new[] { "Check if other appliances in the building have grid power — if not, it is a utility outage", "Verify the AC circuit breaker is ON and has not tripped", "Check AC cable connections at the inverter", "Wait for utility to restore power if it is a grid outage" }
},
["GridVoltageOutOfRange"] = new()
{
Explanation = "The utility grid voltage is outside the range the inverter is permitted to operate within.",
Causes = new[] { "Grid voltage is too high or too low at your connection point", "Local grid issues such as overloading or transformer problems", "Transformer tap setting not optimal for your location" },
NextSteps = new[] { "Check the actual grid voltage at the inverter terminals", "If grid voltage is consistently out of range, contact your utility provider", "The inverter will reconnect automatically when the voltage returns to normal" }
},
["GridFrequencyOutOfRange"] = new()
{
Explanation = "The utility grid frequency is outside the range the inverter is permitted to operate within.",
Causes = new[] { "Grid frequency unstable due to high load events on the network", "If using a generator, generator frequency has drifted outside tolerance", "Grid disturbance event" },
NextSteps = new[] { "Check the actual grid frequency at the inverter", "If on generator, adjust governor to correct output frequency", "Wait for grid to stabilise — the inverter reconnects automatically" }
},
["Overload"] = new()
{
Explanation = "The system is experiencing an overload — more power is being demanded than the inverter can supply to the backup (EPS) output.",
Causes = new[] { "Total connected load on EPS output exceeds inverter backup capacity", "Inrush current from appliances with motors or compressors starting up", "Short circuit in one of the backup loads" },
NextSteps = new[] { "Reduce the load on the EPS output by switching off non-essential appliances", "Check for any faulty appliances that may be drawing excessive current", "Stagger startup of large appliances to reduce inrush current" }
},
["MeterDisconnected"] = new()
{
Explanation = "The energy meter has lost communication with the inverter.",
Causes = new[] { "Energy meter has powered off or lost power", "Communication cable between inverter and meter is damaged or disconnected", "Meter communication port failure" },
NextSteps = new[] { "Check that the energy meter has power and is powered on", "Verify the communication cable connections at both the inverter and meter", "Check meter power supply and communication port" }
},
["MeterReverselyConnected"] = new()
{
Explanation = "The energy meter L (line) and N (neutral) wires are connected in reverse.",
Causes = new[] { "L and N wires swapped at the meter during installation", "Installation mistake — common when meter polarity is not checked" },
NextSteps = new[] { "Have a qualified electrician check and correct the meter wiring", "Swap L and N connections at the meter terminal to correct polarity" }
},
["LinePeVoltageAbnormal"] = new()
{
Explanation = "Abnormal voltage detected between the neutral (N) wire and protective earth (PE). This can indicate a grounding or wiring fault.",
Causes = new[] { "Poor or missing PE (protective earth) connection", "N and PE wires shorted together at some point in the installation", "Ground fault somewhere in the building wiring" },
NextSteps = new[] { "Power off the system before inspecting any wiring", "Check that the PE (earth) cable is reliably connected at the inverter and distribution board", "Verify grounding system integrity — have a qualified electrician investigate if needed" }
},
["PhaseSequenceError"] = new()
{
Explanation = "A phase sequence error has been detected in the three-phase connection. The inverter will attempt to auto-correct.",
Causes = new[] { "Three-phase wires connected in the wrong order (L1, L2, L3 swapped)" },
NextSteps = new[] { "No immediate action required — the PCS will automatically adjust phase sequence for most cases", "If alarm persists, have an electrician verify and correct the phase wiring order" }
},
// Warnings (400-series: System/Internal)
["FanFailure"] = new()
{
Explanation = "A cooling fan failure has been detected. Without proper cooling, the inverter will overheat and shut down.",
Causes = new[] { "Fan motor failure — fan is no longer spinning", "Fan blades blocked by debris or foreign objects", "Fan power connector loose or disconnected", "Fan control circuit fault" },
NextSteps = new[] { "Power off the inverter before inspecting the fan", "Check if the fan spins freely and is not obstructed", "Verify the fan power connector is secure", "Replace the fan if it has failed — do not operate the inverter without cooling" }
},
["MeterAbnormal"] = new()
{
Explanation = "The energy meter is reporting abnormal readings.",
Causes = new[] { "Meter malfunction or internal fault", "Incorrect meter configuration or scaling", "Communication issue causing data errors" },
NextSteps = new[] { "Check that the meter is powered on and functioning", "Verify meter configuration matches the inverter settings (CT ratio, communication protocol)" }
},
["OptimizerCommunicationAbnormal"] = new()
{
Explanation = "Communication with a PV module-level optimizer has failed.",
Causes = new[] { "Optimizer has powered off or is not receiving PV power", "Communication interference on the power line", "Optimizer hardware fault" },
NextSteps = new[] { "Check that the optimizer is receiving PV voltage and is powered on", "Verify communication wiring between inverter and optimizers", "Replace the optimizer if it is confirmed faulty" }
},
["OverTemperature"] = new()
{
Explanation = "The inverter temperature has exceeded the normal operating limit. Power output may be reduced to protect the hardware.",
Causes = new[] { "Poor ventilation — hot air trapped around the inverter", "High ambient temperature in the installation area", "Cooling fan failure reducing airflow through the inverter", "Excessive load causing the inverter to run hot" },
NextSteps = new[] { "Restart the inverter after it has cooled down", "Improve ventilation — ensure adequate clearance around the inverter on all sides", "Check that the cooling fan is running correctly", "Contact the manufacturer if the alarm persists despite good ventilation" }
},
["OverTemperatureAlarm"] = new()
{
Explanation = "The inverter has detected an elevated temperature alarm — this is an early warning before thermal shutdown occurs.",
Causes = new[] { "High ambient temperature in the installation space", "Poor airflow or blocked ventilation around the inverter", "Heavy load running during hot weather conditions", "Cooling fan running at reduced speed or intermittently" },
NextSteps = new[] { "Improve ventilation around the inverter immediately", "Reduce load temporarily to allow the inverter to cool", "Check fan operation and clear any blocked vents", "Monitor temperature until it drops below the alarm threshold" }
},
["NtcTemperatureSensorBroken"] = new()
{
Explanation = "The NTC temperature sensor inside the inverter is broken or disconnected.",
Causes = new[] { "NTC sensor element has failed due to aging or mechanical damage", "Sensor cable damaged or disconnected from the board", "Sensor connector has come loose from the PCB" },
NextSteps = new[] { "Restart the inverter — if the sensor is truly broken the alarm will persist after restart", "If alarm persists, a technician will need to inspect and replace the NTC sensor inside the inverter" }
},
["SyncSignalAbnormal"] = new()
{
Explanation = "The synchronisation signal between parallel-connected inverters is abnormal.",
Causes = new[] { "Synchronisation cable between parallel inverters is damaged or disconnected", "Sync communication interface failure on one unit", "Configuration mismatch between units" },
NextSteps = new[] { "Check the synchronisation cable connections between all parallel inverter units", "Verify parallel communication settings match on all units", "Replace cable if damaged" }
},
["GridStartupConditionsNotMet"] = new()
{
Explanation = "The startup conditions for connecting to the grid have not been met. The inverter is waiting for the grid to meet required parameters before connecting.",
Causes = new[] { "Grid voltage or frequency is outside the permitted range for connection", "Grid startup voltage threshold configured incorrectly" },
NextSteps = new[] { "Check that the grid voltage is within the inverter's permitted operating range", "Review the grid-connection startup voltage and frequency configuration settings" }
},
// Warnings (500-series: Battery)
["BatteryCommunicationFailure"] = new()
{
Explanation = "The inverter cannot communicate with the battery BMS (battery management system). Without BMS communication, charging and discharging cannot be safely managed.",
Causes = new[] { "Battery BMS is offline or powered down", "RS485 or CAN communication cable between inverter and battery is faulty or disconnected", "Communication protocol mismatch between inverter and battery", "Battery in sleep mode — BMS has entered low-power state" },
NextSteps = new[] { "Verify the battery system is powered on and not in sleep mode", "Check the RS485 communication cable between inverter and battery — inspect for damage", "Verify the battery communication protocol setting in the inverter matches the battery BMS", "Wake the battery if it is in sleep mode by pressing the battery power button" }
},
["BatteryDisconnected"] = new()
{
Explanation = "The battery is not connected to the inverter. The system is running without battery storage.",
Causes = new[] { "Battery circuit breaker or isolator is switched off", "Battery cable has come loose or been disconnected", "BMS has shut down the battery due to a protection event", "Battery hardware fault preventing connection" },
NextSteps = new[] { "Check that the battery circuit breaker is in the ON position", "Verify battery cable connections at both inverter and battery terminals", "Check BMS status indicators for any fault or protection codes", "Resolve any BMS protection events before reconnecting" }
},
["BatteryVoltageTooHigh"] = new()
{
Explanation = "The battery voltage is above the maximum permitted level. Charging may have caused the voltage to exceed safe limits.",
Causes = new[] { "Battery has been overcharged beyond its maximum voltage", "BMS fault allowing voltage to rise too high without protection", "Cell imbalance causing individual cells to overcharge", "Incorrect maximum charge voltage setting in the inverter" },
NextSteps = new[] { "Check the battery voltage and compare to the manufacturer's maximum specification", "Verify the charge voltage settings in the inverter configuration", "Check BMS operation — the BMS should have protected against overvoltage" }
},
["BatteryVoltageTooLow"] = new()
{
Explanation = "The battery voltage is below the minimum permitted level. The battery is deeply discharged.",
Causes = new[] { "Battery has been discharged beyond its minimum safe voltage", "Individual battery cell failure reducing pack voltage", "High load draining battery faster than it can be charged", "BMS low-voltage cutoff has activated" },
NextSteps = new[] { "Check the battery voltage and compare to the manufacturer's minimum specification", "Allow the battery to recharge — first using any available grid power if solar is insufficient", "If voltage is extremely low, the battery may need professional recovery charging" }
},
["BatteryReverseConnected"] = new()
{
Explanation = "The battery is connected with reversed polarity. This is dangerous and can cause immediate damage.",
Causes = new[] { "Battery positive and negative terminals connected to wrong inverter terminals during installation", "Installation error — a serious wiring mistake" },
NextSteps = new[] { "IMMEDIATELY power off the entire system — do not charge or discharge", "Check all battery cable connections before touching anything", "Have a qualified electrician verify and correct the battery polarity", "Inspect for any damage to cables, fuses, or the inverter before restarting" }
},
["LeadAcidTempSensorDisconnected"] = new()
{
Explanation = "The lead-acid battery temperature sensor is disconnected or not installed.",
Causes = new[] { "Temperature sensor was not installed with the battery", "Sensor cable has come loose or been damaged", "Sensor connector pulled out from the battery or inverter" },
NextSteps = new[] { "Check whether a temperature sensor is installed on the lead-acid battery — it is typically a small probe clipped to the battery", "Verify the sensor cable connections at both ends", "Install or reconnect the sensor as required by the installation instructions" }
},
["BatteryTemperatureOutOfRange"] = new()
{
Explanation = "The battery temperature is outside the safe range for charging or discharging.",
Causes = new[] { "High ambient temperature in the battery installation area", "Poor battery ventilation causing heat buildup", "Battery overheating during heavy charging or discharging", "Very cold ambient temperature in winter reducing battery performance" },
NextSteps = new[] { "Check the ambient temperature in the battery installation area", "Improve battery ventilation or move the battery to a cooler location if overheating", "In cold climates, ensure the battery is not exposed to freezing temperatures — below 0°C charging is typically not allowed" }
},
["BmsFault"] = new()
{
Explanation = "The battery BMS has reported a fault that is preventing normal charging and discharging.",
Causes = new[] { "BMS internal fault or protection event triggered by the battery", "Individual cell protection has activated due to overvoltage, undervoltage, or temperature", "BMS communication error causing fault reporting" },
NextSteps = new[] { "Check the battery system display or indicator lights for a BMS-specific fault or error code", "Refer to the battery manufacturer's documentation for the specific BMS fault code", "Contact battery support if the BMS fault cannot be cleared by a power cycle" }
},
["LithiumBatteryOverload"] = new()
{
Explanation = "Lithium battery overload protection has activated — the load is drawing more power than the battery is rated to discharge.",
Causes = new[] { "Total load power exceeds the battery's rated maximum discharge power", "High inrush current from large motors or compressors temporarily exceeding battery limits" },
NextSteps = new[] { "Check the total load power and compare to the battery's rated discharge power", "Reduce load by switching off high-power appliances", "Stagger startup of large appliances to reduce peak demand" }
},
["BmsCommunicationAbnormal"] = new()
{
Explanation = "Communication with the BMS is abnormal — data is being received intermittently or with errors.",
Causes = new[] { "Communication timeout due to cable quality or length issues", "Protocol error or baud rate mismatch", "Physical cable fault causing intermittent connection" },
NextSteps = new[] { "Restart the inverter to attempt re-establishing communication", "Check BMS communication cable for damage or loose connections", "Verify communication settings (protocol, baud rate) match between inverter and BMS" }
},
["BatterySpdAbnormal"] = new()
{
Explanation = "The battery-side surge protection device (SPD) function is abnormal.",
Causes = new[] { "Battery SPD has triggered due to a surge event", "SPD has failed or reached end of life", "Lightning-induced surge on the battery wiring" },
NextSteps = new[] { "Power off the system and inspect the battery SPD indicator", "Replace the SPD if it shows a triggered or fault state", "Restart the system after replacement" }
},
// Warnings (600-series: Off-grid/EPS)
["OutputDcComponentBiasAbnormal"] = new()
{
Explanation = "A DC bias component in the output is abnormal, which could affect sensitive connected equipment.",
Causes = new[] { "Control loop drift introducing DC offset into the AC output", "Sensor calibration drift on the output measurement", "Hardware fault in the output stage" },
NextSteps = new[] { "Restart the inverter — DC bias faults often clear after reboot", "If the fault persists, contact the manufacturer for service" }
},
["DcComponentOverHighOutputVoltage"] = new()
{
Explanation = "The DC component in the output voltage is too high. This can affect sensitive equipment and indicates a control issue.",
Causes = new[] { "Control loop drift causing DC offset to accumulate in output voltage", "Output voltage sensor fault", "Transformer saturation or DC path issue" },
NextSteps = new[] { "Restart the inverter to reset the control loops", "Check output voltage for DC offset if equipment is affected" }
},
["OffGridOutputVoltageTooLow"] = new()
{
Explanation = "The off-grid (EPS/backup) output voltage is too low to properly supply connected loads.",
Causes = new[] { "Load exceeds inverter backup capacity causing voltage sag", "Battery voltage too low to maintain stable output voltage", "Internal inverter limitation" },
NextSteps = new[] { "Restart the inverter", "Reduce the load on the backup output", "Allow battery to charge if SOC is low", "If fault persists, contact the manufacturer" }
},
["OffGridOutputVoltageTooHigh"] = new()
{
Explanation = "The off-grid output voltage is too high, which could damage connected equipment.",
Causes = new[] { "Control fault causing output voltage regulation to fail high", "Voltage reference error in the control system" },
NextSteps = new[] { "Restart the inverter", "If the fault persists, contact the manufacturer immediately as high output voltage can damage appliances" }
},
["OffGridOutputOverCurrent"] = new()
{
Explanation = "The off-grid output current is exceeding the overcurrent limit.",
Causes = new[] { "Total load current exceeds the inverter's backup output current rating", "Short circuit in one of the backup loads", "Inrush current from large motor startup" },
NextSteps = new[] { "Check that all loads on the backup output are within the inverter's current specification", "Disconnect loads one by one to identify any faulting appliance", "Repair or remove the overloading load before restarting" }
},
["OffGridBusVoltageTooLow"] = new()
{
Explanation = "The off-grid DC bus voltage is too low to maintain stable backup power.",
Causes = new[] { "Battery is near empty with insufficient charge to sustain backup operation", "High load demand drawing down the battery faster than it can recover", "Power electronics issue affecting DC bus voltage" },
NextSteps = new[] { "Check if the total load power is within the inverter's off-grid power limit", "Allow the battery to charge before resuming backup operation", "Reduce backup load if battery charge is low" }
},
["OffGridOutputOverload"] = new()
{
Explanation = "The off-grid (EPS/backup) output is overloaded — more power is being demanded than the inverter can supply in backup mode.",
Causes = new[] { "Total load on EPS output exceeds inverter backup capacity", "Too many appliances connected to the backup circuit simultaneously", "Large motor or compressor causing excessive inrush current" },
NextSteps = new[] { "Check that all loads are within the inverter's EPS output specification", "Reduce the number of appliances on the backup circuit", "Stagger startup of large appliances during backup operation" }
},
["BalancedCircuitAbnormal"] = new()
{
Explanation = "The phase balancing circuit is operating abnormally.",
Causes = new[] { "Phase balance circuit internal fault", "Control issue affecting phase balance operation" },
NextSteps = new[] { "Restart the inverter", "If the fault persists, check phase balance settings and contact service" }
},
// Errors (Protection-level faults)
["ExportLimitationFailSafe"] = new()
{
Explanation = "The export limitation fail-safe has triggered. The inverter has stopped feeding power to the grid because it cannot verify export limits are being enforced.",
Causes = new[] { "CT (current transformer) sensor is disconnected or measuring incorrectly", "Meter communication has been lost preventing export monitoring", "Export limit feedback loop has failed — the inverter cannot confirm grid export is controlled" },
NextSteps = new[] { "Power off the system before inspecting CT or meter connections", "Check the CT sensor is correctly installed and securely connected", "Verify the energy meter communication cable is intact", "Confirm export limit settings and feedback are correctly configured, then restart" }
},
["DcBiasAbnormal"] = new()
{
Explanation = "The DC injection (DCI) protection has detected abnormal DC bias in the AC output — a safety protection preventing DC from being injected into the grid.",
Causes = new[] { "DC injection into the grid from the inverter output", "Output current sensor fault giving incorrect readings", "Transformer saturation or control issue" },
NextSteps = new[] { "Restart the inverter — this sometimes clears transient DCI faults", "If the fault persists, the inverter requires professional service" }
},
["HighDcComponentOutputCurrent"] = new()
{
Explanation = "High DC component detected in the AC output current. This is a protection condition.",
Causes = new[] { "Output filter issue allowing DC component through", "Control fault affecting current waveform symmetry", "Output transformer saturation" },
NextSteps = new[] { "Restart the inverter", "Check output current waveform quality if measurement equipment is available", "If persistent, contact the manufacturer for service" }
},
["BusVoltageSamplingAbnormal"] = new()
{
Explanation = "The DC bus voltage measurement is abnormal — the sensor is giving incorrect readings.",
Causes = new[] { "Voltage sensor or measurement circuit fault", "ADC (analogue to digital converter) error on the control board", "Hardware issue affecting measurement accuracy" },
NextSteps = new[] { "Restart the inverter", "If persistent, the measurement circuit requires professional service" }
},
["RelayFault"] = new()
{
Explanation = "An internal relay fault has been detected. The relay is not operating as expected.",
Causes = new[] { "Relay has failed — contacts stuck open or closed", "Contact welding from overcurrent event", "Relay driver circuit fault" },
NextSteps = new[] { "Restart the inverter to reset the relay", "If the fault persists, the relay likely needs replacement — contact service" }
},
["BusVoltageAbnormal"] = new()
{
Explanation = "The internal DC bus voltage is abnormal.",
Causes = new[] { "Power electronics fault affecting DC bus regulation", "Capacitor issue in the DC bus", "Control system failure" },
NextSteps = new[] { "Restart the inverter", "If persistent, the system requires professional inspection" }
},
["InternalCommunicationFailure"] = new()
{
Explanation = "Internal communication has failed between control boards inside the inverter.",
Causes = new[] { "Communication board fault or failure", "Internal ribbon cable or connector has come loose", "Electromagnetic interference (EMI) affecting internal communication" },
NextSteps = new[] { "Power off the inverter, wait 30 seconds, then restart to see if communication restores", "If persistent, a technician should open the inverter and check internal communication cable connections" }
},
["TemperatureSensorDisconnected"] = new()
{
Explanation = "A temperature sensor inside the inverter is disconnected, preventing proper thermal monitoring.",
Causes = new[] { "Sensor element has failed or detached from its mounting", "Sensor cable is damaged or disconnected", "Sensor connector has pulled out from the PCB" },
NextSteps = new[] { "Power off the inverter and check internal sensor wiring if accessible", "If not accessible, contact a service technician to inspect and replace the sensor" }
},
["IgbtDriveFault"] = new()
{
Explanation = "An IGBT gate drive fault has been detected. The IGBT is not being driven correctly, which can prevent proper power conversion.",
Causes = new[] { "Gate driver circuit failure", "IGBT transistor fault — device may have failed", "Gate driver power supply issue" },
NextSteps = new[] { "Restart the inverter — minor transient gate faults can clear on reboot", "If persistent, this requires professional service — IGBT or driver replacement" }
},
["EepromError"] = new()
{
Explanation = "An EEPROM read or write error has occurred. The inverter's non-volatile memory is not functioning correctly.",
Causes = new[] { "EEPROM chip has failed — common after many years of operation", "Data corruption in the EEPROM memory", "Hardware failure on the memory circuit" },
NextSteps = new[] { "Restart the inverter — this may clear a transient memory error", "If persistent, a factory reset may restore function; contact support before attempting" }
},
["AuxiliaryPowerAbnormal"] = new()
{
Explanation = "The internal auxiliary power supply is abnormal. This supply powers the control electronics.",
Causes = new[] { "Internal auxiliary power supply component failure", "Voltage regulator fault on the control board" },
NextSteps = new[] { "Restart the inverter", "If persistent, contact service — the auxiliary supply may need replacement" }
},
["DcAcOvercurrentProtection"] = new()
{
Explanation = "DC/AC overcurrent protection has triggered — current has exceeded the safe limit.",
Causes = new[] { "Short circuit in the AC output wiring or connected loads", "Severe overload far exceeding rated capacity", "Power electronics fault causing overcurrent" },
NextSteps = new[] { "Restart the inverter after checking for and removing any short circuits", "Check all connected loads for faults", "Reduce load before restarting" }
},
["CommunicationProtocolMismatch"] = new()
{
Explanation = "A communication protocol mismatch has been detected between components.",
Causes = new[] { "Firmware versions between control boards do not match", "Communication configuration error" },
NextSteps = new[] { "Restart the inverter", "If persistent, perform a full firmware update to ensure all components are on matching versions" }
},
["DspComFirmwareMismatch"] = new()
{
Explanation = "The DSP (signal processor) and COM (communication) board firmware versions do not match.",
Causes = new[] { "Firmware update was incomplete, leaving boards on different versions", "Wrong firmware file was loaded to one of the boards" },
NextSteps = new[] { "Restart the inverter", "Perform a complete firmware update — update all boards to the correct matching version" }
},
["DspSoftwareHardwareMismatch"] = new()
{
Explanation = "The DSP software version is incompatible with the hardware version.",
Causes = new[] { "Hardware board was replaced with a newer or older revision that requires a different firmware version" },
NextSteps = new[] { "Restart the inverter", "Contact technical support to identify the correct firmware version for this hardware revision" }
},
["CpldAbnormal"] = new()
{
Explanation = "The CPLD (Complex Programmable Logic Device) inside the inverter is operating abnormally.",
Causes = new[] { "CPLD chip failure or firmware corruption", "Power supply issue affecting CPLD operation" },
NextSteps = new[] { "Restart the inverter", "If persistent, this requires professional service — CPLD replacement or reprogramming" }
},
["RedundancySamplingInconsistent"] = new()
{
Explanation = "The redundant voltage or current sampling circuits are giving inconsistent results — the two measurement paths disagree.",
Causes = new[] { "One of the redundant sensors has drifted or failed", "ADC calibration error on one measurement channel", "Hardware fault on one of the measurement circuits" },
NextSteps = new[] { "Restart the inverter to reset measurement circuits", "If persistent, recalibration or sensor replacement may be required — contact service" }
},
["PwmPassThroughSignalFailure"] = new()
{
Explanation = "The PWM (pulse-width modulation) pass-through signal path has failed.",
Causes = new[] { "Control board fault affecting PWM signal routing", "Signal path hardware issue" },
NextSteps = new[] { "Restart the inverter", "If persistent, contact service — this requires internal board inspection" }
},
["AfciSelfTestFailure"] = new()
{
Explanation = "The AFCI (Arc Fault Circuit Interrupter) self-test has failed. The AFCI protects against dangerous arc faults in PV wiring.",
Causes = new[] { "AFCI detection module fault preventing self-test completion", "Self-test circuit issue on the control board" },
NextSteps = new[] { "Restart the inverter to attempt another self-test", "If the self-test continues to fail, the AFCI module may need replacement — contact service" }
},
["PvCurrentSamplingAbnormal"] = new()
{
Explanation = "The PV current measurement is giving abnormal readings.",
Causes = new[] { "PV current sensor or hall-effect sensor fault", "ADC error on the current measurement channel" },
NextSteps = new[] { "Restart the inverter", "If persistent, the current sensor circuit requires professional service" }
},
["AcCurrentSamplingAbnormal"] = new()
{
Explanation = "The AC current measurement is giving abnormal readings.",
Causes = new[] { "CT (current transformer) sensor fault or incorrect connection", "AC current sensor failure", "ADC error on the AC measurement channel" },
NextSteps = new[] { "Restart the inverter", "Check CT connections and orientation if accessible", "If persistent, the measurement circuit requires professional service" }
},
["BusSoftbootFailure"] = new()
{
Explanation = "The DC bus failed to soft-boot (pre-charge) correctly during startup.",
Causes = new[] { "Pre-charge circuit fault preventing controlled capacitor charge-up", "DC bus capacitor issue", "Pre-charge relay or contactor fault" },
NextSteps = new[] { "Restart the inverter", "If persistent, the pre-charge circuit requires professional service" }
},
["EpoFault"] = new()
{
Explanation = "An EPO (Emergency Power Off) fault has been triggered.",
Causes = new[] { "EPO emergency stop button was pressed", "EPO circuit has been activated by an external safety system", "EPO circuit fault triggering shutdown unintentionally" },
NextSteps = new[] { "Check if the EPO button was pressed — reset it if so", "Verify the EPO circuit wiring if activation was unintentional", "Restart the inverter after confirming EPO circuit is clear" }
},
["MonitoringChipBootVerificationFailed"] = new()
{
Explanation = "The monitoring chip failed to pass boot verification — the chip's firmware or startup sequence has an issue.",
Causes = new[] { "Firmware corruption on the monitoring chip", "Monitoring chip hardware failure" },
NextSteps = new[] { "Restart the inverter — boot verification failures sometimes resolve on retry", "If persistent, firmware reload or chip replacement may be required — contact service" }
},
// Battery Errors
["BmsCommunicationFailure"] = new()
{
Explanation = "The BMS has failed to communicate with the inverter. Charging and discharging cannot be safely managed without BMS communication.",
Causes = new[] { "RS485 communication cable between inverter and battery is faulty or disconnected", "BMS has powered off or is unresponsive", "Communication protocol mismatch between inverter and BMS" },
NextSteps = new[] { "Check the RS485 cable connection between the inverter and battery — inspect both ends", "Verify the battery is powered on and the BMS is active", "Check that the communication protocol setting matches the battery BMS" }
},
["BmsChargeDischargeFailure"] = new()
{
Explanation = "The BMS has reported that the battery cannot charge or discharge.",
Causes = new[] { "BMS internal protection has triggered — cell overvoltage, undervoltage, or temperature fault", "BMS hardware fault causing charge/discharge to be blocked", "Battery cell issue detected by BMS" },
NextSteps = new[] { "Check the battery display or BMS indicator for a specific error code", "Refer to the battery manufacturer's documentation for the BMS fault code", "Contact battery support if the fault cannot be cleared" }
},
["BatteryVoltageLow"] = new()
{
Explanation = "Battery voltage is below the minimum permitted level.",
Causes = new[] { "Battery has been deeply discharged below safe minimum voltage", "Individual cell failure reducing overall pack voltage" },
NextSteps = new[] { "Check the battery voltage — if critically low, professional recovery charging may be needed", "Allow battery to recharge slowly from grid before resuming normal operation" }
},
["BatteryVoltageHigh"] = new()
{
Explanation = "Battery voltage exceeds the maximum permitted upper threshold.",
Causes = new[] { "Battery has been overcharged beyond its maximum voltage", "BMS fault allowing voltage to rise without protection", "Individual cell failure creating high voltage in part of the pack" },
NextSteps = new[] { "Check the battery voltage and compare to the manufacturer's maximum specification", "If voltage is within permissible range, restart the inverter", "If voltage is genuinely too high, stop charging immediately and contact battery service" }
},
["BatteryTemperatureAbnormal"] = new()
{
Explanation = "The battery temperature is outside the safe range for charging or discharging.",
Causes = new[] { "Battery is too hot — poor ventilation or high ambient temperature", "Battery is too cold — freezing or near-freezing environment", "Battery temperature sensor fault giving incorrect readings" },
NextSteps = new[] { "Check the physical temperature of the battery if safe to do so", "Improve battery ventilation if overheating", "In cold conditions, allow the battery to warm up before charging", "Check sensor connections if temperature reading appears incorrect" }
},
["BatteryReversed"] = new()
{
Explanation = "Battery polarity is reversed — positive and negative terminals are connected incorrectly.",
Causes = new[] { "Battery positive and negative cables connected to the wrong inverter terminals", "Installation error" },
NextSteps = new[] { "IMMEDIATELY power off the entire system — reversed polarity can cause severe damage", "Have a qualified electrician verify and correct the battery polarity before any further operation" }
},
["BatteryOpenCircuit"] = new()
{
Explanation = "The battery circuit is open — the battery is not electrically connected.",
Causes = new[] { "Battery cable has come loose or disconnected from the terminal", "Battery fuse has blown interrupting the circuit", "BMS has opened the internal contactor due to a protection event" },
NextSteps = new[] { "Check all battery cable connections at both the inverter and battery terminals", "Inspect the battery fuse and replace if blown", "Check BMS status for any protection events that may have opened the battery contactor" }
},
["BatteryOverloadProtection"] = new()
{
Explanation = "Battery overload protection has triggered — the load is drawing more power than the battery can safely discharge.",
Causes = new[] { "Total load power exceeds the battery's rated maximum discharge power", "High inrush current from large appliances temporarily exceeding battery rating" },
NextSteps = new[] { "Check the total load and compare to the battery's rated discharge power", "Reduce high-power loads and restart the inverter" }
},
["Bus2VoltageAbnormal"] = new()
{
Explanation = "The secondary DC bus voltage is abnormal.",
Causes = new[] { "Power electronics fault affecting the secondary DC bus", "Control issue on the secondary converter" },
NextSteps = new[] { "Restart the inverter", "If persistent, this requires professional inspection" }
},
["BatteryChargeOcp"] = new()
{
Explanation = "Battery charge overcurrent protection (OCP) has triggered — the charge current is too high.",
Causes = new[] { "PV array is oversized delivering more current than the battery can safely accept", "Battery charge current limit setting too high for the battery specification" },
NextSteps = new[] { "Check whether the PV array power significantly exceeds the battery charge rating", "Reduce the maximum charge current setting in the inverter to match the battery specification" }
},
["BatteryDischargeOcp"] = new()
{
Explanation = "Battery discharge overcurrent protection (OCP) has triggered — discharge current is too high.",
Causes = new[] { "Connected load is drawing more current than the battery's maximum discharge rating", "Battery discharge current limit setting configured too high" },
NextSteps = new[] { "Check that the battery discharge current configuration matches the battery specification", "Reduce the connected load to within battery discharge limits" }
},
["BatterySoftStartFailed"] = new()
{
Explanation = "The battery failed to complete its soft-start sequence when connecting to the inverter.",
Causes = new[] { "Pre-charge circuit fault preventing controlled battery connection", "Battery voltage significantly different from the inverter DC bus voltage" },
NextSteps = new[] { "Restart the inverter", "Check the battery voltage against the DC bus voltage — a large mismatch can prevent soft-start" }
},
// Off-grid Errors
["EpsOutputShortCircuited"] = new()
{
Explanation = "The EPS (backup) output has a short circuit.",
Causes = new[] { "Short circuit in the load wiring connected to the backup output", "A faulty appliance causing a short on the backup circuit", "Wiring fault in the EPS output distribution" },
NextSteps = new[] { "Disconnect all loads from the backup output", "Identify and repair the short circuit in the load wiring or appliances before reconnecting" }
},
["OffGridBusVoltageLow"] = new()
{
Explanation = "The off-grid DC bus voltage is too low to maintain backup operation.",
Causes = new[] { "Battery is nearly depleted and cannot maintain DC bus voltage", "High backup load combined with low battery charge", "Battery capacity loss due to aging" },
NextSteps = new[] { "Check whether the battery is working properly and has not lost significant capacity", "Allow the battery to charge before attempting backup operation", "Reduce backup load to extend available battery runtime" }
},
["OffGridTerminalVoltageAbnormal"] = new()
{
Explanation = "An abnormal voltage has been detected at the off-grid AC output terminal.",
Causes = new[] { "External voltage is present at the backup AC output from another source", "Wiring fault connecting the backup output to an energised circuit", "Backfeed from a load that has its own power source" },
NextSteps = new[] { "Check if an external voltage source is present at the AC backup output port", "Verify backup output wiring does not connect to any other energised source", "Disconnect all loads from the backup output and inspect wiring before restarting" }
},
["SoftStartFailed"] = new()
{
Explanation = "The off-grid mode soft-start sequence has failed.",
Causes = new[] { "Pre-charge failure during off-grid startup", "Load is too heavy at the moment of off-grid startup" },
NextSteps = new[] { "Restart the inverter", "Reduce the initial load on the backup circuit during startup" }
},
["OffGridOutputVoltageAbnormal"] = new()
{
Explanation = "The off-grid output voltage is abnormal.",
Causes = new[] { "Control fault causing off-grid voltage regulation to fail", "Hardware issue on the output stage", "Severe overload collapsing output voltage" },
NextSteps = new[] { "Restart the inverter", "If the fault persists, contact the manufacturer" }
},
["BalancedCircuitSelfTestFailed"] = new()
{
Explanation = "The balanced circuit self-test has failed during startup.",
Causes = new[] { "Phase balancing circuit fault detected during self-test", "Balance circuit hardware issue" },
NextSteps = new[] { "Restart the inverter to retry the self-test", "If the fault persists, contact service" }
},
["HighDcComponentOutputVoltage"] = new()
{
Explanation = "A high DC component has been detected in the AC output voltage.",
Causes = new[] { "Control loop drift causing DC offset to build up in the output voltage", "Output transformer or filter issue" },
NextSteps = new[] { "Restart the inverter to reset control loops", "If the fault persists, contact the manufacturer" }
},
["OffGridParallelSignalAbnormal"] = new()
{
Explanation = "The off-grid parallel communication signal between inverter units is abnormal.",
Causes = new[] { "Parallel communication cable between units is damaged or disconnected", "Parallel configuration mismatch between units" },
NextSteps = new[] { "Check that all parallel communication cables are properly and securely connected between inverter units", "Verify parallel settings match on all units" }
},
// Special fault codes
["AFCIFault"] = new()
{
Explanation = "An arc fault has been detected in the PV system. Arc faults can cause fires in PV wiring and the system has shut down as a safety precaution.",
Causes = new[] { "Loose MC4 connector or PV cable connection causing intermittent arcing", "Damaged cable insulation allowing arc at the damaged point", "Faulty connector or junction box creating an arc path", "Module junction box damage" },
NextSteps = new[] { "Power off all DC disconnectors before inspecting any PV wiring", "Carefully inspect all PV string connections, MC4 connectors, and cable runs for damage", "Tighten any loose connectors and replace any damaged cables or connectors", "Have the installation professionally inspected if the arc source is not found" }
},
["GFCIHigh"] = new()
{
Explanation = "Excessively high ground fault (leakage) current has been detected in the PV system.",
Causes = new[] { "Ground fault in the PV array — typically a cable touching the frame or metalwork", "Insulation breakdown on PV cables or at module junction boxes", "Moisture ingress into cable connections or module junction boxes", "Cable damage exposing conductors to ground" },
NextSteps = new[] { "Restart the inverter to see if the fault clears", "If it persists, perform insulation resistance testing on all PV strings to find the fault location", "Repair any insulation damage or ground fault found before restarting" }
},
["PVVoltageHigh"] = new()
{
Explanation = "The DC input voltage from the PV array exceeds the absolute maximum safe limit. This is an immediate risk of inverter damage.",
Causes = new[] { "Too many PV modules in series exceeding the inverter's maximum input voltage", "Very cold temperature causing module Voc to rise significantly above the design temperature Voc" },
NextSteps = new[] { "Disconnect the DC switch immediately to protect the inverter", "Measure actual DC voltage before reconnecting", "Review string design and reduce the number of modules in series if needed to stay within inverter voltage limits" }
},
};
}