Погодозависимым отоплением обычно называют график зависимости подачи горячей воды в систему отопления от температуры наружного воздуха. Зачастую программисты не заморачиваются, и делают наклонную прямую линию вида y=kx+c, где y - температура подачи, k - коэффициент наклона, x - температура наружного воздуха, c - константа, смещение графика.
Откуда взять x - понятно. Откуда взять k и c ?
Я встречал две реализации.
1 - в одном проекте указывалась температура при нуле градусов, и наклон кривой (на мой взгляд не очень наглядно и удобно). В этом случае k - задается c клавиатуры, (Тнулевое = k * 0 + С), т.е. С = Тнулевое задается с клавиатуры. Задача для школьника.
2. По крайним точкам - не намного сложнее. В скрине расписаны зависимости.
Это простейший случай. Если посмотреть документацию к зарубежному контроллеру отопления, например calormatic от vaillant, то там кривые, а не прямые.
График отопления, сложнее чем просто прямая, можно реализовать с помощью нескольких прямых отрезков. Главное выбрать нужный отрезок.
В зависимости от температуры наружного воздуха выбирается отрезок, и по нему вычисляется линейная зависимость.
В фбд нет операторов if then, поэтому приходится изголяться :)
Представляю свою реализацию. Координаты Х точек Т1 Т2 ...Т5 жестко прописаны -20 -15 -10 -5 0 5 10 15 (идут с фиксированным шагом 5 градусов), координата Y (температура подачи в точке) задается пользователем. Выбирать интервал мы можем не сравнением текущей температуры с концами отрезков, а вычислять сразу номер интервала.
Идея в следующем, к текущей температуре прибавляем "20" (нужно для корректной работы мультиплексора при -20 и ниже) и выполняем целочисленное деление на 5, получаем сразу номер отрезка. Мультиплексорами направляем соответствующие концы на вычислитель текущей температуры (рисунок 2). Этот алгоритм можно реализовать не только в сегнетикс, но и на любом другом контроллере (единственно не во всех средах есть мультиплексор, если нет его придется сделать)
Эту функцию можно использовать не только для погодозависимого регулирования. Например у вас есть табличная характеристика датчика и нужно, чтобы контроллер вычислял по таблице текущий параметр в зависимости от входной величины.
В традиционном языке программирования тоже легко реализуется.
PS. Не по теме.