Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

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

Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 02 фев 2018, 21:32

Здравствуйте!
Библиотеки Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave были созданы для уроков о протоколе ModBus RTU. Предназначены для работы только на аппаратном UART плат Arduino c микроконтроллерами Atmega328/168.

Мне посыпались вопросы об использовании библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на контроллере Mega2560. В этой теме я публикую переписку с Валерием и Романом, которые пытались использовать библиотеки в такой конфигурации.


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

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 02 фев 2018, 21:33

Роман:
Добрый день Эдуард! Спасибо вам за ваши уроки очень толково изложено . Вопрос возник когда я попытался использовать ваши
библиотеки modbus master , modbus slave. в качестве мастера ардуино мега, в качестве слейва ардуино нано. Получилось следующее: команды с мастера доходят до слейва , но со слейва ни чего не приходит к мастеру. я попробовал поменять платы , теперь мастер это нано а слейв мега. в таком варианте все заработало. И второй вопрос : в вашей библиотеки задействован единственный ком порт ардуино, я попытался изменить в библиотеки мастера Serial на Serial1 (для меги) не заработало . помогите разобраться в данном вопросе.
Цель использования вашей библиотеки связь плат с главным контролерам для обмена данными по сети рс485 нужно чтобы мастер получал состояние концевиков ворот , калитки данные с дальномеров (сантиметры) и мастер должен отпровлять некие инструкции типа открыть закрыть заблокировать и тп. не чегосверх естественного. до использования вашей библиотеки я пробовал это делать на софтварном порту.
пакет выглядел так:
byte Id
byte start
byte a
byte b
byte c
byte e
stop byte
передавал и принимал несколько байт и в каждом из них было состояния того или иного датчика, но работоло все это криво.
вот хотелось бы все тоже самое делать но вместо пачки байт забивать ваш масив reg Table и отправлять мастеру.
например regTable[10] c 0 по 5 команды мастера с 6 по 10 ответы слейва. прошу помочь мне в этой затеи. Спасибо, всего вам хорошего.

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

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 02 фев 2018, 21:34

Роман, здравствуйте!
По поводу переделки библиотеки на Serial1. Библиотека использует функции класса Serial, за исключением места, где определяется окончание передачи данных из буфера. Такой функции в Serial нет. Поэтому я использовал прямую проверку флага аппаратного последовательного порта.
// ожидание окончания передачи
if( (UCSR0A & 64) != 0 ) {

Вам необходимо кроме замены Serial на Serial1 изменить контроль этого флага. Найти в описании микроконтроллера соответствующий бит. Возможно это будет UCSR1A, но я не уверен. Переправить необходимо в обеих библиотеках.

Почему не работает Мега я не знаю. Я не пробовал. Прежде всего попробуйте увеличить на мастере время тайм-аута ответа. Это второй аргумент конструктора timeOutRecieve. Для отладки надо определять, где виснет программа слейва. Почему слейв не отвечает. Или он отвечает. В интервала типа else if(_mode == 2) { надо по очереди вставлять, например, инверсию светодиода и смотреть до какого интервала программа не доходит.
Попробуйте, соберите больше информации и пишите. Можете открыть тему на форуме сайта.

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

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 02 фев 2018, 21:35

Роман:
Эдуард ! А чем объясняется что переправлять нужно в обоих библиотеках - как это касается Slave ?

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

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 02 фев 2018, 21:35

Там тоже необходимо ждать, пока закончиться передача последнего бита.

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

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 02 фев 2018, 21:36

Валерий:
Эдуард ! на железном уровне разобрался с проблемой Master MAGA2560 <<<<< Slave NANO - все дело в чипе USB CH340 его RX TX подтянуты к +5в через резисторы номиналом ВНИМАНИЕ 49 Ом - ну какая 485 их перетянет в ноль ! Залил скетч в MEGA выпаял резисторы и все заработало !
Просим все-таки сделать вашу библиотеку более универсальную для работы и на выводах TR1 / RX1, TX2 / RX2 и TX3 RX3 !

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

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 02 фев 2018, 21:36

На счет переделки библиотеки на другие выводы подумаю. Надо переправить номера Serial и подправить строчки
// ожидание окончания передачи
if( (UCSR0A & 64) != 0 ) {
Возможно UCSR0A надо заменить на UCSR1A.

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

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 02 фев 2018, 21:37

Валерий:
Я пробовал мернять - но у меня после редактирования библиотека в среде IDE отмечается как неправильная ! У меня MAC OS - может из за этого ! MAC - всегда делает пометки какие-то в каждой папке и каждого файла при редактировании и ли просто при сохранении !

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

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 02 фев 2018, 21:38

Валерий, здравствуйте!
Я сделал формальные изменения в библиотеке Tiny_ModBusRTU_Master. Теперь библиотека называется Tiny_ModBusRTU_Master_1 и настроена на Serial 1. У меня в Arduino IDE компилируется без ошибок. Попробуйте. Напишите мне о результате.
Tiny_ModBusRTU_Master_1.zip
(4.31 КБ) 11 скачиваний

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

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 02 фев 2018, 21:38

Валерий:
Компилируется без ошибок в 1_67 нормально , но MEGA2560 зависает при первом обращении к Serial !

FreeDoom
Сообщения: 1
Зарегистрирован: 18 фев 2018, 17:39

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение FreeDoom » 18 фев 2018, 17:47

Скажите, чем-то закончилась эта история с переделкой библиотек для работы в качестве Master - Mega2560?
Вопрос весьма актуальный в связи с тем, что именно Mega удобнее использовать в качестве центрального контроллера сети RS485 и иных к ней навешанных на многочисленные порты устройств.
Просто выпаивание резисторов не самый удобный способ :-(

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

Re: Работа библиотек Tiny_ModBusRTU_Master и Tiny_ModBusRTU_Slave на Mega2560.

Сообщение Эдуард » 18 фев 2018, 21:39

Здравствуйте!
У меня нет меги попробовать. Заказал, когда придут проверю и подкорректирую библиотеку, если надо.


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

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

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