diff --git a/software/include/lib/modbus_server.h b/software/include/lib/modbus_server.h index 2bd2504..2d55bd1 100644 --- a/software/include/lib/modbus_server.h +++ b/software/include/lib/modbus_server.h @@ -91,7 +91,12 @@ enum { /** * @brief Minimum current threshold in mA for end-position detection. */ - REG_HOLDING_VALVE_END_CURRENT_THRESHOLD_MA = 0x0003, + REG_HOLDING_END_CURRENT_THRESHOLD_OPEN_MA = 0x0003, + /** + * @brief Minimum current threshold in mA for end-position detection during + * closing. + */ + REG_HOLDING_END_CURRENT_THRESHOLD_CLOSE_MA = 0x0004, /** * @brief Bitmask for reading and writing digital outputs. Bit 0: Output 1, * Bit 1: Output 2. 1=ON, 0=OFF. diff --git a/software/lib/modbus_server/modbus_server.c b/software/lib/modbus_server/modbus_server.c index 2bf8e97..f7402e9 100644 --- a/software/lib/modbus_server/modbus_server.c +++ b/software/lib/modbus_server/modbus_server.c @@ -81,6 +81,12 @@ static int holding_reg_rd(uint16_t addr, uint16_t *reg) case REG_HOLDING_WATCHDOG_TIMEOUT_S: *reg = watchdog_timeout_s; break; + case REG_HOLDING_END_CURRENT_THRESHOLD_OPEN_MA: + *reg = valve_get_end_current_threshold_open(); + break; + case REG_HOLDING_END_CURRENT_THRESHOLD_CLOSE_MA: + *reg = valve_get_end_current_threshold_close(); + break; default: *reg = 0; break; @@ -114,6 +120,12 @@ static int holding_reg_wr(uint16_t addr, uint16_t reg) case REG_HOLDING_MAX_CLOSING_TIME_S: valve_set_max_close_time(reg); break; + case REG_HOLDING_END_CURRENT_THRESHOLD_OPEN_MA: + valve_set_end_current_threshold_open(reg); + break; + case REG_HOLDING_END_CURRENT_THRESHOLD_CLOSE_MA: + valve_set_end_current_threshold_close(reg); + break; case REG_HOLDING_WATCHDOG_TIMEOUT_S: watchdog_timeout_s = reg; if (watchdog_timeout_s > 0) { @@ -176,6 +188,12 @@ static int input_reg_rd(uint16_t addr, uint16_t *reg) case REG_INPUT_FIRMWARE_VERSION_PATCH: *reg = APP_PATCHLEVEL; break; + case REG_HOLDING_END_CURRENT_THRESHOLD_OPEN_MA: + *reg = valve_get_end_current_threshold_open(); + break; + case REG_HOLDING_END_CURRENT_THRESHOLD_CLOSE_MA: + *reg = valve_get_end_current_threshold_close(); + break; default: *reg = 0; break;