Страница 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

    По умолчанию

    я просто привел пример того как инициализируются и запускаются таймеры, упрощу код, но сути это не поменяет

    Код:
    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 := t#60s, Q=>KnlElasp);
      IF (NOT Motor) Motor:=TRUE; (*вот тут запустили агрегат*)
      IF(KnlElasp) THEN
            Motor:=FALSE; (* а тут по истечении работы таймера его остановили*)
    	TON_KnL(IN := FALSE);
    	inInd :=TRUE;
      END_IF;
    END_IF;
    Последний раз редактировалось Seyran; 20.01.2021 в 08:22.

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

    По умолчанию

    Цитата Сообщение от Seyran Посмотреть сообщение
    я просто привел пример того как инициализируются и запускаются таймеры, упрощу код, но сути это не поменяет

    Код:
    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 := t#60s, Q=>KnlElasp);
      IF (NOT Motor) Motor:=TRUE; (*вот тут запустили агрегат*)
      IF(KnlElasp) THEN
            Motor:=FALSE; (* а тут по истечении работы таймера его остановили*)
        TON_KnL(IN := FALSE);
        inInd :=TRUE;
      END_IF;
    END_IF;
    Motor почти всегда будет True, за исключением цикла в котором таймер отработает, а практически всегда будет включен... нафига такое писать? Как еще это dododo вызывается...это случайно не какая-нибудь вытяжка в DoDo Pizza?

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

    По умолчанию

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

  5. #5

    По умолчанию

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

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

    По умолчанию

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

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

    По умолчанию

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

  8. #8

    По умолчанию

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

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

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

    По умолчанию

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

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

    По умолчанию

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

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

Страница 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

Ваши права

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