несколько sync/async RS-232 -> UDP

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
FoxBat
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вт ноя 02, 2010 22:57:01
Откуда: Рига

несколько sync/async RS-232 -> UDP

Сообщение FoxBat »

Здравствуйте!
Подскажите, пожалуйста, правильно ли я мыслю.
Задача: есть несколько устройств (измерительные приборы), которые передают данные по протоколу RS-232, один из них работает в обычном асинхронном режиме (типа COM-порт), другой же в синхронном (HDLC-кадры). У меня есть задумка передавать эти данные по ethernet, в виде UDP пакетов, а потом обрабатывать на компьютере. Передавать что-либо от компьютера к устройствам ненужно, т.е. односторонняя передача.
На данный момент вижу такую реализацию:
вход1-->буферFIFO-\
вход2-->буферFIFO--->(ATMegaXXX)--<SPI-интерфейс>-->(модуль ENC28J60)--> TCP/IP сеть (UDP)
входN-->буферFIFO-/
Алгоритм вижу такой: Буфера-FIFO принимают данные от устройств, а микроконтроллер поочередно опрашивает их и передает содержимое по SPI на сетевой модуль.
Что использовать в качестве буферов? какие микросхемы? Необходимая скорость работы RS-232 в асинхронном/синхронном режиме 9,6-128Kbit. реальная скорость передачи данных меньше.
Правилен ли мой подход в принципе? Или правильнее использовать один микроконтроллер без входного буфера, и один сетевой модуль на каждый канал? Есть ли смысл использовать мегу с двумя USART? В перспективе возможно увеличение каналов мониторинга до, скажем, десятка. Как быть с точки зрения рационализации?
Реклама
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: несколько sync/async RS-232 -> UDP

Сообщение uk8amk »

Непонятно, зачем вообще здесь нужен еще какой-то буфер. Разве у атмеги нету своей памяти чтобы буферизовать приходящие данные? А вообще для такого кол-ва ком-портов я бы взял камушек посерьезнее типа многоножки STM32. У старших моделей и 5 USARTов и Ethernet на борту есть.
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: несколько sync/async RS-232 -> UDP

Сообщение oleg110592 »

FoxBat писал(а):которые передают данные по протоколу RS-232
Передают по запросу или когда им вздумается? Если по запросу, что логично, то можно поставить мультиплексор для RS-232 (видел такое самодельное). А имхо лучше каждому прибору 485 интерфейс. И компьютеру 485 интерфейс и не надо эзернета.
FoxBat
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вт ноя 02, 2010 22:57:01
Откуда: Рига

Re: несколько sync/async RS-232 -> UDP

Сообщение FoxBat »

uk8amk писал(а):Непонятно, зачем вообще здесь нужен еще какой-то буфер. Разве у атмеги нету своей памяти чтобы буферизовать приходящие данные?

т.е. что вы предлагаете?
uk8amk писал(а):А вообще для такого кол-ва ком-портов я бы взял камушек посерьезнее типа многоножки STM32. У старших моделей и 5 USARTов и Ethernet на борту есть.
Это, возможно, будет следующая моя ступенька.
Последний раз редактировалось FoxBat Пт июн 15, 2012 23:33:55, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
FoxBat
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вт ноя 02, 2010 22:57:01
Откуда: Рига

Re: несколько sync/async RS-232 -> UDP

Сообщение FoxBat »

oleg110592 писал(а):Передают по запросу или когда им вздумается?
Передают, когда вздумается.
oleg110592 писал(а):А имхо лучше каждому прибору 485 интерфейс.
Нет, нужен именно езернет
Последний раз редактировалось FoxBat Пт июн 15, 2012 23:35:00, всего редактировалось 1 раз.
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: несколько sync/async RS-232 -> UDP

Сообщение oleg110592 »

Ну тогда или действительно STM32 (или другой микроконтроллер) с нужным количеством UARTов. Или на каждый прибор по меге (например мега48) и одна центральная мега, забираюшая данные с других мег, например по SPI и отправляющая эти данные по эзернету.
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: несколько sync/async RS-232 -> UDP

Сообщение Kavka »

