Соединение 2 МК ардуино напрямую через Serial
- Войдите на сайт для отправки комментариев
Соединяю две ардуинки, мега-мастер и нано-слэйв, по протоколу ModBus проводами напрямую через Serial. Расстояние 20 см. Библиотека ModBusRTU. Подключаю землю. Подаю питание на одну из плат - начинает гореть диод питания на второй плате и она, даже пытается работать. Если подам питание с одной платы на вторую - данные по ModBus идут через пень-колоду, потом виснут обе. Кроме того уже у 2 nano спалил выводы rx-tx. Проверял работу мастера (Mega) и слэйва (nano) через программы эмуляторы (QModBus и ModBus Slave) на компе, через USB. Работают без ошибок. Передают, читают и пишут данные. Что не так? Надо развязку делать? Но ведь в Интернете пишут, что работает связь через Serial напрямую между двумя ардуинами!
Эмм, ну да. С чего ты решил, что rs485 и uart это одно и то же?
Я не решил, что одно и то же. Мне непонятно, почему не работает связь по rs232? Разве по этому протоколу нельзя напрямую соединить Serial?
По любому буду делать развязку. Но если не работает при прямом соединении, то будет-ли работать после установки гальванической развязки? Через эмуляторы всё работает чётко, и мастер и слэйв.
rs232-то тут при чем? Разберись хоть что делаешь. Modbus работает по rs485. Без понимания никакая гальваническая развязка не поможет. Либо часов пять математики и схем и потом 3 часа закупки материалов и пайки, либо просто купить конвертер за 100 рублей и иметь результат.
Вот выдержка из библиотеки ModBusRTU:
Modbus object declaration
Вот ещё с просторов Интернета:
Библиотека позволяет простыми средствами реализовать программное обеспечение ведомого контроллера с протоколом ModBus RTU. Может быть использована совместно с интерфейсами UART, RS-485, RS-422, RS-232 и т.п. Поддерживает управление передатчиком в шинных интерфейсах с третьим состоянием, подобных RS-485.
Вот фото прямого работающего подключения по ModBus
http://mypractic.ru/wp-content/uploads/2017/03/Lesson49_3.jpg
ДВ, различайте программный и аппаратный уровень. Программно и Сериал и Модбас работают при прямом соединении портов. Аппаратно - при соединении двух ардуин и питании их от разных источников питания - получите неустойчивую работу и сгоревшие порты
Ни по uart ни по rs232 modbus-сеть без схемотехнических модификаций построить нельзя.
Что там за костыли придумали в библиотеке - это нужно читать библиотеку. В любой библиотеке есть примеры, обычно вменяемые.
Значит, если я буду использовать не Serial порты, а запрограммирую другие ПИНы, тогда при прямом соединении всё заработает?
Или если использую адаптеры, или развязку - заработает на Serial?
Питание я подавал с одного источника и с разных. Результат одинаковый.
Почему тогда на фото, на которое я дал ссылку выше, соединены Serial порты? И как пишет автор, у него всё работает.
Ни по uart ни по rs232 modbus-сеть без схемотехнических модификаций построить нельзя.
почему нельзя? Модбас - всего лишь протокол верхнего уровня, который можно гонять поверх разных сред транспорта - rs232, rs485, uart, TCP
Ни по uart ни по rs232 modbus-сеть без схемотехнических модификаций построить нельзя.
Что там за костыли придумали в библиотеке - это нужно читать библиотеку. В любой библиотеке есть примеры, обычно вменяемые.
Я и использовал примеры с библиотеки. Мастера и слэйва. Практически ничего не добавил сам. Только данные в регистры записывал.
Почему тогда на фото, на которое я дал ссылку выше, соединены Serial порты? И как пишет автор, у него всё работает.
Получается так, что из-за библиотеки возможны включение выводов tx или rx мастера и слэйва одновременно в низком и высоком состоянии при прямом соединении? Поэтому и горят выводы и работает нестабильно?
Почему тогда на фото, на которое я дал ссылку выше, соединены Serial порты? И как пишет автор, у него всё работает.
Там соединять нечего! Два провода rx-tx перевёрнутые и питание
Ни по uart ни по rs232 modbus-сеть без схемотехнических модификаций построить нельзя.
Потому что если посадить два передатчика (tx) UART на одну линию. то они сгорят. Потому что один притянет к земле, другой к питанию.
Значит, если я буду использовать не Serial порты, а запрограммирую другие ПИНы, тогда при прямом соединении всё заработает?
Или если использую адаптеры, или развязку - заработает на Serial?
Питание я подавал с одного источника и с разных. Результат одинаковый.
Почему тогда на фото, на которое я дал ссылку выше, соединены Serial порты? И как пишет автор, у него всё работает.
Если взять адаптеры rs485 то всё будет работать. Что за схему ты называешь "развязкой" я не знаю. По фото вопросы к автору фото.
Через эмуляторы по отдельности всё работает! Регистры пишутся и читаются и на мастере и на слэйве!
Если взять адаптеры rs485 то всё будет работать. Что за схему ты называешь "развязкой" я не знаю.
Те же адаптеры rs485 и называю развязкой. Правда не гальванической.
Потому что если посадить два передатчика (tx) UART на одну линию. то они сгорят. Потому что один притянет к земле, другой к питанию.
что за бред, нафига сажать два tx на одну линию? В модбасе через uart используется стандартная для сериал схема rx -tx tx -rx
Итог:
Адаптеры спасут "отца русской демократии"?
Кстати, когда подключаю адаптер на MAX458, к ардуине - на адаптере загорается светодиод питания. Хотя питание адаптера не подключено.
нафига сажать два tx на одну линию?
Чтобы пользоваться modbus? Шиной с принципом действия 1 мастер - много слейвов? Нет?
У меня, пока, только один слэйв.
Так подскажите, могут гореть выводы rx-tx и глючить связь, из-за одновременно высокого и низкого уровней на соединённых выводах Serial?
Какие-то временные коллизии в библиотеке например?
Например, мастер не дождался окончания ответа, начал передачу?
нафига сажать два tx на одну линию?
Чтобы пользоваться modbus? Шиной с принципом действия 1 мастер - много слейвов? Нет?
да, для "много" - согласен. Я имел в виду линию из только двух девайсов. Да и у ТС ветка называется "соединение ДВУХ МК"
В этом случае все должно работать
Потому что если посадить два передатчика (tx) UART на одну линию. то они сгорят. Потому что один притянет к земле, другой к питанию.
Две ардуины спокойно бегают по modbus соединённые Tx-Rx Rx-Tx. Modbus всё равно как физически соединенны платы. Событие в библиотеке RTU происходят по приёму - отправке символа из uart. Но так можно соеденить только пару. Если хочется больше, то одного мастера можно Тх- на много Rx , а слейвам в Тх выдать по 1к резистору и после передачи ответа переключать выход Тх на вход. Но это надо библиотеку дописывать.
Потому что если посадить два передатчика (tx) UART на одну линию. то они сгорят. Потому что один притянет к земле, другой к питанию.
Две ардуины спокойно бегают по modbus соединённые Tx-Rx Rx-Tx. Modbus всё равно как физически соединенны платы. Событие в библиотеке RTU происходят по приёму - отправке символа из uart. Но так можно соеденить только пару. Если хочется больше, то одного мастера можно Тх- на много Rx , а слейвам в Тх выдать по 1к резистору и после передачи ответа переключать выход Тх на вход. Но это надо библиотеку дописывать.
В uart нет никакого переключения пина tx на вход. Это не входит ни в аппаратный стандарт, ни в возможности AVR. Можно только совсем отключить UART.
Это да. Но библиотека работает и софтверным сериалом. А там любые возможности.
Если всё должно работать, то почему у меня не работает, кроме того ещё и горят пины? Схема простейшая, ошибок подключения нет.
Ну мы то никакую схему не видели ... Горят пины - однозначный косяк схемы или определения того где у вас TX и где RX.
Может одна из плат на 3.3 ?
Проблема кроется в
Voltage on any pin ......... -0.5V to Vcc+0.5V
Со всеми вытекающими последствиями.
Ну какая схема? Четыре провода подсоединить к одной ардуинке и 4 ко второй, если с питанием от первой! Десять раз переподключал, экспериментировал. Не первый год и даже не 10-й занимаюсь электроникой. Если только на плате маркировка перепутана, так я всяко пробовал rx-rx, tx-tx, rx-tx, tx-rx. При правильном подключении начинает работать, даже данные передаёт, потом цифры на дисплее начинают меняться как попало и виснет. И отдельное питание делал. Заливал примеры от библиотеки, без подключения дисплея, для проверки. Такая же фигня. При всём том хаосе горят выводы rx-tx на nano. Одну спалил, перепаял МК с рабочей, тоже спалил.
[При последовательной подаче питания на одной из железяк будет превышен параметр ДШ
Voltage on any pin ......... -0.5V to Vcc+0.5V
Со всеми вытекающими последствиями.
Поясни! Я с Меги, запитанной от 12 вольт, подаю питание с пина +5 вольт на нано.
Питания на плате ещё нет, а по TX в RX уже может +5 прилететь
Питания на плате ещё нет, а по TX в RX уже может +5 прилететь
Через открытый транзистор высокого состояния и защитные диоды?
Питания нет - Vcc~0, а ограничение - Voltage on any pin ......... -0.5V to Vcc+0.5V
Плата пытается запитаться от пина и весь ток шпарит через этот пин. Такой же ток бежит и через пин первой платы ...
Поставить модули RX485 не проблема. Но ведь должно работать напрямую!
Подавайте Vcc одновременно или TX и RX соединяйте после подачи питания на ОБЕ платы.
Плата пытается запитаться от пина и весь ток шпарит через этот пин. Такой же ток бежит и через пин первой платы ...
Но я ведь и от Меги запитывал нано, одновременно. Тоже не работает! Здесь-то не должно быть проблем по питанию.
TX и RX соединяйте после подачи питания на ОБЕ платы.
и так делал!
Видимо в библиотеке не предусмотрено прямое соединение, только через адаптеры :( Так может быть?
Просто Serial передача работает ?
Просто Serial передача работает ?
Между платами? Не проверял. Между компом и платими через эмуляторы, всё чешет отлично
Я бы сначала проверил передачу на этих же пинах обычного Serial, а уж потом лез в другие протоколы.
Ок! Попробую. Не думал, что всё так сложно будет. Вроде должно работать, как везде пишут в Интернете :(
Попробую с адаптерами MAX485, если не пойдёт, начну с Serial
Ардуинка одна осталась - Мега. Надо пару чипов купить на nano
Ок! Попробую. Не думал, что всё так сложно будет. Вроде должно работать, как везде пишут в Интернете :(
если у всех работает. а у одного нет - похоже, у этого "одного" с руками проблема :)
если у всех работает. а у одного нет - похоже, у этого "одного" с руками проблема :)
Если бы! Именно с этими библиотеками не видел рабочих проектов прямого соединения. С другими, вроде, работает. На уважаемом мною сайте, с самодельными библиотеками, работает.
Тем более в 4 проводах даже новичок не запутается. Я же написал выше, перепробовал всё! И правильное соединение rx-tx и неправильное. Питание - понятно не перепутаешь, сгорит всё.