Нашел оптимальный способ работы с входом Enable.
На вход Enable необходимо подавать not Read:
var
GetHoldRegs : MB_RD_HOLD_REGS;
end_var
GetHoldRegs(Enable:= NOT GetHoldRegs.Read,
Mode:= MB_RTU,
...
);
Вид для печати
Нашел оптимальный способ работы с входом Enable.
На вход Enable необходимо подавать not Read:
var
GetHoldRegs : MB_RD_HOLD_REGS;
end_var
GetHoldRegs(Enable:= NOT GetHoldRegs.Read,
Mode:= MB_RTU,
...
);
Глядя на код библиотеки, я бы не стал подавать NOT Read. Этот признак выставляется в самом начале обмена. Таким образом, вы тут же переводите Enable на FALSE. Вдобавок это внутренняя переменная, и вы не должны делать предположений относительно её поведения. Попробуйте лучше NOT Complete.
Not Complete плохо, потому, что я после Complete = true более не хочу вызывать блок MB_RD_HOLD_REGS, а он должен быть вызван с Enable = false перед следующей передачей.
У меня прекрасно работает, если на Enable подаю not Read. Мне как раз и нужно установить Enable на один скан.
Попробовал с Complete. Тоже работает (чего и следовало ожидать).
можете конечно назаать это желанием поспорить, но чтоб завершить вопрос до логического конца, нужно понять нужна Вам цикличность или нет, если нет тогда управление должно быть внешним и без лишней переменной не обойтись, если нужна, то тогда после опускания выходных сигналов у Вас инициируется очередной запрос, что может повлиять на сам опрос в режиме RTU