This commit introduces a new Modbus input register for the system's supply voltage. - The `modbus-registers.de.md` documentation is updated to include the `SUPPLY_VOLTAGE_MV` register at address `0x00F5` within the system block. - The `modbus_server.h` header defines the new register. - The `modbus_server.c` implementation provides a fixed value (12300 mV) for this register. - The `modbus_tool.py` script is updated to read and display this new supply voltage value in the UI. This lays the groundwork for integrating actual voltage measurements in the future.
55 lines
1.4 KiB
C
55 lines
1.4 KiB
C
#ifndef MODBUS_SERVER_H
|
|
#define MODBUS_SERVER_H
|
|
|
|
#include <stdint.h>
|
|
|
|
/**
|
|
* @brief Modbus Input Register Addresses.
|
|
*/
|
|
enum
|
|
{
|
|
/* Valve Control & Status */
|
|
REG_INPUT_VALVE_STATE_MOVEMENT = 0x0000,
|
|
REG_INPUT_MOTOR_CURRENT_MA = 0x0001,
|
|
/* Digital Inputs */
|
|
REG_INPUT_DIGITAL_INPUTS_STATE = 0x0020,
|
|
REG_INPUT_BUTTON_EVENTS = 0x0021,
|
|
/* System Config & Status */
|
|
REG_INPUT_FIRMWARE_VERSION_MAJOR_MINOR = 0x00F0,
|
|
REG_INPUT_FIRMWARE_VERSION_PATCH = 0x00F1,
|
|
REG_INPUT_DEVICE_STATUS = 0x00F2,
|
|
REG_INPUT_UPTIME_SECONDS_LOW = 0x00F3,
|
|
REG_INPUT_UPTIME_SECONDS_HIGH = 0x00F4,
|
|
REG_INPUT_SUPPLY_VOLTAGE_MV = 0x00F5,
|
|
REG_INPUT_FWU_LAST_CHUNK_CRC = 0x0100
|
|
};
|
|
|
|
/**
|
|
* @brief Modbus Holding Register Addresses.
|
|
*/
|
|
enum
|
|
{
|
|
/* Valve Control */
|
|
REG_HOLDING_VALVE_COMMAND = 0x0000,
|
|
REG_HOLDING_MAX_OPENING_TIME_S = 0x0001,
|
|
REG_HOLDING_MAX_CLOSING_TIME_S = 0x0002,
|
|
/* Digital Outputs */
|
|
REG_HOLDING_DIGITAL_OUTPUTS_STATE = 0x0010,
|
|
/* System Config */
|
|
REG_HOLDING_WATCHDOG_TIMEOUT_S = 0x00F0,
|
|
REG_HOLDING_DEVICE_RESET = 0x00F1,
|
|
/* Firmware Update */
|
|
REG_HOLDING_FWU_COMMAND = 0x0100,
|
|
REG_HOLDING_FWU_CHUNK_OFFSET_LOW = 0x0101,
|
|
REG_HOLDING_FWU_CHUNK_OFFSET_HIGH = 0x0102,
|
|
REG_HOLDING_FWU_CHUNK_SIZE = 0x0103,
|
|
REG_HOLDING_FWU_DATA_BUFFER = 0x0180,
|
|
};
|
|
|
|
int modbus_server_init(void);
|
|
int modbus_reconfigure(uint32_t baudrate, uint8_t unit_id);
|
|
uint32_t modbus_get_baudrate(void);
|
|
uint8_t modbus_get_unit_id(void);
|
|
|
|
#endif // MODBUS_SERVER_H
|