отправлено / posted
Различные таймерные функции a FBD-программах реализуются с помощью блоков раздела "Триггеры и счетчики". Кроме того, используя блоки TIME и DATE раздела "Генераторы" можно работать с компонентами текущего временем сравнивать, запоминать (например, в глобальных переменных). Используя системные переменные (например, @t_Set_Date), можно ввести в программу текущее время, запоминать его метки и формировать нужные временные интервалы.
Сообщения / Posts 17335 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sinegub_mihail
Forum Haunter / Завсегдатай форума
Участник № / Member № 4460
Selya
Forum Member / Участник форума
Участник № / Member № 6591
отправлено / posted
Сделал вот такую программу Timer на FBD (основную идею подсказал Александр Юрьевич на курсах):
Аргументы: Timer_C OUT USINT привязан к атрибуту 3 (Состояние) CALL.Program "Timer" (тип Input, Дополнительно -> Выключить) ARG_000 OUT USINT (нужен для отображения прогресса таймера)
Программа "Timer" запускается передачей в её 3й атрибут (Состояние) значения 0. Как только таймер отработает её состояние самостоятельно переходит в значение 1, программа выключается.
Единственный минус в том, что таймер работает не 5, а 10 секунд. Дело в том, что блок rTRIG формирует импульс не каждую секунду, а раз в 2 секунды! Это ошибка или так и надо?
Сообщения / Posts 32 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Из документации: "Импульс по переднему фронту (rTRIG) Этот блок формирует прямоугольный импульс длиной в один такт пересчета при изменении значения младшего разряда INP с 0 на 1." Так он у Вас и работает.
1. Уберите из программы блоки TIME и rTRIG. 2. Задайте у блока CTU значение входа INP=1. 3. Задайте каналу вызова программы период обработки, равный 1 сек.
Сообщения / Posts 17335 | Из / From: Россия
| IP / IP: IP адрес / IP address |