stoker 0 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба Кто нибудь использовал Ethernet в приложениях реального времени? Необходимо не более чем за 1мсек передавать 1024 байта на простейшее исполнительное устройство - CPU и несколько цапов. Прога в виндах расчитывает данные для цапов и посылает пакет на сетевую карту, главное чтобы пакеты не терялись и задержка не превышала 1мсек. Увидел в инете такой вот Real-Time контроллер: http://www.prosoft.ru/products/brands/hilscher/374263/ Кто нибудь работал с таким? Можно ли вообще для такой задачи использовать встроенный в материнку сетевой контроллер совместно с CS8900A например? Посоветуйте, может есть (не)стандартные решения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба Прога в виндах расчитывает данные для цапов и посылает пакет на сетевую карту, главное чтобы пакеты не терялись и задержка не превышала 1мсек. А как, простите, Вы в винде обеспечиваете отсутствие неконтролируемых задержек? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба А как, простите, Вы в винде обеспечиваете отсутствие неконтролируемых задержек? Буду слать в потоке. Пробовал с УСБ в балке получалось порядка 0,3мсек в лучшем случае, в худшем более 10. А изохорный даёт 2,5мсек. Поэтому и подумал про Ethernet. Да и драйвер к тому Real Time контроллеру поставляется под винды с компонентом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба А если взять мышкой окошко и пошевелить? Никакой поток не поможет. Будете свой драйвер писать? Только толку, сетевые протоколы то не real-time в винде... Единственный способ - это заранее посылать пакеты из под винды, накапливать их в устройстве. А устройство должно говорить большому брату что у него близок к заполнению буфер, надо остановиться, и, соответственно, обратная ситуация. Т.е. отсчет миллисекундных тиков и точную выдачу берет на себя само устройство. Ну и загруженность сети надо смотреть. Хотя, конечно, средняя скорость ~1МБайт/с - это вроде и не скорость... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба А если взять мышкой окошко и пошевелить? Никакой поток не поможет. Будете свой драйвер писать? Этого я больше всего и боюсь... Только толку, сетевые протоколы то не real-time в винде... Единственный способ - это заранее посылать пакеты из под винды, накапливать их в устройстве. А устройство должно говорить большому брату что у него близок к заполнению буфер, надо остановиться, и, соответственно, обратная ситуация. Т.е. отсчет миллисекундных тиков и точную выдачу берет на себя само устройство. Ну и загруженность сети надо смотреть. Хотя, конечно, средняя скорость ~1МБайт/с - это вроде и не скорость... То что винда используется это к сожалению необходимость, как мне сказал програмист, алгоритм сложный и с ним справляется только топовый комп с 2-мя камнями. И скроее всего комп будет заточен только для прибора. В общем я пока оцениваю возможность передачи данных. Хочу все же узнать, юзал ли кто Real time контроллеры? Стит ли их покупать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vik0 0 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба Этого я больше всего и боюсь... То что винда используется это к сожалению необходимость, как мне сказал програмист, алгоритм сложный и с ним справляется только топовый комп с 2-мя камнями. А, простите, на "топовый комп с 2-мя камнями" становится только винда? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба А, простите, на "топовый комп с 2-мя камнями" становится только винда? А если, то, что поставить будет называться просто "Линукс", то сразу только от самого этого факта свершится чудо :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dch 0 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба а какой отклик сейчас обеспечивает XP ? Там помоему не все так плохо, в NT4 таймер тикал раз в миллисекунду, другое дело что производительность Etherneta была около тысячи пакетов в секунду, правда тогда был ходовым 10 мегабитный Ethernet. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 25 октября, 2008 Опубликовано 25 октября, 2008 · Жалоба А, простите, на "топовый комп с 2-мя камнями" становится только винда? А если, то, что поставить будет называться просто "Линукс", то сразу только от самого этого факта свершится чудо :) К сожалению, у нас пока нет людей умеющих работать и программировать под Линукс, поэтому остаётся только винда. а какой отклик сейчас обеспечивает XP ? Там помоему не все так плохо, в NT4 таймер тикал раз в миллисекунду, другое дело что производительность Etherneta была около тысячи пакетов в секунду, правда тогда был ходовым 10 мегабитный Ethernet. Я правда не спец в высоком программировании, но кажись порядка 16 мсек. это реакция на события виндой. (могу правда и ошибаться). Другое дело если делать поток. В потоке если что то делать, то вроде все происходит гораздо быстрее, но жутко не синхронно, как уже говорилось, шевеление окна мышой тормозило поток. Наверное как то можно повесить поток на отдельное ядро, тока пока непонятно как это сделать. Проверял через queryperformancecounter. Оказалось что драйверы устройств имеют в большинстве приличный отклик, например драйвер для FTDI имел отклик порядка 0,35мсек. У CyUSB до 0,15мсек доходило. Думается у Etherneta может быть и быстрее. Остаётся заставить винду работать быстрее. В инете видел что для реал тайм приложений есть надстройка для виндов - INtime 3.0, кто нибудь работал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 25 октября, 2008 Опубликовано 25 октября, 2008 · Жалоба К сожалению, у нас пока нет людей умеющих работать и программировать под Линукс, поэтому остаётся только винда. Вы ничего не поняли :(. Не сожалейте - ничего принципиально не изменится. Либо для Win, либо Linux так или иначе придется пробовать заниматься программированием сильнозоаточенных под Вашу задачу "драйверов". Поскольку любые приложения по любому идут лесом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aprox 0 25 октября, 2008 Опубликовано 25 октября, 2008 · Жалоба Единственный способ - это заранее посылать пакеты из под винды, накапливать их в устройстве. А устройство должно говорить большому брату что у него близок к заполнению буфер, надо остановиться, и, соответственно, обратная ситуация. Т.е. отсчет миллисекундных тиков и точную выдачу берет на себя само устройство. То что винда используется это к сожалению необходимость, как мне сказал програмист, алгоритм сложный и с ним справляется только топовый комп с 2-мя камнями. И скроее всего комп будет заточен только для прибора. В общем я пока оцениваю возможность передачи данных. Хочу все же узнать, юзал ли кто Real time контроллеры? Стит ли их покупать? Советую прислушаться к словам Rst7. Ни в виндах, ни в линуксе вы не победите отсутствие реального времени и не добьетесь равномерной посылки пакетов. Выход- на приемной стороне делать буфер пакетов и уже оттуда выгребать равномерно на ЦАПы. Потребуется обратная связь на ПК в виде старт/cтоп управляющих пакетов по тому-же самому Ethernet. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 25 октября, 2008 Опубликовано 25 октября, 2008 · Жалоба Советую прислушаться к словам Rst7. Ни в виндах, ни в линуксе вы не победите отсутствие реального времени и не добьетесь равномерной посылки пакетов. Выход- на приемной стороне делать буфер пакетов и уже оттуда выгребать равномерно на ЦАПы. Потребуется обратная связь на ПК в виде старт/cтоп управляющих пакетов по тому-же самому Ethernet. Равномерной посылки мне добиваться и не нужно, главное обеспечить критерий: вермя м/у 2 пакетами < 1мс. Точной синхронизацией будет заниматься сам прибор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 6 25 октября, 2008 Опубликовано 25 октября, 2008 · Жалоба Ну не гарантирует Вам в винде никто время между двумя пакетами < 1ms, можно надеятся, что 40 пакетов будут отправлены за время, существенно меньше 40 ms. Гарантировать можно, что 1000 пакетов отправятся быстрее 1000 ms. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
net 0 25 октября, 2008 Опубликовано 25 октября, 2008 · Жалоба Ну не гарантирует Вам в винде никто время между двумя пакетами < 1ms, можно надеятся, что 40 пакетов будут отправлены за время, существенно меньше 40 ms. Гарантировать можно, что 1000 пакетов отправятся быстрее 1000 ms. ну не совсем так - для виды есть надстройка реал тайм гарантирующая доставки и время реакции - но это деньги и довольно приличные но в целом вы правы надо искать какоето другое решение для решения поставленной задачи с учетом ваших ресурсов но надо уточнять постановку задачи потому как просто пакеты отсылать это не задача или ее можно решить промежуточным железом которое будет это делать с необходимой точностью Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dch 0 26 октября, 2008 Опубликовано 26 октября, 2008 (изменено) · Жалоба драйвер для FTDI имел отклик порядка 0,35мсек. У CyUSB до 0,15мсек доходило. обычно так и пытаются сделать, оптимально конечно читать ацп прямо драйвером Ethernet-а :-) Изменено 26 октября, 2008 пользователем dch Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться