А чего в функцию нельзя пихнуть целочисленное 3млрд?
Вид для печати
можно и впихнуть, и выпихнуть
Добрый день. Подскажите пожалуйста возможно ли внутри ФБ объявить входную переменную типа 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
Добрый день. Запрет распространяется на входы и выходы функций и ФБ (var_input, var_output). Вы можете объявить локальные переменные типа TIME (var), а затем, если требуется передавать значение на выход или задавать с входа, как верно подсказывают коллеги, использовать преобразования типов udint_to_time и time_to_udint.
Тренируйтесь на моем примере (версия 2.6.345):
Вложение 74857
Цитата:
Тренируйтесь на моем примере (версия 2.6.345):
2.6.347.0Код:
IN.25 := true; //ну тренируйтесь
Q.25:= IN.25;
Q.26:= false;
Q.29:= true;
345 даже в архиве на сайте нет