OK! Я тогда Ваш доработаю:
Owen.jpg
OK! Я тогда Ваш доработаю:
Owen.jpg
EFrol, спасибо! Немного прояснилось со счетчиками. Dimency на стр. 379 также рассказал, как на ST написать счетчик и сделать его энергонезависимым с помощью переменной.
fig_6.PNG
Запутался с энергонезависимыми переменными.
Вот, например, в переменнной В висит логическая 1, с А приходят импульсы (от кнопки) и в переменную С записывается то 0, то 1. Я делаю С энергонезависимой (и запись в конце цикла - ДА). Тогда, если в С была 1, то после откл-вкл питания ПР в С снова окажется 1? Получается, что на выходе импульсного реле ON_OFF также будет 1? Или я неверно понимаю?
Ваш блок ON_OFF не энергонезависимый, выкиньте его и замените схемой энергонезависимого Т-триггера 1 Схемы энергонезависимых триггеров.jpg
В переменной Q8, будет запомнено последнее состояние Т триггера.
Последний раз редактировалось kondor3000; 08.11.2024 в 14:19.
Попробуйте создать энергонезависимую ON_OFF включить её сигналом на входе, а потом сбросить питание. Что -получится?
Owen.jpg
Затем создайте макрос с такой же (энергонезависимой переменной, но внутри макроса):
Owen1.jpg
Замените или выставьте макрос в схему и повторите эксперимент.
Owen2.jpg
Что изменилось? Т-триггер в виде макроса OnOff запоминает своё состояние между сбросами?
Последний раз редактировалось EFrol; 08.11.2024 в 14:29.
К сожалению, прибора пока нет. Если бы реле было, конечно же, проводил эксперименты непосредственно с реле. Скоро куплю. Там еще много чего надо. Релюшки, диммеры (скорее всего, Финдер-ведомый), блок на 24 В, датчики движения, температуры и т. д. Стенд с дин-рейками надо смастерить. На полу как-то не очень схемы собирать.
Попробую ответить.
Предположу, состояние переменной сохранится.
Не уверен, что триггер в составе макроса сохранит состояние. Если не ошибаюсь, в макрос нельзя вставлять сетевые переменные, сервисные (их в ПР205 нет ?), ПИД-регуляторы. Возможно, и на энергозависимые накладывается ограничение.
Хотя, вот на стр 379 был вопрос
Пока путаюсь в терминах. ФБ на FBD - это и есть макрос?
Извиняюсь за тупые вопросы. С Т-триггером вроде понятно. EFrol, kondor3000, спасибо за помощь!
Описка. Возможно, и на энергоНЕзависимые...
Последний раз редактировалось kondor3000; 08.11.2024 в 17:08.
FBD - функционально блочные диаграммы
ST - структурный текст
это языки (способы записывать алгоритмы)
ФБ - функциональный блок (это подпрограмма со своими переменными), которые сохраняют свои значения между программными циклами (аналог класса в ООП)
ФБ - можно написать на любом языке FBD или ST (разница в том, что в ST нельзя создать энергонезависимые переменные)
На ST можно создавать функции - это программы, имеющие только один выход и не сохраняющие значений внутренних переменных
Для ФБ на ST используют простой костыль:
Owen.jpgКод:function_block fbPrimer var_input X : bool; EE : bool; //входная переменная с типом данных bool end_var var_output EQ : bool; //выходная переменная с типом данных bool end_var EQ := EE; // Востановим сохраненное значение EQ // Здесь значение EQ может меняться в соответствии с алгоритмом end_function_block
В этом случае значение переменной EQ передается на выход ФБ, которое сохраняется в энергонезависимой Value.
Тогда при следующем вызове ФБ это значение возвращается в виде переменной EE.
Последний раз редактировалось EFrol; 08.11.2024 в 17:44.
EFrol, kondor3000 огромная благодарность! Сегодня исчезли многие вопросы и ситуация прояснилась. Решения Ваши обязательно выполню на реальном приборе (лабораторные работы в институте - дело привычное). А пока тщательный конспект и пойду исправлять схемные решения, которые у меня ни разу не НЕ энергонезависимые. Еще раз большое спасибо за обучение!
kondor3000, разрешите еще вопрос. В теме про фичи и баги OL (https://owen.ru/forum/showthread.php...l=1#post450555) Вы говорили о сбросе экранной переменной:
Запустил в симуляторе, все работает. Но уже не первый раз замечаю один непонятный момент.
Привязываю переменную Auxiliary к кнопке ESC, выставляю "записать True". Здесь ясно.
101124_fig01.PNG
Затем шагаю цикл за циклом. Сначала все по нулям, вопросов нет.
101124_fig1.PNG
Нажимаю ESC, след. цикл - устанавливается 1 в A, B, C и D, вопросов нет.
101124_fig2.PNG
След. шаг. B, C и D устанавливаются в 0, а вот А остается 1.
101124_fig3.PNG
Это и непонятно! Почему в А в том же цикле не прописывается 0? A, B, C и D - это разные "ячейки" в ОЗУ?
И почему тогда вместе с вЫходной В в том же цикле прописываются в 0 еще и две ВХОДные переменные C и D?
Я читал на форуме, что сначала записывается вЫходная переменная (у нас В), а в течение след. цикла ВХОДные переменные (у нас A, C и D).
Но в данном случае не так...![]()
Дальше вопросов нет. Все по нулям и снова можно нажимать на кнопку ESC.
101124_fig4.PNG
Последний раз редактировалось GeraZverev; 10.11.2024 в 06:06. Причина: ссылку вставил