Соединение 2 МК ардуино напрямую через Serial

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Соединяю две ардуинки, мега-мастер и нано-слэйв, по протоколу ModBus проводами напрямую через Serial. Расстояние 20 см. Библиотека ModBusRTU. Подключаю землю. Подаю питание на одну из плат - начинает гореть диод питания на второй плате и она, даже пытается работать.  Если подам питание с одной платы на вторую - данные по ModBus идут через пень-колоду, потом виснут обе. Кроме того уже у 2 nano спалил выводы rx-tx. Проверял работу мастера (Mega) и слэйва (nano) через программы эмуляторы (QModBus и ModBus Slave) на компе, через USB. Работают без ошибок. Передают, читают и пишут данные. Что не так? Надо развязку делать? Но ведь в Интернете пишут, что работает связь через Serial напрямую между двумя ардуинами!

rkit
Offline
Зарегистрирован: 23.11.2016

Эмм, ну да. С чего ты решил, что rs485 и uart это одно и то же?

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Я не решил, что одно и то же. Мне непонятно, почему не работает связь  по rs232? Разве по этому протоколу нельзя напрямую соединить Serial? 

-ДВ-
Offline
Зарегистрирован: 12.05.2020

По любому буду делать развязку. Но если не работает при прямом соединении, то будет-ли работать после установки гальванической развязки? Через эмуляторы всё работает чётко, и мастер и слэйв.

rkit
Offline
Зарегистрирован: 23.11.2016

rs232-то тут при чем? Разберись хоть что делаешь. Modbus работает по rs485. Без понимания никакая гальваническая развязка не поможет. Либо часов пять математики и схем и потом 3 часа закупки материалов и пайки, либо просто купить конвертер за 100 рублей и иметь результат.

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Вот выдержка из библиотеки ModBusRTU:

Modbus object declaration

 u8id : node id = 0 for master, = 1..247 for slave
 port : serial port
 u8txenpin : 0 for RS-232 and USB-FTDI 
                 or any pin number > 1 for RS-485
 
Modbus master(0,Serial,0); // this is master and RS-232 or USB-FTDI
 
Пишу 0 - работает как RS232, если 1 и выше, то используется соответственный ПИН для 3 состояния выходной шины посредством адаптера RS485. Получается реализация этой библиотеки одинаковая для 232 и 485?
Мне непонятно, может ModBus работать напрямую, без адаптеров, или нет?
-ДВ-
Offline
Зарегистрирован: 12.05.2020

Вот ещё с просторов Интернета:

Библиотека позволяет простыми средствами реализовать программное обеспечение ведомого контроллера с протоколом ModBus RTU.  Может быть использована совместно с интерфейсами UART, RS-485, RS-422, RS-232 и т.п. Поддерживает управление передатчиком в шинных интерфейсах с третьим состоянием, подобных RS-485.

Вот фото прямого работающего подключения по ModBus

http://mypractic.ru/wp-content/uploads/2017/03/Lesson49_3.jpg

b707
Offline
Зарегистрирован: 26.05.2017

ДВ, различайте программный и аппаратный уровень. Программно и Сериал и Модбас работают при прямом соединении портов. Аппаратно - при соединении двух ардуин и питании их от разных источников питания - получите неустойчивую работу и сгоревшие порты

rkit
Offline
Зарегистрирован: 23.11.2016

Ни по uart ни по rs232 modbus-сеть без схемотехнических модификаций построить нельзя.

Что там за костыли придумали в библиотеке - это нужно читать библиотеку. В любой библиотеке есть примеры, обычно вменяемые.

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Значит, если я буду использовать не Serial порты, а запрограммирую другие ПИНы, тогда при прямом соединении всё заработает?

Или если использую адаптеры, или развязку - заработает на Serial?

Питание я подавал с одного источника и с разных. Результат одинаковый.

Почему тогда на фото, на которое я дал ссылку выше, соединены Serial порты? И как пишет автор, у него всё работает.

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

Ни по uart ни по rs232 modbus-сеть без схемотехнических модификаций построить нельзя.


почему нельзя? Модбас - всего лишь протокол верхнего уровня, который можно гонять поверх разных сред транспорта - rs232, rs485, uart, TCP

-ДВ-
Offline
Зарегистрирован: 12.05.2020

rkit пишет:

Ни по uart ни по rs232 modbus-сеть без схемотехнических модификаций построить нельзя.

Что там за костыли придумали в библиотеке - это нужно читать библиотеку. В любой библиотеке есть примеры, обычно вменяемые.

Я и использовал примеры с библиотеки. Мастера и слэйва. Практически ничего не добавил сам. Только данные в регистры записывал.

b707
Offline
Зарегистрирован: 26.05.2017

-ДВ- пишет:

Почему тогда на фото, на которое я дал ссылку выше, соединены Serial порты? И как пишет автор, у него всё работает.

