IF
out_val>0

THEN
tim1(IN:=1 ,PT :=T#5S);
d:=tim1.Q;
IF
d=1
THEN
Heather:=REAL_TO_WORD(MAX(0, out_val)*655.35);
tim1(IN:=0 PT:=T5s);
END_IF
cooler:=0;
ELSE
tim2(IN:=1 PT :=T#5S);
c:=tim2.Q;
IF c=1
THEN
cooler:=REAL_TO_WORD(MAX(0,out_val*-1)*655.35);
tim2(IN:=0 PT:=T5s);
END_IF
Heather:=0;
END_IF

попробуйте так...
п.с. за точность не ручаюсь, КДС под рукой нема, но идея в том что таймеры надо сбрасывать ибо они работают по фронту входа, а он у вас после первого вызова не меняется.