
Сообщение от
ElectroMan
Добрый день. Подскажите пожалуйста возможно ли внутри ФБ объявить входную переменную типа TIME? При попытке объявления переменной такого типа возникает ошибка, что данный тип не поддерживается в сигнатурах функций и функциональных блоков. И от сюда вопрос как же воспользоваться функция GET_TIME возвращающее значение типа TIME? ПР102-24.2416.03 v.2.61.
Преобразовать, в другой тип, например time_to_udint(GET_TIME());
Например в таймере, уставку PT пришлось объявлять не в формате TIME
Код:
FUNCTION_BLOCK TON_P //(c) PeterA
VAR_INPUT
IN: BOOL;
P: BOOL;
PT: UDINT;
END_VAR
VAR_OUTPUT
Q: BOOL;
ET: UDINT;
END_VAR
VAR
clk: BOOL;
StartTime: UDINT;
tx: UDINT;
END_VAR
tx:= time_to_udint(GET_TIME());
IF P THEN
StartTime:= tx - ET;
END_IF
IF IN AND NOT clk THEN
StartTime:= tx;
clk:= TRUE;
ELSIF NOT IN THEN
clk:= FALSE;
Q:= FALSE;
ET:= 0;
END_IF
IF clk AND NOT Q THEN
//ET:= MIN(PT, tx - StartTime); функция MIN не поддерживается!
//лепим ее сами
IF PT > (tx - StartTime) THEN
ET:= tx - StartTime;
ELSE
ET:= PT;
END_IF
Q:= ET = PT AND IN;
END_IF
end_function_block