При правильном соединении все должно работать через Сериал, ищите ошибку

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Получается так, что из-за библиотеки возможны включение выводов tx или rx мастера и слэйва одновременно в низком и высоком состоянии при прямом соединении? Поэтому и горят выводы и работает нестабильно?

-ДВ-
Offline
Зарегистрирован: 12.05.2020

b707 пишет:
-ДВ- пишет:

Почему тогда на фото, на которое я дал ссылку выше, соединены Serial порты? И как пишет автор, у него всё работает.

При правильном соединении все должно работать через Сериал, ищите ошибку

Там соединять нечего! Два провода rx-tx перевёрнутые и питание

 

rkit
Offline
Зарегистрирован: 23.11.2016

b707 пишет:
rkit пишет:

Ни по uart ни по rs232 modbus-сеть без схемотехнических модификаций построить нельзя.

почему нельзя? Модбас - всего лишь протокол верхнего уровня, который можно гонять поверх разных сред транспорта - rs232, rs485, uart, TCP

Потому что если посадить два передатчика (tx) UART на одну линию. то они сгорят. Потому что один притянет к земле, другой к питанию.

rkit
Offline
Зарегистрирован: 23.11.2016

-ДВ- пишет:

Значит, если я буду использовать не Serial порты, а запрограммирую другие ПИНы, тогда при прямом соединении всё заработает?

Или если использую адаптеры, или развязку - заработает на Serial?

Питание я подавал с одного источника и с разных. Результат одинаковый.

Почему тогда на фото, на которое я дал ссылку выше, соединены Serial порты? И как пишет автор, у него всё работает.

Если взять адаптеры rs485 то всё будет работать. Что за схему ты называешь "развязкой" я не знаю. По фото вопросы к автору фото.

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Через эмуляторы по отдельности всё работает! Регистры пишутся и читаются и на мастере и на слэйве!

-ДВ-
Offline
Зарегистрирован: 12.05.2020

rkit пишет:

Если взять адаптеры rs485 то всё будет работать. Что за схему ты называешь "развязкой" я не знаю. 

Те же адаптеры rs485 и называю развязкой. Правда не гальванической.

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

Потому что если посадить два передатчика (tx) UART на одну линию. то они сгорят. Потому что один притянет к земле, другой к питанию.


что за бред, нафига сажать два tx на одну линию? В модбасе через uart используется стандартная для сериал схема rx -tx tx -rx

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Итог:

Адаптеры спасут "отца русской демократии"?

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Кстати, когда подключаю адаптер на MAX458, к ардуине - на адаптере загорается светодиод питания. Хотя питание адаптера не подключено.

rkit
Offline
Зарегистрирован: 23.11.2016

