From d7300dde91050445442f5cabf2137d03a0100ddf Mon Sep 17 00:00:00 2001 From: Yinyin Liu Date: Wed, 18 Feb 2026 16:23:08 +0100 Subject: [PATCH] improve growatt and sinexcel alarm knowledge base with AI --- .../Backend/Services/AlarmKnowledgeBase.cs | 1380 ++++++++--------- 1 file changed, 687 insertions(+), 693 deletions(-) diff --git a/csharp/App/Backend/Services/AlarmKnowledgeBase.cs b/csharp/App/Backend/Services/AlarmKnowledgeBase.cs index 945ef5146..32a11c495 100644 --- a/csharp/App/Backend/Services/AlarmKnowledgeBase.cs +++ b/csharp/App/Backend/Services/AlarmKnowledgeBase.cs @@ -46,873 +46,873 @@ public static class AlarmKnowledgeBase // Grid-related alarms ["AbnormalGridVoltage"] = new() { - Explanation = "The inverter has detected that the grid voltage is outside the acceptable operating range. This is an ERROR level condition requiring manual intervention.", - Causes = new[] { "Utility grid voltage fluctuation", "Poor grid connection", "Local transformer issues", "High load demand on grid" }, - NextSteps = new[] { "Check the grid voltage with a multimeter", "Verify grid connection wiring", "Fix the underlying cause", "Restart the inverter after the issue is resolved" } + 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 50Hz or 60Hz +/- tolerance). This is an ERROR level condition.", - Causes = new[] { "Grid instability", "Generator frequency drift", "Local grid issues" }, - NextSteps = new[] { "Check grid frequency stability", "If using a generator, verify its frequency setting", "Fix the cause, then restart the inverter" } + 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 WARNING level condition.", - Causes = new[] { "Incorrect wiring of grid phases (L1, L2, L3)", "Installation error" }, - NextSteps = new[] { "Power off the system safely", "Swap any two phase wires to correct the sequence", "Restart the inverter" } + 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. This is an ERROR level condition.", - Causes = new[] { "Blown fuse on one phase", "Loose connection on a phase wire", "Grid-side breaker tripped", "Cable damage" }, - NextSteps = new[] { "Check all three phase connections", "Verify fuses and breakers", "Fix the missing phase connection", "Restart after repair" } + 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. This is an ERROR level condition.", - Causes = new[] { "Grid-side short circuit", "Overloaded system", "Faulty current sensor", "Ground fault" }, - NextSteps = new[] { "Check for short circuits", "Reduce system load", "Verify current sensor operation", "Fix the cause, then restart" } + 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 is an ERROR level condition.", - Causes = new[] { "Internal inverter fault", "Overload condition", "Grid voltage influence" }, - NextSteps = new[] { "Check connected load", "Verify inverter settings", "Fix the cause, then restart the inverter" } + 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. This is an ERROR level condition.", - Causes = new[] { "Internal control system fault", "Heavy load transients" }, - NextSteps = new[] { "Reduce load if possible", "Fix the cause, then restart the inverter" } + 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 line connection is abnormal. This is an ERROR level condition.", - Causes = new[] { "Loose or missing neutral wire", "Neutral wire damage", "Incorrect wiring" }, - NextSteps = new[] { "Power off safely", "Check neutral wire connection", "Fix wiring issues", "Restart after repair" } + 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. This is an ERROR level condition.", - Causes = new[] { "Overload on backup output", "Internal inverter issue", "Battery voltage too low" }, - NextSteps = new[] { "Check backup load", "Verify battery state", "Fix the cause, then restart" } + 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. This is a WARNING - the inverter may reduce output to protect itself.", - Causes = new[] { "Poor ventilation", "High environmental temperature", "Direct sunlight exposure", "Enclosure overheating" }, - NextSteps = new[] { "Improve ventilation around the inverter", "Provide shade if outdoors", "Consider adding cooling", "Restart after temperature drops" } + 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. This is a WARNING level condition.", - Causes = new[] { "Blocked air vents", "Fan failure", "High ambient temperature", "Excessive load" }, - NextSteps = new[] { "Clean air vents and filters", "Check fan operation", "Reduce load temporarily", "Fix the cause, then restart" } + 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 temperature is too high. This is a WARNING level condition.", - Causes = new[] { "Poor cooling", "High ambient temperature", "Excessive power output" }, - NextSteps = new[] { "Improve ventilation", "Check fan operation", "Allow cooling before restart" } + 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 is overheating. This is a WARNING level condition.", - Causes = new[] { "High charging/discharging current", "Poor cooling", "Ambient temperature too high" }, - NextSteps = new[] { "Reduce power flow", "Improve ventilation", "Fix the cause, then restart" } + 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 approaching dangerous levels. This is a WARNING.", - Causes = new[] { "Overload", "Poor ventilation", "Fan failure", "High ambient temperature" }, - NextSteps = new[] { "Reduce load", "Check cooling system", "Fix the cause, then restart" } + 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. This is a WARNING level condition.", - Causes = new[] { "Sustained overload", "Cooling system failure", "Environmental conditions" }, - NextSteps = new[] { "Allow inverter to cool down", "Check fans and ventilation", "Fix the cause, then restart" } + 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. This is a WARNING.", - Causes = new[] { "High power throughput", "Inadequate cooling" }, - NextSteps = new[] { "Reduce power flow temporarily", "Check cooling", "Fix the cause, then restart" } + 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 an ERROR level safety condition.", - Causes = new[] { "Damaged cable insulation", "Moisture ingress", "Component insulation breakdown", "Ground fault in PV array" }, - NextSteps = new[] { "Do not touch the system", "Power off safely", "Check all cable insulation", "Test insulation resistance", "Repair before restart" } + 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/leakage current protection has tripped. This is an ERROR level safety condition.", - Causes = new[] { "Ground fault in the system", "Damaged insulation", "Moisture in connections", "Faulty RCD/GFCI" }, - NextSteps = new[] { "Power off the system", "Check for ground faults", "Inspect cable insulation", "Fix the cause before restart" } + 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 leakage current self-check has failed. This is an ERROR level condition.", - Causes = new[] { "Self-check circuit fault", "Ground fault present", "Sensor malfunction" }, - NextSteps = new[] { "Power off safely", "Check system grounding", "Fix the cause, then restart" } + 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 grounding connection detected. This is a WARNING level safety condition.", - Causes = new[] { "Loose ground connection", "Corroded ground terminal", "High ground resistance", "Missing ground wire" }, - NextSteps = new[] { "Check all ground connections", "Clean corroded terminals", "Verify ground resistance", "Fix grounding, then restart" } + 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. This is an ERROR level condition that can lead to overheating.", - Causes = new[] { "Fan motor failure", "Fan blade obstruction", "Loose fan connector", "Control circuit fault" }, - NextSteps = new[] { "Check fan operation visually", "Remove any obstructions", "Check fan power connection", "Replace fan if faulty" } + 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 is an ERROR level condition.", - Causes = new[] { "Internal power supply failure", "Input voltage issue", "Component failure" }, - NextSteps = new[] { "Power cycle the inverter", "If persistent, contact service technician" } + 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/capacity configuration mismatch. This is an ERROR level condition.", - Causes = new[] { "Incorrect model configuration", "Firmware mismatch", "Hardware mismatch" }, - NextSteps = new[] { "Verify inverter model settings", "Check firmware version", "Fix configuration, then restart" } + 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 (lightning arrester) has failed or triggered. This is an ERROR level condition.", - Causes = new[] { "Lightning strike damage", "Surge event", "SPD component failure" }, - NextSteps = new[] { "Check SPD indicator", "Replace SPD if triggered", "Fix the cause, then restart" } + 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 during a grid outage. This is an INFO level condition that typically auto-recovers.", - Causes = new[] { "Grid power outage", "Grid voltage/frequency outside limits", "Intentional grid disconnection" }, - NextSteps = new[] { "Wait for grid to stabilize", "The inverter will automatically reconnect when grid is normal", "Monitor until it clears" } + 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. This is an ERROR level condition.", - Causes = new[] { "Battery disconnect switch open", "Loose battery cable", "Battery BMS shutdown", "Battery fuse blown" }, - NextSteps = new[] { "Check battery disconnect switch", "Verify battery cable connections", "Check battery BMS status", "Fix connection, then restart" } + 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. This is a WARNING level condition - charging will be limited.", - Causes = new[] { "Overcharging", "BMS malfunction", "Incorrect battery voltage setting", "Cell imbalance" }, - NextSteps = new[] { "Check battery SOC", "Verify charging settings", "Check BMS operation", "Fix the cause, then restart" } + 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. This is a WARNING level condition - discharging will be limited.", - Causes = new[] { "Battery deeply discharged", "Cell failure", "BMS cutoff", "High load drain" }, - NextSteps = new[] { "Allow battery to charge", "Check for excessive loads", "Verify battery health", "Fix the cause, then restart" } + 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 discharge end point (minimum SOC). This is an INFO level condition that auto-recovers when charged.", - Causes = new[] { "Battery fully discharged to SOC limit", "High power consumption" }, - NextSteps = new[] { "Wait for battery to recharge from PV or grid", "Monitor until it clears" } + 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. This is a WARNING level condition - do not operate!", - Causes = new[] { "Battery cables connected in reverse", "Installation error" }, - NextSteps = new[] { "IMMEDIATELY power off the system", "Correct battery cable polarity", "Check for damage before restart" } + 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 overloaded for too long. This is an ERROR level condition.", - Causes = new[] { "Sustained high load", "Undersized battery", "Battery degradation" }, - NextSteps = new[] { "Reduce system load", "Check battery capacity", "Fix the cause, then restart" } + 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 soft-start properly. This is a WARNING level condition.", - Causes = new[] { "Pre-charge circuit fault", "Battery voltage mismatch", "Contactor issue" }, - NextSteps = new[] { "Check battery voltage", "Verify pre-charge circuit", "Fix the cause, then restart" } + 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/MOSFET) have failed. This is a PROTECTION level condition requiring service.", - Causes = new[] { "Power semiconductor failure", "Overcurrent damage", "Manufacturing defect" }, - NextSteps = new[] { "Do not restart the system", "Contact service technician", "Hardware repair required" } + 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 for the load. This is an INFO level condition.", - Causes = new[] { "Low state of charge", "High load demand", "Battery capacity limitation" }, - NextSteps = new[] { "Wait for battery to recharge", "Reduce load if possible", "Monitor until it clears" } + 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 prohibited from providing backup power. This is a WARNING level condition.", - Causes = new[] { "BMS protection active", "Battery in maintenance mode", "SOC too low for backup" }, - NextSteps = new[] { "Check BMS settings", "Verify battery SOC", "Fix the cause, then restart" } + 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. This is an ERROR level condition.", - Causes = new[] { "Battery disconnect switch open", "Loose battery cable", "Battery BMS shutdown", "Battery fuse blown" }, - NextSteps = new[] { "Check battery disconnect switch", "Verify battery cable connections", "Check battery BMS status", "Fix connection, then restart" } + 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. This is a WARNING level condition.", - Causes = new[] { "Overcharging", "BMS malfunction", "Incorrect voltage setting" }, - NextSteps = new[] { "Check battery SOC", "Verify charging settings", "Fix the cause, then restart" } + 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. This is a WARNING level condition.", - Causes = new[] { "Battery deeply discharged", "Cell failure", "BMS cutoff" }, - NextSteps = new[] { "Allow battery to charge", "Check battery health", "Fix the cause, then restart" } + 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 discharge end point. This is an INFO level condition.", - Causes = new[] { "Battery fully discharged to SOC limit" }, - NextSteps = new[] { "Wait for battery to recharge", "Monitor until it clears" } + 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 WARNING - do not operate!", - Causes = new[] { "Battery cables connected in reverse" }, - NextSteps = new[] { "IMMEDIATELY power off", "Correct battery polarity", "Check for damage" } + 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 overloaded for too long. This is an ERROR level condition.", - Causes = new[] { "Sustained high load", "Battery degradation" }, - NextSteps = new[] { "Reduce system load", "Fix the cause, then restart" } + 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 soft-start properly. This is a WARNING level condition.", - Causes = new[] { "Pre-charge circuit fault", "Voltage mismatch" }, - NextSteps = new[] { "Check battery voltage", "Fix the cause, then restart" } + 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 have failed. This is a PROTECTION level condition.", - Causes = new[] { "Power semiconductor failure" }, - NextSteps = new[] { "Do not restart", "Contact service technician" } + 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. This is a WARNING level condition.", - Causes = new[] { "Low SOC", "High load demand" }, - NextSteps = new[] { "Wait for recharge", "Reduce load", "Fix the cause, then restart" } + 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 prohibited from providing backup power. This is a WARNING.", - Causes = new[] { "BMS protection active", "SOC too low" }, - NextSteps = new[] { "Check BMS settings", "Fix the cause, then restart" } + 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 = "Lithium battery 1 BMS has forbidden charging. This is a WARNING level condition.", - Causes = new[] { "Battery fully charged", "Temperature out of range", "BMS protection active", "Cell imbalance" }, - NextSteps = new[] { "Check battery temperature", "Verify BMS status", "Fix the cause, then restart" } + 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 = "Lithium battery 1 BMS has forbidden discharging. This is a WARNING level condition.", - Causes = new[] { "Battery empty", "Temperature out of range", "BMS protection", "Low voltage protection" }, - NextSteps = new[] { "Allow battery to charge", "Check temperature", "Fix the cause, then restart" } + 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 = "Lithium battery 2 BMS has forbidden charging. This is a WARNING level condition.", - Causes = new[] { "Battery fully charged", "Temperature out of range", "BMS protection" }, - NextSteps = new[] { "Check battery status", "Fix the cause, then restart" } + 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 = "Lithium battery 2 BMS has forbidden discharging. This is a WARNING level condition.", - Causes = new[] { "Battery empty", "Temperature out of range", "BMS protection" }, - NextSteps = new[] { "Allow battery to charge", "Fix the cause, then restart" } + 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. This is a WARNING indicating charging will stop.", - Causes = new[] { "Battery at 100% SOC", "Cell voltage at maximum" }, - NextSteps = new[] { "Normal condition if intentional", "Monitor battery health" } + 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 discharge end. This is a WARNING.", - Causes = new[] { "Battery at minimum SOC" }, - NextSteps = new[] { "Allow battery to recharge", "Fix the cause, then restart" } + 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. This is a WARNING.", - Causes = new[] { "Battery at 100% SOC" }, - NextSteps = new[] { "Normal condition if intentional" } + 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 discharge end. This is a WARNING.", - Causes = new[] { "Battery at minimum SOC" }, - NextSteps = new[] { "Allow battery to recharge" } + 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 = "Lead-acid battery temperature is abnormal. This is an ERROR level condition.", - Causes = new[] { "Overheating", "Temperature sensor fault", "Environmental temperature extreme" }, - NextSteps = new[] { "Check battery temperature", "Verify sensor", "Fix the cause, then restart" } + 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 = "Battery access method configuration error. This is a WARNING.", - Causes = new[] { "Incorrect configuration", "Communication setup error" }, - NextSteps = new[] { "Check battery configuration", "Fix the cause, then restart" } + 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. This is a WARNING level condition.", - Causes = new[] { "PV disconnector open", "Cable damage", "PV module fault", "No sunlight" }, - NextSteps = new[] { "Check PV disconnector", "Verify PV cable connections", "Check for shading", "Fix the cause, then restart" } + 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 maximum input voltage. This is a WARNING - PV input will be limited.", - Causes = new[] { "Too many PV modules in series", "Low temperature increasing voltage", "Design error" }, - NextSteps = new[] { "Check PV string configuration", "Verify Voc at low temperature", "Reduce modules if needed" } + 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. This is an ERROR level condition.", - Causes = new[] { "Mismatched PV modules", "Partial shading", "Module fault" }, - NextSteps = new[] { "Check for shading", "Verify module matching", "Fix the cause, then restart" } + 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 = "PV 1 DC converter power electronics have failed. This is a PROTECTION level condition.", - Causes = new[] { "IGBT/MOSFET failure", "Overcurrent damage" }, - NextSteps = new[] { "Do not restart", "Contact service technician" } + 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 1 failed to soft-start properly. This is a WARNING level condition.", - Causes = new[] { "Pre-charge circuit fault", "Voltage mismatch" }, - NextSteps = new[] { "Check PV voltage", "Fix the cause, then restart" } + 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 1 has been overloaded for too long. This is an ERROR level condition.", - Causes = new[] { "Excessive PV power", "DC converter limitation" }, - NextSteps = new[] { "Check PV sizing", "Fix the cause, then restart" } + 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 an INFO level condition.", - Causes = new[] { "Low irradiance", "Shading", "Cloud cover", "Evening/morning" }, - NextSteps = new[] { "Wait for better sunlight conditions", "Check for shading", "Monitor until it clears" } + 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 exceeds limits. This is a WARNING level condition.", - Causes = new[] { "PV array oversized", "Ground fault", "Short circuit" }, - NextSteps = new[] { "Check PV configuration", "Look for ground faults", "Fix the cause, then restart" } + 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. This is a WARNING level condition.", - Causes = new[] { "PV disconnector open", "Cable damage", "No sunlight" }, - NextSteps = new[] { "Check PV disconnector", "Verify connections", "Fix the cause, then restart" } + 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 maximum. This is a WARNING level condition.", - Causes = new[] { "Too many PV modules in series", "Low temperature" }, - NextSteps = new[] { "Check PV configuration", "Reduce modules if needed" } + 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. This is an ERROR level condition.", - Causes = new[] { "Mismatched modules", "Partial shading" }, - NextSteps = new[] { "Check for shading", "Fix the cause, then restart" } + 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 = "PV 2 power electronics have failed. This is a PROTECTION level condition.", - Causes = new[] { "Power semiconductor failure" }, - NextSteps = new[] { "Do not restart", "Contact service technician" } + 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 2 failed to soft-start. This is a WARNING level condition.", - Causes = new[] { "Pre-charge fault", "Voltage mismatch" }, - NextSteps = new[] { "Check PV voltage", "Fix the cause, then restart" } + 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 2 has been overloaded for too long. This is an ERROR level condition.", - Causes = new[] { "Excessive PV power" }, - NextSteps = new[] { "Check PV sizing", "Fix the cause, then restart" } + 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. This is an INFO level condition.", - Causes = new[] { "Low irradiance", "Shading" }, - NextSteps = new[] { "Wait for better conditions", "Monitor until it clears" } + 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. This is an ERROR level condition.", - Causes = new[] { "PV disconnector open", "Cable issue" }, - NextSteps = new[] { "Check connections", "Fix the cause, then restart" } + 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 maximum. This is a WARNING.", - Causes = new[] { "Too many modules in series" }, - NextSteps = new[] { "Check PV configuration" } + 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 current is abnormal. This is a WARNING.", - Causes = new[] { "Module mismatch", "Shading" }, - NextSteps = new[] { "Check modules", "Fix the cause, then restart" } + 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 failed. This is a PROTECTION level condition.", - Causes = new[] { "Hardware failure" }, - NextSteps = new[] { "Do not restart", "Contact service" } + 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 3 soft start failed. This is a WARNING.", - Causes = new[] { "Pre-charge fault" }, - NextSteps = new[] { "Fix the cause, then restart" } + 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 3 overloaded too long. This is an ERROR.", - Causes = new[] { "Excessive power" }, - NextSteps = new[] { "Fix the cause, then restart" } + 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 PROTECTION level condition.", - Causes = new[] { "Installation error", "Wrong cable connection" }, - NextSteps = new[] { "Do not restart", "Contact service to correct wiring" } + 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. This is an ERROR.", - Causes = new[] { "Disconnector open", "Cable issue" }, - NextSteps = new[] { "Check connections", "Fix the cause, then restart" } + 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 maximum. This is a WARNING.", - Causes = new[] { "Too many modules" }, - NextSteps = new[] { "Check configuration" } + 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 current abnormal. This is a WARNING.", - Causes = new[] { "Module mismatch" }, - NextSteps = new[] { "Check modules" } + 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 failed. This is a PROTECTION level condition.", - Causes = new[] { "Hardware failure" }, - NextSteps = new[] { "Do not restart", "Contact service" } + 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 4 soft start failed. This is a WARNING.", - Causes = new[] { "Pre-charge fault" }, - NextSteps = new[] { "Fix the cause, then restart" } + 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 4 overloaded too long. This is an ERROR.", - Causes = new[] { "Excessive power" }, - NextSteps = new[] { "Fix the cause, then restart" } + 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 polarity reversed. This is a PROTECTION condition.", - Causes = new[] { "Wrong wiring" }, - NextSteps = new[] { "Do not restart", "Contact service" } + 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 = "Not enough PV power available. This is a WARNING.", - Causes = new[] { "Low irradiance", "Evening/cloudy" }, - NextSteps = new[] { "Wait for better conditions", "Fix the cause, then restart" } + 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 DC bus voltage is too high. This is a WARNING level condition.", - Causes = new[] { "Excessive charging power", "Regenerative load", "Control fault" }, - NextSteps = new[] { "Check power balance", "Fix the cause, then restart" } + 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 DC bus voltage is too low. This is a WARNING level condition.", - Causes = new[] { "Excessive load", "Power supply issue", "Battery depletion" }, - NextSteps = new[] { "Reduce load", "Check power sources", "Fix the cause, then restart" } + 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. This is an ERROR level condition.", - Causes = new[] { "Capacitor failure", "Control issue", "Asymmetric loading" }, - NextSteps = new[] { "Check capacitor bank", "Fix the cause, then restart" } + 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 = "DC bus slow over-voltage detected. This is a WARNING.", - Causes = new[] { "Gradual voltage rise", "Charging imbalance" }, - NextSteps = new[] { "Check charging control", "Fix the cause, then restart" } + 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 = "Hardware-level bus over-voltage protection tripped. This is a PROTECTION level condition.", - Causes = new[] { "Severe overvoltage event", "Component failure" }, - NextSteps = new[] { "Do not restart", "Contact service technician" } + 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 = "DC bus failed to soft-start. This is a WARNING.", - Causes = new[] { "Pre-charge fault", "Capacitor issue" }, - NextSteps = new[] { "Check pre-charge circuit", "Fix the cause, then restart" } + 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/MOSFET) have failed. This is a PROTECTION level condition requiring professional service.", - Causes = new[] { "Power semiconductor failure", "Overcurrent damage", "Short circuit damage", "Thermal damage" }, - NextSteps = new[] { "Do not attempt to restart", "Contact service technician", "Hardware repair/replacement required" } + 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. This is a PROTECTION level condition.", - Causes = new[] { "Short circuit", "Severe overload", "Component failure" }, - NextSteps = new[] { "Do not restart", "Contact service technician" } + 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 = "DC converter voltage too high. This is a WARNING.", - Causes = new[] { "Input overvoltage", "Control issue" }, - NextSteps = new[] { "Check input voltage", "Fix the cause, then restart" } + 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 = "DC converter hardware overvoltage protection. This is a PROTECTION condition.", - Causes = new[] { "Severe overvoltage" }, - NextSteps = new[] { "Do not restart", "Contact service" } + 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 = "DC converter current too high. This is a WARNING.", - Causes = new[] { "Overload", "Short circuit" }, - NextSteps = new[] { "Reduce load", "Fix the cause, then restart" } + 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. This is a PROTECTION condition.", - Causes = new[] { "Severe overcurrent" }, - NextSteps = new[] { "Do not restart", "Contact service" } + 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 = "DC converter resonator overcurrent. This is a WARNING.", - Causes = new[] { "Resonance condition", "Control issue" }, - NextSteps = new[] { "Fix the cause, then restart" } + 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 is overloaded. This is an ERROR level condition.", - Causes = new[] { "Too many loads connected", "Load exceeds inverter capacity", "Short circuit in load" }, - NextSteps = new[] { "Disconnect some loads", "Check for short circuits", "Fix the cause, then restart" } + 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. This is an ERROR level condition.", - Causes = new[] { "Load exceeds rated power", "Inrush current from motors", "Short circuit" }, - NextSteps = new[] { "Reduce connected load", "Check load power rating", "Fix the cause, then restart" } + 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. This is an ERROR level condition.", - Causes = new[] { "Sustained overload condition", "Undersized inverter for load" }, - NextSteps = new[] { "Permanently reduce load", "Consider larger inverter", "Fix the cause, then restart" } + 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 = "Load power exceeds system capacity. This is an ERROR.", - Causes = new[] { "Excessive load" }, - NextSteps = new[] { "Reduce load", "Fix the cause, then restart" } + 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 = "Balanced circuit overloaded too long. This is an ERROR.", - Causes = new[] { "Unbalanced loading", "Phase overload" }, - NextSteps = new[] { "Balance loads", "Fix the cause, then restart" } + 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 during soft-start sequence. This is a WARNING level condition.", - Causes = new[] { "Pre-charge resistor fault", "Contactor failure", "DC bus capacitor issue", "Control board fault" }, - NextSteps = new[] { "Power cycle the system", "Check DC bus voltage", "If persistent, contact service", "Fix the cause, then restart" } + 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 parameter configuration error. This is an ERROR level condition.", - Causes = new[] { "Incorrect parameter setting", "Firmware corruption", "Configuration mismatch" }, - NextSteps = new[] { "Check parameter settings", "Reset to defaults if needed", "Fix the cause, then restart" } + 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 parameter configuration error. This is an ERROR level condition.", - Causes = new[] { "Incorrect parameter setting", "Firmware corruption" }, - NextSteps = new[] { "Check parameter settings", "Fix the cause, then restart" } + 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 = "DSP firmware version is incompatible. This is an ERROR level condition.", - Causes = new[] { "Firmware mismatch between components", "Incomplete firmware update" }, - NextSteps = new[] { "Update firmware to compatible version", "Contact support if needed" } + 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 = "CPLD version is incompatible. This is an ERROR level condition.", - Causes = new[] { "Firmware mismatch", "Incomplete update" }, - NextSteps = new[] { "Update firmware", "Fix the cause, then restart" } + 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 CPLD failed. This is an ERROR level condition.", - Causes = new[] { "Internal communication bus fault", "CPLD failure" }, - NextSteps = new[] { "Power cycle the system", "If persistent, contact service" } + 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 DSP failed. This is an ERROR level condition.", - Causes = new[] { "Internal communication bus fault", "DSP failure" }, - NextSteps = new[] { "Power cycle the system", "If persistent, contact service" } + 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 = "DC component in output voltage exceeds limit. This is a WARNING.", - Causes = new[] { "Control drift", "Sensor offset", "Hardware issue" }, - NextSteps = new[] { "Restart the inverter", "If persistent, contact service" } + 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 = "DC component in output current exceeds limit. This is a WARNING.", - Causes = new[] { "Control issue", "Sensor fault" }, - NextSteps = new[] { "Restart the inverter", "Fix the cause, then restart" } + 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 = "Relay self-check has failed. This is an ERROR level condition.", - Causes = new[] { "Relay contact fault", "Relay driver fault", "Welded contacts" }, - NextSteps = new[] { "Check relay operation", "Fix the cause, then restart" } + 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 = "Inverter relay is unexpectedly open. This is an ERROR.", - Causes = new[] { "Relay driver fault", "Protection trip" }, - NextSteps = new[] { "Check protection status", "Fix the cause, then restart" } + 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 = "Inverter relay has a short circuit (welded contacts). This is a PROTECTION condition.", - Causes = new[] { "Welded relay contacts", "Relay failure" }, - NextSteps = new[] { "Do not restart", "Contact service to replace relay" } + 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 = "Grid relay is unexpectedly open. This is an ERROR.", - Causes = new[] { "Relay fault", "Protection active" }, - NextSteps = new[] { "Check relay", "Fix the cause, then restart" } + 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 = "Grid relay has welded contacts. This is an ERROR.", - Causes = new[] { "Relay failure" }, - NextSteps = new[] { "Contact service", "Fix the cause, then restart" } + 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 = "Generator relay is open. This is an ERROR.", - Causes = new[] { "Relay fault" }, - NextSteps = new[] { "Check relay", "Fix the cause, then restart" } + 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 = "Generator relay has welded. This is an ERROR.", - Causes = new[] { "Relay failure" }, - NextSteps = new[] { "Contact service", "Fix the cause, then restart" } + 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 = "General inverter abnormality detected. This is an ERROR level condition.", - Causes = new[] { "Various internal faults", "Control system issue" }, - NextSteps = new[] { "Power cycle the inverter", "Check for other specific alarms", "Fix the cause, then restart" } + 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 parallel inverters has failed. This is an ERROR level condition.", - Causes = new[] { "Communication cable fault", "Parallel interface failure", "Settings mismatch" }, - NextSteps = new[] { "Check parallel communication cables", "Verify settings match", "Fix the cause, then restart" } + 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 = "A parallel module is missing from the system. This is a WARNING.", - Causes = new[] { "Module offline", "Communication loss", "Power failure on module" }, - NextSteps = new[] { "Check all parallel modules", "Fix the cause, then restart" } + 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 modules have the same ID number. This is a WARNING.", - Causes = new[] { "Configuration error", "Duplicate addressing" }, - NextSteps = new[] { "Assign unique IDs to each module", "Fix the cause, then restart" } + 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 = "Parameter conflict between parallel modules. This is a WARNING.", - Causes = new[] { "Mismatched settings between units" }, - NextSteps = new[] { "Synchronize settings across all units", "Fix the cause, then restart" } + 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 power (derating). This is a WARNING.", - Causes = new[] { "High temperature", "Voltage out of range", "Component limitation" }, - NextSteps = new[] { "Check temperature and ventilation", "Identify derating cause", "Fix the cause, then restart" } + 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 = "PV access configuration error. This is a WARNING.", - Causes = new[] { "Incorrect PV configuration", "Wiring mismatch" }, - NextSteps = new[] { "Check PV configuration settings", "Fix the cause, then restart" } + 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 is a WARNING level condition.", - Causes = new[] { "Undocumented condition" }, - NextSteps = new[] { "Monitor the system", "Contact support if issue persists" } + 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 is a WARNING level condition.", - Causes = new[] { "Undocumented condition" }, - NextSteps = new[] { "Monitor the system", "Contact support if issue persists" } + 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 connected in reverse. This is a PROTECTION level condition.", - Causes = new[] { "Meter CT installed backwards", "Meter wiring reversed" }, - NextSteps = new[] { "Do not rely on meter readings", "Contact service to correct meter installation" } + 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 = "Inverter seal pulse active. This is a WARNING indicating output limiting.", - Causes = new[] { "Protection active", "Output limiting" }, - NextSteps = new[] { "Check system status", "Fix the cause, then restart" } + 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 = "Diesel generator voltage is abnormal. This is an ERROR.", - Causes = new[] { "Generator voltage out of range", "AVR fault" }, - NextSteps = new[] { "Check generator voltage setting", "Fix the cause, then restart" } + 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 = "Diesel generator frequency is abnormal. This is an ERROR.", - Causes = new[] { "Generator speed issue", "Governor fault" }, - NextSteps = new[] { "Check generator frequency", "Fix the cause, then restart" } + 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 = "Generator phase sequence is reversed. This is a PROTECTION condition.", - Causes = new[] { "Wrong phase wiring" }, - NextSteps = new[] { "Do not restart", "Contact service to correct wiring" } + 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 = "Generator voltage is out of phase with grid. This is an ERROR.", - Causes = new[] { "Sync issue", "Phase angle mismatch" }, - NextSteps = new[] { "Check synchronization", "Fix the cause, then restart" } + 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 generator is overloaded. This is an ERROR.", - Causes = new[] { "Load exceeds generator capacity" }, - NextSteps = new[] { "Reduce load", "Fix the cause, then restart" } + 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" } }, }; @@ -924,589 +924,583 @@ public static class AlarmKnowledgeBase // Warnings (200-series: PV/String) ["StringFault"] = new() { - Explanation = "String fault detected. One or more PV strings may have issues affecting power generation.", - Causes = new[] { "PV panel fault", "String wiring issue", "Connector problem", "Module degradation" }, - NextSteps = new[] { "Check if PV panels are normal after shutdown", "Inspect string connections", "Look for damaged cables" } + 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/PID quick-connect terminals are abnormal.", - Causes = new[] { "Loose terminal connections", "Damaged quick-connect", "Corrosion on terminals" }, - NextSteps = new[] { "Check wiring of string terminals after shutdown", "Clean and secure connections" } + 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 = "DC SPD function abnormal.", - Causes = new[] { "SPD failure" }, - NextSteps = new[] { "Check DC SPD after shutdown" } + 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 is short-circuited.", - Causes = new[] { "Cable damage causing short", "Connector failure", "Module junction box fault" }, - NextSteps = new[] { "Check if PV1 or PV2 is short-circuited", "Inspect cables for damage", "Test string isolation" } + 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 = "PV boost driver abnormal.", - Causes = new[] { "Driver circuit fault" }, - NextSteps = new[] { "Restart the inverter" } + 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 = "AC SPD function abnormal.", - Causes = new[] { "SPD failure" }, - NextSteps = new[] { "Check AC SPD after shutdown" } + 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 = "DC fuse has blown, interrupting PV input.", - Causes = new[] { "Overcurrent in DC circuit", "Short circuit", "Fuse fatigue" }, - NextSteps = new[] { "Power off the system", "Check the fuse", "Identify and fix overcurrent cause before replacing fuse" } + 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 = "DC input voltage exceeds the upper threshold - potential damage risk.", - Causes = new[] { "Too many PV modules in series", "Cold temperature increasing Voc", "System design error" }, - NextSteps = new[] { "Turn off DC switch immediately", "Check DC voltage", "Reconfigure string if needed" } + 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 = "PV string polarity is reversed.", - Causes = new[] { "Wrong cable connection" }, - NextSteps = new[] { "Check PV polarity after shutdown" } + 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 = "PID (Potential Induced Degradation) function is abnormal.", - Causes = new[] { "PID module fault", "Configuration issue" }, - NextSteps = new[] { "Restart the inverter", "Check PID settings" } + 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 is disconnected.", - Causes = new[] { "DC disconnector open", "Cable disconnection", "Connector failure" }, - NextSteps = new[] { "Check if PV string is properly connected", "Verify DC switches" } + 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 = "PV string currents are unbalanced, indicating potential issues.", - Causes = new[] { "Shading on some modules", "Module mismatch", "Partial string failure", "Soiling" }, - NextSteps = new[] { "Check if PV panels of the corresponding string are normal", "Look for shading", "Clean panels" } + 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 detected or grid power failure.", - Causes = new[] { "Grid outage", "AC breaker tripped", "Grid cable disconnected", "Utility maintenance" }, - NextSteps = new[] { "Check if grid is down", "Verify AC breaker status", "Check grid cable connections" } + 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 = "Grid voltage is outside the permissible operating range.", - Causes = new[] { "Grid voltage too high or too low", "Local grid issues", "Transformer tap setting" }, - NextSteps = new[] { "Check if grid voltage is within specified range", "Contact utility if persistent" } + 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 = "Grid frequency is outside the permissible operating range.", - Causes = new[] { "Grid frequency unstable", "Generator frequency drift", "Grid disturbance" }, - NextSteps = new[] { "Check if grid frequency is within specified range", "Wait for grid to stabilize" } + 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 condition.", - Causes = new[] { "Connected load exceeds capacity", "Inrush current from appliances", "Short circuit in load" }, - NextSteps = new[] { "Reduce load connected to EPS output terminal", "Check for faulty appliances" } + 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 = "Energy meter communication is lost.", - Causes = new[] { "Meter offline", "Communication cable fault", "Meter power loss" }, - NextSteps = new[] { "Check if meter is properly connected", "Verify communication cable", "Check meter power" } + 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 = "Energy meter L and N lines are reversed.", - Causes = new[] { "Meter wiring error", "Installation mistake" }, - NextSteps = new[] { "Check if L line and N line of meter are reversely connected", "Correct wiring" } + 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 neutral (N) and protective earth (PE).", - Causes = new[] { "Poor PE connection", "N-PE short somewhere in installation", "Ground fault" }, - NextSteps = new[] { "Check if PE cable is reliably connected after shutdown", "Verify grounding system" } + 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 = "Phase sequence error detected. The system will auto-adjust.", - Causes = new[] { "Three-phase wiring in wrong order" }, - NextSteps = new[] { "No operation required", "The PCS will automatically adjust phase sequence" } + 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 = "Cooling fan failure detected - risk of overheating.", - Causes = new[] { "Fan motor failure", "Fan blocked", "Fan connector loose", "Fan control fault" }, - NextSteps = new[] { "Check if fan is properly connected after shutdown", "Remove obstructions", "Replace fan if faulty" } + 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 = "Energy meter is reporting abnormal readings.", - Causes = new[] { "Meter malfunction", "Configuration error", "Communication issue" }, - NextSteps = new[] { "Check if meter is turned on", "Verify meter configuration" } + 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 PV optimizer is abnormal.", - Causes = new[] { "Optimizer offline", "Communication interference", "Optimizer fault" }, - NextSteps = new[] { "Check if optimizer is turned on", "Verify communication wiring" } + 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 = "System temperature is too high - power may be limited.", - Causes = new[] { "Poor ventilation", "High ambient temperature", "Fan failure", "Excessive load" }, - NextSteps = new[] { "Restart the inverter", "If fault persists, improve cooling", "Contact manufacturer if unresolved" } + 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 = "NTC temperature sensor is broken or disconnected.", - Causes = new[] { "Sensor failure", "Sensor cable damaged", "Connector issue" }, - NextSteps = new[] { "Restart the inverter", "If persistent, sensor may need replacement" } + 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 = "NTC temperature sensor is broken.", - Causes = new[] { "Sensor failure" }, - NextSteps = new[] { "Replace sensor" } + 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 = "Synchronization signal is abnormal (for parallel systems).", - Causes = new[] { "Sync cable fault", "Sync interface failure", "Configuration mismatch" }, - NextSteps = new[] { "Check if sync cable is abnormal", "Verify connections" } + 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 = "Grid-connection startup requirements are not met.", - Causes = new[] { "Grid voltage/frequency out of range", "Incorrect startup voltage configuration" }, - NextSteps = new[] { "Check if grid voltage is within specified range", "Check grid-connection startup voltage configuration" } + 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 = "Inverter cannot communicate with the battery BMS.", - Causes = new[] { "BMS offline", "Communication cable fault", "Protocol mismatch", "Battery in sleep mode" }, - NextSteps = new[] { "Check if battery is turned on", "Verify RS485 communication cable", "Wake up battery if in sleep mode" } + 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 = "Battery is disconnected from the system.", - Causes = new[] { "Battery breaker off", "Cable disconnected", "BMS shutdown", "Battery fault" }, - NextSteps = new[] { "Check if battery is properly connected", "Verify battery breaker", "Check BMS status" } + 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 = "Battery voltage is too high.", - Causes = new[] { "Overcharging", "BMS fault", "Cell imbalance", "Voltage setting error" }, - NextSteps = new[] { "Check if battery voltage is within permissible range", "Verify charging settings" } + 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 = "Battery voltage is too low.", - Causes = new[] { "Battery deeply discharged", "Cell failure", "High load drain", "BMS cutoff" }, - NextSteps = new[] { "Check if battery voltage is within permissible range", "Allow battery to charge" } + 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 = "Battery positive and negative terminals are reversed.", - Causes = new[] { "Installation error", "Wrong cable connection" }, - NextSteps = new[] { "Check if positive and negative terminals of battery are reversely connected", "CORRECT IMMEDIATELY - risk of damage" } + 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 = "Lead-acid battery temperature sensor is disconnected.", - Causes = new[] { "Sensor not installed", "Sensor cable fault", "Sensor failure" }, - NextSteps = new[] { "Check if temperature sensor of lead-acid battery is installed", "Verify connections" } + 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 = "Battery temperature is outside the safe operating range.", - Causes = new[] { "High ambient temperature", "Poor battery ventilation", "Battery overheating", "Cold environment" }, - NextSteps = new[] { "Check if ambient temperature of battery is within specified range", "Improve battery cooling/heating" } + 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 = "Battery BMS has reported a fault preventing charging and discharging.", - Causes = new[] { "BMS internal fault", "Cell protection triggered", "Communication error" }, - NextSteps = new[] { "Figure out the cause according to BMS error code", "Check battery status display" } + 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.", - Causes = new[] { "Load power exceeds battery discharge rating", "High inrush current" }, - NextSteps = new[] { "Check if power of load exceeds BAT rated discharge power", "Reduce load" } + 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 = "BMS communication is abnormal.", - Causes = new[] { "Communication timeout", "Protocol error", "Cable fault" }, - NextSteps = new[] { "Restart the inverter", "Check BMS communication cable" } + 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 = "Battery surge protection device (SPD) function is abnormal.", - Causes = new[] { "SPD triggered", "SPD failure", "Lightning damage" }, - NextSteps = new[] { "Check BAT SPD after powering off device", "Replace SPD if triggered" } + 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 = "Output DC component bias is abnormal.", - Causes = new[] { "Sensor drift", "Control issue", "Hardware fault" }, - NextSteps = new[] { "Restart the inverter", "If fault persists, contact manufacturer" } + 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 = "DC component in output voltage is too high.", - Causes = new[] { "Control drift", "Sensor fault", "Transformer issue" }, - NextSteps = new[] { "Restart the inverter", "Check output for DC offset" } + 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 = "Off-grid/EPS output voltage is too low.", - Causes = new[] { "Overload", "Battery voltage low", "Inverter limitation" }, - NextSteps = new[] { "Restart the inverter", "Reduce load", "If fault persists, contact manufacturer" } + 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 = "Off-grid/EPS output voltage is too high.", - Causes = new[] { "Control fault", "Voltage regulation issue" }, - NextSteps = new[] { "Restart the inverter", "If fault persists, contact manufacturer" } + 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 = "Off-grid output current overcurrent detected.", - Causes = new[] { "Load exceeds specification", "Short circuit in load", "Inrush current" }, - NextSteps = new[] { "Check if load is within specification", "Look for short circuits" } + 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 = "Off-grid DC bus voltage is too low.", - Causes = new[] { "Battery depleted", "High load demand", "Power electronics issue" }, - NextSteps = new[] { "Check if load power exceeds upper limit", "Allow battery to charge" } + 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 = "Off-grid output is overloaded.", - Causes = new[] { "Load exceeds EPS capacity", "Too many appliances on backup" }, - NextSteps = new[] { "Check if load is within specification", "Reduce backup load" } + 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 = "Phase balancing circuit is abnormal.", - Causes = new[] { "Balance circuit fault", "Control issue" }, - NextSteps = new[] { "Restart the inverter", "Check phase balance" } + 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 = "Export limitation fail-safe has triggered.", - Causes = new[] { "CT disconnected", "Meter communication lost", "Feedback loop failure" }, - NextSteps = new[] { "After shutdown, check connection of CT and meter", "Verify export limit settings" } + 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 = "DCI (DC Injection) bias is abnormal - safety protection.", - Causes = new[] { "DC injection into grid", "Sensor fault", "Transformer issue" }, - NextSteps = new[] { "Restart the inverter", "If persistent, requires service" } + 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 output current.", - Causes = new[] { "Output filter issue", "Control fault", "Transformer saturation" }, - NextSteps = new[] { "Restart the inverter", "Check output connections" } + 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 = "DC bus voltage sampling is abnormal.", - Causes = new[] { "Voltage sensor fault", "ADC error", "Hardware issue" }, - NextSteps = new[] { "Restart the inverter", "If persistent, requires service" } + 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 = "Internal relay fault detected.", - Causes = new[] { "Relay failure", "Contact welding", "Driver circuit fault" }, - NextSteps = new[] { "Restart the inverter", "If persistent, relay replacement needed" } + 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 = "DC bus voltage is abnormal.", - Causes = new[] { "Power electronics fault", "Capacitor issue", "Control failure" }, - NextSteps = new[] { "Restart the inverter", "If persistent, requires service" } + 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 failure between control boards.", - Causes = new[] { "Communication board fault", "Cable loose", "EMI interference" }, - NextSteps = new[] { "Check wiring of communication board after shutdown", "Restart inverter" } + 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 = "Temperature sensor is disconnected.", - Causes = new[] { "Sensor failure", "Cable fault", "Connector issue" }, - NextSteps = new[] { "Check wiring of communication board after shutdown", "Replace sensor if faulty" } + 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 = "IGBT gate drive fault detected.", - Causes = new[] { "Driver circuit failure", "IGBT fault", "Power supply issue" }, - NextSteps = new[] { "Restart the inverter", "If persistent, requires professional service" } + 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 = "EEPROM read/write error.", - Causes = new[] { "Memory chip fault", "Data corruption", "Hardware failure" }, - NextSteps = new[] { "Restart the inverter", "Factory reset may be required" } + 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 = "Auxiliary power supply is abnormal.", - Causes = new[] { "Internal power supply failure", "Component fault" }, - NextSteps = new[] { "Restart the inverter", "If persistent, requires service" } + 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.", - Causes = new[] { "Short circuit", "Severe overload", "Power electronics fault" }, - NextSteps = new[] { "Restart the inverter", "Check for short circuits", "Reduce load" } + 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 = "Communication protocol mismatch between components.", - Causes = new[] { "Firmware version mismatch", "Configuration error" }, - NextSteps = new[] { "Restart the inverter", "Update firmware if needed" } + 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 = "DSP and COM board firmware versions are mismatched.", - Causes = new[] { "Incomplete firmware update", "Wrong firmware loaded" }, - NextSteps = new[] { "Restart the inverter", "Perform complete firmware update" } + 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 = "DSP software and hardware versions are mismatched.", - Causes = new[] { "Hardware replacement with incompatible firmware" }, - NextSteps = new[] { "Restart the inverter", "Contact support for firmware update" } + 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 = "CPLD (programmable logic) is abnormal.", - Causes = new[] { "CPLD failure", "Firmware corruption" }, - NextSteps = new[] { "Restart the inverter", "If persistent, requires service" } + 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 = "Redundancy sampling values are inconsistent.", - Causes = new[] { "Sensor mismatch", "Calibration error", "Hardware fault" }, - NextSteps = new[] { "Restart the inverter", "May require recalibration" } + 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 = "PWM pass-through signal failure.", - Causes = new[] { "Control board fault", "Signal path issue" }, - NextSteps = new[] { "Restart the inverter", "If persistent, requires service" } + 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 = "AFCI (Arc Fault Circuit Interrupter) self-test failed.", - Causes = new[] { "AFCI module fault", "Self-test circuit issue" }, - NextSteps = new[] { "Restart the inverter", "AFCI may need replacement" } + 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 = "PV current sampling is abnormal.", - Causes = new[] { "Current sensor fault", "ADC error" }, - NextSteps = new[] { "Restart the inverter", "If persistent, requires service" } + 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 = "AC current sampling is abnormal.", - Causes = new[] { "CT fault", "Sensor failure", "ADC error" }, - NextSteps = new[] { "Restart the inverter", "Check CT connections" } + 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 = "DC bus soft-boot (pre-charge) failed.", - Causes = new[] { "Pre-charge circuit fault", "Capacitor issue", "Relay fault" }, - NextSteps = new[] { "Restart the inverter", "If persistent, requires service" } + 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 = "EPO (Emergency Power Off) fault triggered.", - Causes = new[] { "EPO button pressed", "EPO circuit activated", "Safety system trigger" }, - NextSteps = new[] { "Restart the inverter", "Check EPO circuit if unintentional" } + 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 = "Monitoring chip BOOT verification failed.", - Causes = new[] { "Firmware corruption", "Chip failure" }, - NextSteps = new[] { "Restart the inverter", "May require firmware reload" } + 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 = "BMS failed to communicate with the inverter.", - Causes = new[] { "RS485 cable fault", "BMS offline", "Protocol mismatch" }, - NextSteps = new[] { "Check connection of RS485 cable between inverter and battery" } + 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 = "BMS reports that battery cannot charge or discharge.", - Causes = new[] { "BMS internal fault", "Protection triggered", "Cell issue" }, - NextSteps = new[] { "Figure out the fault based on BMS error code", "Check battery status" } + 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 minimum.", - Causes = new[] { "Deep discharge, cell failure" }, - NextSteps = new[] { "Check battery voltage" } + 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 upper threshold.", - Causes = new[] { "Overcharging", "BMS fault", "Cell failure" }, - NextSteps = new[] { "Check battery voltage", "If within permissible range, restart inverter" } + 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 = "Battery temperature is outside safe charging/discharging range.", - Causes = new[] { "Battery too hot", "Battery too cold", "Sensor fault" }, - NextSteps = new[] { "Check temperature of the battery", "Improve battery environment" } + 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 reversed.", - Causes = new[] { "Wrong connection" }, - NextSteps = new[] { "Correct polarity immediately" } + 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 = "Battery is open-circuited (not connected).", - Causes = new[] { "Battery cable disconnected", "Fuse blown", "BMS cutoff" }, - NextSteps = new[] { "Check wiring of battery terminals", "Verify fuses" } + 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.", - Causes = new[] { "Load exceeds battery discharge rating" }, - NextSteps = new[] { "Check if power of load exceeds battery rated discharge power", "Reduce load" } + 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 = "Secondary DC bus voltage is abnormal.", - Causes = new[] { "Power electronics fault", "Control issue" }, - NextSteps = new[] { "Restart the inverter" } + 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) triggered.", - Causes = new[] { "PV oversized for battery", "Charge current setting too high" }, - NextSteps = new[] { "Check if PV voltage is oversized", "Reduce charge current setting" } + 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) triggered.", - Causes = new[] { "Load too high", "Discharge current setting wrong" }, - NextSteps = new[] { "Check if battery discharge current configuration is proper", "Reduce load" } + 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 = "Battery soft-start failed.", - Causes = new[] { "Pre-charge circuit fault", "Battery voltage mismatch" }, - NextSteps = new[] { "Restart the inverter", "Check battery voltage" } + 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 = "EPS output is short-circuited.", - Causes = new[] { "Short circuit in load" }, - NextSteps = new[] { "Check load wiring" } + 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 = "Off-grid DC bus voltage is too low.", - Causes = new[] { "Battery depleted", "High load", "Power electronics issue" }, - NextSteps = new[] { "Check if battery is working properly or has capacity loss" } + 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 = "Abnormal voltage detected at off-grid terminal.", - Causes = new[] { "External voltage present", "Wiring fault", "Backfeed" }, - NextSteps = new[] { "Check if a voltage is present at AC port", "Verify wiring" } + 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 = "Off-grid soft-start failed.", - Causes = new[] { "Pre-charge failure", "Load too heavy at startup" }, - NextSteps = new[] { "Restart the inverter", "Reduce initial load" } + 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 = "Off-grid output voltage is abnormal.", - Causes = new[] { "Control fault", "Hardware issue" }, - NextSteps = new[] { "Restart the inverter" } + 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 = "Balanced circuit self-test failed.", - Causes = new[] { "Balance circuit fault" }, - NextSteps = new[] { "Restart the inverter" } + 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 = "High DC component in output voltage.", - Causes = new[] { "Control drift", "Transformer issue" }, - NextSteps = new[] { "Restart the inverter" } - }, - ["OffGridOutputOverload"] = new() - { - Explanation = "Off-grid output overloaded.", - Causes = new[] { "Excessive load" }, - NextSteps = new[] { "Reduce load" } + 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 = "Off-grid parallel communication signal is abnormal.", - Causes = new[] { "Parallel cable fault", "Configuration mismatch" }, - NextSteps = new[] { "Check if communication cables are properly connected" } + 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 - fire risk protection activated.", - Causes = new[] { "Loose connection causing arcing", "Damaged cable insulation", "Connector fault", "Module junction box issue" }, - NextSteps = new[] { "After shutdown, check connection of PV string", "Inspect all connectors", "Look for damaged insulation" } + 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 detected.", - Causes = new[] { "Ground fault in PV array", "Insulation breakdown", "Moisture ingress", "Cable damage" }, - NextSteps = new[] { "Restart the inverter", "If persistent, check PV array insulation" } + 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 = "DC input voltage exceeds the maximum safe limit.", - Causes = new[] { "Too many PV modules in series", "Cold temperature increasing Voc" }, - NextSteps = new[] { "Disconnect DC switch immediately", "Check voltage", "Reconfigure strings if needed" } + 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" } }, }; }