Такой блок в CoDeSys написать просто. Варианты:

1) Всеми любимый табличный метод . Делю время на нужные отрезки. Получаю индекс. По нему из таблицы беру соотв-е значение. Набор значений задается при объявлении таблицы (array) константами.

2) Если вариантов заданий не много, то см. блок MUX.

3) На языке ST обычный case. Время преобразовал в целое, поделил до нужной дискретности. Например, получил минуты Minutes.

CASE Minutes OF
0..60: Temperature := 18;
61..120: Temperature := 20;
и тд.
END_CASE


4) Если надо плавно менять, то блок RAMP после задатчика.

5) oscat.lib См. тут.