b707][quote=rkit пишет:

 нафига сажать два tx на одну линию?

Чтобы пользоваться modbus? Шиной с принципом действия 1 мастер - много слейвов? Нет?

-ДВ-
Offline
Зарегистрирован: 12.05.2020

У меня, пока, только один слэйв. 

Так подскажите, могут гореть выводы rx-tx и глючить связь, из-за одновременно высокого и низкого уровней на соединённых выводах Serial? 

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Какие-то временные коллизии в библиотеке например?

Например, мастер не дождался окончания ответа, начал передачу?

b707
Offline
Зарегистрирован: 26.05.2017

rkit] </p> <p>[quote=b707 пишет:
rkit пишет:

 нафига сажать два tx на одну линию?

Чтобы пользоваться modbus? Шиной с принципом действия 1 мастер - много слейвов? Нет?


да, для "много" - согласен. Я имел в виду линию из только двух девайсов. Да и у ТС ветка называется "соединение ДВУХ МК"
В этом случае все должно работать

nik182
Offline
Зарегистрирован: 04.05.2015

rkit пишет:

Потому что если посадить два передатчика (tx) UART на одну линию. то они сгорят. Потому что один притянет к земле, другой к питанию.

Две ардуины спокойно бегают по modbus соединённые Tx-Rx Rx-Tx. Modbus всё равно как физически соединенны платы. Событие в библиотеке RTU происходят по приёму - отправке символа из uart. Но так можно соеденить только пару. Если хочется больше, то одного мастера можно Тх- на много Rx , а слейвам в Тх выдать по 1к резистору и после передачи ответа переключать выход Тх на вход. Но это надо библиотеку дописывать.    

rkit
Offline
Зарегистрирован: 23.11.2016

nik182 пишет:

rkit пишет:

Потому что если посадить два передатчика (tx) UART на одну линию. то они сгорят. Потому что один притянет к земле, другой к питанию.

Две ардуины спокойно бегают по modbus соединённые Tx-Rx Rx-Tx. Modbus всё равно как физически соединенны платы. Событие в библиотеке RTU происходят по приёму - отправке символа из uart. Но так можно соеденить только пару. Если хочется больше, то одного мастера можно Тх- на много Rx , а слейвам в Тх выдать по 1к резистору и после передачи ответа переключать выход Тх на вход. Но это надо библиотеку дописывать.    

В uart нет никакого переключения пина tx на вход. Это не входит ни в аппаратный стандарт, ни в возможности AVR. Можно только совсем отключить UART.

nik182
Offline
Зарегистрирован: 04.05.2015

Это да. Но библиотека работает и софтверным сериалом. А там любые возможности.  

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Если всё должно работать, то почему у меня не работает, кроме того ещё и горят пины? Схема простейшая, ошибок подключения нет.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Ну мы то никакую схему не видели ... Горят пины - однозначный косяк схемы или определения того где у вас TX и где RX.

Может одна из плат на 3.3 ?

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Komandir пишет:
Горят пины - однозначный косяк схемы или определения того где у вас TX и где RX.
Или что-то случилось, или одно из двух (с)

Проблема кроется в

-ДВ- пишет:
Подаю питание на одну из плат - начинает гореть диод питания на второй плате и она, даже пытается работать.
При последовательной подаче питания на одной из железяк будет превышен параметр ДШ

Voltage on any pin ......... -0.5V to Vcc+0.5V

Со всеми вытекающими последствиями.

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Ну какая схема? Четыре провода подсоединить к одной ардуинке и 4 ко второй, если с питанием от первой! Десять раз переподключал, экспериментировал. Не первый год и даже не 10-й занимаюсь электроникой. Если только на плате маркировка перепутана, так я всяко пробовал rx-rx, tx-tx, rx-tx, tx-rx. При правильном подключении начинает работать, даже данные передаёт, потом цифры на дисплее начинают меняться как попало и виснет. И отдельное питание делал. Заливал примеры от библиотеки, без подключения дисплея, для проверки. Такая же фигня. При всём том хаосе горят выводы rx-tx на nano. Одну спалил, перепаял МК с рабочей, тоже спалил.

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Andy пишет:

[При последовательной подаче питания на одной из железяк будет превышен параметр ДШ

Voltage on any pin ......... -0.5V to Vcc+0.5V

Со всеми вытекающими последствиями.

Поясни! Я с Меги, запитанной от 12 вольт,  подаю питание с пина +5 вольт на нано.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Питания на плате ещё нет, а по TX в RX уже может +5 прилететь 

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Komandir пишет:

Питания на плате ещё нет, а по TX в RX уже может +5 прилететь 

Через открытый транзистор высокого состояния и защитные диоды?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Питания нет - Vcc~0, а ограничение - Voltage on any pin ......... -0.5V to Vcc+0.5V

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Плата пытается запитаться от пина и весь ток шпарит через этот пин. Такой же ток бежит и через пин первой платы ...

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Поставить модули RX485 не проблема. Но ведь должно работать напрямую! 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Подавайте Vcc одновременно или TX и RX соединяйте после подачи питания на ОБЕ платы.

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Komandir пишет:

Плата пытается запитаться от пина и весь ток шпарит через этот пин. Такой же ток бежит и через пин первой платы ...

Но я ведь и от Меги запитывал нано, одновременно. Тоже не работает! Здесь-то не должно быть проблем по питанию.

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Komandir пишет:

 TX и RX соединяйте после подачи питания на ОБЕ платы.

и так делал!

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Видимо в библиотеке не предусмотрено прямое соединение, только через адаптеры :( Так может быть?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Просто Serial передача работает ?

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Komandir пишет:

Просто Serial передача работает ?

Между платами? Не проверял. Между компом и платими через эмуляторы, всё чешет отлично

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Я бы сначала проверил передачу на этих же пинах обычного Serial, а уж потом лез в другие протоколы.

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Ок! Попробую. Не думал, что всё так сложно будет. Вроде должно работать, как везде пишут в Интернете :(

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Попробую с адаптерами MAX485, если не пойдёт, начну с Serial

-ДВ-
Offline
Зарегистрирован: 12.05.2020

Ардуинка одна осталась - Мега. Надо пару чипов купить на nano

b707
Offline
Зарегистрирован: 26.05.2017

-ДВ- пишет:

Ок! Попробую. Не думал, что всё так сложно будет. Вроде должно работать, как везде пишут в Интернете :(

если у всех работает. а у одного нет - похоже, у этого "одного" с руками проблема :)

-ДВ-
Offline
Зарегистрирован: 12.05.2020

b707 пишет:

если у всех работает. а у одного нет - похоже, у этого "одного" с руками проблема :)

Если бы! Именно с этими библиотеками не видел рабочих проектов прямого соединения. С другими, вроде, работает. На уважаемом мною сайте, с самодельными библиотеками, работает.

Тем более в 4 проводах даже новичок не запутается. Я же написал выше, перепробовал всё! И правильное соединение rx-tx и неправильное. Питание - понятно не перепутаешь, сгорит всё.