реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Ethernet, и real-time
stoker
сообщение Oct 27 2008, 09:18
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Вот провел тест, слал пакеты по 1024Б через CyUSB на УСБ в потоке, при этом считал время на посылку 1 пакета. На 2 Гига данных посланных в драйвер было насчитано 18-20! посылок со временем >1мсек, к сожалению из этих 18 были пакеты с задержкой и в 100мсек. Приоритет на поток был самым высоким, мышкой ничего не двигал, точнее сначала подвигал, потом устал. Интересно, есть ли у кого подобного плана статистика на ethernet драйвер? Или хотя бы время отклика?

Цитата
...
ну не совсем так - для виды есть надстройка реал тайм гарантирующая доставки и время реакции - но это деньги и довольно приличные
...

Собственно я и задумываюсь по поводу реал тайм надстройки для виндов. Использование виндов это скорее всего быстрая возможность проверить работоспособность. В принципе, как мне сказали, пакет пришедший с запозданием на крайний случай можно проигнорировать. В дальнейшем наверное нужно будет искать другую концепцию. Наверное это будет куча ДСП.
Go to the top of the page
 
+Quote Post
uriy
сообщение Oct 27 2008, 10:16
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Я плевал с внешнего устройства на PC пакеты по 504 байта через каждые 19 мс. Сниффер (Wireshark) показывал время между приходами пакетов 19+-3мс. Правда не могу утверждать насколько корректно он показывает время и на каком уровне его достает.
Go to the top of the page
 
+Quote Post
stoker
сообщение Oct 27 2008, 10:45
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Цитата(uriy @ Oct 27 2008, 13:16) *
Я плевал с внешнего устройства на PC пакеты по 504 байта через каждые 19 мс. Сниффер (Wireshark) показывал время между приходами пакетов 19+-3мс. Правда не могу утверждать насколько корректно он показывает время и на каком уровне его достает.

Ясно. Не густо, а это канал какой был? 10МБит?
Go to the top of the page
 
+Quote Post
uriy
сообщение Oct 27 2008, 16:03
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
какой был? 10МБит?
Нет. 100 Мбит.
Go to the top of the page
 
+Quote Post
Aprox
сообщение Oct 28 2008, 15:53
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(stoker @ Oct 25 2008, 21:32) *
Равномерной посылки мне добиваться и не нужно, главное обеспечить критерий: вермя м/у 2 пакетами < 1мс. Точной синхронизацией будет заниматься сам прибор.
В этом случае следует отказаться от готовых компонентов и GUI в программе. Можно попробовать библиотеку драйверов WinCap. Я с ней работал на прием пакетов в составе снифера WireShark. Если отключить всякое графическое обновление в снифере, то он без пропусков принимает пакеты 1.5К, следующие с интервалом 7..8 мкс(микросекунд!). Если включить обновление графики в окне, то через примерно десяток пакетов, появляются паузы 1мс(миллисекунда). Это винды отбирают на GUI. В библиотеке есть возможность и отсылать пакеты,- я пробовал с Raw пакетами. Получилось. Но максимальную скорость отправки пакетов не проверял. Мне кажется, если на прием неплохо работает, то и на передачу есть неплохие шансы. Главное, отключить виндовое GUI.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Oct 28 2008, 17:28
Сообщение #21


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Да легко вы сделаете этот "realtime"
На компе тупо шлете в сокет сколько влезает.
А в своем контроллере дайте Ethernet MAC подсистеме команду PAUSE на заданное время пока не готовы принять следующий пакет. По истечении времени комп сразу же прецизионно вышлет че у него там в буфере. От виндов это не зависит.
Естественно при этом, что ваш MAC должен поддерживать выдачу команд Pause.
И смотрите чтоб сетевая карта компа позволяла управлять параметрами Flow Control.
Т.е. управление потоком есть на физическом уровне Ethernet-а и голову ломать не надо.

А реальные realtime приложения на Ethernet-e борятся с коллизиями на линии которых в вашем случае видимо не будет.


Цитата(stoker @ Oct 24 2008, 17:34) *
Кто нибудь использовал Ethernet в приложениях реального времени?
Необходимо не более чем за 1мсек передавать 1024 байта на простейшее исполнительное устройство - CPU и несколько цапов. Прога в виндах расчитывает данные для цапов и посылает пакет на сетевую карту, главное чтобы пакеты не терялись и задержка не превышала 1мсек. Увидел в инете такой вот Real-Time контроллер: http://www.prosoft.ru/products/brands/hilscher/374263/
Кто нибудь работал с таким? Можно ли вообще для такой задачи использовать встроенный в материнку сетевой контроллер совместно с CS8900A например? Посоветуйте, может есть (не)стандартные решения?
Go to the top of the page
 
+Quote Post
uriy
сообщение Oct 28 2008, 17:34
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Вы действительно не видите больше способа для синхронизации как слать пакеты с жестко определенными задержками? Не подойдет ли вам такой вариант - снабжать пакеты временными метками и порядковыми номерами и соотвественно собирать в небольшой буфер в вашем устройстве и анализировать.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 28 2008, 20:42
Сообщение #23


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(uriy @ Oct 28 2008, 19:34) *
Вы действительно не видите больше способа для синхронизации как слать пакеты с жестко определенными задержками? Не подойдет ли вам такой вариант - снабжать пакеты временными метками и порядковыми номерами и соотвественно собирать в небольшой буфер в вашем устройстве и анализировать.

Смысл иметь двое несинхронных часов? В компе и в железяке? Не лучше ли одни просто в железке?

