[3] | 1 | /** |
---|
| 2 | ****************************************************************************** |
---|
| 3 | * @file sysdata.h |
---|
| 4 | * @author ECS - Falko Jahn |
---|
| 5 | * @version V1.0.0 |
---|
| 6 | * @date 30-jan-2021 |
---|
| 7 | * @brief System Daten |
---|
| 8 | * |
---|
| 9 | * Beschreibung |
---|
| 10 | * enthält alle Systemdaten. Diese sind via modbus auslesbar und veränderbar |
---|
| 11 | * |
---|
| 12 | ****************************************************************************** |
---|
| 13 | */ |
---|
| 14 | #ifndef __SYSDATA_H |
---|
| 15 | #define __SYSDATA_H |
---|
| 16 | |
---|
| 17 | |
---|
| 18 | //--- INCLUDEs ----------------------------------------------------------------- |
---|
| 19 | #include "main.h" |
---|
| 20 | #include "modbus.h" |
---|
| 21 | |
---|
| 22 | //--- GLOBALE TYPE DEFS -------------------------------------------------------- |
---|
| 23 | |
---|
| 24 | // !!! Tabellenstruktur von LiPro1-x V2 als Vorlage !!! |
---|
| 25 | typedef struct __attribute__ ((__packed__)) |
---|
| 26 | { |
---|
| 27 | //---- GERÄTE INFORMATIONEN --- |
---|
| 28 | uint16_t deviceTypeId; //0 |
---|
| 29 | uint16_t reserved0; //1 Reserviert Alignement |
---|
| 30 | uint32_t deviceSn; //2-3 Seriennummer |
---|
| 31 | uint16_t fwMajor; //4 FW Versionsnummer |
---|
| 32 | uint16_t fwMinor; //5 FW Versionsnummer |
---|
| 33 | uint16_t fwRevision; //6 FW Versionsnummer |
---|
| 34 | uint16_t reserved1; //7 RESERVIERT |
---|
| 35 | |
---|
| 36 | //--- GERÄTE PARAMETER ALLGEMEIN --- |
---|
| 37 | uint32_t baudrate; //8-9 Baudraute |
---|
| 38 | uint16_t parityMode; //10 Parity Mode 101 = 'e' = even, 111 = 'o' = odd, 110 = 'n' = none, default even |
---|
| 39 | uint16_t stopBits; //11 Aktuell nicht ausgewert, automatische Auswahl nach Modbus standard abhängig vom Parity Mode |
---|
| 40 | uint16_t slaveAddress; //12 Slave Adresse |
---|
| 41 | uint16_t command; //13 Commnd |
---|
| 42 | uint16_t reserved2[6]; //14-19 RESERVIERT |
---|
| 43 | |
---|
| 44 | //--- GERÄTE PARAMETER GERÄTE SPEZIFISCH --- |
---|
| 45 | uint16_t ovpAlarm; //20 Gespeicherter Parameter: OVP Alarm Spannung in mV |
---|
| 46 | uint16_t lvpAlarm; //21 Gespeicherter Parameter: LVP Alarm Spannung in mV |
---|
| 47 | uint16_t ovpStart; //22 Gespeicherter Parameter: OVP Start Spannung in mV |
---|
| 48 | uint16_t ovpStop; //23 Gespeicherter Parameter: OVP Stopp Spannung in mV |
---|
| 49 | uint16_t lvpStart; //24 Gespeicherter Parameter: LVP Start Spannung in mV |
---|
| 50 | uint16_t lvpStop; //25 Gespeicherter Parameter: LVP Stopp Spannung in mV |
---|
| 51 | uint16_t vShutdownStart; //26 Gespeicherter Parameter: Unterspannungsabschaltung Start in mV |
---|
| 52 | uint16_t vShutdownStop; //27 Gespeicherter Parameter: Unterspannungsabschaltung Stopp in mV |
---|
| 53 | int16_t otShutdownStart; //28 Gespeicherter Parameter: Übertemperaturabschaltung Start in °C * 100 |
---|
| 54 | int16_t otShutdownStop; //29 Gespeicherter Parameter: Übertemperaturabschaltung Stopp in °C * 100 |
---|
| 55 | int16_t utpChargeStart; //30 Gespeicherter Parameter: Untertemperaturabschaltung Ladung Start in mV -- AB HIER NEUE PARAMETER --- |
---|
| 56 | int16_t utpChargeStop; //31 Gespeicherter Parameter: Untertemperaturabschaltung Ladung Stopp in mV |
---|
| 57 | int16_t utpDischargeStart; //32 Gespeicherter Parameter: Untertemperaturabschaltung Entladung Start in mV |
---|
| 58 | int16_t utpDischargeStop; //33 Gespeicherter Parameter: Untertemperaturabschaltung Entladung Stopp in mV |
---|
| 59 | uint16_t lvpTime; //34 Gespeicherter Parameter: LVP Verzögerung in s |
---|
| 60 | uint16_t defaultBalVoltage; //35 Gespeicherter Parameter: Ausgleichsspannung Defaultwert in mV. Wird verwendet wenn kein Mastergerät vorhanden ist |
---|
| 61 | int16_t refTemp; //36 Gespeicherter Parameter: Referenz Temperatur |
---|
| 62 | int16_t ovpAlarmTempco; //37 Gespeicherter Parameter: Temperaturkompensation OVP Alarmspannung in mV / °C |
---|
| 63 | int16_t lvpAlarmTempco; //38 Gespeicherter Parameter: Temperaturkompensation LVP ALarmspannung in mV / °C |
---|
| 64 | int16_t ovpStartTempco; //39 Gespeicherter Parameter: Temperaturkompensation OVP Startspannung in mV / °C |
---|
| 65 | int16_t ovpStopTempco; //40 Gespeicherter Parameter: Temperaturkompensation OVP Stoppspannung in mV / °C |
---|
| 66 | int16_t lvpStartTempco; //41 Gespeicherter Parameter: Temperaturkompensation LVP Startspannung in mV / °C |
---|
| 67 | int16_t lvpStopTempco; //42 Gespeicherter Parameter: Temperaturkompensation LVP Stoppspannung in mV / °C |
---|
| 68 | int16_t vShutdownStartTempco; //43 Gespeicherter Parameter: Temperaturkompensation Unterspannungsabschaltung Start in mV / °C |
---|
| 69 | int16_t vShutdownStopTempco; //44 Gespeicherter Parameter: Temperaturkompensation Unterspannungsabschaltung Stopp in mV / °C |
---|
| 70 | int16_t balancerVoltageTempco; //45 Gespeicherter Parameter: Temperaturkompensation Ausgleichsspannung (Standalone Mode) in mV / °C |
---|
| 71 | uint16_t balancerVoltageRemote; //46 Remote Setpoint Ausgleichsspannung, diese Register dient zur Steuerung der Balancerspannung von Mastergerät |
---|
| 72 | uint16_t writeLocked; //47 1= (Einige) Register sind geschützt, 0 = Kein Schutz vorhanden |
---|
| 73 | uint16_t keyAccepted; //48 1= lockKey is correct, gesperrte Register sind freigegeben zum beschreiben |
---|
| 74 | uint16_t lockKey; //49 EINGABE ENTSPERR CODE |
---|
| 75 | uint16_t newLockKey; //50 EINGABE NEUER Sperrcode |
---|
| 76 | uint16_t reserved3[49]; //51-99 RESERVIERT |
---|
| 77 | |
---|
| 78 | // --- AKTUELLE DATEN ab Adresse 100 --- |
---|
| 79 | uint16_t cellVoltage; //100 Zellspannung in mV |
---|
| 80 | int16_t cellTemperature; //101 Zelltemperatur |
---|
| 81 | int16_t balancerCurrent; //102 Aktueller Ausgleichsstrom in mA --> Neuer Istwert |
---|
| 82 | uint16_t otShutdown; //103 Übertemperatur Shutdown Status, 0 = AUS, 1 = AKTIV |
---|
| 83 | uint16_t utChargeShutdown; //104 Untertemperatur Ladung Shutdown Status, 0 = AUS, 1 = AKTIV |
---|
| 84 | uint16_t utDischargeShutdown; //105 Untertemperatur Entladung Shutdown Status, 0 = AUS, 1 = AKTIV |
---|
| 85 | uint16_t voltageShutdown; //106 Spannuns shutdown Status, 0 = AUS, 1 = AKTIV |
---|
| 86 | uint16_t lvpDelayCounter; //107 Zähler bis Abschaltung LVP in Sekunden, ACHTUNG, EINHEIT GEÄNDERT IN SEKUNDEN |
---|
| 87 | uint16_t balancerPower; //108 Nicht wirklich Power in Watt, sondern DAC Value von 0 bis MAX_DAC_VALUE, Achtung Bereich geändert |
---|
| 88 | uint16_t mode; //109 Modus 0 = Autmatisch. Modus 1 = Manuelle Steuerung über Register 12 möglich |
---|
| 89 | uint16_t lvpState; //110 Zustand Schaltausgang LVP, 0 = LVP aus, 1 = LVP aktiv (verzögert), 2 = LVP aktiv (unverzögert) |
---|
| 90 | uint16_t ovpState; //111 Zustand Schaltausgang OVP, 0 = OVP aus, 1 = LVP aktiv |
---|
| 91 | uint16_t maxVoltage; //112 Höchste Spannung seit letztem Reset |
---|
| 92 | uint16_t minVoltage; //113 Niedrigste Spannung seit letztem Reset |
---|
| 93 | int16_t maxTemperature; //114 Höchste Temperatur seit letztem Reset |
---|
| 94 | int16_t minTemperature; //115 Niedrigste Temperatur seit letztem Reset |
---|
| 95 | |
---|
| 96 | // --- AKTUELLE BERECHNETE PARAMTER --- |
---|
| 97 | uint16_t balancerVoltage; //116 Aktuelle Ausgleichsspannung |
---|
| 98 | uint16_t ovpAlarmComp; //117 OVP Alarmspannung Temperatur kompensiert |
---|
| 99 | uint16_t lvpAlarmComp; //118 LVP Alarmspannung Temperatur kompensiert |
---|
| 100 | uint16_t ovpStartComp; //119 OVP Startspannung Temperatur kompensiert |
---|
| 101 | uint16_t ovpStopComp; //120 OVP Stoppspannung Temperatur kompensiert |
---|
| 102 | uint16_t lvpStartComp; //121 LVP Startspannung Temperatur kompensiert |
---|
| 103 | uint16_t lvpStopComp; //122 LVP Stoppspannung Temperatur kompensiert |
---|
| 104 | uint16_t vShutdownStartComp; //123 Spannungsabschaltung Start Temperatur kompensiert |
---|
| 105 | uint16_t vShutdownStopComp; //124 Spannungsabschaltung Stopp Temperatur kompensiert |
---|
| 106 | uint16_t balancerVoltageComp; //125 Ausgleichsspannung Temperatur kompensiert (wenn im Standalone Mode) |
---|
| 107 | uint16_t masterMode; //126 Master modus dedektiert |
---|
| 108 | uint16_t converterError; //127 Fehler DC / DC Converter |
---|
| 109 | |
---|
| 110 | // --- weitere historische Daten |
---|
| 111 | uint16_t cycleCounter; //128 |
---|
| 112 | uint16_t criticalUnderTempTime; //129 |
---|
| 113 | uint16_t criticalOverTempTime; //130 |
---|
| 114 | uint16_t criticalUnderVoltageTime; //131 |
---|
| 115 | uint16_t criticalOverVoltageTime; //132 |
---|
| 116 | uint16_t reserved6[17]; //133-149 RESERVIERT für weitere wichtige Daten |
---|
| 117 | |
---|
| 118 | // --- AKTUELLE BERECHNETE PARAMTER, Weniger Wichtig, für DEBUG Zwecke, normalerweise keine Übertragung notwendig --- |
---|
| 119 | uint16_t chargeTime; //150 Interner Debbug Wert: Ladezeit DC DC Converter |
---|
| 120 | uint16_t chargeTransferTime; //151 Interner Debbug Wert: Ladungstransfer Zeit DC DC Converter |
---|
| 121 | uint16_t sekVoltage; //152 |
---|
| 122 | uint16_t SekHvErrorCounter; //153 |
---|
| 123 | uint16_t SekLvErrorCounter; //154 |
---|
| 124 | uint16_t cellVoltageUnfiltered; //155 |
---|
| 125 | }sys_data_struct_t; |
---|
| 126 | |
---|
| 127 | typedef union sys_data_union |
---|
| 128 | { |
---|
| 129 | sys_data_struct_t s; |
---|
| 130 | bword_t mb[sizeof( sys_data_struct_t) /2]; |
---|
| 131 | } sys_data_t; |
---|
| 132 | |
---|
| 133 | |
---|
| 134 | //--- GLOBALE DEFINES ---------------------------------------------------------- |
---|
| 135 | #define CMD_NOCMD 0 |
---|
| 136 | #define CMD_SAVE_PARAMETER_TO_EEPROM 1 |
---|
| 137 | #define CMD_APPLY_MB_PARAMETER 2 |
---|
| 138 | #define CMD_RESET_FACTORY 3 |
---|
| 139 | #define CMD_RESET 4 |
---|
| 140 | #define CMD_SAVE_LOCK_KEY 5 |
---|
| 141 | #define CMD_RESET_COUNTERS 6 |
---|
| 142 | #define CMD_RESET_MIN_MAX_VALUES 7 |
---|
| 143 | #define CMD_SAVE_SN 12345 |
---|
| 144 | |
---|
| 145 | |
---|
| 146 | |
---|
| 147 | |
---|
| 148 | |
---|
| 149 | #define MB_BAUDRATE_DEFAULT 19200 // bit pro sekunde |
---|
| 150 | #define MB_PARITY_MODE_DEFAULT 'e' // EVEN - GERADE |
---|
| 151 | #define MB_STOPBIT_MODE_DEFAULT 1 |
---|
| 152 | #define MB_SLAVE_ADDRESS_DEFAULT 1 |
---|
| 153 | #define MB_MASTER_MODE_DEFAULT 0 |
---|
| 154 | #define MIN_VOLTAGE_DEFAULT 65535 |
---|
| 155 | #define MAX_VOLTAGE_DEFAULT 0 |
---|
| 156 | #define MIN_TEMPERATURE_DEFAULT 32767 |
---|
| 157 | #define MAX_TEMPERATURE_DEFAULT -32767 |
---|
| 158 | |
---|
| 159 | |
---|
| 160 | |
---|
| 161 | // ------ DEFAULT CELLPARAMETER ------ |
---|
| 162 | #define OVP_ALARM_VOLTAGE_DEFAULT 3700 // [mV] |
---|
| 163 | #define LVP_ALARM_VOLTAGE_DEFAULT 2800 // [mV] |
---|
| 164 | #define OVP_START_VOLTAGE_DEFAULT 3650 // [mV] |
---|
| 165 | #define OVP_STOPP_VOLTAGE_DEFAULT 3600 // [mV] |
---|
| 166 | #define LVP_START_VOLTAGE_DEFAULT 2900 // [mV] |
---|
| 167 | #define LVP_STOPP_VOLTAGE_DEFAULT 3200 // [mV] |
---|
| 168 | #define BAL_VOLTAGE_DEFAULT 3600 // [mV] für 14,4 V Ladeschlussspannung |
---|
| 169 | #define VOLTAGE_SHUTDOWN_START_VOLTAGE_DEFAULT 2500 // [mV] |
---|
| 170 | #define VOLTAGE_SHUTDOWN_STOPP_VOLTAGE_DEFAULT 2600 // [mV] |
---|
| 171 | #define OVERTEMPPROTECTION_START_DEFAULT 500 // [°C *10] |
---|
| 172 | #define OVERTEMPPROTECTION_STOP_DEFAULT 450 // [°C *10] |
---|
| 173 | #define UNDERTEMPPROTECTION_CHARGE_START_DEFAULT 50 // [°C *10] |
---|
| 174 | #define UNDERTEMPPROTECTION_CHARGE_STOP_DEFAULT 70 // [°C *10] |
---|
| 175 | #define UNDERTEMPPROTECTION_DISCHARGE_START_DEFAULT -150 // [°C *10] |
---|
| 176 | #define UNDERTEMPPROTECTION_DISCHARGE_STOP_DEFAULT -100 // [°C *10] |
---|
| 177 | #define LVP_TIME_DEFAULT 600 // s |
---|
| 178 | #define BASIS_TEMP_DEFAULT 250 // 25°C |
---|
| 179 | #define OVP_ALARM_TEMPCO_DEFAULT 0 // [mV / °C] |
---|
| 180 | #define OVP_START_TEMPCO_DEFAULT 0 // [mV / °C] |
---|
| 181 | #define OVP_STOPP_TEMPCO_DEFAULT 0 // [mV / °C] |
---|
| 182 | #define LVP_ALARM_TEMPCO_DEFAULT 0 // [mV / °C] |
---|
| 183 | #define LVP_START_TEMPCO_DEFAULT 0 // [mV / °C] |
---|
| 184 | #define LVP_STOPP_TEMPCO_DEFAULT 0 // [mV / °C] |
---|
| 185 | #define V_SHUTDOWN_START_TEMPCO_DEFAULT 0 // [mV / °C] |
---|
| 186 | #define V_SHUTDOWN_STOPP_TEMPCO_DEFAULT 0 // [mV / °C] |
---|
| 187 | #define BAL_TEMPCO_DEFAULT 0 // [mV / °C] |
---|
| 188 | |
---|
| 189 | |
---|
| 190 | #define CONVERTER_ERROR_NONE 0 |
---|
| 191 | #define CONVERTER_ERROR_OUTPUT_VOLT_TOO_HIGH 2 |
---|
| 192 | #define CONVERTER_ERROR_OUTPUT_VOLT_TOO_LOW 3 |
---|
| 193 | #define CONVERTER_ERROR_STARTUP_ERROR 4 |
---|
| 194 | |
---|
| 195 | |
---|
| 196 | //--- GLOBALE VARIABLEN PROTOTYPEN --------------------------------------------- |
---|
| 197 | extern sys_data_t sysData; |
---|
| 198 | |
---|
| 199 | |
---|
| 200 | #define MIN_ADRESS 0 |
---|
| 201 | #define MAX_ADRESS ((sizeof(sysData)/2)-1) |
---|
| 202 | |
---|
| 203 | extern accessMode_t accessModeTable[MAX_ADRESS+1]; |
---|
| 204 | |
---|
| 205 | |
---|
| 206 | //--- GLOBALE FUNKTIONS PROTOTYPEN --------------------------------------------- |
---|
| 207 | void SYSDATA_Init(void); |
---|
| 208 | |
---|
| 209 | |
---|
| 210 | |
---|
| 211 | |
---|
| 212 | #endif |
---|