Очень нравится?! А руководство по программированию не читаете!
А ну проверьте:
Код:function setBit5: udint; // Установка 5-го бита во входном числе
var_input
in : udint;
end_var
setBit5 := in;
setBit5.5 := true;
end_function
Вид для печати
не смог найти. просмотрел несколько раз. может не там смотрю. помогите плиз где это написаноВложение 80569
кроме этого.
после точки в переменной указывается бит
пример if (myVals.5) then или как там правильно проверять 5-й бит на true.. з.ы я про синтаксис, в ST не силен.
спасибо!!!!!!
Нигде не нашел "Таймер с задержкой включения" и выключения, нужны для последовательного запуска, например, двигателей.. В ST оказывается есть стандартные методы SYS.TON и SYS.TOF - просто офигеть :) Все в учебных целях.. Время в сек. только для контроля задержки
Функциональный блок:
function_block Timer_Delay_On (*Таймер с задержкой на вкл. 31.07.2026,Колледж АлтГУ*)
var_input
Start : bool := FALSE; (*Запуск*)
Delay_On_sec : udint; (*Задержка включения, сек.*)
Off_Reset : bool; (*Выключение и сброс таймера в 0 (высший приоритет)*)
end_var
var_output
Seconds : udint; (*Текущее значение в секундах*)
Power_On : bool; (*Включение исполнительного механизма*)
end_var
var
Timer_Internal : real; (*Внутренний счетчик в секундах*)
Current_Time : real; (*Отсчет времени при запуске*)
Last_Time : real; (*Текущее время*)
Delta_Time : real; (*Чистое время между включениями*)
Delay_On : SYS.TON; //Задержка на включение (стандартный метод ST)
end_var
Delay_On(I := Start, T := udint_to_time(Delay_On_sec * 1000));
Power_On := Delay_On.Q;
(*1. Время с момента включения, в миллисекундах)*)
Current_Time := udint_to_real(time_to_udint(get_time()));
(*2. Дельта времени (период повторного включения)*)
IF Last_Time = 0.0 THEN
Delta_Time := 0.0; (*Первый вызов - не учитываем*)
ELSE
Delta_Time := Current_Time - Last_Time;
END_IF
(*3. Запоминаем текущее время*)
Last_Time := Current_Time;
(*4. Аварийтное отключение и сброс таймера (высший приоритет)*)
IF Off_Reset THEN
Timer_Internal := 0.0;
Seconds := 0;
Power_On := false;
ELSE
(*5. Проверка условий для изменения счетчика*)
IF Start AND NOT Off_Reset THEN
Timer_Internal := Timer_Internal + Delta_Time / 1000; (* в секунды *)
(*6. Преобразование в целое число, секунды*)
Seconds := real_to_udint(Timer_Internal);
END_IF
END_IF
end_function_block
Если вы не нашли, то это не значит что их нет.
Тут есть не только все таймеры, но и примеры разных проектов
https://owen.ru/forum/showthread.php...l=1#post426133