Spaces:
Running
Running
File size: 2,605 Bytes
96a5049 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
#ifndef LEARNING_MANAGER_H
#define LEARNING_MANAGER_H
#include "fuel_learning.h"
#include "ignition_learning.h"
#include <Preferences.h>
class LearningManager {
private:
FuelLearningTable fuelTable;
IgnitionLearningTable ignitionTable;
// Параметры обучения
bool isLearningEnabled;
bool isFuelLearningEnabled;
bool isIgnitionLearningEnabled;
unsigned long learningStartTime;
unsigned long minLearningTime; // Минимальное время работы для начала обучения
float minEngineTemp; // Минимальная температура для обучения
float maxEngineTemp; // Максимальная температура для обучения
float minThrottlePosition; // Минимальное положение дросселя для обучения
float maxThrottlePosition; // Максимальное положение дросселя для обучения
// Статистика обучения
uint32_t totalLearningPoints;
uint32_t knockEvents;
uint32_t richMixtureEvents;
uint32_t leanMixtureEvents;
// Проверка условий для обучения
bool checkLearningConditions(float engineTemp, float throttlePosition);
public:
LearningManager();
// Инициализация и управление
void begin();
void enable();
void disable();
void reset();
// Основные методы обучения
void update(float load, float rpm, float lambda, float knockLevel,
float engineTemp, float throttlePosition);
// Получение коррекций
float getFuelCorrection(float load, float rpm);
float getIgnitionCorrection(float load, float rpm);
// Настройка параметров
void setLearningParameters(float minTemp, float maxTemp,
float minThrottle, float maxThrottle);
void setLearningRates(float fuelRate, float ignitionRate);
// Сохранение/загрузка
bool save();
bool load();
// Статистика и диагностика
uint32_t getTotalLearningPoints() const;
uint32_t getKnockEvents() const;
uint32_t getRichMixtureEvents() const;
uint32_t getLeanMixtureEvents() const;
float getLearningProgress() const; // 0-100%
// Экспорт данных
String exportToJson();
bool importFromJson(const String& json);
};
#endif
|