Specifies how to detect and log redundant phase faults in a voltage regulator.
A voltage regulator is sometimes called a "phase controller" because it controls one or more phases that perform the actual voltage regulation.
A regulator may have redundant phases. If a redundant phase fails, the regulator will continue to provide the desired output voltage. However, a phase fault error should be logged warning the user that the regulator has lost redundancy.
The technique used to detect a phase fault varies depending on the regulator hardware. Often a bit is checked in a status register. The status register could exist in the regulator or in a related I/O expander.
Phase fault detection is performed every 15 seconds. A phase fault must be detected two consecutive times (15 seconds apart) before an error is logged. This provides "de-glitching" to ignore transient hardware problems.
Phase faults are detected and logged by executing actions:
The actions can be specified in two ways:
The default device for the actions is the voltage regulator. You can specify a different device using the "device_id" property. If you need to access multiple devices, use the set_device action.
Name | Required | Type | Description |
---|---|---|---|
comments | no | array of strings | One or more comment lines describing the phase fault detection. |
device_id | no | string | Unique ID of the device to access. If not specified, the default device is the voltage regulator. |
rule_id | see notes | string | Unique ID of the rule to execute. |
actions | see notes | array of actions | One or more actions to execute. |
{ "comments": [ "Detect phase fault using I/O expander" ], "device_id": "io_expander", "rule_id": "detect_phase_fault_rule" } { "comments": [ "Detect N phase fault using I/O expander.", "A fault occurred if bit 3 is ON in register 0x02.", "Capture value of registers 0x02 and 0x04 in error log." ], "device_id": "io_expander", "actions": [ { "if": { "condition": { "i2c_compare_bit": { "register": "0x02", "position": 3, "value": 1 } }, "then": [ { "i2c_capture_bytes": { "register": "0x02", "count": 1 } }, { "i2c_capture_bytes": { "register": "0x04", "count": 1 } }, { "log_phase_fault": { "type": "n" } } ] } } ] }