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

Тема: Логика работы ФБ TON

  1. #1

    По умолчанию Логика работы ФБ TON

    Прощу помощи в решении следующей задачи.
    Возможно возникновение трёх событий bEvent0, bEvent1, bEvent2 и bEvent3 (могут возникнуть как одновременно, так и нет), которые нужно записать в журнал событий панели оператора (панель НЕ Овен). Т.к. записать одновременно эти события нельзя, по фронту возникновения события присваиваю соответствующей переменной bEvent0W, bEvent1W, bEvent2W или bEvent3W значение "TRUE". Как только появилось событие для записи, то устанавливаю флаг записи _Samp_His_Buf_.0 на 10 секунд в "единицу" и записываю в журнал событий соответствующее значение переменной _byEventToLog_, в это время включаю ФБ TON TONSampHisBuf(IN:= _Samp_His_Buf_.0, PT:=t#10s , Q=> , ET=> TimeTONSampHisBuf) и по условию TONSampHisBuf.Q=TRUE сбрасываю флаг записи _Samp_His_Buf_.0. Но почему-то программа успевает зайти в условие сброса не один раз, а столько, сколько одновременно событий возникло (что и показывает счётчик byTONCount), из-за этого в журнал событий записывается только одно из событий. Если я правильно понял логику работы ФБ TON, то при сбросе входа IN в 0, выход Q тоже сбрасывается в 0.

    Код:
    RTRIGEvent0(CLK:= bEvent0, Q=>);
    IF RTRIGEvent0.Q THEN
    bEvent0W:= TRUE;
    END_IF;
    RTRIGEvent1(CLK:= bEvent1, Q=>);
    IF RTRIGEvent1.Q THEN
    bEvent1W:= TRUE;
    END_IF;
    RTRIGEvent2(CLK:= bEvent2, Q=>);
    IF RTRIGEvent2.Q THEN
    bEvent2W:= TRUE;
    END_IF;
    RTRIGEvent3(CLK:= bEvent3, Q=>);
    IF RTRIGEvent3.Q THEN
    bEvent3W:= TRUE;
    END_IF;
    
    IF bEvent0W  AND NOT _Samp_His_Buf_.0 THEN
    _byEventToLog_:=0;
    _Samp_His_Buf_.0:= TRUE;
    bEvent0W:= FALSE;
    END_IF;
    
    IF bEvent1W AND NOT _Samp_His_Buf_.0 THEN
    _byEventToLog_:=1;
    _Samp_His_Buf_.0:= TRUE;
    bEvent1W:= FALSE;
    END_IF;
    
    IF bEvent2W AND NOT _Samp_His_Buf_.0 THEN
    _byEventToLog_:=2;
    _Samp_His_Buf_.0:= TRUE;
    bEvent2W:= FALSE;
    END_IF;
    
    IF bEvent3W AND NOT _Samp_His_Buf_.0 THEN
    _byEventToLog_:=3;
    _Samp_His_Buf_.0:= TRUE;
    bEvent3W:= FALSE;
    END_IF;
    
    TONSampHisBuf(IN:= _Samp_His_Buf_.0, PT:=t#10s , Q=> , ET=> TimeTONSampHisBuf);
    IF TONSampHisBuf.Q THEN
    byTONCount:=byTONCount+1;
    _Samp_His_Buf_.0:=FALSE;
    END_IF;

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

    По умолчанию

    переместите TONSampHisBuf(IN:= _Samp_His_Buf_.0, PT:=t#10s); в последнюю строчку кода
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  3. #3

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    переместите TONSampHisBuf(IN:= _Samp_His_Buf_.0, PT:=t#10s); в последнюю строчку кода
    Таймер стал отсчитывать по 10 секунд столько раз, сколько событий, но _Samp_His_Buf_.0 не сбрасывается в 0.

    Проверил ещё раз более внимательно - _Samp_His_Buf_.0 сбрасывается в 0, просто в состоянии FALSE находится очень малое время, и панель оператора не успевает обработать. В итоге добавил блок задержки _Samp_His_Buf_.0 в состоянии FALSE 1 секунду.

    capzap, большое спасибо за помощь!
    Последний раз редактировалось Евгений Владимирович; 21.06.2017 в 11:39.

Похожие темы

  1. СП-270 и ЛОГИКА
    от приборист в разделе Панели оператора (HMI)
    Ответов: 14
    Последнее сообщение: 05.10.2018, 15:47
  2. ПЛК + Логика СПГ761
    от приборист в разделе ПЛК1хх
    Ответов: 23
    Последнее сообщение: 27.04.2016, 09:58
  3. Екон + Логика 742
    от pasha8931 в разделе Эксплуатация
    Ответов: 0
    Последнее сообщение: 29.10.2014, 16:11
  4. САУ-МП алгоритм 20: логика работы
    от Roman62rus в разделе Эксплуатация
    Ответов: 0
    Последнее сообщение: 09.08.2013, 11:58
  5. Нечеткая логика в CoDeSys
    от Fallensky в разделе ПЛК1хх
    Ответов: 38
    Последнее сообщение: 09.07.2011, 14:01

Ваши права

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