Наверное потому ,что еще новичек ;) Лет через 5 такой же вопрос будет задавать новым пользователям...
Вид для печати
Спасибо большое, то, что надо.
Хотелось бы разобраться с данным алгоритмом.
Ответьте, пожалуйста на пару вопросов новичка:
1. Почему периодически не срабатывает включение/выключение? Если подряд нажимать кнопку (любую), то периодически не изменяется значение на выходе.(не срабатывает при быстром нажатии)
2. В макросе СТМ что означает цифра 31? Смотрел предыдущие примеры, там Вы так же устанавливает 31.
3. Каким образом устанавливается величина цикла до сброса? В данном случае СТМ сбрасывается на цифре 7, где указать, что сброс будет, допустим после 4?
Я пока не въехал как с квадратиками работать, поэтому любое что-то более-менее замороченное дается не просто, надож понять как обойти ограничения привычной логики ))
Спасибо за идею. Сейчас работает лампа в 3-х режимах и управляется с 2-х кнопок, как показала практика, довольно удобно. Единственная задержка 1с, перед переключением режимов (хотя, я бы и от нее отказался, но в квадратиках пока не понял как это реализовать). Из плюсов отсутствия задержек возможность сразу включать\выключать лампу или сразу менять режимы второй лампы.
1. : если Вы в железе проверяете(в симуляторе много зависит от настроек симулятора и я пока это не хочу даже обсуждать), то я предлагаю уменьшить время импульса до 0,5 секунд, как у меня в последнем проекте про лампы, если не устроит, то до 0,3-0,2 секунд:
Вложение 39615
Дело в том, что функциональный блок "Импульс включения заданной длительности" не может перезапустится до истечении этого времени!
Или как-то так сделать:
Вложение 39617
2-3. : в свойствах макроса таятся настройки:
Вложение 39616
"0" и "31" - значения назначенные в макросе, а не свойствах макроса и значения не имеют!
Я пока тестировал только на компе, может на устройстве будет по другому.
Этот баг выскакивает когда ТР досчитывает до конца и сбрасывается на 0, если нажать кнопку в этот момент, то она не сработает.
Спасибо за разъяснения.
Как параметры макроса связаны с самим макросом? В лоджике не увидел как макрос учитывает эти парметры и где идет обнуление.
Не нашел в помощи про параметры макроса. Где почитать как их задавать и как они будут влиять на выполнение программы?
Надо понимать только одно: что значения назначенные в свойствах макроса имеют преимущество над значением назначенным в макросе, всё!
Это кольцевой инкрементный счётчик, назначаются минимальное и максимальные значения, достигнув максимального значения с приходом следующего счётного импульса счёт начнётся заново с минимального значения, при сбросе счётчик примет минимальное значение, а не "0", всё!
Логично. С этим счетчиком я все понял и как параметры задаются и как он отрабатывает.
Мне интересно как делать такие макросы (сдается они не в лоджике сделаны). Сейчас я столкнулся с проблемой, если я решу изменить первоначальные условия, то я не смогу переделать эти макросы под новую задачу. Первоначальная задача это пример, разобрав который, я смогу реализовать часть задуманного. В реальности у меня 15 ламп и порядка 20 схем их работы и этим всем надо управлять с 2х выключателей. Но поправить макрос EXTRACT8 под реальную задачу я не могу, ведь параметры рассчитаны на 8 ламп. Даже добавив дополнительный выход, надо добавить и его описание в параметрах, иначе на него сигнал не приходит. А я не знаю как это сделать.
Я за то, чтобы разобраться в работе алгоритма и самому его повторить. Отсюда и пытаюсь понять как делать макросы с параметрами. Кстати, очень полезная функция, помогает обойти некоторые ограничения лоджика.
Если Вам не сложно, объясните, пожалуйста, как работать (создавать, редактировать) подобные макросы с параметрами. Если это секрет, спасибо за помощь, Ваши решения помогли мне кое в чем разобраться.
Сначала по макросу извлечения(чтения бита): Вам ничего не надо там переделывать, в свойствах макроса, как и для счётчика, есть настройки, можно задавать значения извлекаемого(читаемого) бита в диапазоне 0-31, дальше всё будет циклически повторятся с кратностью 32, короче поставьте сколько Вам нужно экземпляров макроса 1-4 и настройками "рулите", в принципе у меня есть и на 16, 32 выхода, но никакой разницы нет, подобно я делал в третьей версии проекта ламп(где все сигналы в одну переменную собирал), посмотрите!
Теперь о создании: при создании, редактировании макроса в свойствах константы есть пункт использовать в макросе - ставите "Да":
Вложение 39620
Также можете переименовать(подписать), как вам угодно, строчка выше преведущей, всё!
Доброй ночи.
Квадратики даются с трудом.
Подскажите, как осуществить алгоритм: Кнопка без фиксации. При обычной работе с кнопкой, выход меняет статус. При удержании кнопки в нажатом состоянии более 3-х секунд, при отпускании кнопки статус выхода не именяется.
Суть: С кнопки включаем/выключаем лампу. Нажали кнопку, включается лампа, отпустили кнопку. Потом нажимаем кнопку на удержание 3 сек. И нужно, чтобы отпустив кнопку лампа не погасла.
Вроде все просто, но прога меняет статус выхода как ТОН меняет свой.
Вложение 39623
Посмотрел ранее, мне отвечали на этот вопрос, предложив добавить ТР. Но я хочу полностью уйти от таймеров в последствии. Есть ли другие способы не считывать изменение статуса кнопки, при длительном нажатии.
(год назад я решил этот вопрос без ТР. Но не помню как, а исходники проекта умерли вместе с винтом)
Можно не мудрить, есть же Д-триггер, делайте как хочется, я до конца не понял, как Вы хотите, лучше диаграмму состояний, для ясности!
Вложение 39624
Насколько смог Вас понять, у меня так и было, поэтому мне непонятно, что Вы хотите!
Вот мой последний вариант, в преведущих аналогично и уставка времени в мс, при превышении времени нажатия выше этого времени импульс не проходит:
Вложение 39625