Spaces:
Running
Running
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); | |
}; | |