oleg110592, поддерживаю. Вот только мега48 зачем?
Тут и тини2313 хватит за глаза. 128 байт ОЗУ - половину смело можно под FIFO буфер отдать (о котором тут упоминалось). Приём/передачу сделать на прерываниях.
Т.е. несколько тинек2313 подчинёнными (slave) на SPI. SPI запустить на 1...4МГц, чтобы заведомо успевать обмениваться. Ну и что-нибудь вроде меги16 (или поболее) в качестве центрального, главного на SPI, и передающего по езернету. Если это будет на одной плате, ну или достаточно близко размещено, то всё очень даже может получиться.

Вот только по езернету просто так? Или по tcp/ip? Если последнее, то может и меги32 не хватить. (что-то я не помню ТТХ софта TCP/IP для маленьких МК, поправьте кто знает)
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
FoxBat
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вт ноя 02, 2010 22:57:01
Откуда: Рига

Re: несколько sync/async RS-232 -> UDP

Сообщение FoxBat »

Спасибо, идея понятна. Думал, может есть готовые FIFO с буферной памятью.
Kavka писал(а):Вот только по езернету просто так? Или по tcp/ip? Если последнее, то может и меги32 не хватить. (что-то я не помню ТТХ софта TCP/IP для маленьких МК, поправьте кто знает)
Думаю, по UDP. Тут вот в 88-ую мегу целый HTTP-сервер запихали.
Последний раз редактировалось FoxBat Пт июн 15, 2012 23:35:28, всего редактировалось 1 раз.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: несколько sync/async RS-232 -> UDP

Сообщение oleg110592 »

Вот только мега48 зачем
у нас сложилось так что мега48 дешевле тиней (кроме 13) а USART tiny2313 не пересекается с ли с SPI? Нет, посмотрел - с I2C пересекается. Не помню - чем-то SPI в тини2313 мне не подошел.
а для эзернета я б применил что-то типа готового модуля WIZ810MJ - подключал такой к меге по SPI - прекрасно работает.
FoxBat
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вт ноя 02, 2010 22:57:01
Откуда: Рига

Re: несколько sync/async RS-232 -> UDP

Сообщение FoxBat »

oleg110592 писал(а):а для эзернета я б применил что-то типа готового модуля WIZ810MJ
А чем плох ENC28J60?
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: несколько sync/async RS-232 -> UDP

Сообщение oleg110592 »

W5100 аппаратно реализует TCP, UDP, IPv4, ICMP, ARP, IGMP и MAC.
скорость как 100 так и 10 (автоопределение), потребление 185mA(3.3V)
ENC28J60 я не пробовал, но вначале почитал интернет - отзывы - глючная, много жрет, греется
ну и это почитал:
Существуют два основных варианта шилдов для работы с Ethernet — на основе старого доброго чипа ENC28J60 от Microchip и более совершенного W5100 от Wiznet. Оба решения используют для обмена шину SPI, отнимая всего четыре пина Arduino. Но ENC28J60 появился много раньше и явно проигрывает продвинутому W5100: только 10 Мбит/с, нет аппаратной поддержки IP, UDP, TCP. Кроме того, W5100 позволяет работать с четырьмя сокетами (что означает поддержку до четырех одновременных соединений).
В общем, настоятельно рекомендую использовать именно W5100, потому что он существенно экономит ключевой ресурс микроконтроллера — оперативную память (SRAM), которую приходится экономить (у Atmega328 — всего один килобайт). Ну и все остальные преимущества предобработки налицо: пока W5100 сам переспрашивает пакеты по протоколу TCP и считает контрольные суммы заголовков, Atmegа может спокойно заниматься более важными вещами.(c)

Ну и цена за готовый модуль, у буржуев - 19.50$ http://www.saelig.com/BRD/ETH027.htm
еще, правда не пробовали закупать - пока не знаю во сколько обойдется с доставкой
FoxBat
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вт ноя 02, 2010 22:57:01
Откуда: Рига

Re: несколько sync/async RS-232 -> UDP

Сообщение FoxBat »

W5100 аппаратно реализует TCP, UDP, IPv4, ICMP, ARP, IGMP и MAC.

Спасибо за инфу!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»