vdv0809 писал(а):Точное поддержание температуры
Скажите плз, как ваше устройство отрабатывает следующие ситуации:
Пусть:
Тзад - заданная переключателем температура,
Тсал - текущая температура в салоне по салонному датчику
Твых - текущая температура в воздуховоде печки
Токр - температура за бортом.
Еще у нас есть два контура ООС и соответственно, две ошибки регулирования - контур ТРЕБУЕМАЯ_ТЕМП_ИЗ_ПЕЧКИ--Твых и контур Тзад--Тсал - ошибки для них пусть будут Dвых и Dсал
Алгоритм приведения Dвых к нулю нам неинтересен - постоянная времени этой цепи ООС всего наверное порядка десятка секунд, и соответственно можно медленно двигать заслонку в нужном направлении, пока Math.Abs(Dвых) > 0. То есть мы считаем, что из печки всегда дует воздух с температурой, равной расчетной.
Теперь как рассчитать эту расчетную температуру сразу достаточно точно - чтобы сведение Dсал к нулю происходило максимально быстро, и ООС через салонный датчик только минимально корректировала Твых?
Представим, что окна автомобиля закрыты (иначе ни один алгоритм работать не будет), соответственно теплопотери пропорциональны Тсал - Токр. А это значит, что при одинаковых установочных параметрах (например Тзад = +20, Тсал = +15) при -20 за бортом контроллер должен стремиться выдать из печки более высокую Tвых, чем, например, при +10.
Ваш контроллер не знает наружной температуры, соответственно я полагаю, что он содержит алгоритмическую или таблично зашитую функцию вида Твых = f(Тзад, Тсал) и аддитивный коэффициент, который изменяется соответственно сигналу обратной связи по салонному датчику во времени - то есть если из печки уже дует воздух, скажем +30, а температура в салоне не поднимается, воздух начинает дуть +31, затем +32 итд - до тех пор, пока ошибка регулирования Dсал не станет равной нулю.
Конечно, в ваш алгоритм может быть заложено самообучение функции прямого регулирования f(Тзад, Тсал) по величине долговременной аддитивной коррекции - если это так - честь вам и хвала!
Для тех, кто не в курсе - подобным образом работают ЭСУД, самообучаясь в поле значений обороты/расход воздуха по сигналу с датчика кислорода.
Однако, даже с самообучением, система будет переучиваться всякий раз при сильном изменении уличной температуры - именно поэтому я бы поставил еще датчик забортной температуры и функцию прямого регулирования сделал бы как f(Тзад, Тсал, Токр)