Перейти к содержанию
    

Кто нибудь использовал Ethernet в приложениях реального времени?

Необходимо не более чем за 1мсек передавать 1024 байта на простейшее исполнительное устройство - CPU и несколько цапов. Прога в виндах расчитывает данные для цапов и посылает пакет на сетевую карту, главное чтобы пакеты не терялись и задержка не превышала 1мсек. Увидел в инете такой вот Real-Time контроллер: http://www.prosoft.ru/products/brands/hilscher/374263/

Кто нибудь работал с таким? Можно ли вообще для такой задачи использовать встроенный в материнку сетевой контроллер совместно с CS8900A например? Посоветуйте, может есть (не)стандартные решения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

А как, простите, Вы в винде обеспечиваете отсутствие неконтролируемых задержек?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как, простите, Вы в винде обеспечиваете отсутствие неконтролируемых задержек?

Буду слать в потоке. Пробовал с УСБ в балке получалось порядка 0,3мсек в лучшем случае, в худшем более 10. А изохорный даёт 2,5мсек. Поэтому и подумал про Ethernet. Да и драйвер к тому Real Time контроллеру поставляется под винды с компонентом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если взять мышкой окошко и пошевелить? Никакой поток не поможет. Будете свой драйвер писать? Только толку, сетевые протоколы то не real-time в винде...

 

Единственный способ - это заранее посылать пакеты из под винды, накапливать их в устройстве. А устройство должно говорить большому брату что у него близок к заполнению буфер, надо остановиться, и, соответственно, обратная ситуация. Т.е. отсчет миллисекундных тиков и точную выдачу берет на себя само устройство.

 

Ну и загруженность сети надо смотреть. Хотя, конечно, средняя скорость ~1МБайт/с - это вроде и не скорость...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если взять мышкой окошко и пошевелить? Никакой поток не поможет. Будете свой драйвер писать?

Этого я больше всего и боюсь...

 

 

Только толку, сетевые протоколы то не real-time в винде...

 

Единственный способ - это заранее посылать пакеты из под винды, накапливать их в устройстве. А устройство должно говорить большому брату что у него близок к заполнению буфер, надо остановиться, и, соответственно, обратная ситуация. Т.е. отсчет миллисекундных тиков и точную выдачу берет на себя само устройство.

 

Ну и загруженность сети надо смотреть. Хотя, конечно, средняя скорость ~1МБайт/с - это вроде и не скорость...

То что винда используется это к сожалению необходимость, как мне сказал програмист, алгоритм сложный и с ним справляется только топовый комп с 2-мя камнями. И скроее всего комп будет заточен только для прибора. В общем я пока оцениваю возможность передачи данных.

Хочу все же узнать, юзал ли кто Real time контроллеры? Стит ли их покупать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этого я больше всего и боюсь...

То что винда используется это к сожалению необходимость, как мне сказал програмист, алгоритм сложный и с ним справляется только топовый комп с 2-мя камнями.

А, простите, на "топовый комп с 2-мя камнями" становится только винда?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А, простите, на "топовый комп с 2-мя камнями" становится только винда?

А если, то, что поставить будет называться просто "Линукс", то сразу только от самого этого факта свершится чудо :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а какой отклик сейчас обеспечивает XP ? Там помоему не все так плохо, в NT4 таймер тикал раз в миллисекунду, другое дело что производительность Etherneta была около тысячи пакетов в секунду, правда тогда был ходовым 10 мегабитный Ethernet.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А, простите, на "топовый комп с 2-мя камнями" становится только винда?

А если, то, что поставить будет называться просто "Линукс", то сразу только от самого этого факта свершится чудо :)

К сожалению, у нас пока нет людей умеющих работать и программировать под Линукс, поэтому остаётся только винда.

 

а какой отклик сейчас обеспечивает XP ? Там помоему не все так плохо, в NT4 таймер тикал раз в миллисекунду, другое дело что производительность Etherneta была около тысячи пакетов в секунду, правда тогда был ходовым 10 мегабитный Ethernet.

