Показано с 1 по 9 из 9

Тема: Работа FB Blink заданное количество времени

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Работа FB Blink заданное количество времени

    Здравствуйте, прошу помочь разобраться с работой FB Blink в заданном промежутке времени.

    Задача: В начале смены, обеда и перекуров нужно подавать одинарный сигнал, в конце смены, обеда и перекуров - двойной.

    Условие: сравниваю системное время ПЛК 210 с заданными константами - работает как надо.
    Действие: при срабатывании условия запускаю таймер (для отслеживания поставил 10 секунд), далее запускаю FB Blink от выхода таймера, если условие ложно, останавливаю таймер.
    Результат: при условии Истина запускается таймер и начинает считать 10секунд, также в FB Blink параметры Enable и Out становятся постоянно Истина и не меняются, соответствующий выход на ПЛК постоянно горит.

    Требуется, чтобы в заданный таймером промежуток времени, происходило мерцание выхода ПЛК. Не могу понять что упустил?

    Сразу скажу, что запись в переменную xShortHorn и использование FB Blink происходит один раз в программе.

    Результат работы кода.png Код программы.png

  2. #2

    По умолчанию

    Цитата Сообщение от Mikhail_NNT Посмотреть сообщение
    Здравствуйте, прошу помочь разобраться с работой FB Blink в заданном промежутке времени.

    Задача: В начале смены, обеда и перекуров нужно подавать одинарный сигнал, в конце смены, обеда и перекуров - двойной.

    Условие: сравниваю системное время ПЛК 210 с заданными константами - работает как надо.
    Действие: при срабатывании условия запускаю таймер (для отслеживания поставил 10 секунд), далее запускаю FB Blink от выхода таймера, если условие ложно, останавливаю таймер.
    Результат: при условии Истина запускается таймер и начинает считать 10секунд, также в FB Blink параметры Enable и Out становятся постоянно Истина и не меняются, соответствующий выход на ПЛК постоянно горит.

    Требуется, чтобы в заданный таймером промежуток времени, происходило мерцание выхода ПЛК. Не могу понять что упустил?

    Сразу скажу, что запись в переменную xShortHorn и использование FB Blink происходит один раз в программе.
    Если функциональный блок не вызывается (в соответствии с условием IF) - то и состояние его выходов не изменяется (и присваивание выхода другим переменным тоже не производится)

  3. #3

    По умолчанию

    Вызов блока Blink и таймеры надо выносить за пределы конструкции IF...THEN, а внутри только присваивать входы Blink1.Enable:=TRUE;
    TOF1.PT:=T#2S; TOF1.IN:=TRUE;
    Для сброса таймеров TOF (и TP), вход PT надо обнулять. TOF1.PT:=T#0S;
    Последний раз редактировалось kondor3000; 11.12.2024 в 08:49.

  4. #4

    По умолчанию

    1exan, kondor3000 спасибо за помощь, разобрался! Выложу рабочий вариант конструкции, может кому пригодится.
    Рабочий код.png

  5. #5

    По умолчанию

    Blink начинает свой такт с False, как сделать, чтобы его такт всегда начинался с True?

    После окончания работы Blink, в заданный промежуток времени, иногда его выход остается в True. Нужно, чтобы он всегда сбрасывался в False . Пытался его сбросить в программе Blink.Q:=False, компилятор ругается, что Q не является входной переменной. Конструкция Blink.Q=>False, также неработоспособна. Как тогда сбросить Q в False?

  6. #6

    По умолчанию

    Код фб blink открыт, посмотрите реализацию и напишите на основе свой фб с вашими требованиями.
    Изображения Изображения

  7. #7

    По умолчанию

    После окончания работы Blink, в заданный промежуток времени, иногда его выход остается в True.
    в кдс 2.3 ставят на выход Q - AND со входом
    дёшево и сердито

  8. #8

    По умолчанию

    Цитата Сообщение от Mikhail_NNT Посмотреть сообщение
    Blink начинает свой такт с False, как сделать, чтобы его такт всегда начинался с True?

    После окончания работы Blink, в заданный промежуток времени, иногда его выход остается в True. Нужно, чтобы он всегда сбрасывался в False . Пытался его сбросить в программе Blink.Q:=False, компилятор ругается, что Q не является входной переменной. Конструкция Blink.Q=>False, также неработоспособна. Как тогда сбросить Q в False?
    Можно было инвертировать выход и подать на выход Q:= Enable AND NOT BLINK1.Q, будет включаться с TRUE и выключаться даже если Q:=TRUE;
    Но сбросить стандартный BLINK не получится, можете импортировать выложенный блок и использовать, валяется давно с форума
    Код:
    Moy_BLINK1(start:=Enable , hi:=TIMEHIGH , lo:=TIMELOW, q=>Q  );
    Вложения Вложения
    Последний раз редактировалось kondor3000; 24.12.2024 в 19:23.

  9. #9
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,068

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Но сбросить стандартный BLINK не получится,
    извините, был не в курсе
    Код:
    var
      reset: bool; 
      _, blink : blink;
    ----
    if reset then
      blink := _;
    else
      blink(...);
    end_if
    out := blink.out;

Похожие темы

  1. Запуск с панели СП 307 на заданное время с ПР200(СП 307 Мастер, ПР -слэйв)
    от Nikolay_11 в разделе Среда программирования OWEN Logic
    Ответов: 8
    Последнее сообщение: 05.11.2024, 14:50
  2. работа Blink в St языке
    от Ден в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 23.01.2018, 15:48
  3. Ответов: 3
    Последнее сообщение: 02.10.2017, 17:03
  4. Ответов: 9
    Последнее сообщение: 22.03.2012, 16:48
  5. Ответов: 5
    Последнее сообщение: 14.08.2009, 11:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •