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

Тема: разные вопросы новичка

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    9,504

    По умолчанию

    Цитата Сообщение от Sel Посмотреть сообщение
    Спасибо за пример. Но я бы хотел убрать и TP. В Вашем примере если переключить режим Лампы_1 и отпустить обе клавиши и управиться меньше чем за 1с, то Лампа_2 погаснет (если была включена) и наоборот. А если уменьшить значение ТП, то будет мало времени на "подумать" с нажатым выключателем. Когда такое возможно - я точно знаю, что следующий режим лампы нужный и я нажму сразу 2 клавиши и отпущу их, это займет менее секунды, в итоге вторая лампа или включится или выключится. Согласен, это редко бывает, когда нажатие меньше сек, но бывает.

    Кстати, задумка самая обычная - чтобы не было лишних срабатываний или не срабатываний, а если задумался, то выключатель выполнил свою функцию. У меня больше года свет работает на ПР и эти тонкости оказались актуальны. Сейчас подключена 1 лампа с 3-мя режимами и 1 обычная лампа, управляются с 2-х выключателей . При этом описанные выше нюансы не возникают. Но я не помню какими условиями я этого добился. Помню только, что условий было мало и делал на DTRIG. Единственная тонкость работы нынешнего переключения - лампы вкл\выкл по заднему фронту, а переключение режимов по переднему. Короче, не помню, а восстановить не могу.

    Сейчас ковырялся, надумал следующий алгоритм. Если нажимались 2 клавиши одновременно (например l2 зажата, l1 выбираем режим), создаем переменную и сохраняем в ней логическую 1 (в моем примере DTRIG2). При срабатывании заднего фронта l2 (отпускаем клавишу) проверяем условие DTRIG2 равен 1, статус Лампа_2 не меняется и обнуляется DTRIG2. Если же DTRIG2 равен 0, то меняем статус Лампа_2 на противоположное.
    В принципе, для Лампа_2 я этой логикой убрал лишние срабатывания и предыдущие замечания. Но вот если удержать l1 и быстро понажимать на l2, то Лампа_2 меняет свой статус. На железе, чтобы получить этот глюк, надо нажимать клавишу со скоростью 1 раз в цикл. Пока не знаю реально это или нет, так как не знаю времени цикла.
    Чтобы вообще убрать лишнее срабатывание, надо разорвать связь между FTRIG1 и DTRIG1, но как это сделать, я не знаю. (есть идея убрать все в переменные и работать с переменными, но на практике пока не проверял, да и в прошлый раз, когда писал программу, столкнулся с какими-то сложностями, когда лоджик оказался записывать переменную)

    Пример для Лампы с 3-мя режимами и для 1 обычной. Но, в дальнейшем прейду на 2 многорежимные лампы. Отлаживать проект пока проще на одной многорежимной лампе. Кстати, так как для многорежимной лампы пока не ввел алгоритм разделения выключателя и триггера, то можно посмотреть как она себя ведет, если зажать l1 и нажимать на l2 (в реальной жизни пользователь выбрал нужный режим Лампа_1 и отпустил сначала l2, а потом l1).
    Пример 3:
    3.jpg

    P.S. Нашел, почему при быстром нажатии меняется статус лампы. У DTRIG приоритет по сбросу. Если команда на сброс приходит одновременно с одновременным нажатием 2-х клавиш, то программа не запоминает, что клавиши были нажаты. Надо еще условие добавлять перед DTRIG2. Ндя, куда проще убрать связь между кнопкой и триггером, но просто в теории, а на практике...
    Можно конечно и все таймеры(ТР) убрать, но возможно это не принесёт счастья, если сейчас допустим Вы случайно нажали какую-то кнопку, можно подержать её не менее секунды и ничего не случится при её отпускании, то тогда это станет невозможным! Вы же рассматриваете какие-то случайные нажатия?! Но попытка - не пытка! У Вас как будто не лампочка, а ядерная боеголовка! Применяйте мажоритарную логику, типа если в течении 5 минут более 100 раз повторится какая-то команда, то будет выполнена, тогда наверняка ничего лишнего не включится, не переключится, одна трудность: Вам минимум 100 раз придётся команду выполнять и укладываться по времени, Вы так хотите?
    Последний раз редактировалось Сергей0308; 05.11.2018 в 22:21.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

Похожие темы

  1. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 15.04.2025, 16:38
  2. Вопросы новичка!!!
    от sau в разделе ПЛК1хх
    Ответов: 42
    Последнее сообщение: 02.05.2022, 19:57
  3. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 14:39
  4. Вопросы полного новичка
    от Korion в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.02.2010, 10:08
  5. Вопросы новичка по ПЛК
    от Ollegator в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.07.2009, 09:29

Ваши права

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