Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Не работает таймер

  1. #1

    По умолчанию Не работает таймер

    Добрый день
    Есть вот такой блок

    setTimeCycle : TIME := T#20S;
    TimeCycle : TON;
    setTimePauseAfterStep : TIME := T#2S;
    TimePauseAfterStep : TON;


    TimeCycle(IN:=TRUE, PT:=setTimeCycle);
    IF TimeCycle.Q THEN
    Global.Vlv.PV11_14.iAutoStart := FALSE;
    TimePauseAfterStep(IN:=TRUE, PT:=setTimePauseAfterStep);
    IF TimePauseAfterStep.Q THEN
    step := 2;
    TimePauseAfterStep(IN:=FALSE);
    TimeCycle(IN:=FALSE);
    END_IF;
    END_IF;

    Не срабатывают счетчики.
    То есть Сигнал на In:= True Приходит, Время он в ПТ записывает верно, но не считает время.
    В чем может быть косяк?

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,145

    По умолчанию

    Добрый день.

    Что значит "Не срабатывают счетчики"? Где эти счетчики в вашем коде?

    "То есть Сигнал на In:= True Приходит, Время он в ПТ записывает верно, но не считает время." - о каком именно таймере речь?

    Покажите проблему скриншотами или снимите видео.

  3. #3

    По умолчанию

    bandicam 2022-09-20 09-18-37-692.jpg

    Все Переменные типа TON Висят в таком положении.
    Не считает Счетчик ET в переменных типа TON.
    Уточню что он их в принципе и не считает при запуске, на IN Приходит сигнал True и все.
    Пошагово такая же история.

  4. #4

    По умолчанию

    TrTinf Про функцию capzap уже сказал. Где вызывается этот код?
    А я ещё добавлю, что нефиг обрабатывать таймеры в IFах! Все таймеры надо бы вызывать без IFов, так как таймер сможет досчитать и остановиться только если вызывается постоянно. Иначе он так и зависнет фиг в каком состоянии, так как IF перестанет выполняться, а последний такт таймера "О, я досчитал", так и не будет выполнен в общих случаях.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  5. #5

    По умолчанию

    Код вызывается при запуске программы сразу же.
    Если быть конкретным это начало PLC_PRG Первые строчки.

    К сожалению идея алгоритма в том что, там без таймерах в IFах не получится сделать, если есть лучше варианты, буду рад выслушать.

  6. #6
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,145

    По умолчанию

    Цитата Сообщение от TrTinf Посмотреть сообщение
    Код вызывается при запуске программы сразу же.
    Если быть конкретным это начало PLC_PRG Первые строчки.

    К сожалению идея алгоритма в том что, там без таймерах в IFах не получится сделать, если есть лучше варианты, буду рад выслушать.
    Выложите ваш проект и подробно опишите, что в нем нужно сделать, чтобы увидеть вашу проблему.

  7. #7

    По умолчанию

    Цитата Сообщение от TrTinf Посмотреть сообщение
    К сожалению идея алгоритма в том что, там без таймерах в IFах не получится сделать, если есть лучше варианты, буду рад выслушать.
    Не хочу обидеть некорректным вопросом, который может прозвучать грубо: ты начинающий или нет?
    А то я вижу стандартные косяки:
    а) "Кажется", что таймер будет сам считать, а через IF можно его или запускать или останавливать. Это не так.
    б) Упущены фишки R_TRIG и F_TRIG
    в) Упущена фишка конечных автоматов (State Machine).

    Ну и ты сам алгоритм-то не сказал. Вроде как там идёт запск, а потом пауза.
    Я мутил алгоритмы вида "Запуск - выдержка - работа - стоп + выдержка - ещё выдержка - перезапуск - выдерка - работа" на таймерах и конечном автомате. Работало! И ты так сможешь.

    Что вижу по коду:
    1. Непонятно, что за Step - это шаг конечного автомата или какая-то переменная-флаг? Что это?
    2. Если ты хочешь получить мигалку (вроде как TimeCycle у тебя перезапускается) - может быть взять BLINK?
    3. Косяк в IFах (тут я догадываюсь): у тебя IN на TimeCycle станет FALSE (чтобы он перезапустился) ТОЛЬКО если отработает второй таймер TimePauseAfterStep. А если случится так, что этот таймер по каким-то причинам не заработает (он ещё и в цикле крутится и вызывается хрен когда), то TimeCycle никогда не перезапустится.

    В общем, хотелось бы алгортим.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  8. #8

    По умолчанию

    bandicam 2022-09-20 11-21-13-173.jpg

    Ближе к начинающему если есть такой вопрос.

    а) Останавливать его надо, надо когда он посчитает время, чтобы дальше выполнилось действие. Проблема в том что он даже не считает TimeCycle
    б) Не упущены а не использованы потому что нет необходимости.

    Происходит запуск, выбирается шаг 1, всего 4 шага.
    Открыты клапана PV 11-14. (Базовая настройка запуска)
    Остальные закрыты. Это верно.
    Далее он должен отработать по таймеру время открытия и выключиться, после чего идет пауза в 2 секунды и если она есть то происходит переход на шаг 2.
    Step - переменная конструкции CASE
    TimeCycle Перезапускается потому что подразумевается что эта штука будет запускаться либо по времени либо по падению давления.

    Ну он и никогда и не перезапускается потому что даже TimeCycle не выполняется))

  9. #9

    По умолчанию

    TrTinf Хм. Так вот конструкция с CASE и шагами как раз и называется конечным автоматом состояний (State Machine).
    1. Если закомментировать ВЕСЬ код и оставить только вызов таймера - что будет?
    2. Не используется ли этот же таймер в других состояниях автомата?
    3. Так может для выдержки "...когда кончится выдержка" использовать вообще TOF?
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  10. #10

    По умолчанию

    Пробовал.
    Несколько раз.
    После каждого все равно на всякий случай делаю.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. ПЛК150-220.А-М (master) СП307Б (slave): работает write, но не работает read
    от программист_с_паяльником в разделе ПЛК1хх
    Ответов: 19
    Последнее сообщение: 24.01.2022, 09:38
  2. Не работает таймер TON TOF
    от Global в разделе ПЛК1хх
    Ответов: 14
    Последнее сообщение: 18.04.2018, 14:26
  3. Не работает код, таймер
    от pyonth в разделе ПЛК1хх
    Ответов: 17
    Последнее сообщение: 14.11.2013, 19:49
  4. Не работает таймер автоматической перезагрузки ПМ01
    от Александр85 в разделе Эксплуатация
    Ответов: 12
    Последнее сообщение: 07.02.2013, 11:46
  5. Таймер(ы)
    от AntoNechayuk в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 23.08.2011, 20:39

Ваши права

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