source: ecs_cellMon/firmware/inc/sysdata.h@ 15

Last change on this file since 15 was 12, checked in by f.jahn, 3 years ago

CMD_DELAY is implemented to test IWDG timer.

File size: 14.0 KB
RevLine 
[3]1/**
2 ******************************************************************************
3 * @file sysdata.h
[11]4 * @author ECS - Zed Kazharov
[3]5 * @version V1.0.0
[11]6 * @date 10-Feb-2023
[3]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 !!!
25typedef 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
127typedef 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 ----------------------------------------------------------
[12]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_DELAY 8
144#define CMD_SAVE_SN 12345
[3]145
146
147
148
149
150#define MB_BAUDRATE_DEFAULT 19200 // bit pro sekunde
151#define MB_PARITY_MODE_DEFAULT 'e' // EVEN - GERADE
152#define MB_STOPBIT_MODE_DEFAULT 1
153#define MB_SLAVE_ADDRESS_DEFAULT 1
154#define MB_MASTER_MODE_DEFAULT 0
155#define MIN_VOLTAGE_DEFAULT 65535
156#define MAX_VOLTAGE_DEFAULT 0
157#define MIN_TEMPERATURE_DEFAULT 32767
158#define MAX_TEMPERATURE_DEFAULT -32767
159
160
161
162// ------ DEFAULT CELLPARAMETER ------
163#define OVP_ALARM_VOLTAGE_DEFAULT 3700 // [mV]
164#define LVP_ALARM_VOLTAGE_DEFAULT 2800 // [mV]
165#define OVP_START_VOLTAGE_DEFAULT 3650 // [mV]
166#define OVP_STOPP_VOLTAGE_DEFAULT 3600 // [mV]
167#define LVP_START_VOLTAGE_DEFAULT 2900 // [mV]
168#define LVP_STOPP_VOLTAGE_DEFAULT 3200 // [mV]
169#define BAL_VOLTAGE_DEFAULT 3600 // [mV] für 14,4 V Ladeschlussspannung
170#define VOLTAGE_SHUTDOWN_START_VOLTAGE_DEFAULT 2500 // [mV]
171#define VOLTAGE_SHUTDOWN_STOPP_VOLTAGE_DEFAULT 2600 // [mV]
172#define OVERTEMPPROTECTION_START_DEFAULT 500 // [°C *10]
173#define OVERTEMPPROTECTION_STOP_DEFAULT 450 // [°C *10]
174#define UNDERTEMPPROTECTION_CHARGE_START_DEFAULT 50 // [°C *10]
175#define UNDERTEMPPROTECTION_CHARGE_STOP_DEFAULT 70 // [°C *10]
176#define UNDERTEMPPROTECTION_DISCHARGE_START_DEFAULT -150 // [°C *10]
177#define UNDERTEMPPROTECTION_DISCHARGE_STOP_DEFAULT -100 // [°C *10]
178#define LVP_TIME_DEFAULT 600 // s
179#define BASIS_TEMP_DEFAULT 250 // 25°C
180#define OVP_ALARM_TEMPCO_DEFAULT 0 // [mV / °C]
181#define OVP_START_TEMPCO_DEFAULT 0 // [mV / °C]
182#define OVP_STOPP_TEMPCO_DEFAULT 0 // [mV / °C]
183#define LVP_ALARM_TEMPCO_DEFAULT 0 // [mV / °C]
184#define LVP_START_TEMPCO_DEFAULT 0 // [mV / °C]
185#define LVP_STOPP_TEMPCO_DEFAULT 0 // [mV / °C]
186#define V_SHUTDOWN_START_TEMPCO_DEFAULT 0 // [mV / °C]
187#define V_SHUTDOWN_STOPP_TEMPCO_DEFAULT 0 // [mV / °C]
188#define BAL_TEMPCO_DEFAULT 0 // [mV / °C]
189
190
191#define CONVERTER_ERROR_NONE 0
192#define CONVERTER_ERROR_OUTPUT_VOLT_TOO_HIGH 2
193#define CONVERTER_ERROR_OUTPUT_VOLT_TOO_LOW 3
194#define CONVERTER_ERROR_STARTUP_ERROR 4
195
196
197//--- GLOBALE VARIABLEN PROTOTYPEN ---------------------------------------------
198extern sys_data_t sysData;
199
200
201#define MIN_ADRESS 0
202#define MAX_ADRESS ((sizeof(sysData)/2)-1)
203
204extern accessMode_t accessModeTable[MAX_ADRESS+1];
205
206
207//--- GLOBALE FUNKTIONS PROTOTYPEN ---------------------------------------------
208void SYSDATA_Init(void);
209
210
211
212
213#endif
Note: See TracBrowser for help on using the repository browser.