А вот на фреймы pause я бы не закладывался.
Сегодня работает, а завтра попадется свич с неправильным бутстрепом и не будет он обрабатывать флоуконтрол. И начнутся танцы с бубном при луне. Лучше организовать свой флоуконтрол через тот же UDP.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
stoker
сообщение Oct 29 2008, 10:15
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Цитата(Aprox @ Oct 28 2008, 18:53) *
В этом случае следует отказаться от готовых компонентов и GUI в программе. Можно попробовать библиотеку драйверов WinCap. Я с ней работал на прием пакетов в составе снифера WireShark. Если отключить всякое графическое обновление в снифере, то он без пропусков принимает пакеты 1.5К, следующие с интервалом 7..8 мкс(микросекунд!). Если включить обновление графики в окне, то через примерно десяток пакетов, появляются паузы 1мс(миллисекунда). Это винды отбирают на GUI. В библиотеке есть возможность и отсылать пакеты,- я пробовал с Raw пакетами. Получилось. Но максимальную скорость отправки пакетов не проверял. Мне кажется, если на прием неплохо работает, то и на передачу есть неплохие шансы. Главное, отключить виндовое GUI.

Во, вот это мне уже нравится. В действительности GUI мне и не нужен. А можно по подробнее про WinCap? Интервал между пакетами сильно зависит от величины канала? По сути мне гигабит не нужен, думаю вообще 10М должно хватить. Драйвер работает со встроенными сетевухами или есть какие то ограничения? Вообще, спасибо за инфу, буду разбираться...

Цитата(AlexandrY @ Oct 28 2008, 20:28) *
Да легко вы сделаете этот "realtime"
На компе тупо шлете в сокет сколько влезает.
А в своем контроллере дайте Ethernet MAC подсистеме команду PAUSE на заданное время пока не готовы принять следующий пакет. По истечении времени комп сразу же прецизионно вышлет че у него там в буфере. От виндов это не зависит.
Естественно при этом, что ваш MAC должен поддерживать выдачу команд Pause.
И смотрите чтоб сетевая карта компа позволяла управлять параметрами Flow Control.
Т.е. управление потоком есть на физическом уровне Ethernet-а и голову ломать не надо.

А реальные realtime приложения на Ethernet-e борятся с коллизиями на линии которых в вашем случае видимо не будет.

Да, действительно больше на линии сидеть никто не будет. Насчет Pause подумаю, я ещё правда не выбрал контроллер, так что приму на заметку, спасибо. Вообще в протоколах Ethernet тока начал разбираться, так что не ругайте, можно ли обойти физикой и маком и не организовывать стек? Валяется у меня платка на CS8900A хочу подрубить ее к Spartan 3, FPGA просто тупо будет выцеплять данные которые будут приходить с компа. По идее должно быть все как можно прощще, так вообще возможно?

Цитата(uriy @ Oct 28 2008, 20:34) *
Вы действительно не видите больше способа для синхронизации как слать пакеты с жестко определенными задержками? Не подойдет ли вам такой вариант - снабжать пакеты временными метками и порядковыми номерами и соотвественно собирать в небольшой буфер в вашем устройстве и анализировать.

Ну изначально я так и думал, снабжать пакеты временными метками, точнее порядковыми номерами, ну а потом отсылать по таймеру. Поэтому от компа мне и не требуется четкой синхронности посыла, главное чтобы задержек больше 1 мсек не было.

Цитата(Rst7 @ Oct 28 2008, 23:42) *
Смысл иметь двое несинхронных часов? В компе и в железяке? Не лучше ли одни просто в железке?
А вот на фреймы pause я бы не закладывался.
Сегодня работает, а завтра попадется свич с неправильным бутстрепом и не будет он обрабатывать флоуконтрол. И начнутся танцы с бубном при луне. Лучше организовать свой флоуконтрол через тот же UDP.

Ну в компе таймера как такового нету, там стоит плата на которую поступают кадры с частотой 1 Кгц, плата кидает данные прямо в память, потом данные обрабатываются (около 100мкс) и отправляются в устройство.
Go to the top of the page
 
+Quote Post
dch
сообщение Oct 29 2008, 10:36
Сообщение #25


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(stoker @ Oct 29 2008, 13:15) *
снабжать пакеты временными метками, точнее порядковыми номерами, ну а потом отсылать по таймеру.

там есть протокол синхронизации времени между двумя компами весьма изощренный - который усредняет полученные временные метки, не очень страшно что на пару сотен пакетов синхронизации времени несколько пакетов будет с задержкой в раз десять больше чем в среднем. Поэтому можно считать что время тикает синхронно между компами, если конечно этот сервис включен.
Go to the top of the page
 
+Quote Post
Aprox
сообщение Oct 29 2008, 10:54
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(stoker @ Oct 29 2008, 13:15) *
Во, вот это мне уже нравится. В действительности GUI мне и не нужен. А можно по подробнее про WinCap? Интервал между пакетами сильно зависит от величины канала? По сути мне гигабит не нужен, думаю вообще 10М должно хватить. Драйвер работает со встроенными сетевухами или есть какие то ограничения? Вообще, спасибо за инфу, буду разбираться...
Название я слегка перепутал, правильно Winpcap. Берут бесплатно здесь. Там же все хелпы и примеры. Очень просто делается обмен Raw-пакетами через обычные сетевые платы в ПК. Поскольку стек протоколов и сокеты виндов не используются, то вполне возможно, что Raw-пакеты удастся отсылать с гарантированным периодом 1mc.
Что же касается выбора контроллера на приемной стороне, то вам почти наверняка подойдет этот девайс, на котором легко делается обмен Raw пакетами вообще без всякого стека протоколов.
Go to the top of the page
 
+Quote Post
stoker
сообщение Nov 12 2008, 11:56
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Большое спасибо всем за помощь, пока думаем в сторону RTX надстройки.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01438 секунд с 7
ELECTRONIX ©2004-2016