несколько sync/async RS-232 -> UDP
несколько sync/async RS-232 -> UDP
Здравствуйте!
Подскажите, пожалуйста, правильно ли я мыслю.
Задача: есть несколько устройств (измерительные приборы), которые передают данные по протоколу 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? В перспективе возможно увеличение каналов мониторинга до, скажем, десятка. Как быть с точки зрения рационализации?
Подскажите, пожалуйста, правильно ли я мыслю.
Задача: есть несколько устройств (измерительные приборы), которые передают данные по протоколу 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
Непонятно, зачем вообще здесь нужен еще какой-то буфер. Разве у атмеги нету своей памяти чтобы буферизовать приходящие данные? А вообще для такого кол-ва ком-портов я бы взял камушек посерьезнее типа многоножки STM32. У старших моделей и 5 USARTов и Ethernet на борту есть.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: несколько sync/async RS-232 -> UDP
Передают по запросу или когда им вздумается? Если по запросу, что логично, то можно поставить мультиплексор для RS-232 (видел такое самодельное). А имхо лучше каждому прибору 485 интерфейс. И компьютеру 485 интерфейс и не надо эзернета.FoxBat писал(а):которые передают данные по протоколу RS-232
Re: несколько sync/async RS-232 -> UDP
uk8amk писал(а):Непонятно, зачем вообще здесь нужен еще какой-то буфер. Разве у атмеги нету своей памяти чтобы буферизовать приходящие данные?
т.е. что вы предлагаете?
Это, возможно, будет следующая моя ступенька.uk8amk писал(а):А вообще для такого кол-ва ком-портов я бы взял камушек посерьезнее типа многоножки STM32. У старших моделей и 5 USARTов и Ethernet на борту есть.
Последний раз редактировалось FoxBat Пт июн 15, 2012 23:33:55, всего редактировалось 1 раз.
Re: несколько sync/async RS-232 -> UDP
Передают, когда вздумается.oleg110592 писал(а):Передают по запросу или когда им вздумается?
Нет, нужен именно езернетoleg110592 писал(а):А имхо лучше каждому прибору 485 интерфейс.
Последний раз редактировалось FoxBat Пт июн 15, 2012 23:35:00, всего редактировалось 1 раз.
- Реклама
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: несколько sync/async RS-232 -> UDP
Ну тогда или действительно STM32 (или другой микроконтроллер) с нужным количеством UARTов. Или на каждый прибор по меге (например мега48) и одна центральная мега, забираюшая данные с других мег, например по SPI и отправляющая эти данные по эзернету.
Re: несколько sync/async RS-232 -> UDP
oleg110592, поддерживаю. Вот только мега48 зачем?
Тут и тини2313 хватит за глаза. 128 байт ОЗУ - половину смело можно под FIFO буфер отдать (о котором тут упоминалось). Приём/передачу сделать на прерываниях.
Т.е. несколько тинек2313 подчинёнными (slave) на SPI. SPI запустить на 1...4МГц, чтобы заведомо успевать обмениваться. Ну и что-нибудь вроде меги16 (или поболее) в качестве центрального, главного на SPI, и передающего по езернету. Если это будет на одной плате, ну или достаточно близко размещено, то всё очень даже может получиться.
Вот только по езернету просто так? Или по tcp/ip? Если последнее, то может и меги32 не хватить. (что-то я не помню ТТХ софта TCP/IP для маленьких МК, поправьте кто знает)
Тут и тини2313 хватит за глаза. 128 байт ОЗУ - половину смело можно под FIFO буфер отдать (о котором тут упоминалось). Приём/передачу сделать на прерываниях.
Т.е. несколько тинек2313 подчинёнными (slave) на SPI. SPI запустить на 1...4МГц, чтобы заведомо успевать обмениваться. Ну и что-нибудь вроде меги16 (или поболее) в качестве центрального, главного на SPI, и передающего по езернету. Если это будет на одной плате, ну или достаточно близко размещено, то всё очень даже может получиться.
Вот только по езернету просто так? Или по tcp/ip? Если последнее, то может и меги32 не хватить. (что-то я не помню ТТХ софта TCP/IP для маленьких МК, поправьте кто знает)
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: несколько sync/async RS-232 -> UDP
Спасибо, идея понятна. Думал, может есть готовые FIFO с буферной памятью.
Думаю, по UDP. Тут вот в 88-ую мегу целый HTTP-сервер запихали.Kavka писал(а):Вот только по езернету просто так? Или по tcp/ip? Если последнее, то может и меги32 не хватить. (что-то я не помню ТТХ софта TCP/IP для маленьких МК, поправьте кто знает)
Последний раз редактировалось FoxBat Пт июн 15, 2012 23:35:28, всего редактировалось 1 раз.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: несколько sync/async RS-232 -> UDP
Вот только мега48 зачем
у нас сложилось так что мега48 дешевле тиней (кроме 13) а USART tiny2313 не пересекается с ли с SPI? Нет, посмотрел - с I2C пересекается. Не помню - чем-то SPI в тини2313 мне не подошел.
а для эзернета я б применил что-то типа готового модуля WIZ810MJ - подключал такой к меге по SPI - прекрасно работает.
у нас сложилось так что мега48 дешевле тиней (кроме 13) а USART tiny2313 не пересекается с ли с SPI? Нет, посмотрел - с I2C пересекается. Не помню - чем-то SPI в тини2313 мне не подошел.
а для эзернета я б применил что-то типа готового модуля WIZ810MJ - подключал такой к меге по SPI - прекрасно работает.
Re: несколько sync/async RS-232 -> UDP
А чем плох ENC28J60?oleg110592 писал(а):а для эзернета я б применил что-то типа готового модуля WIZ810MJ
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: несколько sync/async RS-232 -> UDP
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
еще, правда не пробовали закупать - пока не знаю во сколько обойдется с доставкой
скорость как 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
еще, правда не пробовали закупать - пока не знаю во сколько обойдется с доставкой
Re: несколько sync/async RS-232 -> UDP
W5100 аппаратно реализует TCP, UDP, IPv4, ICMP, ARP, IGMP и MAC.
Спасибо за инфу!


