Здравствуйте, пишу сюда впервые и очень надеюсь на вашу помощь. Задача в последовательном опросе устройств по Modbus RTU.
Пытаюсь произвести последовательный опрос 3 устройств и испробовал разные способы, Good practice к сожалению не знаю в этом вопросе.
Вот мои попытки:

Код:
//STEP - переменная для шага, по умолчанию 1
//пользовательский ФБ запроса по RTU
MB_R1(
	START := STEP = 1,
	SLAVE := 1,
	FUNC := 4,
	ADDR := 5000,
	NUMBER := 12,
	ERR_TIME := 1000);

MBR1 := MB_R1.READY;
COUNTER1 := MB_R1.CNT;
//сокращенная форма IF(IN, VAL1, VAL2) - если IN = TRUE, то возвращает VAL1, иначе VAL2
STEP := IFI(MB_R1.READY, 2, STEP);

MB_R2(
	START := STEP = 2,
	SLAVE := 1,
	FUNC := 4,
	ADDR := 5050,
	NUMBER := 12,
	ERR_TIME := 1000);

MBR2 := MB_R2.READY;
COUNTER2 := MB_R2.CNT;
STEP := IFI(MB_R1.READY, 3, STEP);

MB_R3(
	START := STEP = 3,
	SLAVE := 1,
	FUNC := 4,
	ADDR := 5100,
	NUMBER := 12,
	ERR_TIME := 1000);

MBR3 := MB_R3.READY;
COUNTER3 := MB_R3.CNT;
STEP := IFI(MB_R3.READY, 1, STEP);
В итоге запрос виснет только в одном из ФБ, сюда привел самый простой и понятный вариант из написанного, пробовал уже и с передним фронтом и с таймером, но все равно не работает. Может есть какой-то типовой алгоритм для опроса по Modbus RTU? Сил уже нет