Урок 58. Modbus Master

Обсуждение и вопросы по урокам Ардуино
solomsv
Сообщения: 3
Зарегистрирован: 05 дек 2017, 12:55

Урок 58. Modbus Master

Сообщение solomsv » 05 дек 2017, 18:05

Доброго времени!

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


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

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

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


solomsv
Сообщения: 3
Зарегистрирован: 05 дек 2017, 12:55

Re: Урок 58. Modbus Master

Сообщение solomsv » 05 дек 2017, 18:21

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

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Урок 58. Modbus Master

Сообщение Эдуард » 05 дек 2017, 19:28

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


Вернуться в «Уроки Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя