Этот элемент - ваша программа. Создайте POU - Генератор и напишите в ней соответствующий код. Можно использовать счетчик и таймер например, чтобы значения менялись с определенной скоростью.
Этот элемент - ваша программа. Создайте POU - Генератор и напишите в ней соответствующий код. Можно использовать счетчик и таймер например, чтобы значения менялись с определенной скоростью.
VAR
// Таймер для управления временем увеличения
tTimer : TON;
// Переменная A для запуска процесса
A : BOOL := FALSE;
// Переменная B, которую будем увеличивать
B : INT := 0;
maxTime : TIME := T#10S;
END_VAR
// Основная программа
IF A THEN
// Если A = TRUE, запускаем таймер
IF NOT tTimer.Q THEN
tTimer(IN := TRUE);
END_IF;
ELSE
// Если A = FALSE, сбрасываем таймер и обнуляем B
tTimer(IN := FALSE);
B := 0;
END_IF;
// Проверяем состояние таймера
IF tTimer.Q AND tTimer.ET <= maxTime THEN
// Увеличиваем B на 1 каждую миллисекунду
B := B + 1;
// Ограничиваем значение B максимум 100
IF B >= 100 THEN
B := 100;
END_IF;
END_IF;
Получилось на визуализации получить сл :1. Нажимаем кнопку ,за некоторое время на индикаторе идет увеличение с 0 до 100 . Благодарю за ваш совет )
Но не до конца понял зачем счетчик нужен в вашем варианте ?
Потому что весь код уложится в 3 строки, да ещё и автоматически остановится и сбросится. При использовании CTUD будет считать в обе стороны.
Если сброс не нужен, уберите RESET:=CTU1.Q
И 1мс лучше не ставить, в ПЛК до 100 досчитает за 0,1 секунду. В эмуляции цикл около 64 мс.Код:CTU1:CTU; TON1:TON; PV: WORD:=100; _______________________________ A:=A AND B<=PV AND B<100; TON1(IN:=A AND NOT TON1.Q, PT:=T#50ms); CTU1(CU:=TON1.Q ,RESET:=CTU1.Q ,PV:=PV,CV=>B);
Последний раз редактировалось kondor3000; 19.01.2025 в 19:34.