Страница 1 из 1

Урок 58. Modbus Master

Добавлено: 05 дек 2017, 18:05
solomsv
Доброго времени!

не получается поднять мастер на arduino. Поднял slave (id 2) - проверил эмулятором через pc, все работает. Теперь создал master, но что то работает не так. Я получаю запрос от мастера , отдаю ответ - а мастер не записывает ответ, не могу понять где проблема (в роли slave пока выступает эмулятор pc). Ниже код мастера:
► Показать


вот скриншот обмена:
Изображение

Из скриншота видно, что обмен идет каждые две секунды, а это говорит что присутствует ошибка. Как не странно так же нет посылки на запись - почему не знаю. Где ошибка подскажите.

Другими путями я получил код ошибки = 2, но почему он возникает, времени должно хватать с лихвой или я что то не понимаю.

Re: Урок 58. Modbus Master

Добавлено: 05 дек 2017, 18:21
solomsv
Нашел проблему )), дам ответ если кто-то тоже столкнулся с подобной проблемой. Рассмотрев библиотеку по внимательнее понял, что переменная timeOutRecieve имеет тип byte,а это явно маловато для моего значения "2000" - исправил тип данных в библиотеке на unsigned int и все пошло.

Re: Урок 58. Modbus Master

Добавлено: 05 дек 2017, 19:28
Эдуард
Здравствуйте!
У вас период прерывания по таймеру 500 мкс. При переменной timeOutReciev типа байт это 127 мс. Неужели этого времени не хватает на ответ от ведомого устройства? Время считается до приема первого байта ответа.