Цитата Сообщение от lazy Посмотреть сообщение
чтобы поменять настройки порт нужно закрыть (дождаться пока закроецо). потом открыть (опять дождацо) и настроить по новому. да нужно разнести по циклам. модбас передает все ошибки. точнее те которые поддерживает ведомый. по поводу передачи. писать в буфер в то время когда идет передача нельзя. отправьте данные в буфер. взведите на один цикл Enable и ждите Complite. как только Complite = true смотрите Exception. Если равен нулю то все ок. С чтением так же. Передаете адреса и кол-во слов взводите Enable на один цикл и ждете Complite. Дождались? если Exception = 0 - разбирайте буфер.
Спасибо за ответ. Вообщем как я понял чтобы переключить порт нужно по циклам.
1)Выключаю порт COM_SERVICE Enable =0
2)Ждём окончания передачи - приёма MB_RD_HOLD_REGS Complete =1 (больше ничего не принимаем и не передаем)
3)Ждём COM_SERVICE Ready=0 порт должен закрыться
4)Меняем настройки порта
5)Включаю порт COM_SERVICE Enable =1
Если я в чём то неправ, поправьте пожалуйста.

По передаче данных есть еще вопрос:как правильно должна вестись передача/прием данных, если у мастера есть 3 подчиненных, двое из них опрашиваются постоянно, а третий - только при включении всего оборудования. Вопрос: нужно ли этому третьему постоянно отправлять одни и те же данные? Или сделать несколько обменов(с 1 раза могут данные не дойти), а всё остальное время работать только с первым и вторым?

По ошибкам модбас наверное я их могу посмотреть только в буфере ARRAY модуля MB_RD_HOLD_REGS если подчиненный мне что-то пришлёт, а на выходе модуля Exception только ошибки 0xFE 0xFF.
Сейчас контролера нет под рукой, как появится - всё это буду пробовать.
И еще раз спасибо всем кто помогает обучаться.