Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 25

Тема: ПЛК выдает задержку в 3 раза длиннее установочной

  1. #11
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,669

    По умолчанию

    TON и остальные таймеры и триггеры на CodeSys полностью программные, и кодом можно напортачить.

  2. #12

    По умолчанию

    Цитата Сообщение от klad_Fe2O3 Посмотреть сообщение
    В данном случае практически из одной. Сейчас тестовый режим подключения нового оборудования.

    if knop_26 then
    myTON(IN:=knop_26,PT:=t#5s);
    if myTON.Q then
    d_N3:= true;
    end_if
    end_if
    При включении кнопки knop_26 из исходного состояния (предположим, что только что залили программу и запустили контроллер), включается таймер myTON. При выключении knop_26 таймер продолжит отсчитывать время до 5 секунд, сработает его выход, но d_N3 не включится, т.к. первый if knop_26 не срабатывает. При следующем включении knop_26 и досчитанном таймере включается d_N3. Таймер по knop_26 не будет ни сбрасываться, ни включаться по новой, т.к. для сброса таймера требуется задний фронт knop_26, а его myTON не видит из-за if knop_26 then.

  3. #13

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Желательно не вставлять таймер внутрь условий
    Согласен с вами.

  4. #14

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Во первых, зачем было менять переключатель на кнопку, есть сомнения что моё предложение не будет работать или на практике убедились что не работает так как Вам хочется?
    во вторых, что значит TON не работает, он входит в стандартную библиотеку Вложение 72319, по Вашим словам миллионы пользователей сталкиваются с такой проблемой и она за столько лет существования контроллеров не решилась
    Ваш код пришлось изменить потому что он на переключателе не работал.
    tik_curr := time_to_dword(time());
    If knop_26 and (tik_curr - tik_start) > 5000 then
    d_N3:= true;
    else
    tik_start := tik_curr;
    end_if

    В нем (tik_curr - tik_start) > 5000 никогда не превышает 5000. (на переключателе)
    Поэтому для проверки time() код был поправлен. А для удобства кнопка стала клавишей.

  5. #15

    По умолчанию

    Цитата Сообщение от Nomad Посмотреть сообщение
    При включении кнопки knop_26 из исходного состояния (предположим, что только что залили программу и запустили контроллер), включается таймер myTON. При выключении knop_26 таймер продолжит отсчитывать время до 5 секунд, сработает его выход, но d_N3 не включится, т.к. первый if knop_26 не срабатывает. При следующем включении knop_26 и досчитанном таймере включается d_N3. Таймер по knop_26 не будет ни сбрасываться, ни включаться по новой, т.к. для сброса таймера требуется задний фронт knop_26, а его myTON не видит из-за if knop_26 then.
    Вы описали процесс, если knop_26 была бы клавишей. Но задержка в три раза по времени была именно на переключателе. После одинарного включения ничего больше не нажималось и ожидалась реакция реле. Реле срабатывало только через 15 сек, а не через 5, как установлено в TON.

  6. #16
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    У Вас knop_26 это использование физического входа или что программноэмулированое нечто? 5000 это всего лишь пять секунд, как можно их не дождаться.
    Действительно, как предложили ранее, надо выкладывать проект
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #17
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от klad_Fe2O3 Посмотреть сообщение
    Реле срабатывало только через 15 сек, а не через 5, как установлено в TON.
    О каком реле идёт речь, случайно среда разработки не овенлоджик и проверяете не в эмуляции ли?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #18

    По умолчанию

    knop_26 - переключатель в визуализации. d_N3 - физический выход на самом ПЛК200.
    А я разве сказал, что не дождался их? при установку 1s - дождался через 3 секунды. При установке 5s и в другой раз 5000ms дождался через 15 сек.
    Проект заключался именно в 7 строчках, которые я вам написал. Ничего кроме них не было (Кроме кнопки в визуализации.)

  9. #19

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    О каком реле идёт речь, случайно среда разработки не овенлоджик и проверяете не в эмуляции ли?
    Реальное физическое реле в собранном щите. Нет никакой эмуляции. Смотрел по диоду на реле.

  10. #20

    По умолчанию

    Цитата Сообщение от klad_Fe2O3 Посмотреть сообщение
    В данном случае практически из одной. Сейчас тестовый режим подключения нового оборудования.

    if knop_26 then
    myTON(IN:=knop_26,PT:=t#5s);
    if myTON.Q then
    d_N3:= true;
    end_if
    end_if
    Вернемся к началу...
    myTON(IN:=knop_26,PT:=t#5s); надо вообще наружу вынести, зачем это внутри условия, непонятно, т.к. IN:=knop_26 это тоже само по себе условие. Тем более время таймера если больше не меняется, то зачем его в условие пихать.

    Помню я в case такое запихал, но у меня таймеры переназначались по времени работы, и тоже начался какой то мрак...

    Код:
    myTON(IN:=knop_26,PT:=t#5s);
    d_N3:= knop_26 and myTON.Q;
    Посмотрел, как ведет себя ваш код в эмуляторе... Это тот еще мрак.
    1. Нажимаем кнопку knop_26 и отпускаем... В момент нажатия таймер начинает отсчет, в момент отпускания таймер остается взведен, что логично, но отсчет в переменных уже не ведется (хотя таймер считает), так как находимся вне условия IF.
    2. Проходит хоть час, хоть два... Ничего не произойдет, пока снова не нажмем knop_26 и тогда попадем в 2 условия и загорится выход...
    3. Все, таймер больше не сбросить, так как вне условия IF код myTON(IN:=knop_26,PT:=t#5s) не выполняется ни при каких условиях...

    Вы сами намудрили с кодом и поэтому так и вышло... Это похоже не 3 секунды (или 15), а вы просто задолбались ждать исполнения багованого кода, повторно нажали кнопку и о чудо, выхода включились...

    Вот с виртуальной визуализацией тоже все норм...
    121212121.png
    Последний раз редактировалось МихаилГл; 13.12.2023 в 05:59.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Ответов: 20
    Последнее сообщение: 13.07.2023, 21:58
  2. расчет считает два раза...
    от kjum4n в разделе Master SCADA 3
    Ответов: 8
    Последнее сообщение: 25.03.2022, 16:52
  3. Как сделать задержку на действие
    от Fipol в разделе Среда программирования OWEN Logic
    Ответов: 3
    Последнее сообщение: 14.11.2020, 07:50
  4. ПР110 - 3 раза мигнуть выходами после подачи питания
    от Inductor в разделе Программируемые реле
    Ответов: 8
    Последнее сообщение: 24.03.2015, 09:10
  5. Как сделать временную задержку на ST?
    от Starikov Alexander в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 09.02.2010, 13:22

Ваши права

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