Просмотр полной версии : 3 Кнопки - 2 хода ПЛК
Задача. Есть три кнопки. Заведены на 2 входа In1 и In2. Если активен IN1 То значит нажата кнопка 1. Если In2 то кнопка 2. Если одновременно нажаты то кнопка 3.
Проблемы: Если зажать 1ю и 2ю кнопки(такое возможно в процессе работы) - активируется третья.
Написал такую вот функцию, решив что никто не сможет нажать две кнопки одновременно с разницей во времени в 1мс:
key:=0;
(*запускаем два таймера на передние фронты сигналов с кнопок*)
t1(in:=in1,pt:=t#1ms);
t2(in:=in2,pt:=t#1ms);
IF t1.Q AND t2.Q THEN(*только если оба фронта пришли с разницей не более 1мс считаем, что нажата 3я кнопка*)
key:=3;
ELSE
IF in1 THEN
key:=1;
ELSE
IF in2 THEN key:=2; END_IF;
END_IF;
END_IF;
t1(in:=FALSE);
t2(in:=FALSE);
В эмуляции работает не так как задумано. Это эмуляция работает так и на реальном устройстве будет нормально или у меня в корне неправильная реализация?
То есть я запускаю программу в режиме эмуляции, "зажигаю" два входа и у меня включается 1й и 3 например. Или 2й и 3й.
Цикл ПЛК бывает дольше, чем 1 мс, в том числе в симуляторе. Надёжно защититься программными методами здесь нельзя.
другого варианта кроме как программного нет. Что же это получается нерешаемая задача?
Расскажите больше про конструкцию кнопок и как они размещены. Я буду слушать и есть... в смысле на обед пошёл.
Егор имеет ввиду поставить внешнюю взаимоблокировку на 1 и 2-ю ? Не очень верю что нельзя воткнуть.
И не отработаны варианты 1+3, 2+3
Кнопки шнайдеровские. Размещены друг за дружкой. Первая подключена к in1, вторая к in2, третья к in1 и in2
Кнопки шнайдеровские. Размещены друг за дружкой. Первая подключена к in1, вторая к in2, третья к in1 и in2
Какая серия кнопок? Может есть возможность поставить кнопку 1НО+1НЗ? При нажатии первой кнопки он разрывает цепь второй и наоборот. Ну а третья - обычная кнопка
на самом деле я удивлен. я сам знаю возможность исполнения данного решения. И кнопки именно такие.Но я программист. Интересно знать почему проектировщик схемы сказал что так нельзя делать. Пойду мучать
а нет. кнопки обыкновенные и контактов нз/но не поставить
а нет. кнопки обыкновенные и контактов нз/но не поставить
Если попробовать реализовать это программно? (сам не пробовал)
проектировщик схемы сказал что так нельзя делать.
Нормальный ответ. Оно ему надо ?
Поменять кнопки или воткнуть реле.
чуть выше посмотрите пожалуйста)))
Нормальный ответ. Оно ему надо ?
Поменять кнопки или воткнуть реле.
ну два человека работает в команде - проектировщик и программист. Каждый заинтересован в результате, а не в простой отмазе - сам решай свои проблемы.
Если попробовать реализовать это программно? (сам не пробовал)
Это автор и хочет.
Чтоб проектировщика не разбудить.
Каждый заинтересован в результате,
Оно и видно. Особенно проектировщик
"И изволька мне добыть - то чаво не может быть"
Хотите надежности - внешнее решение. С остальным - гоняйте код.
вот я и обсуждаю этот вопрос на форуме - может быть кто-то сталкивался с подобным.
Отказались от обработки одновременных нажатий и повесили на реле каждую кнопку.
Задача. Есть три кнопки. Заведены на 2 входа In1 и In2. Если активен IN1 То значит нажата кнопка 1. Если In2 то кнопка 2. Если одновременно нажаты то кнопка 3.
Проблемы: Если зажать 1ю и 2ю кнопки(такое возможно в процессе работы) - активируется третья.
А если так? (на LD и FB)
1.Кнопки работают по одной и не зависимо друг от друга, если нажатие на вторую кнопку происходит, не ранее, например, чем через 100мс после нажатия первой.
Включили In1/In2 и пока удерживаем - кнопка 1/2 вкл.;
Выключили In1/In2 - кнопка 1/2 выключается.
2. Кнопки работают одновременно.
Если включили одновременно In1 и In2 (с задержкой, например, не более 100мс) пока удерживаем оба входа - кнопка 3 вкл;
Если выключили и In1 и In2 - кнопка 3 выключается;
"...Если зажать 1ю и 2ю кнопки(такое возможно в процессе работы) - активируется третья" не наблюдается.
"...Если зажать 1ю и 2ю кнопки(такое возможно в процессе работы) - активируется третья" не наблюдаетсяНу как это не наблюдается? Очень даже наблюдается. Сами же пишете:
Если включили одновременно In1 и In2 (с задержкой, например, не более 100мс) пока удерживаем оба входа - кнопка 3 вклПопасть в задержку 100 мс не сложно. А если сделать условие «совсем одновременно» (в один цикл ПЛК), то третья кнопка ненадёжной станет.
там стоит по словам проектировщика "два диода/стабилитрона" и обеспечивает разницу в сигналах в микросекунды. Вроде так понял)
Ну как это не наблюдается? Очень даже наблюдается.
В том смысле, что если нажать любую кнопку и удерживать ее и перед нажатием второй подождать, то вторая кнопка вкл. и выкл. свою виртуальную кнопку, а не третью.Как-то так хотел сказать:)
Блин.....задержки, время цикла, контакты, сорт кнопок...
все три кнопки обычные, с ОДНОЙ группой контактов, третья развязана с остальными по входам двумя диодами.
два фронта вверх в одном цикле, значит нажата третья кнопка, два фронта вниз--отпустили кнопку. остальное, комбинация первых двух.
Блин.....задержки, время цикла, контакты, сорт кнопок...
все три кнопки обычные, с ОДНОЙ группой контактов, третья развязана с остальными по входам двумя диодами.
два фронта вверх в одном цикле, значит нажата третья кнопка, два фронта вниз--отпустили кнопку. остальное, комбинация первых двух.
Как-то так.
Не так. я имел в виду фронт сигнала, т.е переход из состояния 0 в 1, в прошлом цикле было 0, в этом 1, значит есть фронт, фронт вниз, или "задний" было 1 стало 0.
благодаря диодам, оба сигнала придут одновременно т.е. нажатие третьей кнопки отличите всегда, если же какая-то из первых уже нажата, третью кнопку в этот момент не увидеть, но этой ситуации небыло в вопросе.
если есть два свободных транзисторных выхода, сделайте матрицу 2Х2, получите 4 кнопки
Не так. я имел в виду фронт сигнала, т.е переход из состояния 0 в 1, в прошлом цикле было 0, в этом 1, значит есть фронт, фронт вниз, или "задний" было 1 стало 0.
От чего же не так? Все так. И работает, можно проверить и в эмуляторе, выполняя программу по одному циклу. Нужно учитывать логику работы ПЛК - в начале цикла состояние физических входов запоминается и эти состояния используются для текущего цикла. Т.е. изменение состояния входов до начала следующего цикла ПЛК просто не заметит.
В предыдущем примере была некоторая паранойя с использованием RS триггера. Можно и проще.LD как раз для таких задач, все наглядно и понятно (с учетом принципа работы ПЛК).
Фиксация одновременного изменения in1 и in2 ("...переход из состояния 0 в 1, в прошлом цикле было 0, в этом 1, значит есть фронт, фронт вниз, или "задний" было 1 стало 0") выполняется автоматически в первой цепи примера безо всяких дополнительных ухищрений. Результат - состояние кнопки 3 (kn3).
Вторая и третья цепь использует состояние kn3, полученное в первой цепи и состояние входов in1 или in2, которое было на начало цикла. Если уже нажата кнопка 3 (на начало цикла активны in1 и in2), то кнопки 1 и 2 не включаются. Или, если не нажата кнопка 3 (на начало цикла не активны один из входов in1 или in2), то кнопки 1 или 2 включаются.
З.Ы. Инверсные контакты kn1 и kn2 в первой цепи блокируют включение kn3, если нажать вторую кнопку после включения первой и на оборот.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot