From 4c7cbc336d693ae9620be139ccc68ccd82b22264 Mon Sep 17 00:00:00 2001 From: babayaga Date: Thu, 24 Apr 2025 21:53:41 +0200 Subject: [PATCH] omron e5 registers cleaned --- packages/kbot/tests/pdf/omron/omron.h | 399 ++++++++++++++++++++------ 1 file changed, 315 insertions(+), 84 deletions(-) diff --git a/packages/kbot/tests/pdf/omron/omron.h b/packages/kbot/tests/pdf/omron/omron.h index 9928f289..e0b03f60 100644 --- a/packages/kbot/tests/pdf/omron/omron.h +++ b/packages/kbot/tests/pdf/omron/omron.h @@ -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. }; */ \ No newline at end of file