1 | /** |
---|
2 | ****************************************************************************** |
---|
3 | * @file sysdata.h |
---|
4 | * @author ECS - Zed Kazharov |
---|
5 | * @version V1.0.0 |
---|
6 | * @date 10-Feb-2023 |
---|
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 |
---|