|
Организация передачи потока данных АЦП через Ethernet (UDP) - как не изобретать велосипед?, Как наиболее стандартно это сделать? |
|
|
|
Nov 2 2013, 09:12
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Здравствуйте,
Есть такая задачка: 8-канальный 24-битный АЦП выдает данные 1000 сэмплов в секунду. То есть трафик полезных передаваемых данных: 8 каналов * 24 бита * 1000 сэмплов = 192 Килобита в секунду (плюс еще мелочь вроде текущего времени)
Нужно передавать этот поток в канал Ethernet. Супернадежность не нужна, потеря фрейма не страшна. По всем критериям UDP подходит. генерировать фреймы проблемы не вижу, проблема как это сделать так, чтобы с принимающей стороны это было просто принимать и обрабатывать.
Может быть, есть более-менее стандартные (популярные) методики для передачи подобной информации, например, какие-нибудь АЦП модуль с Езернетом, и на них известен формат фрейма? Или, может быть, несложно сделать так чтобы со стороны принимающего компьютера это выглядело как удаленный виртуальный COM-порт (с уникальным IP и port) ?
Какие подводные камни могут быть? возможно ли, чтобы несколько приемников(компьютеров) принимали эти UDP дэйтаграммы (вроде бы да) ?
например, нашел у lcard.ru похожие устройства с UDP.
|
|
|
|
|
 |
Ответов
|
Nov 2 2013, 09:45
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(Ruslan1 @ Nov 2 2013, 12:12)  Супернадежность не нужна, потеря фрейма не страшна. По всем критериям UDP подходит. Не подходит. На первом же коммутаторе два пакета UDP вполне себе могут "поменяться местами", то есть отправленный позже пакет придёт раньше. Думаю, что для АЦП данных это критично.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Nov 2 2013, 10:47
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(iosifk @ Nov 2 2013, 12:18)  Вот только как будете разруливать ситуацию, когда скажем пакет "поздний" придет, а "ранний" потеряется... Ждать? Не ждать, так тогда как? Ну да, ну да, согласен. Это вечная проблема (наряду с переводом времени назад). Ограничил (себе) задачу, буду просто на экран график в онлайне выводить. Для надежной передачи есть файлы с данными и по FTP доступны, так что объявил этот UDP поток онлайн интерфейсом для тестирования-наладки. В-общем, в таком виде все просто: храню историю последних 10 секунд, если точка есть- засвечиваю на графике, если нет- то ее не видно. Похоже, по сложности реализации конструкция выходного дня получается, искать чужой формат фрейма расхотелось, быстрей свое самому написать в билдере
|
|
|
|
|
May 16 2014, 08:58
|
Группа: Новичок
Сообщений: 2
Регистрация: 11-04-11
Пользователь №: 64 305

|
Добрый день! Скажите, у вас всё-таки получилось организовать передачу данных с АЦП по Ethernet или нет?
|
|
|
|
|
May 17 2014, 03:33
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(reijn @ May 16 2014, 10:58)  Скажите, у вас всё-таки получилось организовать передачу данных с АЦП по Ethernet или нет? Ну, вроде бы да  у меня 8 каналов 24-битных АЦП, 1 килосемпл. то есть поток данных 24 килобайта в секунду. Сделал на UDP, каждые полсекунды новая пачка пакетов. Длина пакета- 2400 байт данных плюс заголовок, позволяющий контролировать целостность данных (номер пакета, время первого отсчета и тд). Работает. В контроллере нужно иметь буфер пакетов, позволяющий "пережить без потерь" время, когда линия занята (зависит от загрузки Езернета). Трудности были и со стороны компьютера- стандартный путь использования Матлаба для приема UDP не подошел, пакеты иногда терялись. Написал свое под C++Билдером и проблема ушла.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|