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

Тема: Проблема с таймерами на ПЛК 110М2

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

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

    По умолчанию Проблема с таймерами на ПЛК 110М2

    на производстве 12 машин работают на ПЛК110М2, на всех них одна и та же программа. Проблема такая, есть подпрограммы которые по коду операции пришедшему по Modbus запускают некий агрегат по таймеру, код выглядит примерно так:

    Код:
    PROGRAM dododo
    VAR
    	TON_KnL: TON;
    	KnlElasp:BOOL;
    END_VAR
    
      TON_KnL(IN := TRUE, PT := DINT_TO_TIME(TRUNC(UST_Time * 1000)), Q=>KnlElasp);
      IF(KnlElasp) THEN
    	TON_KnL(IN := FALSE);
    	UST_Time := 0;
      END_IF;
    работает какое то время, но периодически появляется то на одной машине, то на другой машине пропуск операции. Входит в подпрограмму, запускает таймер и он сразу отрабатывает. Сделал принудительный сброс первой итерации с принудительным перезапуском таймера, так:

    Код:
    PROGRAM dododo
    VAR
    	TON_KnL: TON;
    	KnlElasp:BOOL;
            inInd:BOOL := TRUE;
    END_VAR
    
    
    IF(inInd) THEN
    	TON_KnL(IN := FALSE);
    	inInd :=FALSE;
    ELSE
      TON_KnL(IN := TRUE, PT := DINT_TO_TIME(TRUNC(UST_Time * 1000)), Q=>KnlElasp);
      IF(KnlElasp) THEN
    	TON_KnL(IN := FALSE);
    	inInd :=TRUE;
    	UST_Time := 0;
      END_IF;
    END_IF;
    стало лучше, но пропуски хоть и реже, но продолжают появляться. Может кто то сталкивался с данной проблемой, либо знает как полечить.

  2. #2
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    Seyran
    Я в своих проектах все таймеры всегда объявляю глобально.

  3. #3
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,712

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Seyran
    Я в своих проектах все таймеры всегда объявляю глобально.
    Очень жаль, что в учебных заведениях нет физических наказаний в виде порки розгами...

  4. #4

    По умолчанию

    это не основная программа, это программа которая вызывается по коду операции из основного цикла, а в момент когда мотор отключается, глобальный код операции сбрасывается и программа больше сюда не заходит пока не придет опять код данной операции. Уважаемые, Вы по моему не туда внимание свое направили. Вопрос заключается в том что иногда, не понятно по каким причинам, когда приходит нужный код операции и выполнение переходит в подобную подпрограмму таймер не тикает как указанно 60 секунд, а сразу говорит что все, и KnlElasp выставляется в TRUE. Это происходит не постоянно, а очень редко и на разных контроллерах. Но из за того что машин 12, техслужба периодически фиксирует отклонения по операциям. В ближайшем будущем надо переводить на ПЛК оставшиеся машины, и их уже будет 38, но с такой проблемой я пока не могу пойти на модернизацию остальных машин.
    Последний раз редактировалось Seyran; 20.01.2021 в 09:31.

  5. #5
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,712

    По умолчанию

    Цитата Сообщение от Seyran Посмотреть сообщение
    это не основная программа, это программа которая вызывается по коду операции из основного цикла, а в момент когда мотор отключается, глобальный код операции сбрасывается и программа больше сюда не заходит пока не придет опять код данной операции. Уважаемые, Вы по моему не туда внимание свое направили. Вопрос заключается в том что иногда, не понятно по каким причинам, когда приходит нужный код операции и выполнение переходит в подобную подпрограмму таймер не тикает как указанно 60 секунд, а сразу говорит что все, и KnlElasp выставляется в TRUE. Это происходит не постоянно, а очень редко и на разных контроллерах. Но из за того что машин 12, техслужба периодически фиксирует отклонения по операциям. В ближайшем будущем надо переводить на ПЛК оставшиеся машины, и их уже будет 38, но с такой проблемой я пока не могу пойти на модернизацию остальных машин.
    Уважаемый, это вас надо спрашивать как вы организовали вызов подпрограммы и зачем вы оформили подпрограмму в виде программы если есть Action и как так у вас таймер не всегда сбрасывается (наверное надо сброс таймера делать перед вызовом подпрограммы) и в каком колледже вы воспитывались.

  6. #6

    По умолчанию

    capzap, вот за это спасибо, это попробую.

    наверное надо сброс таймера делать перед вызовом подпрограммы
    таймер не глобальный, сброс происходит и до запуска таймера и после того как он отработает

  7. #7
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    в виде порки розгами...
    Таймер в подпрограмме локально, вызов подпрограммы по условию. Во время работы таймера в следующем цикле условие изменилось, вызова нет. Что будет с таймером?

  8. #8
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,712

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Таймер в подпрограмме локально, вызов подпрограммы по условию. Во время работы таймера в следующем цикле условие изменилось, вызова нет. Что будет с таймером?
    По хорошему программы должны работать в цикле Freewel, по условиям вызывать подпрограммы (Action), так работают надежные (вах четкие ), предсказуемые программы.
    А то понапишуть кода с подвыподвертом, а потом- о-о-о чей-то оно как-то не так работает...ну типа иногдаааа и не всегда постоянно чета не так
    Глобальный таймер это как пиво с утра- шаг в неизвестность.

    И еще... если программа, подпрограмма вызвана по условию и она выполняет свою функцию более одного прогона, то сбрасывать флаг условия своего запуска должна она-же по выполнении своей задачи и со сбросом всех таймеров и прочего.
    Последний раз редактировалось Sergey666; 20.01.2021 в 13:27.

  9. #9

    По умолчанию

    таймер в данном случае вызывается при каждом проходе программы, и подвывертов в коде нет. Есть факт того что очень редко при каких то не выясненных обстоятельствах таймер дает сбой и говорит сразу о том что отработал, очень похоже на ситуацию когда таймер не сброшен, но при всех возможных выходов из программы есть сброс таймера. Action, это что то из Codesys 3.0 или я что то не понимаю, ибо перешел по нескольким ссылкам в поиске гугла по фразе "Codesys Action", все ведут к статьям по Codesys 3.0.

  10. #10
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,712

    По умолчанию

    ПКМ на объекте "программы" и в контекстном меню - действие (Action).

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

Похожие темы

  1. ПР200 работа с таймерами, реле.
    от jekaelfid в разделе Эксплуатация
    Ответов: 4
    Последнее сообщение: 20.06.2020, 21:23
  2. Ответов: 8
    Последнее сообщение: 05.11.2018, 16:30
  3. помогите с таймерами задержки
    от DKFLBVBH в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 23.06.2016, 15:27
  4. Мистика с таймерами.
    от Frayl в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 12.09.2012, 10:03
  5. работа с таймерами в Sfc -
    от SCF в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 27.07.2010, 14:59

Ваши права

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