Здравствуйте, пишу сюда впервые и очень надеюсь на вашу помощь. Задача в последовательном опросе устройств по Modbus RTU.
Пытаюсь произвести последовательный опрос 3 устройств и испробовал разные способы, Good practice к сожалению не знаю в этом вопросе.
Вот мои попытки:
В итоге запрос виснет только в одном из ФБ, сюда привел самый простой и понятный вариант из написанного, пробовал уже и с передним фронтом и с таймером, но все равно не работает. Может есть какой-то типовой алгоритм для опроса по Modbus RTU? Сил уже нетКод://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);




Ответить с цитированием