
Сообщение от
LTM
Здравствуйте!
Только начинаю пробовать писать на ST. Возможно тривиальный вопрос: как правильно сделать вызов ФБ таймера в другом ФБ. Ранее были приведены примеры. Не понял такие моменты: чтобы вызвать таймер, нужно в ФБ из которого его вызываем прописать все входные и выходные переменные для этого таймера, и сам таймер? Нужно ли на схеме располагать ФБ таймера? Если нет, то как компилятор "узнает", что на соответствующий вход приходят системные секунды? Если да, то при задании переменных таймера в вызывающем блоке, соответствующие входы/выходы появятся у вызывающего блока, для чего они будут нужны, ведь мы вызываем таймер из этого блока и при вызове передаем ему значения соответствующих переменных?
Для вызова таймере в ФБ, надо объявить экземпляр таймера в VAR и вызвать в программе
Код:
var_input
In : bool; // Входные переменные таймера
PT : udint;
end_var
var_output
ET :udint; // Выходные переменные таймера
Q : bool ;
end_var
var
T1, T2 : time;
TON1:TON; // объявление экземпляра TON1 таймера TON (самописный таймер)
TON2:SYS.TON; // объявление экземпляра TON2 системного таймера SYS.TON
end_var
T1:=get_time(); // Системное время
TON1 (IN :=In, PT:=PT, ET=>ET, Q=>Q); // Вызов экземпляра TON1
TON2 (I:=In,T:=T2,Q=>Q); // Вызов экземпляра системного TON2
В последней версии Лоджика 2.6.345 уже доступны системные таймеры TON2 (I:=In,T:=T2,Q=>Q); и системное время T1:=get_time();
Время T1, T2 : time; нельзя подать на вход и выход, использовать только в ФБ. Для выхода надо конвертировать, например ET:= time_to_udint(T1);