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

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

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

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

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Вам всё равно надо как-то время измерять и Вам разумно предложили измерять время таймером, но Вы понятное дело, лёгких путей не ищете и таймеры Вам неприемлемы, тогда задача становится неразрешимой! Время можно измерять и циклами программы, но это всё равно таймер получится, только сложней станет! Хорошо если вспомните, как Вы год назад время считали без таймеров, пишите, вместе посмеёмся!
    И Вы наверно не смотрели мой последний вариант программы для ламп, там не надо секунду(как в первых вариантах) ждать для переключения режимов работы и включения-выключения ламп, можно "щёлкать" без перекуров, ТР будет перезапускаться, что ещё надо?
    Пример посмотрел, спасибо. Я понимаю, что связка, с использованием задержки выключения ТР спасает от ложных срабатываний, срезая передний фронт, но это костыль, который будет приводить к несрабатываниям (нажал на кнопку и задумался). А хотелось бы уйти от этого ограничения.

    Понятно, что таймеры нужны будут, особенно там, где событие по удержанию клавиши. Но меня убивает ограничение, которые без танцев с бубнами не обойти. Те же таймеры удержания для переключения режимов это вынужденная мера из-за того, что я не понимаю как переключить контуры управления лампами. В коде все просто с точки зрения условий, а вот лоджик очень сильно ограничивает (если бы можно было вводить условия кодом, все было бы проще).

    Для понимания чего хочу. Вариант временный. Удержание 2-х нажатых клавиш более 5-ти секунд выключает свет во всей квартире (здесь точно нужен таймер). l1 влк\вык лампу с 7-ю схемами включения Лампа_1, l2 управляет одной лампой Лампа_2. Если зажимаем l2, то нажатием l1 меняем режимы включения Лампа_1. (это реализовано). Выключение всего света в квартире производится путем сброса макроса Т-риггера в 0 (для Вашего примера везде устанавливается Q=0)
    Что не реализовано:
    1. если зажималась l2 и переключались режимы Лампа_1, то статус Лампа_2 не меняется (на данный момент Лампа_2 реагирует на любое нажатие)
    2. если, после изменения режима Лампа_1 сначала отпустить l2, а потом l1, то Лампа_1 выключается.
    3. При отпускании обеих клавиш после сброса, лампы должны оставаться выключенными. (в данном примере, если после сброса первой отпустить l2, Т-триггер поменяет статус, что приведет к выключению лампы. В случае сброса, если отпустить клавишу после обнуления переменных, триггер будет отрабатывать в обычном режиме)
    4. Все переключения ламп должны происходить только если нет сброса (не уверен на счет заднего фронта выключателя, так как экспериментируя с фронтами, некоторые замечания уходят).


    В этом примере хорошо, если бы прямая линия от l2 до Т-триггер2 разрывалась, если при удержании l2 была нажата l1 и восстанавливалась только при отпускании l2. Такое своеобразное программное реле. Даже не знаю как проще объяснить, чтобы Вы меня поняли.
    пример 1:
    1.jpg

    Теперь вариант с двумя многорежимными лампами.
    Я убрал таймеры, которые заставляют лишнее время стоять у выключателя, в итоге переключая режимы на Лампа_1 (удерживаем l2 и щелкаем l1), Лампа_1 переключает режимы, Лампа_2 мигает и переключает режимы.

    Пример 2:
    2.jpg

    Для решения моего вопроса хорошо помогла бы функция оценки статуса выключателя (нажат\отпущен), в этом случае, можно сделать условие:
    если были нажаты клавиши l1 и l2, то Лампа_2 игнорирует выключатель; иначе слушается
    Вложения Вложения
    Последний раз редактировалось Sel; 05.11.2018 в 14:15.

  2. #2
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,286

    По умолчанию

    Цитата Сообщение от Sel Посмотреть сообщение
    Пример посмотрел, спасибо. Я понимаю, что связка, с использованием задержки выключения ТР спасает от ложных срабатываний, срезая передний фронт, но это костыль, который будет приводить к несрабатываниям (нажал на кнопку и задумался). А хотелось бы уйти от этого ограничения.

    Понятно, что таймеры нужны будут, особенно там, где событие по удержанию клавиши. Но меня убивает ограничение, которые без танцев с бубнами не обойти. Те же таймеры удержания для переключения режимов это вынужденная мера из-за того, что я не понимаю как переключить контуры управления лампами. В коде все просто с точки зрения условий, а вот лоджик очень сильно ограничивает (если бы можно было вводить условия кодом, все было бы проще).

    Для понимания чего хочу. Вариант временный. Удержание 2-х нажатых клавиш более 5-ти секунд выключает свет во всей квартире (здесь точно нужен таймер). l1 влк\вык лампу с 7-ю схемами включения Лампа_1, l2 управляет одной лампой Лампа_2. Если зажимаем l2, то нажатием l1 меняем режимы включения Лампа_1. (это реализовано). Выключение всего света в квартире производится путем сброса макроса Т-риггера в 0 (для Вашего примера везде устанавливается Q=0)
    Что не реализовано:
    1. если зажималась l2 и переключались режимы Лампа_1, то статус Лампа_2 не меняется (на данный момент Лампа_2 реагирует на любое нажатие)
    2. если, после изменения режима Лампа_1 сначала отпустить l2, а потом l1, то Лампа_1 выключается.
    3. При отпускании обеих клавиш после сброса, лампы должны оставаться выключенными. (в данном примере, если после сброса первой отпустить l2, Т-триггер поменяет статус, что приведет к выключению лампы. В случае сброса, если отпустить клавишу после обнуления переменных, триггер будет отрабатывать в обычном режиме)
    4. Все переключения ламп должны происходить только если нет сброса (не уверен на счет заднего фронта выключателя, так как экспериментируя с фронтами, некоторые замечания уходят).


    В этом примере хорошо, если бы прямая линия от l2 до Т-триггер2 разрывалась, если при удержании l2 была нажата l1 и восстанавливалась только при отпускании l2. Такое своеобразное программное реле. Даже не знаю как проще объяснить, чтобы Вы меня поняли.
    пример 1:
    1.jpg

    Теперь вариант с двумя многорежимными лампами.
    Я убрал таймеры, которые заставляют лишнее время стоять у выключателя, в итоге переключая режимы на Лампа_1 (удерживаем l2 и щелкаем l1), Лампа_1 переключает режимы, Лампа_2 мигает и переключает режимы.

    Пример 2:
    2.jpg

    Для решения моего вопроса хорошо помогла бы функция оценки статуса выключателя (нажат\отпущен), в этом случае, можно сделать условие:
    если были нажаты клавиши l1 и l2, то Лампа_2 игнорирует выключатель; иначе слушается
    У меня создаётся впечатление, что Вы не смотрели мои варианты включения-выключения ламп, там как раз как Вы хотите при переключении режима работы кнопок с первого(включение-выключение) на второй(переключение по кругу выходов одного светильника 1-8), как раз первый режим блокируется на время и если кнопка не нажимается некоторое время(10 с) опять переключается на первый режим работы! Вам ничего и думать-понимать не нужно, можно сделать аналогично! И если Вы сторонник текстовых языков, то только из-за принципа должны были взять что-то вроде СПК, дюймов на 10 и не заморачиваться, там на экране места хватит для двух кнопок на каждый светильник и главное реализовали бы свои способности, может завидовать все вам стали!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  3. #3

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    У меня создаётся впечатление, что Вы не смотрели мои варианты включения-выключения ламп, там как раз как Вы хотите при переключении режима работы кнопок с первого(включение-выключение) на второй(переключение по кругу выходов одного светильника 1-8), как раз первый режим блокируется на время и если кнопка не нажимается некоторое время(10 с) опять переключается на первый режим работы! Вам ничего и думать-понимать не нужно, можно сделать аналогично! И если Вы сторонник текстовых языков, то только из-за принципа должны были взять что-то вроде СПК, дюймов на 10 и не заморачиваться, там на экране места хватит для двух кнопок на каждый светильник и главное реализовали бы свои способности, может завидовать все вам стали!
    Я посмотрел их, даже разобрался что и как работает. Но убрать задержки я пока не могу, не понимаю как (не хочу ждать, перед возможностью переключать лампы)
    Кстати, в пятом примере ложные срабатывания есть (т.е. одна из ламп выключается). А там, где есть ТР, при сбросе на 0, происходит подвисание (вполне возможно что на приборе такого не будет, но пока с ПР не могу эксперементировать, могу остаться без света).
    Ладно, буду думать как обойти ограничения и убрать задержки и лишние срабатывания.
    Спасибо за помощь.

  4. #4
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,286

    По умолчанию

    Цитата Сообщение от Sel Посмотреть сообщение
    Я посмотрел их, даже разобрался что и как работает. Но убрать задержки я пока не могу, не понимаю как (не хочу ждать, перед возможностью переключать лампы)
    Кстати, в пятом примере ложные срабатывания есть (т.е. одна из ламп выключается). А там, где есть ТР, при сбросе на 0, происходит подвисание (вполне возможно что на приборе такого не будет, но пока с ПР не могу эксперементировать, могу остаться без света).
    Ладно, буду думать как обойти ограничения и убрать задержки и лишние срабатывания.
    Спасибо за помощь.
    Надеюсь Вы прикупили пару ПР для экспериментов и на железе экспериментируете, я уже писал, что в симуляторе и у меня случалась не правильная работа, многое зависит от настроек, так что повторюсь на всякий случай: я не уверен, что Вы в симуляторе делаете идеальные настройки!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  5. #5

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    повторюсь на всякий случай: я не уверен, что Вы в симуляторе делаете идеальные настройки!
    Спасибо. Но единственное, что может зависеть от железа, это время сброса ТР (возможно на ПР сложнее будет попасть в момент сброса из-за времени отклика). Все остальное, что написал это проблема логики (алгоритма), т.е. данная логика приведет на любом устройстве и на любом языке к данным срабатываниям. Это и есть ограничения логики лоджика, которая очень не привычна. Ну и не привычно, что в лоджике мало ресурсов (мало функциональных возможностей). Поэтому и приходится городить костыли в виде блока, который Вы предложили с использованием ТР.
    Если смогу без костылей реализовать задуманное, выложу, может кому пригодится. Хотя сейчас понимаю, что пока проще использовать костыли (хотя они приводят к ограничениям меня как пользователя светом в квартире). Заодно мозги разомну, а то давно не решал сложных задачек

  6. #6
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,286

    По умолчанию

    Цитата Сообщение от Sel Посмотреть сообщение
    Я посмотрел их, даже разобрался что и как работает. Но убрать задержки я пока не могу, не понимаю как (не хочу ждать, перед возможностью переключать лампы)
    Кстати, в пятом примере ложные срабатывания есть (т.е. одна из ламп выключается). А там, где есть ТР, при сбросе на 0, происходит подвисание (вполне возможно что на приборе такого не будет, но пока с ПР не могу эксперементировать, могу остаться без света).
    Ладно, буду думать как обойти ограничения и убрать задержки и лишние срабатывания.
    Спасибо за помощь.
    Это Вы так придумали алгоритм работы, что надо ждать 5 секунд, нажав одну кнопку, что бы переключился режим работы другой, для всех остальных людей, кроме Вас, такой проблемы не существует в принципе, можно сразу без задержки переключить режим работы другой кнопки и Вы ещё пытаетесь несовершенство ваших задумок преподнести как какой-то косяк ПР или ОЛ, по крайней мере это неразумно, а по мне просто дикость дикая, мягко выражаясь!

    Вот так попробуйте, я убрал задержки в 5 с, что Вы придумали(зачем они мне не понятно):


    2 лампы по 8 режимов_6.PNG

    Вот так с сохранением(запоминанием) режима работы светильника что был на момент выключения и его восстановлением при включении для обеих светильников и без всяких задержек всё переключается и выключается-включается, я так понимаю, Вы так хотели?


    2 лампы по 8 режимов_7.PNG
    Вложения Вложения
    Последний раз редактировалось Сергей0308; 05.11.2018 в 21:39.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  7. #7

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Это Вы так придумали алгоритм работы, что надо ждать 5 секунд, нажав одну кнопку, что бы переключился режим работы другой, для всех остальных людей, кроме Вас, такой проблемы не существует в принципе, можно сразу без задержки переключить режим работы другой кнопки и Вы ещё пытаетесь несовершенство ваших задумок преподнести как какой-то косяк ПР или ОЛ, по крайней мере это неразумно, а по мне просто дикость дикая, мягко выражаясь!

    2 лампы по 8 режимов_6.PNG
    Спасибо за пример. Но я бы хотел убрать и 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. Ндя, куда проще убрать связь между кнопкой и триггером, но просто в теории, а на практике...
    Вложения Вложения
    Последний раз редактировалось Sel; 05.11.2018 в 22:00.

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

    По умолчанию

    Цитата Сообщение от 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.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  9. #9
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,525

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Можно конечно и все таймеры(ТР) убрать, но возможно это не принесёт счастья, если сейчас допустим Вы случайно нажали какую-то кнопку, можно подержать её не менее секунды и ничего не случится при её отпускании, то тогда это станет невозможным! Вы же рассматриваете какие-то случайные нажатия?! Но попытка - не пытка! У Вас как будто не лампочка, а ядерная боеголовка! Применяйте мажоритарную логику, типа если в течении 5 минут более 100 раз повторится какая-то команда, то будет выполнена, тогда наверняка ничего лишнего не включится, не переключится, одна трудность: Вам минимум 100 раз придётся команду выполнять и укладываться по времени, Вы так хотите?
    Сергей предложи ему использовать XOR на входах 1 и 2, чтобы при одновременном нажатии сигнал от них не проходил.

  10. #10

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Вы так хотите?
    Все гораздо проще, я хочу удобно. А значит должно сработать с первого раза и правильно (даже если пользователь я сделал что-то не так).
    А на счет "случайно нажали какую-то кнопку, можно подержать её не менее секунды" мне ближе заложить двойное быстрое нажатие, чтобы восстановить режим. Не дружу я со всем удержаниями кнопок, поэтому стараюсь от них уйти.

Похожие темы

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

Ваши права

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