Спасибо, уже понял принцип работы. Мне нужно было именно уяснить принцип. Я имел в виду, что если бы импульс действовал только до конца текста, то на код, расположенный выше вызова, он бы не влиял. В этом случае место расположения имело бы большое значение. Ну а поскольку импульс работает полный круг, так тут и обсуждать уже нечего, по сути. Где ни размести, результат будет один. В моей программе, по крайней мере.
Я всегда думал что до окончания подпрограммы триггер работает... Может в лоджике и не так...
Надо проверить, поставить до и после условие сравнения и суммирование переменной и по ней определиться.
Функциональный блок работает только в момент его вызова. Все остальное время мы пользуемся результатом его работы.
Например
Здесь триггер взведется по фронту Е и останется таким навсегда (ну, или пока мы его где-нибудь в другом месте опять не вызовем)Код:var_input //объявление входных переменных E : bool; end_var var_output //объявление выходных переменных Q : bool; end_var var //объявление локальных переменных RTrig : SYS.RTRIG; end_var RTrig.I := E; if not RTrig.Q then RТrig(); end_if Q := RTrig.Q;
Последний раз редактировалось Dimensy; 15.06.2024 в 07:22.
Был грешен... Вы мне открыли глаза.
Проверил на codesys 3.5, выход триггера остаётся взведенным до его повторного вызова. Я всегда думал, что он работает до окончания цикла программы/подпрограммы. Т.е. по циклу программы он сбросится только когда снова в него упрется...
Или я знал это раньше, или не знал и забыл)
Надо это всё переосмыслить. Так знал я это или нет...
Камрады-новички (я без иронии). Я вот вас читаю и понимаю, что надо у себя на сайте, что ли, написать простую статью о том, чем Функциональнй Блок от Функции отличается... Прям этот вопрос заново возник у кучи народа на форуме.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
Ну, если по серьёзному, без шуточек, то мнемонически можно запомнить, что во всей программе/задаче ПЛК цикл - это всё-всё целиком. Причём сначала считываются входы, обрабатывается программа, потом выдаются значения на выходы.
Наверное когда-нибудь я про это напишу всё же, так как сам тупил: думал что FB - автономны, и какой-нибудь таймер сам по себе будет считать, если его не вызывать в коде
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net