Я правда не спец в высоком программировании, но кажись порядка 16 мсек. это реакция на события виндой. (могу правда и ошибаться). Другое дело если делать поток. В потоке если что то делать, то вроде все происходит гораздо быстрее, но жутко не синхронно, как уже говорилось, шевеление окна мышой тормозило поток. Наверное как то можно повесить поток на отдельное ядро, тока пока непонятно как это сделать.

Проверял через queryperformancecounter. Оказалось что драйверы устройств имеют в большинстве приличный отклик, например драйвер для FTDI имел отклик порядка 0,35мсек. У CyUSB до 0,15мсек доходило. Думается у Etherneta может быть и быстрее. Остаётся заставить винду работать быстрее.

В инете видел что для реал тайм приложений есть надстройка для виндов - INtime 3.0, кто нибудь работал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению, у нас пока нет людей умеющих работать и программировать под Линукс, поэтому остаётся только винда.

Вы ничего не поняли :(. Не сожалейте - ничего принципиально не изменится. Либо для Win, либо Linux так или иначе придется пробовать заниматься программированием сильнозоаточенных под Вашу задачу "драйверов". Поскольку любые приложения по любому идут лесом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Единственный способ - это заранее посылать пакеты из под винды, накапливать их в устройстве. А устройство должно говорить большому брату что у него близок к заполнению буфер, надо остановиться, и, соответственно, обратная ситуация. Т.е. отсчет миллисекундных тиков и точную выдачу берет на себя само устройство.

То что винда используется это к сожалению необходимость, как мне сказал програмист, алгоритм сложный и с ним справляется только топовый комп с 2-мя камнями. И скроее всего комп будет заточен только для прибора. В общем я пока оцениваю возможность передачи данных.

Хочу все же узнать, юзал ли кто Real time контроллеры? Стит ли их покупать?

Советую прислушаться к словам Rst7. Ни в виндах, ни в линуксе вы не победите отсутствие реального времени и не добьетесь равномерной посылки пакетов. Выход- на приемной стороне делать буфер пакетов и уже оттуда выгребать равномерно на ЦАПы. Потребуется обратная связь на ПК в виде старт/cтоп управляющих пакетов по тому-же самому Ethernet.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Советую прислушаться к словам Rst7. Ни в виндах, ни в линуксе вы не победите отсутствие реального времени и не добьетесь равномерной посылки пакетов. Выход- на приемной стороне делать буфер пакетов и уже оттуда выгребать равномерно на ЦАПы. Потребуется обратная связь на ПК в виде старт/cтоп управляющих пакетов по тому-же самому Ethernet.

Равномерной посылки мне добиваться и не нужно, главное обеспечить критерий: вермя м/у 2 пакетами < 1мс. Точной синхронизацией будет заниматься сам прибор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну не гарантирует Вам в винде никто время между двумя пакетами < 1ms, можно надеятся, что 40 пакетов будут отправлены за время, существенно меньше 40 ms. Гарантировать можно, что 1000 пакетов отправятся быстрее 1000 ms.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну не гарантирует Вам в винде никто время между двумя пакетами < 1ms, можно надеятся, что 40 пакетов будут отправлены за время, существенно меньше 40 ms. Гарантировать можно, что 1000 пакетов отправятся быстрее 1000 ms.

 

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

 

но в целом вы правы

надо искать какоето другое решение для решения поставленной задачи с учетом ваших ресурсов

но надо уточнять постановку задачи

потому как просто пакеты отсылать это не задача или ее можно решить промежуточным железом которое будет это делать с необходимой точностью

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

драйвер для FTDI имел отклик порядка 0,35мсек. У CyUSB до 0,15мсек доходило.

обычно так и пытаются сделать, оптимально конечно читать ацп прямо драйвером Ethernet-а :-)

Изменено пользователем dch

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...