Нашел оптимальный способ работы с входом 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 на один скан.
Последний раз редактировалось Спорягин Кирилл; 15.09.2015 в 13:40.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Попробовал с Complete. Тоже работает (чего и следовало ожидать).
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
можете конечно назаать это желанием поспорить, но чтоб завершить вопрос до логического конца, нужно понять нужна Вам цикличность или нет, если нет тогда управление должно быть внешним и без лишней переменной не обойтись, если нужна, то тогда после опускания выходных сигналов у Вас инициируется очередной запрос, что может повлиять на сам опрос в режиме RTU
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран