omron e5 registers cleaned

This commit is contained in:
lovebird 2025-04-24 21:53:41 +02:00
parent 0125820c89
commit 4c7cbc336d

View File

@ -5,6 +5,8 @@
/**
* @brief Existing Enums for Omron E5CC/E5EC Commands (Provided)
* These enums define the possible data values for specific Modbus commands.
* These are typically written to the "Command Execution" register (address varies by PLC/Master configuration, often 0x0000 or similar).
* The *data* value written determines the command executed.
*/
/**
@ -147,14 +149,14 @@ enum OR_E5_COMMAND_CODES : uint16_t
*/
// --------------------------------------------------------------------------
// --- Enums Generated/Merged from Provided Code and Images ---
// --- Enums Generated/Merged from Original Code and H175 Manual Images ---
// --------------------------------------------------------------------------
/**
* @brief Defines the Modbus register addresses for the Variable Area (Setting Range) List.
* Merges registers from the provided initial code and the new images (from H175 manual pages 5-7 to 5-13).
* Merges registers from the provided initial code and the new images (H175 manual, including pg H175-5-15, H175-5-16).
* Uses Two-byte mode addresses. Register names may vary slightly based on context (e.g., monitor vs. setting).
* Levels indicated where known (e.g., IS=Initial Setting, AFS=Advanced Function Setting, ADJ=Adjustment, OP=Operation).
* Levels indicated where known (e.g., IS=Initial Setting, AFS=Advanced Function Setting, ADJ=Adjustment, OP=Operation, Comm=Communication).
* Note: 4-byte registers are handled as two consecutive 16-bit registers in standard Modbus reads,
* or a single 32-bit read if supported. Comments mention this. For settings requiring values
* larger than 16-bit (signed or unsigned), writing usually targets the low word address (e.g., `xxxx`).
@ -163,27 +165,27 @@ enum OR_E5_COMMAND_CODES : uint16_t
enum OR_E5_VARIABLE_REGISTERS : uint16_t
{
// --- Block 1: Status/Monitor/Initial Setup --- (Primarily 0x20xx - OP Level Monitor)
E_PV_REGISTER = 0x2000, // Process Value (OP Level Monitor). Range depends on sensor/analog input. Scaling: Lower limit - 5% FS to Upper limit + 5% FS.
E_PV_REGISTER = 0x2000, // Process Value (OP Level Monitor). Range depends on sensor/analog input. Scaling: Lower limit - 5% FS to Upper limit + 5% FS. Uses 4 bytes. Read low word (or both).
E_STATUS_1_REGISTER = 0x2001, // Status 1 (OP Level Monitor). Refer to manual section 5-2 for bit details. (*2: rightmost 16 bits). See Placeholder Status Enums below.
E_INTERNAL_SP_REGISTER = 0x2002, // Internal Set Point (OP Level Monitor, *1 note in manual). Range: SP lower limit to SP upper limit. (*1: Not displayed on controller).
E_INTERNAL_SP_REGISTER = 0x2002, // Internal Set Point (OP Level Monitor, *1 note in manual). Range: SP lower limit to SP upper limit. (*1: Not displayed on controller). Uses 4 bytes. Read low word (or both).
E_HEATER_CURRENT_1_REGISTER = 0x2003, // Heater Current 1 Value Monitor (OP Level Monitor). Range: 0.0 to 55.0 A (H'0000 to H'0226).
E_MV_MONITOR_HEAT_REGISTER = 0x2004, // MV Monitor (Heating) (OP Level Monitor). Range: Standard: -5.0 to 105.0 %; Heat/Cool: 0.0 to 105.0 %.
E_MV_MONITOR_COOL_REGISTER = 0x2005, // MV Monitor (Cooling) (OP Level Monitor). Range: 0.0 to 105.0 %.
E_MV_MONITOR_HEAT_REGISTER = 0x2004, // MV Monitor (Heating) (OP Level Monitor). Range: Standard: -5.0 to 105.0 %; Heat/Cool: 0.0 to 105.0 %. Uses 4 bytes. Read low word (or both).
E_MV_MONITOR_COOL_REGISTER = 0x2005, // MV Monitor (Cooling) (OP Level Monitor). Range: 0.0 to 105.0 %. Uses 4 bytes. Read low word (or both).
// --- Block 2: Alarm Related Settings --- (Primarily 0x21xx - Setup Level ?)
// --- Block 2: Alarm Related Settings --- (Primarily 0x21xx - Setup Level ?) -> These seem deprecated or less common? Compare to 0x29xx
// Note: Addresses 0x2103-0x210F appear in some older manuals but might be superseded by 0x29xx in newer ones like H175. Retained for reference.
E_SET_POINT_SETUP_REGISTER = 0x2103, // Set Point (Setup level?). Range: SP lower limit to SP upper limit. Uses 4 bytes (low word write). Compare 0x2601, 0x2900.
E_ALARM_VALUE_1_SETUP_REGISTER = 0x2104, // Alarm Value 1 Setting (Setup level?). Range: -1999 to 9999. Units depend on input. Uses 4 bytes (low word write). Compare 0x2902.
E_ALARM_1_UPPER_SETUP_REGISTER = 0x2105, // Alarm Value Upper Limit 1 Setting (Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2903.
E_ALARM_1_LOWER_SETUP_REGISTER = 0x2106, // Alarm Value Lower Limit 1 Setting (Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2904.
E_ALARM_VALUE_2_SETUP_REGISTER = 0x2107, // Alarm Value 2 Setting (Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2905.
E_ALARM_2_UPPER_SETUP_REGISTER = 0x2108, // Alarm Value Upper Limit 2 Setting (Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2906.
E_ALARM_2_LOWER_SETUP_REGISTER = 0x2109, // Alarm Value Lower Limit 2 Setting (Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2907.
E_SET_POINT_SETUP_REGISTER = 0x2103, // Set Point (Possible Setup level?). Range: SP lower limit to SP upper limit. Uses 4 bytes (low word write). Compare 0x2601, 0x2900.
E_ALARM_VALUE_1_SETUP_REGISTER = 0x2104, // Alarm Value 1 Setting (Possible Setup level?). Range: -1999 to 9999. Units depend on input. Uses 4 bytes (low word write). Compare 0x2902.
E_ALARM_1_UPPER_SETUP_REGISTER = 0x2105, // Alarm Value Upper Limit 1 Setting (Possible Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2903.
E_ALARM_1_LOWER_SETUP_REGISTER = 0x2106, // Alarm Value Lower Limit 1 Setting (Possible Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2904.
E_ALARM_VALUE_2_SETUP_REGISTER = 0x2107, // Alarm Value 2 Setting (Possible Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2905.
E_ALARM_2_UPPER_SETUP_REGISTER = 0x2108, // Alarm Value Upper Limit 2 Setting (Possible Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2906.
E_ALARM_2_LOWER_SETUP_REGISTER = 0x2109, // Alarm Value Lower Limit 2 Setting (Possible Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2907.
// Note: Setup level alarm settings 3/4 definitions not explicitly found here. See 0x29xx (ADJ) and 0x2Fxx (Type/Config).
// --- Block 3: Monitoring / Status --- (Primarily 0x24xx - Operation Level Monitors)
E_PV_MONITOR_REGISTER = 0x2402, // Process Value (Monitor). Range depends on sensor/analog input. Same range as 0x2000.
E_INTERNAL_SP_MONITOR_REGISTER= 0x2403, // Internal Set Point Monitor (*1 note in manual). Range: SP lower limit to SP upper limit. Same range as 0x2002. (*1: Not displayed).
E_PV_MONITOR_REGISTER = 0x2402, // Process Value (Monitor). Range depends on sensor/analog input. Same range as 0x2000. Uses 4 bytes. Read low word (or both).
E_INTERNAL_SP_MONITOR_REGISTER= 0x2403, // Internal Set Point Monitor (*1 note in manual). Range: SP lower limit to SP upper limit. Same range as 0x2002. (*1: Not displayed). Uses 4 bytes. Read low word (or both).
E_MULTI_SP_MONITOR_REGISTER = 0x2404, // Multi-SP No. Monitor. Range: 0 to 7. Values correspond to OR_E5_CMD_MULTI_SP enum.
E_STATUS_2_REGISTER = 0x2406, // Status (Monitor). Refer to manual section 5-2 for bit details. (*2: rightmost 16 bits). See Placeholder Status Enums below.
E_STATUS_3_REGISTER = 0x2407, // Status (Monitor High Word). Refer to manual section 5-2 for bit details. (*3: leftmost 16 bits == high word of 4-byte Status). See Placeholder Status Enums below.
@ -196,57 +198,57 @@ enum OR_E5_VARIABLE_REGISTERS : uint16_t
E_INIT_COMM_PROTECT_REGISTER = 0x2501, // Initial Setting/Communications Protect Setpoint. See OR_E5_INITIAL_PROTECT_LEVEL. Default: 0. Protect Level.
E_SETTING_CHANGE_PROTECT_REGISTER = 0x2502, // Setting Change Protect setting. See OR_E5_SETTING_CHANGE_PROTECT. Default: 0. Protect Level.
E_PF_KEY_PROTECT_REGISTER = 0x2503, // PF Key Protect setting. See OR_E5_PF_KEY_PROTECT. Default: 0. Protect Level.
E_MOVE_TO_PROTECT_LEVEL_REGISTER = 0x2504, // Move to Protect Level setting. Range: -1999 to 9999. Command 0x08 writes 0 here. Protect Level. Uses 4 bytes. Write low word.
E_PASSWORD_PROTECT_LEVEL_REGISTER = 0x2505, // Password to Move to Protect Level (Set only). Range: -1999 to 9999. Monitor value reads 0. Protect Level. Uses 4 bytes. Write low word.
E_MOVE_TO_PROTECT_LEVEL_REGISTER = 0x2504, // Move to Protect Level setting. Range: -1999 to 9999. Command 0x08 writes 0 here. Protect Level. Uses 4 bytes (two 16-bit regs). Write low word.
E_PASSWORD_PROTECT_LEVEL_REGISTER = 0x2505, // Password to Move to Protect Level (Set only). Range: -1999 to 9999. Monitor value reads 0. Protect Level. Uses 4 bytes (two 16-bit regs). Write low word.
E_PARAM_MASK_ENABLE_REGISTER = 0x2506, // Parameter Mask Enable setting. See OR_E5_PARAM_MASK_ENABLE. Default: 0. Protect Level.
E_CHANGED_PARAMS_ONLY_REGISTER = 0x2507, // Changed Parameters Only setting. See OR_E5_CHANGED_PARAMS_ONLY. Default: 0. Protect Level.
// --- Block 5: Manual Control / Operation Level --- (Primarily 0x26xx - OP Level)
E_MANUAL_MV_REGISTER = 0x2600, // Manual MV (Manipulated Value). Range depends on model/control type (Std/PosProp: -5.0 to 105.0%; Heat/Cool: -105.0 to 105.0%). Uses 4 bytes (two 16-bit registers). Write low word.
E_OPERATION_SET_POINT_REGISTER = 0x2601, // Set Point (Monitor - Current Operational SP value). Range: SP lower limit to SP upper limit. Compare 0x2103 (Setup?) and 0x29xx (SP0-7 Settings). Uses 4 bytes. Read low word (or both).
E_REMOTE_SP_MONITOR_REGISTER = 0x2602, // Remote SP Monitor. Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS. Uses 4 bytes (two 16-bit registers).
E_REMOTE_SP_MONITOR_REGISTER = 0x2602, // Remote SP Monitor. Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS. Uses 4 bytes (two 16-bit registers). Read low word (or both).
E_OPERATION_HEATER_CURRENT_1_REGISTER = 0x2604, // Heater Current 1 Value Monitor (OP Level Monitor). Range: 0.0 to 55.0 A. Compare 0x2003, 0x271A.
E_OPERATION_MV_MONITOR_HEAT_REGISTER = 0x2605, // MV Monitor (Heating) (OP Level Monitor). Range: Std: -5.0 to 105.0 %; Heat/Cool: 0.0 to 105.0 %. Compare 0x2004.
E_OPERATION_MV_MONITOR_COOL_REGISTER = 0x2606, // MV Monitor (Cooling) (OP Level Monitor). Range: 0.0 to 105.0 %. Compare 0x2005.
E_VALVE_OPENING_MONITOR_REGISTER = 0x2607, // Valve Opening Monitor (Pos Prop Control). Range: -10.0 to 110.0 %.
E_OPERATION_MV_MONITOR_HEAT_REGISTER = 0x2605, // MV Monitor (Heating) (OP Level Monitor). Range: Std: -5.0 to 105.0 %; Heat/Cool: 0.0 to 105.0 %. Compare 0x2004. Uses 4 bytes. Read low word (or both).
E_OPERATION_MV_MONITOR_COOL_REGISTER = 0x2606, // MV Monitor (Cooling) (OP Level Monitor). Range: 0.0 to 105.0 %. Compare 0x2005. Uses 4 bytes. Read low word (or both).
E_VALVE_OPENING_MONITOR_REGISTER = 0x2607, // Valve Opening Monitor (Pos Prop Control). Range: -10.0 to 110.0 %. Uses 4 bytes. Read low word (or both).
// --- Block 6: PID / Control Parameters / Ramps / Heater --- (Primarily 0x27xx - Mostly ADJ Level)
E_PROP_BAND_COOL_REGISTER = 0x2701, // Proportional Band (Cooling) (ADJ Level). Range: 0.1 to 999.9 %.
E_INTEGRAL_TIME_COOL_REGISTER = 0x2702, // Integral Time (Cooling) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s (see time unit).
E_DERIVATIVE_TIME_COOL_REGISTER = 0x2703, // Derivative Time (Cooling) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s (see time unit).
E_PROP_BAND_COOL_REGISTER = 0x2701, // Proportional Band (Cooling) (ADJ Level). Range: 0.1 to 999.9 %. Uses 4 bytes. Write low word.
E_INTEGRAL_TIME_COOL_REGISTER = 0x2702, // Integral Time (Cooling) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s (see time unit 0x3309). Uses 4 bytes. Write low word.
E_DERIVATIVE_TIME_COOL_REGISTER = 0x2703, // Derivative Time (Cooling) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s (see time unit 0x3309). Uses 4 bytes. Write low word.
E_DEAD_BAND_REGISTER = 0x2704, // Dead Band (ADJ Level). Range depends on input type (-199.9 to 999.9 or -19.99 to 99.99). Uses 4 bytes (two 16-bit registers). Write low word.
E_MANUAL_RESET_VALUE_REGISTER = 0x2705, // Manual Reset Value (ADJ Level). Range: 0.0 to 100.0 %.
E_HYSTERESIS_HEAT_REGISTER = 0x2706, // Hysteresis (Heating) (ADJ Level). Range depends on input type (0.1 to 999.9 or 0.01 to 99.99).
E_HYSTERESIS_COOL_REGISTER = 0x2707, // Hysteresis (Cooling) (ADJ Level). Range depends on input type (0.1 to 999.9 or 0.01 to 99.99).
E_CONTROL_PERIOD_HEAT_REGISTER = 0x2708, // Control Period (Heating) (IS Level). See OR_E5_CONTROL_PERIOD_VALUES. Range: -2, -1, 0, 1..99. Needs signed read/write.
E_CONTROL_PERIOD_COOL_REGISTER = 0x2709, // Control Period (Cooling) (IS Level). See OR_E5_CONTROL_PERIOD_VALUES. Range: -2, -1, 0, 1..99. Needs signed read/write.
E_POS_PROP_DEAD_BAND_REGISTER = 0x270A, // Position Proportional Dead Band (ADJ Level). Range: 0.1 to 10.0 %.
E_OPEN_CLOSE_HYSTERESIS_REGISTER = 0x270B, // Open/Close Hysteresis (Pos Prop) (ADJ Level). Range: 0.1 to 20.0 %.
E_SP_RAMP_TIME_UNIT_REGISTER = 0x270C, // SP Ramp Time Unit (AFS Level). See OR_E5_SP_RAMP_TIME_UNIT. Range: 0 to 2. Default: 1.
E_SP_RAMP_SET_VALUE_REGISTER = 0x270D, // SP Ramp Set Value (ADJ Level). Range: 0 (OFF), 1 to 9999. Unit defined by 0x270C. Default: 0.
E_SP_RAMP_FALL_VALUE_REGISTER = 0x270E, // SP Ramp Fall Value (ADJ Level). Range: -1 (Same as Set), 0 (OFF), 1 to 9999. Unit defined by 0x270C. Default: 0. Needs signed read/write.
E_MANUAL_RESET_VALUE_REGISTER = 0x2705, // Manual Reset Value (ADJ Level). Range: 0.0 to 100.0 %. Uses 4 bytes. Write low word.
E_HYSTERESIS_HEAT_REGISTER = 0x2706, // Hysteresis (Heating) (ADJ Level). Range depends on input type (0.1 to 999.9 or 0.01 to 99.99). Stored as 1-9999. Uses 4 bytes. Write low word.
E_HYSTERESIS_COOL_REGISTER = 0x2707, // Hysteresis (Cooling) (ADJ Level). Range depends on input type (0.1 to 999.9 or 0.01 to 99.99). Stored as 1-9999. Uses 4 bytes. Write low word.
E_CONTROL_PERIOD_HEAT_REGISTER = 0x2708, // Control Period (Heating) (IS Level). See OR_E5_CONTROL_PERIOD_VALUES. Range: -2, -1, 0, 1..99. Signed. Uses potentially 4 bytes backend, write low word (int16_t).
E_CONTROL_PERIOD_COOL_REGISTER = 0x2709, // Control Period (Cooling) (IS Level). See OR_E5_CONTROL_PERIOD_VALUES. Range: -2, -1, 0, 1..99. Signed. Uses potentially 4 bytes backend, write low word (int16_t).
E_POS_PROP_DEAD_BAND_REGISTER = 0x270A, // Position Proportional Dead Band (ADJ Level). Range: 0.1 to 10.0 %. Uses 4 bytes. Write low word.
E_OPEN_CLOSE_HYSTERESIS_REGISTER = 0x270B, // Open/Close Hysteresis (Pos Prop) (ADJ Level). Range: 0.1 to 20.0 %. Uses 4 bytes. Write low word.
E_SP_RAMP_TIME_UNIT_REGISTER = 0x270C, // SP Ramp Time Unit (AFS Level). See OR_E5_SP_RAMP_TIME_UNIT. Range: 0 to 2. Default: 1. Uses 4 bytes. Write low word.
E_SP_RAMP_SET_VALUE_REGISTER = 0x270D, // SP Ramp Set Value (ADJ Level). Range: 0 (OFF), 1 to 9999. Unit defined by 0x270C. Default: 0. Uses 4 bytes. Write low word.
E_SP_RAMP_FALL_VALUE_REGISTER = 0x270E, // SP Ramp Fall Value (ADJ Level). Range: -1 (Same as Set), 0 (OFF), 1 to 9999. Unit defined by 0x270C. Default: 0. Signed. Uses 4 bytes (two 16-bit regs). Write low word.
E_MV_AT_STOP_REGISTER = 0x270F, // MV at Stop (IS Level). Range depends on model (Std: -5.0 to 105.0%). Uses 4 bytes (two 16-bit registers). Write low word.
E_MV_AT_PV_ERROR_REGISTER = 0x2711, // MV at PV Error (IS Level). Range depends on model/control type (Std: -5.0 to 105.0%; Heat/Cool: -105.0 to 105.0%). Uses 4 bytes (two 16-bit registers). Write low word.
E_MV_CHANGE_RATE_LIMIT_REGISTER = 0x2713, // MV Change Rate Limit (ADJ Level). Range: 0.0 (OFF) to 100.0 %/s.
E_MV_CHANGE_RATE_LIMIT_REGISTER = 0x2713, // MV Change Rate Limit (ADJ Level). Range: 0.0 (OFF) to 100.0 %/s. Uses 4 bytes. Write low word.
E_PV_INPUT_SLOPE_COEFF_REGISTER = 0x2718, // PV Input Slope Coefficient (ADJ Level). Range: 0.001 to 9.999. Used for scaling analog inputs. Uses 4 bytes (two 16-bit registers). Write low word.
E_ALT_HEATER_CURRENT_1_MONITOR_REGISTER = 0x271A, // Heater Current 1 Value Monitor (OP Level Monitor). Range: 0.0 to 55.0 A. (Appears functionally same as 0x2003/0x2604).
E_HEATER_BURNOUT_DETECT_1_REGISTER= 0x271B, // Heater Burnout Detection 1 Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A.
E_HEATER_BURNOUT_DETECT_1_REGISTER= 0x271B, // Heater Burnout Detection 1 Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A. Uses 4 bytes. Write low word.
E_LEAKAGE_CURRENT_1_MONITOR_REGISTER = 0x271C, // Leakage Current 1 Monitor (OP Level Monitor). Range: 0.0 to 55.0 A.
E_HS_ALARM_1_REGISTER = 0x271D, // HS Alarm 1 (Heater Short) Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A.
E_HS_ALARM_1_REGISTER = 0x271D, // HS Alarm 1 (Heater Short) Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A. Uses 4 bytes. Write low word.
E_PV_INPUT_SHIFT_REGISTER = 0x2723, // Process Value Input Shift (Offset) (ADJ Level). Range: -1999 to 9999. Unit depends on input type. Uses 4 bytes (two 16-bit registers). Write low word.
E_HEATER_CURRENT_2_MONITOR_REGISTER = 0x2724, // Heater Current 2 Value Monitor (OP Level Monitor). Range: 0.0 to 55.0 A.
E_HEATER_BURNOUT_DETECT_2_REGISTER= 0x2725, // Heater Burnout Detection 2 Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A.
E_HEATER_BURNOUT_DETECT_2_REGISTER= 0x2725, // Heater Burnout Detection 2 Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A. Uses 4 bytes. Write low word.
E_LEAKAGE_CURRENT_2_MONITOR_REGISTER = 0x2726, // Leakage Current 2 Monitor (OP Level Monitor). Range: 0.0 to 55.0 A.
E_HS_ALARM_2_REGISTER = 0x2727, // HS Alarm 2 (Heater Short) Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A.
E_SOAK_TIME_REMAIN_REGISTER = 0x2728, // Soak Time Remain (OP Level Monitor). Range: 0 to 9999.
E_SOAK_TIME_REGISTER = 0x2729, // Soak Time (ADJ Level). Range: 1 to 9999.
E_WAIT_BAND_REGISTER = 0x272A, // Wait Band (ADJ Level). Range: 0 (OFF), 0.1 to 999.9 (Temp) or 0.01 to 99.99 (Analog).
E_HS_ALARM_2_REGISTER = 0x2727, // HS Alarm 2 (Heater Short) Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A. Uses 4 bytes. Write low word.
E_SOAK_TIME_REMAIN_REGISTER = 0x2728, // Soak Time Remain (OP Level Monitor). Range: 0 to 9999. Units set by 0x3327. Uses 4 bytes. Read low word (or both).
E_SOAK_TIME_REGISTER = 0x2729, // Soak Time (ADJ Level). Range: 1 to 9999. Units set by 0x3327. Uses 4 bytes. Write low word.
E_WAIT_BAND_REGISTER = 0x272A, // Wait Band (ADJ Level). Range: 0 (OFF), 0.1 to 999.9 (Temp) or 0.01 to 99.99 (Analog). Stored as 1-9999. Uses 4 bytes. Write low word.
E_REMOTE_SP_INPUT_SHIFT_REGISTER = 0x272B, // Remote SP Input Shift (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word.
E_REMOTE_SP_INPUT_SLOPE_COEFF_REGISTER = 0x272C, // Remote SP Input Slope Coefficient (ADJ Level). Range: 0.001 to 9.999. Uses 4 bytes (two 16-bit registers). Write low word.
// --- Block 7: Advanced Parameters --- (Primarily 0x28xx - Mostly AFS Level)
E_INPUT_DIGITAL_FILTER_REGISTER = 0x2800, // Input Digital Filter (AFS Level). Range: 0.0 (OFF) to 999.9 s. Uses 4 bytes (two 16-bit registers). Write low word.
E_MOVING_AVERAGE_COUNT_REGISTER = 0x2804, // Moving Average Count (AFS Level). See OR_E5_MOVING_AVERAGE_COUNT. Range: 0 to 5. Default: 0. Uses 4 bytes (two 16-bit registers). Write low word.
E_MOVING_AVERAGE_COUNT_REGISTER = 0x2804, // Moving Average Count (AFS Level). See OR_E5_MOVING_AVERAGE_COUNT. Range: 0 to 5. Default: 0. Uses 4 bytes. Write low word.
E_SQRT_LOW_CUT_POINT_REGISTER = 0x2808, // Extraction of Square Root Low-cut Point (ADJ Level). Range: 0.0 to 100.0 %. Uses 4 bytes (two 16-bit registers). Write low word.
// Note: SQRT Enable register is 0x2E24 (was missing context)
@ -274,11 +276,11 @@ enum OR_E5_VARIABLE_REGISTERS : uint16_t
E_SP_7_REGISTER = 0x2962, // Set Point 7 Setting (ADJ Level). Range: SP lower limit to SP upper limit. Uses 4 bytes (two 16-bit registers). Write low word.
// --- Block 9: Adjustment Level PID / MV Limits --- (Primarily 0x2Axx - ADJ Level)
E_PROP_BAND_HEAT_REGISTER = 0x2A00, // Proportional Band (Heating/Primary) (ADJ Level). Range: 0.1 to 999.9 %.
E_INTEGRAL_TIME_HEAT_REGISTER = 0x2A01, // Integral Time (Heating/Primary) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s.
E_DERIVATIVE_TIME_HEAT_REGISTER = 0x2A02, // Derivative Time D (Heating/Primary) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s.
E_MV_UPPER_LIMIT_REGISTER = 0x2A05, // MV Upper Limit (ADJ Level). Range: Std/PosProp: MV lower limit+0.1 to 105.0%; Heat/Cool: 0.0 to 105.0%.
E_MV_LOWER_LIMIT_REGISTER = 0x2A06, // MV Lower Limit (ADJ Level). Range: Std/PosProp: -5.0 to MV upper limit-0.1%; Heat/Cool: -105.0 to 0.0 %. Uses 4 bytes (two 16-bit registers). Write low word.
E_PROP_BAND_HEAT_REGISTER = 0x2A00, // Proportional Band (Heating/Primary) (ADJ Level). Range: 0.1 to 999.9 %. Uses 4 bytes. Write low word.
E_INTEGRAL_TIME_HEAT_REGISTER = 0x2A01, // Integral Time (Heating/Primary) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s (see time unit 0x3309). Uses 4 bytes. Write low word.
E_DERIVATIVE_TIME_HEAT_REGISTER = 0x2A02, // Derivative Time D (Heating/Primary) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s (see time unit 0x3309). Uses 4 bytes. Write low word.
E_MV_UPPER_LIMIT_REGISTER = 0x2A05, // MV Upper Limit (ADJ Level). Range: Std/PosProp: MV lower limit+0.1 to 105.0%; Heat/Cool: 0.0 to 105.0%. Uses 4 bytes. Write low word.
E_MV_LOWER_LIMIT_REGISTER = 0x2A06, // MV Lower Limit (ADJ Level). Range: Std/PosProp: -5.0 to MV upper limit-0.1%; Heat/Cool: -105.0 to 0.0 %. Signed. Uses 4 bytes (two 16-bit registers). Write low word.
// --- Block 10: Initial/Advanced Settings --- (Primarily 0x2C/0x2D/0x2E - IS/AFS Level)
E_INPUT_TYPE_REGISTER = 0x2C00, // Input Type (IS Level). See OR_E5_INPUT_TYPE. Uses 4 bytes. Write low word.
@ -305,8 +307,8 @@ enum OR_E5_VARIABLE_REGISTERS : uint16_t
E_TRANSFER_OUTPUT_TYPE_REGISTER = 0x2E00, // Transfer Output Type (IS Level). See OR_E5_TRANSFER_OUTPUT_TYPE enum. Default: 0 (OFF). Uses 4 bytes. Write low word.
E_TRANSFER_OUTPUT_SIGNAL_REGISTER= 0x2E01, // Transfer Output Signal (IS Level). See OR_E5_TRANSFER_OUTPUT_SIGNAL enum. Default: 0 (4-20mA). Uses 4 bytes. Write low word.
E_CONTROL_OUTPUT_1_ASSIGN_REGISTER = 0x2E06, // Control Output 1 Assignment (AFS Level). See OR_E5_CONTROL_OUTPUT_ASSIGNMENT. Range: 0 to 22, -1 to -5. Default: 1 (Control Heat). Uses 4 bytes. Write low word (int16_t).
E_CONTROL_OUTPUT_2_ASSIGN_REGISTER = 0x2E07, // Control Output 2 Assignment (AFS Level). Range depends on output hardware (0-2 for current, 0-22 for others; also -1 to -5 for simple transfer). See OR_E5_CONTROL_OUTPUT_ASSIGNMENT. Default: 0 (None). Uses 4 bytes. Write low word (int16_t).
E_CONTROL_OUTPUT_1_ASSIGN_REGISTER = 0x2E06, // Control Output 1 Assignment (AFS Level). See OR_E5_CONTROL_OUTPUT_ASSIGNMENT. Range: 0 to 22, -1 to -5. Default: 1 (Control Heat). Uses potentially 4 bytes backend, write low word (int16_t).
E_CONTROL_OUTPUT_2_ASSIGN_REGISTER = 0x2E07, // Control Output 2 Assignment (AFS Level). Range depends on output hardware (0-2 for current, 0-22 for others; also -1 to -5 for simple transfer). See OR_E5_CONTROL_OUTPUT_ASSIGNMENT. Default: 0 (None). Uses potentially 4 bytes backend, write low word (int16_t).
// --- Block 11: Event Inputs / Aux Outputs / Transfer Limits / Alarms Config --- (Primarily 0x2E/0x2F - IS/AFS/Adv Level)
E_EVENT_INPUT_ASSIGNMENT_1_REGISTER = 0x2E0A, // Event Input Assignment 1 (IS Level). See OR_E5_EVENT_INPUT_ASSIGNMENT. Default: 0 (None). Uses 4 bytes. Write low word.
@ -328,16 +330,16 @@ enum OR_E5_VARIABLE_REGISTERS : uint16_t
E_ALARM_1_TYPE_REGISTER = 0x2F00, // Alarm 1 Type (AFS Level). See OR_E5_ALARM_TYPE. Default: ??? Uses 4 bytes. Write low word.
E_ALARM_1_LATCH_REGISTER = 0x2F01, // Alarm 1 Latch (AFS Level). See OR_E5_ALARM_LATCH. Default: 0 (OFF). Uses 4 bytes. Write low word.
E_ALARM_1_HYSTERESIS_REGISTER = 0x2F02, // Alarm 1 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Uses 4 bytes. Write low word.
E_ALARM_1_HYSTERESIS_REGISTER = 0x2F02, // Alarm 1 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Stored as 1-9999. Uses 4 bytes. Write low word.
E_ALARM_2_TYPE_REGISTER = 0x2F03, // Alarm 2 Type (AFS Level). See OR_E5_ALARM_TYPE (LBA cannot be set). Default: ??? Uses 4 bytes. Write low word.
E_ALARM_2_LATCH_REGISTER = 0x2F04, // Alarm 2 Latch (AFS Level). See OR_E5_ALARM_LATCH. Default: 0 (OFF). Uses 4 bytes. Write low word.
E_ALARM_2_HYSTERESIS_REGISTER = 0x2F05, // Alarm 2 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Uses 4 bytes. Write low word.
E_ALARM_2_HYSTERESIS_REGISTER = 0x2F05, // Alarm 2 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Stored as 1-9999. Uses 4 bytes. Write low word.
E_ALARM_3_TYPE_REGISTER = 0x2F06, // Alarm 3 Type (AFS Level). See OR_E5_ALARM_TYPE (LBA cannot be set). Default: ??? Uses 4 bytes. Write low word.
E_ALARM_3_LATCH_REGISTER = 0x2F07, // Alarm 3 Latch (AFS Level). See OR_E5_ALARM_LATCH. Default: 0 (OFF). Uses 4 bytes. Write low word.
E_ALARM_3_HYSTERESIS_REGISTER = 0x2F08, // Alarm 3 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Uses 4 bytes. Write low word.
E_ALARM_3_HYSTERESIS_REGISTER = 0x2F08, // Alarm 3 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Stored as 1-9999. Uses 4 bytes. Write low word.
E_ALARM_4_TYPE_REGISTER = 0x2F09, // Alarm 4 Type (AFS Level). See OR_E5_ALARM_TYPE (LBA cannot be set). Default: ??? Uses 4 bytes. Write low word.
E_ALARM_4_LATCH_REGISTER = 0x2F0A, // Alarm 4 Latch (AFS Level). See OR_E5_ALARM_LATCH. Default: 0 (OFF). Uses 4 bytes. Write low word.
E_ALARM_4_HYSTERESIS_REGISTER = 0x2F0B, // Alarm 4 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Uses 4 bytes. Write low word.
E_ALARM_4_HYSTERESIS_REGISTER = 0x2F0B, // Alarm 4 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Stored as 1-9999. Uses 4 bytes. Write low word.
E_STANDBY_SEQUENCE_RESET_REGISTER = 0x2F0C, // Standby Sequence Reset Condition (AFS Level). See OR_E5_STANDBY_SEQUENCE_RESET. Default: ??? Uses 4 bytes. Write low word.
E_AUX_OUTPUT_1_OPEN_IN_ALARM_REGISTER = 0x2F0D, // Auxiliary Output 1 Open in Alarm (AFS Level). See OR_E5_AUX_OUTPUT_OPEN_IN_ALARM. Default: ??? Uses 4 bytes. Write low word.
E_AUXILIARY_OUTPUT_2_OPEN_IN_ALARM_REGISTER = 0x2F0E, // Auxiliary Output 2 Open in Alarm (AFS Level). See OR_E5_AUX_OUTPUT_OPEN_IN_ALARM. Uses 4 bytes. Write low word.
@ -355,7 +357,7 @@ enum OR_E5_VARIABLE_REGISTERS : uint16_t
// --- Block 12: Display / Miscellaneous --- (Primarily 0x30xx - Level varies)
E_PV_SP_1_DISPLAY_SELECT_REGISTER = 0x3000, // PV/SP No. 1 Display Selection (OP/ADJ Level?). See OR_E5_PV_SP_DISPLAY_SELECT. Uses 4 bytes. Write low word.
E_MV_DISPLAY_SELECT_REGISTER = 0x3001, // MV Display Selection (OP/ADJ Level?). See OR_E5_MV_DISPLAY_SELECT. Uses 4 bytes. Write low word.
E_AUTO_DISPLAY_RETURN_TIME_REGISTER = 0x3003, // Automatic Display Return Time (Level?). Range: 0 (OFF) to 99 (seconds?). Uses 4 bytes. Write low word. See OR_E5_AUTO_DISPLAY_RETURN.
E_AUTO_DISPLAY_RETURN_TIME_REGISTER = 0x3003, // Automatic Display Return Time (Level?). Range: 0 (OFF) to 99 (seconds?). See OR_E5_AUTO_DISPLAY_RETURN. Uses 4 bytes. Write low word.
E_DISPLAY_REFRESH_PERIOD_REGISTER = 0x3004, // Display Refresh Period (Level?). See OR_E5_DISPLAY_REFRESH_PERIOD. Uses 4 bytes. Write low word.
E_PV_SP_2_DISPLAY_SELECT_REGISTER = 0x3008, // PV/SP No. 2 Display Selection (OP/ADJ Level?). Uses OR_E5_PV_SP_DISPLAY_SELECT. Uses 4 bytes. Write low word.
E_DISPLAY_BRIGHTNESS_REGISTER = 0x300A, // Display Brightness (Level?). Range: 1 to 3. Uses 4 bytes. Write low word.
@ -365,10 +367,58 @@ enum OR_E5_VARIABLE_REGISTERS : uint16_t
E_PV_STATUS_DISPLAY_FUNC_REGISTER = 0x3011, // PV Status Display Function (Level?). See OR_E5_STATUS_DISPLAY_FUNC. Uses 4 bytes. Write low word.
E_SV_STATUS_DISPLAY_FUNC_REGISTER = 0x3012, // SV Status Display Function (Level?). Uses OR_E5_STATUS_DISPLAY_FUNC. Uses 4 bytes. Write low word.
// --- Block 13: Communications / Advanced Function Settings --- (Primarily 0x31xx, 0x32xx - Comm/AFS Level from Image)
E_COMM_PROTOCOL_REGISTER = 0x3100, // Protocol Setting (Comm Level). See OR_E5_COMM_PROTOCOL. Default: 1 (Modbus).
E_COMM_UNIT_NO_REGISTER = 0x3101, // Communications Unit No. (Comm Level). Range: 0 to 99. Default: ???
E_COMM_BAUD_RATE_REGISTER = 0x3102, // Communications Baud Rate (Comm Level). See OR_E5_COMM_BAUD_RATE. Default: ??? (often 3=9.6k).
E_COMM_DATA_LENGTH_REGISTER = 0x3103, // Communications Data Length (Comm Level). See OR_E5_COMM_DATA_LENGTH. Default: 8.
E_COMM_STOP_BITS_REGISTER = 0x3104, // Communications Stop Bits (Comm Level). See OR_E5_COMM_STOP_BITS. Default: 1.
E_COMM_PARITY_REGISTER = 0x3105, // Communications Parity (Comm Level). See OR_E5_COMM_PARITY. Default: 1 (Even?).
E_COMM_SEND_DATA_WAIT_TIME_REGISTER = 0x3106, // Send Data Wait Time (Comm Level). Range: 0 to 99 (ms?). Default: ???
E_PF_SETTING_REGISTER = 0x3200, // PF (Programmable Function) Key Setting (AFS Level). See OR_E5_PF_SETTING. Default: 0 (Disabled).
E_MONITOR_SETTING_ITEM_1_REGISTER = 0x3202, // Monitor/Setting Item 1 (Associated display screen/parameter) (AFS Level). See OR_E5_MONITOR_SETTING_ITEM. Range: 0 to 23. Default: 0 (Disabled).
E_MONITOR_SETTING_ITEM_2_REGISTER = 0x3203, // Monitor/Setting Item 2 (Associated display screen/parameter) (AFS Level). See OR_E5_MONITOR_SETTING_ITEM. Range: 0 to 23. Default: 0 (Disabled).
E_MONITOR_SETTING_ITEM_3_REGISTER = 0x3204, // Monitor/Setting Item 3 (Associated display screen/parameter) (AFS Level). See OR_E5_MONITOR_SETTING_ITEM. Range: 0 to 23. Default: 0 (Disabled).
E_MONITOR_SETTING_ITEM_4_REGISTER = 0x3205, // Monitor/Setting Item 4 (Associated display screen/parameter) (AFS Level). See OR_E5_MONITOR_SETTING_ITEM. Range: 0 to 23. Default: 0 (Disabled).
E_MONITOR_SETTING_ITEM_5_REGISTER = 0x3206, // Monitor/Setting Item 5 (Associated display screen/parameter) (AFS Level). See OR_E5_MONITOR_SETTING_ITEM. Range: 0 to 23. Default: 0 (Disabled).
// --- Block 14: Additional AFS Parameters --- (Primarily 0x33xx - AFS Level from Image H175-5-15 & 5-16) ---- UPDATED ----
E_SP_TRACKING_REGISTER = 0x3301, // SP Tracking (AFS Level). See OR_E5_ON_OFF_STATE. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_PV_DEAD_BAND_REGISTER = 0x3304, // PV Dead Band (AFS Level). Range: 0 to 9999 (H'0000 to H'270F). Units/Decimal based on input. Uses 4 bytes. Write low word.
E_COLD_JUNCTION_COMPENSATION_REGISTER = 0x3305, // Cold Junction Compensation Method (AFS Level). See OR_E5_ON_OFF_STATE. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_INTEGRAL_DERIVATIVE_TIME_UNIT_REGISTER = 0x3309, // Integral/Derivative Time Unit (AFS Level). See OR_E5_INTEGRAL_DERIVATIVE_TIME_UNIT. 0=1s, 1=0.1s. Uses 4 bytes. Write low word.
E_MANUAL_OUTPUT_METHOD_REGISTER = 0x330A, // Manual Output Method (AFS Level). See OR_E5_MANUAL_OUTPUT_METHOD. 0=HOLD, 1=INIT. Uses 4 bytes. Write low word.
E_MANUAL_MV_INITIAL_VALUE_REGISTER = 0x330C, // Manual MV Initial Value (AFS Level). Range depends on model/control type (-5.0 to 105.0% or -105.0 to 105.0%). Uses 4 bytes (two 16-bit registers). Write low word.
E_AT_CALCULATED_GAIN_REGISTER = 0x330F, // AT Calculated Gain (AFS Level). Range: 0.1 to 10.0 (H'0001 to H'0064). Uses 4 bytes. Write low word.
E_AT_HYSTERESIS_REGISTER = 0x3310, // AT Hysteresis (AFS Level). Range: 0.1 to 999.9 (Temp, H'0001 to H'270F) or 0.01 to 99.99 (Analog). Uses 4 bytes. Write low word.
E_LIMIT_CYCLE_MV_AMPLITUDE_REGISTER = 0x3311, // Limit Cycle MV Amplitude (AFS Level). Range: 5.0 to 50.0 (H'0032 to H'01F4). Uses 4 bytes. Write low word.
E_HEATER_BURNOUT_LATCH_REGISTER= 0x3314, // Heater Burnout Latch (AFS Level). See OR_E5_ON_OFF_STATE. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_HEATER_BURNOUT_HYSTERESIS_REGISTER = 0x3315, // Heater Burnout Hysteresis (AFS Level). Range: 0.1 to 50.0 (H'0001 to H'01F4). Uses 4 bytes. Write low word.
E_HS_ALARM_LATCH_REGISTER = 0x3316, // HS Alarm Latch (AFS Level). See OR_E5_ON_OFF_STATE. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_HS_ALARM_HYSTERESIS_REGISTER = 0x3317, // HS Alarm Hysteresis (AFS Level). Range: 0.1 to 50.0 (H'0001 to H'01F4). Uses 4 bytes. Write low word.
E_NUMBER_OF_MULTI_SP_POINTS_REGISTER = 0x331B, // Number of Multi-SP Points (AFS Level). Range: 2 to 8 (H'0002 to H'0008). Uses 4 bytes. Write low word.
E_HB_ON_OFF_REGISTER = 0x331C, // HB ON/OFF (Heater Burnout Detection Enable) (AFS Level). See OR_E5_ON_OFF_STATE. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_INTEGRATED_ALARM_ASSIGNMENT_REGISTER = 0x331E, // Integrated Alarm Assignment (AFS Level). Bitmask? Range: 0 to 255 (H'00 to H'FF). Uses 4 bytes. Write low word.
E_MV_AT_STOP_ERROR_ADDITION_REGISTER = 0x3320, // MV at Stop and Error Addition (AFS Level). See OR_E5_ON_OFF_STATE. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_ST_STABLE_RANGE_REGISTER = 0x3321, // ST Stable Range (Self Tuning) (AFS Level). Range: 0.1 to 999.9 (H'0001 to H'270F). Uses 4 bytes. Write low word.
E_RT_ENABLE_REGISTER = 0x3322, // RT (Resistance Thermometer?) ON/OFF (AFS Level). See OR_E5_ON_OFF_STATE. Note: Valid only with temp input. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_HS_ALARM_USE_REGISTER = 0x3323, // HS Alarm Use (Heater Short Detection Enable) (AFS Level). See OR_E5_ON_OFF_STATE. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_LBA_DETECTION_TIME_REGISTER = 0x3324, // LBA Detection Time (Loop Break Alarm) (AFS Level). Range: 0 to 9999 s (H'0001 to H'270F). Uses 4 bytes. Write low word.
E_LBA_LEVEL_REGISTER = 0x3325, // LBA Level (AFS Level). Range: 0.1 to 999.9 (Temp, H'0001 to H'270F) or 0.01 to 99.99 (Analog). Uses 4 bytes. Write low word.
E_LBA_BAND_REGISTER = 0x3326, // LBA Band (AFS Level). Range: 0.0 to 999.9 (Temp, H'0000 to H'270F) or 0.00 to 99.99 (Analog). Uses 4 bytes. Write low word.
E_SOAK_TIME_UNIT_REGISTER = 0x3327, // Soak Time Unit (AFS Level). See OR_E5_SOAK_TIME_UNIT. Range 0-2. Uses 4 bytes. Write low word.
E_ALARM_SP_SELECTION_REGISTER = 0x3328, // Alarm SP Selection (AFS Level). See OR_E5_ALARM_SP_SELECTION. 0=RampSP, 1=FinalSP. Uses 4 bytes. Write low word.
E_REMOTE_SP_ENABLE_REGISTER = 0x3329, // Remote SP Enable (AFS Level). See OR_E5_ON_OFF_STATE. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_MANUAL_MV_LIMIT_ENABLE_REGISTER = 0x332B, // Manual MV Limit Enable (AFS Level). See OR_E5_ON_OFF_STATE. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_DIRECT_SETTING_POS_PROP_MV_REGISTER = 0x332C, // Direct Setting of Position Proportional MV (AFS Level). See OR_E5_ON_OFF_STATE. 0=OFF, 1=ON. Uses 4 bytes. Write low word.
E_PV_RATE_OF_CHANGE_CALC_PERIOD_REGISTER = 0x332D, // PV Rate of Change Calculation Period (AFS Level). Range: 1 to 999 (H'0001 to H'03E7). Units?. Uses 4 bytes. Write low word.
E_HEATING_COOLING_TUNING_METHOD_REGISTER = 0x332E, // Heating/Cooling Tuning Method (AFS Level). See OR_E5_HEATING_COOLING_TUNING_METHOD. Uses 4 bytes. Write low word.
E_LCT_COOLING_OUTPUT_MIN_ON_TIME_REGISTER = 0x3335, // LCT Cooling Output Minimum ON Time (AFS Level). Range: 0.1 to 1.0 (stored as H'0001 to H'000A). Note: Not supported on v2.0 or earlier. Uses 4 bytes. Write low word.
};
// --- Existing Value Enums ---
// --- Existing & Merged Value Enums ---
/**
* @brief Defines a generic ON/OFF state for various registers.
@ -580,7 +630,7 @@ enum OR_E5_CONTROL_OUTPUT_SIGNAL : uint16_t // Values fit in 16 bits, matches wr
*/
enum OR_E5_CONTROL_TYPE : uint16_t // Values fit in 16 bits, matches write target
{
E_CONTROL_STANDARD = 0, // 0: Standard (PID or ON/OFF, single output - heating or cooling) (Default)
E_CONTROL_STANDARD = 0, // 0: Standard (PID or ON/OFF, single output - heating or cooling based on 0x2D12) (Default)
E_CONTROL_HEAT_AND_COOL = 1 // 1: Heating and cooling (Requires appropriate model/outputs)
};
@ -590,8 +640,8 @@ enum OR_E5_CONTROL_TYPE : uint16_t // Values fit in 16 bits, matches write targe
*/
enum OR_E5_OPERATION_MODE : uint16_t // Values fit in 16 bits, matches write target
{
E_OPERATION_REVERSE = 0, // 0: Reverse operation (e.g., Heating) (Default: Manual H175 says Reverse=Cool, Direct=Heat - Verify!)
E_OPERATION_DIRECT = 1 // 1: Direct operation (e.g., Cooling)
E_OPERATION_REVERSE = 0, // 0: Reverse operation (Increase output on PV < SP, e.g., Heating) (Default)
E_OPERATION_DIRECT = 1 // 1: Direct operation (Increase output on PV > SP, e.g., Cooling)
};
/**
@ -681,7 +731,7 @@ enum OR_E5_TRANSFER_OUTPUT_SIGNAL : uint16_t // Values fit in 16 bits, matches w
* and Auxiliary Output Assignment registers (Aux 1: 0x2E10, Aux 2: 0x2E11, Aux 3: 0x2E12, Aux 4: 0x2E13).
* Assigns a function to the physical control/auxiliary outputs. Level: Advanced Function Setting.
* Availability of some options depends on hardware configuration (e.g., linear current output).
* Uses 4 bytes per register, write low word (int16_t).
* Uses potentially 4 bytes per register backend, write low word (int16_t).
*/
enum OR_E5_CONTROL_OUTPUT_ASSIGNMENT : int16_t // Use signed type for negative values. Values fit in 16 bits, matches write target.
{
@ -869,7 +919,7 @@ enum OR_E5_MV_DISPLAY_SELECT : uint16_t // Values fit in 16 bits, matches write
/**
* @brief Defines the possible values for the Automatic Display Return Time register (0x3003).
* Sets the time after which the display returns to the default screen. Level: ?
* Uses 4 bytes, write low word.
* Uses 4 bytes, write low word. Value 0 = OFF, 1-99 = seconds.
*/
enum OR_E5_AUTO_DISPLAY_RETURN : uint16_t // Values fit in 16 bits, matches write target
{
@ -913,6 +963,171 @@ enum OR_E5_STATUS_DISPLAY_FUNC : uint16_t // Values fit in 16 bits, matches writ
E_STAT_DISP_FUNC_MESSAGE = 9 // 9: Status display message (*1 Selection possible only with the E5GC)
};
// --- NEW/MERGED Value Enums from Image H175 5-14 / 5-15 / 5-16 ---
/**
* @brief Defines the possible values for the Protocol Setting register (0x3100).
* Selects the communication protocol. Level: Communications Setting. Uses 16 bits.
*/
enum OR_E5_COMM_PROTOCOL : uint16_t
{
E_PROTO_COMPOWAYF = 0, // 0: Compoway/F
E_PROTO_MODBUS = 1 // 1: Modbus (Default)
};
/**
* @brief Defines the possible values for the Communications Baud Rate register (0x3102).
* Selects the communication speed. Level: Communications Setting. Uses 16 bits.
*/
enum OR_E5_COMM_BAUD_RATE : uint16_t
{
E_BAUD_9600 = 3, // 3: 9.6 kbps
E_BAUD_19200 = 4, // 4: 19.2 kbps
E_BAUD_38400 = 5, // 5: 38.4 kbps
E_BAUD_57600 = 6 // 6: 57.6 kbps
// Default depends on model, often 9.6k (3)
};
/**
* @brief Defines the possible values for the Communications Data Length register (0x3103).
* Selects the number of data bits per character. Level: Communications Setting. Uses 16 bits.
*/
enum OR_E5_COMM_DATA_LENGTH : uint16_t
{
E_DATA_LEN_7 = 7, // 7: 7 bits
E_DATA_LEN_8 = 8 // 8: 8 bits (Default)
};
/**
* @brief Defines the possible values for the Communications Stop Bits register (0x3104).
* Selects the number of stop bits. Level: Communications Setting. Uses 16 bits.
*/
enum OR_E5_COMM_STOP_BITS : uint16_t
{
E_STOP_BITS_1 = 1, // 1: 1 stop bit (Default)
E_STOP_BITS_2 = 2 // 2: 2 stop bits
};
/**
* @brief Defines the possible values for the Communications Parity register (0x3105).
* Selects the parity check mode. Level: Communications Setting. Uses 16 bits.
*/
enum OR_E5_COMM_PARITY : uint16_t
{
E_PARITY_NONE = 0, // 0: None
E_PARITY_EVEN = 1, // 1: Even (Often Default)
E_PARITY_ODD = 2 // 2: Odd
};
/**
* @brief Defines the possible values for the PF Setting register (0x3200).
* Assigns a function to the Programmable Function (PF) key. Level: Advanced Function Setting. Uses 16 bits.
*/
enum OR_E5_PF_SETTING : uint16_t
{
E_PF_DISABLED = 0, // 0: Disabled (Default)
E_PF_FUNC_RUN = 1, // 1: Run (Switches to RUN mode)
E_PF_FUNC_STOP = 2, // 2: Stop (Switches to STOP mode)
E_PF_FUNC_RUN_STOP = 3, // 3: RUN/STOP (Toggles between RUN and STOP)
E_PF_FUNC_AT_100 = 4, // 4: 100% AT execute/cancel
E_PF_FUNC_AT_40 = 5, // 5: 40% AT execute/cancel
E_PF_FUNC_ALARM_LATCH_CANCEL = 6, // 6: Alarm latch cancel
E_PF_FUNC_AUTO_MANUAL = 7, // 7: Auto/manual switch
E_PF_FUNC_MONITOR_SETTING_ITEM= 8, // 8: Monitor/setting item display (Cycles through items configured in 0x3202-0x3206)
E_PF_FUNC_DIGIT_SHIFT_KEY = 9 // 9: Digit shift key (Used for setting values)
};
/**
* @brief Defines the possible values for the Monitor/Setting Item registers (0x3202 to 0x3206).
* Selects which parameter is accessible via the "Monitor/Setting Item" function (e.g., tied to PF key setting 8).
* Level: Advanced Function Setting. Uses 16 bits per register.
*/
enum OR_E5_MONITOR_SETTING_ITEM : uint16_t
{
E_MON_ITEM_DISABLED = 0, // 0: Disabled (Default)
E_MON_ITEM_PV_SP_MULTI_SP = 1, // 1: PV/SP/multi-SP
E_MON_ITEM_PV_SP_MV = 2, // 2: PV/SP/MV
E_MON_ITEM_PV_SP_SOAK_TIME_REMAIN = 3, // 3: PV/SP/soak time remain
E_MON_ITEM_PROP_BAND = 4, // 4: Proportional band (Heating, register 0x2A00)
E_MON_ITEM_INTEGRAL_TIME = 5, // 5: Integral time (Heating, register 0x2A01)
E_MON_ITEM_DERIVATIVE_TIME = 6, // 6: Derivative time (Heating, register 0x2A02)
E_MON_ITEM_ALARM_VALUE_1 = 7, // 7: Alarm value 1 (register 0x2902)
E_MON_ITEM_ALARM_UPPER_LIMIT_1 = 8, // 8: Alarm value upper limit 1 (register 0x2903)
E_MON_ITEM_ALARM_LOWER_LIMIT_1 = 9, // 9: Alarm value lower limit 1 (register 0x2904)
E_MON_ITEM_ALARM_VALUE_2 = 10, // 10: Alarm value 2 (register 0x2905)
E_MON_ITEM_ALARM_UPPER_LIMIT_2 = 11, // 11: Alarm value upper limit 2 (register 0x2906)
E_MON_ITEM_ALARM_LOWER_LIMIT_2 = 12, // 12: Alarm value lower limit 2 (register 0x2907)
E_MON_ITEM_ALARM_VALUE_3 = 13, // 13: Alarm value 3 (register 0x2908)
E_MON_ITEM_ALARM_UPPER_LIMIT_3 = 14, // 14: Alarm value upper limit 3 (register 0x2909)
E_MON_ITEM_ALARM_LOWER_LIMIT_3 = 15, // 15: Alarm value lower limit 3 (register 0x290A)
E_MON_ITEM_ALARM_VALUE_4 = 16, // 16: Alarm value 4 (register 0x290B)
E_MON_ITEM_ALARM_UPPER_LIMIT_4 = 17, // 17: Alarm value upper limit 4 (register 0x290C)
E_MON_ITEM_ALARM_LOWER_LIMIT_4 = 18, // 18: Alarm value lower limit 4 (register 0x290D)
E_MON_ITEM_PV_SP_INTERNAL_SP = 19, // 19: PV/SP/Internal set point (register 0x2002 / 0x2403)
E_MON_ITEM_PV_SP_ALARM_VALUE_1 = 20, // 20: PV/SP/Alarm value 1 (Combination display?)
E_MON_ITEM_PROP_BAND_COOL = 21, // 21: Proportional Band (Cooling) (register 0x2701)
E_MON_ITEM_INTEGRAL_TIME_COOL = 22, // 22: Integral Time (Cooling) (register 0x2702)
E_MON_ITEM_DERIVATIVE_TIME_COOL = 23 // 23: Derivative Time (Cooling) (register 0x2703)
};
/**
* @brief Defines the possible values for the Integral/Derivative Time Unit register (0x3309).
* Selects the time base for Integral (I) and Derivative (D) parameters. AFS Level.
* Applies to registers 0x2A01, 0x2A02 (Heat) and 0x2702, 0x2703 (Cool). Uses 4 bytes, write low word.
*/
enum OR_E5_INTEGRAL_DERIVATIVE_TIME_UNIT : uint16_t // Values fit in 16 bits, matches write target
{
E_TIME_UNIT_SECONDS = 0, // 0: Seconds (e.g., Integral/Derivative range 0 to 9999 s)
E_TIME_UNIT_TENTH_SEC = 1 // 1: 0.1 Seconds (e.g., Integral/Derivative range 0.0 to 999.9 s)
};
/**
* @brief Defines the possible values for the Manual Output Method register (0x330A).
* Determines behavior when switching to Manual mode. AFS Level. Uses 4 bytes, write low word.
*/
enum OR_E5_MANUAL_OUTPUT_METHOD : uint16_t // Values fit in 16 bits, matches write target
{
E_MANUAL_OUT_HOLD = 0, // 0: HOLD (Start manual mode using the MV from auto mode)
E_MANUAL_OUT_INIT = 1 // 1: INIT (Start manual mode using the Manual MV Initial Value from register 0x330C)
};
/**
* @brief Defines the possible values for the Soak Time Unit register (0x3327).
* Selects the time unit for Soak Time (0x2729) and Soak Time Remain (0x2728). AFS Level.
* Uses 4 bytes, write low word.
*/
enum OR_E5_SOAK_TIME_UNIT : uint16_t // Values fit in 16 bits, matches write target
{
E_SOAK_UNIT_MINUTES = 0, // 0: Minutes (Range 1 to 9999 minutes)
E_SOAK_UNIT_HOURS = 1, // 1: Hours (Range 1 to 9999 hours)
E_SOAK_UNIT_SECONDS = 2 // 2: Seconds (Range 1 to 9999 seconds) (*1 Selection possible only with the E5GC)
};
/**
* @brief Defines the possible values for the Alarm SP Selection register (0x3328).
* Selects which Set Point value is used for alarm checking during SP ramp. AFS Level.
* Uses 4 bytes, write low word.
*/
enum OR_E5_ALARM_SP_SELECTION : uint16_t // Values fit in 16 bits, matches write target
{
E_ALARM_SP_DURING_RAMP = 0, // 0: Use the current SP value during the ramp for alarm calculation
E_ALARM_SP_SET_POINT = 1 // 1: Use the final target SP value for alarm calculation during the ramp
};
/**
* @brief Defines the possible values for the Heating/Cooling Tuning Method register (0x332E).
* Selects the tuning algorithm for cooling in Heat/Cool control mode. AFS Level.
* Uses 4 bytes, write low word.
*/
enum OR_E5_HEATING_COOLING_TUNING_METHOD : uint16_t // Values fit in 16 bits, matches write target
{
E_TUNING_SAME_AS_HEATING = 0, // 0: Use the same PID constants as heating control (Default?)
E_TUNING_LINEAR = 1, // 1: Linear tuning for cooling
E_TUNING_AIR_COOLING = 2, // 2: Tuning optimized for air cooling
E_TUNING_WATER_COOLING = 3 // 3: Tuning optimized for water cooling
};
/*
* TODO: Define enums for Status Bits (Registers 0x2001, 0x2406, 0x2407(High Word), 0x2408, 0x2409(High Word)).
* The specific bit meanings need to be obtained from Section 5-2 ("Status Monitor Table") of the
@ -922,30 +1137,46 @@ enum OR_E5_STATUS_DISPLAY_FUNC : uint16_t // Values fit in 16 bits, matches writ
// --- Placeholder Example Enums for Status Bits (NEEDS VERIFICATION and COMPLETION from H175 Section 5-2) ---
/*
enum OR_E5_STATUS_LOW_WORD_BITS : uint16_t // Example for 0x2001, 0x2406, 0x2408 (Low 16 bits of Status/Status2)
// Example for Low Word (0x2001, 0x2406, 0x2408) - Precise meaning depends on which status register
enum OR_E5_STATUS_LOW_WORD_BITS : uint16_t
{
// Based loosely on E5_S1 example, NEEDS VERIFICATION
E_SLW_HEATER_OVERCURRENT = 0, // Example: Bit 0? Heater OverCurrent? (GUESS)
E_SLW_HEATER_CURRENTHOLD = 1, // Example: Bit 1? Heater CurrentHold? (GUESS)
E_SLW_AD_CONVERTER_ERROR = 2, // Example: Bit 2? AD Converter Error? (GUESS)
// ---- Further Bits needed based on H175 Section 5-2 Table ----
E_SLW_RUN_STOP_STATUS = 4, // Example: Bit 4? 0=RUN, 1=STOP? (GUESS) Needs Check
E_SLW_AUTO_MANUAL_STATUS = 5, // Example: Bit 5? 0=Auto, 1=Manual? (GUESS) Needs Check
E_SLW_AT_EXECUTING_STATUS = 6, // Example: Bit 6? 0=Not Executing, 1=Executing? (GUESS) Needs Check
E_SLW_COMM_WRITE_STATUS = 7, // Example: Bit 7? 0=Disabled, 1=Enabled? (GUESS) Needs Check
E_SLW_ALARM_1_OUTPUT_STATUS= 8, // Example: Bit 8? Alarm 1 Output ON? (GUESS) Needs Check
E_SLW_ALARM_2_OUTPUT_STATUS= 9, // Example: Bit 9? Alarm 2 Output ON? (GUESS) Needs Check
E_SLW_ALARM_3_OUTPUT_STATUS= 10, // Example: Bit 10? Alarm 3 Output ON? (GUESS) Needs Check
E_SLW_ALARM_4_OUTPUT_STATUS= 11, // Example: Bit 11? Alarm 4 Output ON? (GUESS) Needs Check
E_SLW_PV_INPUT_ERROR_FLAG = 15 // Example: Bit 15? PV Sensor Input Error? (GUESS) Needs Check
E_SLW_BIT_0 = (1 << 0), // Status/Control output 1 state? Alarm 1 state?
E_SLW_BIT_1 = (1 << 1), // Status/Control output 2 state? Alarm 2 state?
E_SLW_BIT_2 = (1 << 2), // Status/Alarm 3 state?
E_SLW_BIT_3 = (1 << 3), // Status/Alarm 4 state?
E_SLW_STATUS_RUN = (1 << 4), // RUN=1, STOP=0 ? Needs Verification
E_SLW_STATUS_AUTO = (1 << 5), // AUTO=1, MAN=0 ? Needs Verification
E_SLW_STATUS_AT_EXECUTING = (1 << 6), // AT Executing=1 ? Needs Verification
E_SLW_STATUS_COMM_WRITE_ON = (1 << 7), // Comm Writing Enabled=1 ? Needs Verification
E_SLW_BIT_8 = (1 << 8), // Status/Program Run Status?
E_SLW_BIT_9 = (1 << 9), // Status/Program Wait Status?
E_SLW_BIT_10 = (1 << 10), // Status/Program Hold Status?
E_SLW_BIT_11 = (1 << 11), // Status/Program End Status?
E_SLW_BIT_12 = (1 << 12), // Status/Memory Error?
E_SLW_BIT_13 = (1 << 13), // Status/Input Error?
E_SLW_STATUS_RSP_ERROR = (1 << 14), // Remote SP Input Error=1? Needs Verification
E_SLW_STATUS_PV_INPUT_ERROR = (1 << 15) // PV Input Error=1 ? Needs Verification - Often called S.ERR
};
enum OR_E5_STATUS_HIGH_WORD_BITS : uint16_t // Example for 0x2407, 0x2409 (High 16 bits of Status/Status2)
// Example for High Word (0x2407, 0x2409) - Precise meaning depends on which status register
enum OR_E5_STATUS_HIGH_WORD_BITS : uint16_t
{
// ----- Bits needed based on H175 Section 5-2 Table ----
E_SHW_HB_ALARM_OUTPUT_STATUS = 0, // Example: Bit 0 (of High Word) -> Bit 16 Overall? HB Alarm Output ON? (GUESS) Needs Check
E_SHW_HS_ALARM_OUTPUT_STATUS = 1, // Example: Bit 1 (of High Word) -> Bit 17 Overall? HS Alarm Output ON? (GUESS) Needs Check
E_SHW_REMOTE_SP_ERROR_FLAG = 15 // Example: Bit 15 (of High Word) -> Bit 31 Overall? Remote SP Input Error? (GUESS) Needs Check
// ... etc ... Needs Check
E_SHW_STATUS_HB_OUTPUT = (1 << 0), // HB Alarm Output State=1? (Overall bit 16) Needs Verification
E_SHW_STATUS_HS_OUTPUT = (1 << 1), // HS Alarm Output State=1? (Overall bit 17) Needs Verification
E_SHW_STATUS_LBA1_OPERATING = (1 << 2), // LBA 1 operating=1? (Overall bit 18) Needs Verification
E_SHW_STATUS_LBA2_OPERATING = (1 << 3), // LBA 2 operating=1? (Overall bit 19) Needs Verification
E_SHW_STATUS_MV_LIMITING = (1 << 4), // MV Limiting=1? (Overall bit 20) Needs Verification
E_SHW_STATUS_RAMP_CONTROL = (1 << 5), // Ramp Control Operating=1? (Overall bit 21) Needs Verification
E_SHW_BIT_6 = (1 << 6), // (Overall bit 22)
E_SHW_BIT_7 = (1 << 7), // (Overall bit 23)
E_SHW_BIT_8 = (1 << 8), // (Overall bit 24)
E_SHW_BIT_9 = (1 << 9), // (Overall bit 25)
E_SHW_BIT_10 = (1 << 10),// (Overall bit 26)
E_SHW_BIT_11 = (1 << 11),// (Overall bit 27)
E_SHW_BIT_12 = (1 << 12),// (Overall bit 28) Startup Tuning Operating?
E_SHW_BIT_13 = (1 << 13),// (Overall bit 29)
E_SHW_BIT_14 = (1 << 14),// (Overall bit 30)
E_SHW_BIT_15 = (1 << 15) // (Overall bit 31)
// Note: Actual bit meanings MUST be confirmed with H175 manual Section 5-2 Status Monitor Table.
};
*/