source: ecs_cellMon/firmware/inc/sysdata.h

Last change on this file was 12, checked in by f.jahn, 19 months ago

CMD_DELAY is implemented to test IWDG timer.

File size: 14.0 KB
Line 
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 !!!
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 ----------------------------------------------------------
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
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.