PDA

Просмотр полной версии : Управление выходами по таймеру



Stas
16.01.2018, 12:18
Здравствуйте,
ПЛК110-220.30.Р-М
МУ110-224.16К
Начал писать программу, при появлении сигнала на дискретном входе 1 контроллера начинают отрабатывать выходы на модулях вывода. Всего будет задействовано 24 выхода.
Пока получилось так что первый выход отрабатывает при нажатии кнопки и остается включенным 5 секунд. После того как первый отработал включается второй выход на 5 секунд и тд.
Как мне реализовать переход с первого выхода на второй? Программа на скриншоте.

capzap
16.01.2018, 12:29
вместо этого кода вставить следующую конструкцию

IF tTON.Q THEN
// реализация включения выходов по алгоритму
END_IF;
tTON(IN:=NOT tTON.Q,PT:=T#5s);

lara197a
16.01.2018, 15:03
По заднему фронту.
F_TRIG

Stas
17.01.2018, 07:52
Уважаемые,, подскажите еще как назначить QX6.1.0.0.0 элементом массива? Как в кодесис 3 не получается, т е вместо out1 написать например out[1]

lara197a
17.01.2018, 07:59
Обзовите выход как-то в области ввода-вывода, к примеру "puskatel_1"
При инициализации массива присвойте переменной массива эту переменную.
или отдельно пропишите присвоение значения переменной из массива
(на прямую или через указатель)

capzap
17.01.2018, 08:00
массив из булей ручками в программе out[1] := out1; не подходит?

Stas
17.01.2018, 08:14
) ага 24 раза, а если 48 попросят?

capzap
17.01.2018, 08:56
указатели для битов сложны для понимания и код получится не менее громоздкий, вернее разбросаный по проекту, легче обычное присвоение

ЗЫ не открывал, возможно здесь работа с битами из конфигурации http://www.owen.ru/forum/showthread.php?t=15455&p=142016&viewfull=1#post142016

lara197a
17.01.2018, 11:12
Кстати да, совсем забыл.
С битами, через указатель КДС работать не будет.
Лучше простая инициализация присваиванием.
Если нудно, то цикл FOR вам в помощь. создайте переменные с одинаковым именем и номерами.

Dimensy
18.01.2018, 15:35
А что нельзя QX6.1.0.0.0 обозвать out, и, потом обращаться out.0, out.1 и т.д.