
Сообщение от
ПавелП
Вы сначала проверьте это.
Я задался вопросом, когда не смог задать последовательность выполнения блоков на ST.
Хорошо, давайте посмотрим.
Вот такой код на 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 в пользу логики. На самом деле, пофигу в какой последовательности выполняются блоки - все дело в связях.