Хорошо, давайте посмотрим.
Вот такой код на ST
Он показывает какой из входов сработал раньше.Код:function_block probe //имя функционального блока. var_input //объявление входных переменных inA, inB : bool; // end_var var_output //объявление выходных переменных outA, outB : bool; // end_var var //объявление локальных переменных K : bool := false; end_var if inA and not (inB or K) then outA := true; K := true; end_if if inB and not (inA or K) then outB := true; K := true; end_if end_function_block
Располагаем этот ФБ на холсте
1.png
По правилам (и по логике, тоже) сначала выполняются блоки А и Б, потом С. А может, нумерация играет роль? - тогда должен сначала выполниться блок Б, потом С и А последним. Запускаем
1.5.png
Нет, логика рулит.
Ладно, следующий вопрос: а кто в цикле первым выполняется, А или Б? Делаем взаимоблокировку и, опа, Лоджик хочет обратную связь
2.png
Делаем как хочет Лоджик и получаем, что блок Б, как бы, выполняется раньше блока А. Логично
3.png
А если мы поменяем обратную связь, то первым, как бы, выполниться блок А, что тоже логично
4.png
Итак, 3:0 в пользу логики. На самом деле, пофигу в какой последовательности выполняются блоки - все дело в связях.
Последний раз редактировалось Dimensy; 24.11.2023 в 09:08.
Очень аргументированно! Спасибо.
Это прописано в документации.
"Порядок исполнения" - язык ST не нумеруется.
Изначально вопрос был такой, а потом уводился в сторону разными аргументами.
Как быть с этим:
ST на форум 24-11-2023.png
В какой момент времени Myx_DG1 поменяет последовательность выполнения с IO_a1,
или с xxx, особенно, если IO_b1, IO_c1 и IO_d1 будут взаимосвязанные???
Всё взаимосвязано через переменные, алгоритмы внутри блоков разные,
обрабатывают разные входные переменные, и выдают в разные выходы.
Этот уровень сложности вложений и зависимостей и отличает ST
от остальных "простых квадратиков" - логики,
на работу с которой и были рассчитаны реле изначально.
Когда были ещё маленькими и слабенькими.
Отсюда и вопрос - как быть уверенным, что в какой-то момент времени
последовательность исполнения этой паутины не поменяется?
Да, ладно, здесь на форуме даже игрушку делали для ПР200. А что Сергей0308 c этими квадратиками делает - просто улет
Не забываем, что на холсте функции и ФБ на ST такие же квадратики, что и макросы, функции и ФБ на FBD. Так что паутина не поменяется, если вы что-то не поменяете
Соединение Myx_DG1 и IO_a1 таким образом должно было неизбежно вызвать превращение одной из циклических связей в линию задержки. Она и определит последовательность выполнения этих блоков.
Поскольку линия задержки не подсвечивается, то до компиляции ещё дело не дошло (возможно есть неисправленная ошибка в ФБ, или эти ФБ не участвуют в формировании состояния выходов ПР/энергонезависимых переменных)