Показано с 1 по 10 из 126

Тема: Логика: Распознать отдельно короткое и отдельно длинное нажатия (CodeSys v3)

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

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

    По умолчанию

    Так... а как в третьем CodeSys задержку на такт сделать? У меня ж не OWL сейчас.
    F_TRIG, что ли, применить?
    UPD: Не, не заработало.

    melky Ага, счётчик. И тоже дико туплю: так я ж по нему могу короткие нажатия поймать... а длинные ловлю по TON.
    Но они всё равно между собой дерутся и не блокируют друг друга.
    UPD: А, не! Не время счётчиком, а из модуля IO (Mx110) беру счётчик срабатываний входа и по нему смотрю, было ли одинарное нажатие или нет, вот так:
    Код:
    //Считаем разницу показаний счётчика импульсов на входе модуля IO. Она всегда считается
    iPulseDiff := ABS(InPulses - iPrevPulses);	//Считаем по модулю, так как счётчик может переполниться
    
    //Смотрим, что нам дали по разнице показаний и решаем, какие нажатия надо выдавать на выход
    //Последовательность проверки очень важна для того, чтобы не путать двойные и одинарные нажатия
    IF (iPulseDiff > 1) THEN	//Больше одного - значит два нажатия было
    	bSingle := FALSE;
    	bDouble := TRUE;
    ELSIF (iPulseDiff = 1) AND (NOT tmDoubleDetect.Q) THEN	//Ровно одно нажатие
    	bSingle := TRUE;
    	bDouble := FALSE;
    ELSE	//Не было нажатий
    	bSingle := FALSE;
    	bDouble := FALSE;
    END_IF
    
    //Если мы нашли одинарный щелчок, то стартуем таймер задержки, чтобы поймать двойной
    //Ловля двойного щелчка означает то, что на некоторое время (пока работает таймер) мы перестаём
    //обновлять дельту числа нажатий, давая возможность блоку подсчитать другие нажатия
    tmDoubleDetect(IN:= bSingle, PT:= VarsRetain.Sys_BtnDBClickDly);
    Это я просто ловлю щелчки с модуля IO. Ща с этим вопросов нет - у меня затуп в том, как их взаимоисключить.

    Я ещё раз прошу не смеяться: у меня за три дня поиска решения мозг замылился, и я в полном ступоре даже от очевидных вещей.
    Последний раз редактировалось Cs-Cs; 12.12.2020 в 00:09.

  2. #2
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,125

    По умолчанию

    [QUOTE=Cs-Cs;345164]Так... а как в третьем CodeSys задержку на такт сделать? У меня ж не OWL сейчас.
    F_TRIG, что ли, применить?
    UPD: Не, не заработало.

    [/CODE]

    Элементарно -
    Изображения Изображения
    электронщик до мозга костей и не только

Похожие темы

  1. отключение звука нажатия СП307
    от vendor в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 25.01.2018, 10:12
  2. Ответов: 5
    Последнее сообщение: 24.07.2017, 12:08
  3. Ответов: 0
    Последнее сообщение: 31.05.2017, 19:40
  4. Подтверждение нажатия
    от Carter в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 14.11.2016, 17:32
  5. Нечеткая логика в CoDeSys
    от Fallensky в разделе ПЛК1хх
    Ответов: 38
    Последнее сообщение: 09.07.2011, 14:01

Ваши права

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