diff --git a/data/cmdvartab b/data/cmdvartab index 38d2b356dd..78fdef4712 100644 --- a/data/cmdvartab +++ b/data/cmdvartab @@ -56,6 +56,13 @@ VARDESC input.voltage.nominal "Nominal input voltage (V)" VARDESC input.transfer.reason "Reason for last transfer to battery" VARDESC input.transfer.low "Low voltage transfer point (V)" VARDESC input.transfer.high "High voltage transfer point (V)" +VARDESC input.transfer.eco.low "Low voltage ECO transfer point (V)" +VARDESC input.transfer.bypass.low "Low voltage Bypass transfer point (V)" +VARDESC input.transfer.eco.high "High voltage ECO transfer point (V)" +VARDESC input.transfer.bypass.high "High voltage Bypass transfer point (V)" +VARDESC input.transfer.frequency.bypass.range "Frequency range Bypass transfer point (percent of nominal Hz)" +VARDESC input.transfer.frequency.eco.range "Frequency range ECO transfer point (percent of nominal Hz)" +VARDESC input.transfer.hysteresis "Threshold of switching protection modes, voltage transfer point (V)" VARDESC input.transfer.low.min "smallest settable low voltage transfer point (V)" VARDESC input.transfer.low.max "greatest settable low voltage transfer point (V)" VARDESC input.transfer.high.min "smallest settable high voltage transfer point (V)" diff --git a/docs/nut-names.txt b/docs/nut-names.txt index 2149fccdbc..6c7dbd5b2c 100644 --- a/docs/nut-names.txt +++ b/docs/nut-names.txt @@ -291,6 +291,20 @@ input: Incoming line/power information transfer point (V) | 230 | input.transfer.trim.high | High voltage trimming transfer point (V) | 240 +| input.transfer.eco.low | Low voltage ECO + transfer point (V) | 218 +| input.transfer.bypass.low | Low voltage Bypass + transfer point (V) | 184 +| input.transfer.eco.high | High voltage ECO + transfer point (V) | 241 +| input.transfer.bypass.high | High voltage Bypass + transfer point (V) | 264 +| input.transfer.frequency.bypass.range | Frequency range Bypass transfer + point (percent of nominal Hz) | 10 +| input.transfer.frequency.eco.range | Frequency range ECO transfer + point (percent of nominal Hz) | 5 +| input.transfer.hysteresis | Threshold of switching protection modes, + voltage transfer point (V) | 10 | input.load | Load on (ePDU) input (percent of full) | 25 | input.realpower | Current sum value of all (ePDU) @@ -305,6 +319,32 @@ input: Incoming line/power information sources (degrees) | 181 |================================================================================= +[NOTE] +.Input Voltage Hysteresis +====== +The input voltage hysteresis concept refers to a specific behavior related +to how some UPS models can handle changes in input voltage. + +When the UPS is running normally (powered by utility or generator), it +maintains a steady output voltage for your critical equipment. But what +if the input voltage "wiggles" a bit due to fluctuations or other minor +disturbances? + +Rapid switching between UPS protection modes (utility power to battery +and vice versa) can stress both the UPS and its connected devices. + +So, some UPS models set up thresholds: If the input voltage drops below +a certain "Low" level, the UPS won't immediately switch to battery mode. +Instead, it waits until it is sure the voltage stays consistently low +for a bit. Similarly, if the input voltage rises above another threshold +(the "High" level), the UPS won't rush back to normal mode. It waits for +stability. + +By introducing hysteresis, such an UPS avoids unnecessary toggling, ensuring +smoother transitions and better protection for your sensitive and expensive +gear. +====== + output: Outgoing power/inverter information ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/drivers/mge-hid.c b/drivers/mge-hid.c index b174ac4d6b..5c9e6b33e4 100644 --- a/drivers/mge-hid.c +++ b/drivers/mge-hid.c @@ -50,7 +50,7 @@ # endif #endif -#define MGE_HID_VERSION "MGE HID 1.48" +#define MGE_HID_VERSION "MGE HID 1.49" /* (prev. MGE Office Protection Systems, prev. MGE UPS SYSTEMS) */ /* Eaton */ @@ -995,7 +995,7 @@ static usage_lkp_t mge_usage_lkp[] = { { "DataValid", 0xffff0099 }, { "ToggleTimer", 0xffff009a }, { "BypassTransferDelay", 0xffff009b }, - { "HysteresysVoltageTransfer", 0xffff009c }, + { "HysteresisVoltageTransfer", 0xffff009c }, { "SlewRate", 0xffff009d }, /* 0xffff009e-0xffff009f => Reserved */ { "PDU", 0xffff00a0 }, @@ -1404,11 +1404,18 @@ static hid_info_t mge_hid2nut[] = { "input.frequency.nominal", 0, 0, "UPS.Flow.[1].ConfigFrequency", NULL, "%.0f", HU_FLAG_STATIC, NULL }, /* same as "input.transfer.boost.low" */ { "input.transfer.low", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.LowVoltageTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, + { "input.transfer.eco.low", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.LowVoltageEcoTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, + { "input.transfer.bypass.low", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.LowVoltageBypassTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, { "input.transfer.boost.low", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.LowVoltageBoostTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, { "input.transfer.boost.high", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.HighVoltageBoostTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, { "input.transfer.trim.low", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.LowVoltageBuckTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, /* same as "input.transfer.trim.high" */ { "input.transfer.high", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.HighVoltageTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, + { "input.transfer.eco.high", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.HighVoltageEcoTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, + { "input.transfer.bypass.high", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.HighVoltageBypassTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, + { "input.transfer.frequency.bypass.range", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.FrequencyRangeBypassTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, + { "input.transfer.frequency.eco.range", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.FrequencyRangeEcoTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, + { "input.transfer.hysteresis", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.HysteresisVoltageTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, { "input.transfer.trim.high", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.HighVoltageBuckTransfer", NULL, "%.0f", HU_FLAG_SEMI_STATIC, NULL }, { "input.sensitivity", ST_FLAG_RW | ST_FLAG_STRING, 10, "UPS.PowerConverter.Output.SensitivityMode", NULL, "%s", HU_FLAG_SEMI_STATIC, mge_sensitivity_info }, { "input.voltage.extended", ST_FLAG_RW | ST_FLAG_STRING, 5, "UPS.PowerConverter.Output.ExtendedVoltageMode", NULL, "%s", HU_FLAG_SEMI_STATIC, yes_no_info },