Помогите с выбором ОСРВ
От: Тёма  
Дата: 21.03.16 10:20
Оценка:
Есть задача управления некими девайсами, забирать с них данные и отправлять команды надо регулярно. Раньше было 100 гц и более-менее нормально справлялась Windows Embedded. Сейчас требуется увеличить точность периода до 1мс и поднять частоту до 300-500 гц. Винда тут уже не помощник. Приём\передача данных по UDP и по RS-485 через платы MOXA.
Логичным выглядит переход на ОСРВ. Выбор между совместными с windows системами типа RTX или InTime, и полноценными ОС типа QNX. Linux теоретически рассматриваю, но с опенсорсом как-то наелся уже, по моему опыту как повезёт, можно крупно попасть на сырую недоделку.
Если кто-то имел опыт подобной разработки, помогите пожалуйста с выбором.
Re: Помогите с выбором ОСРВ
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 21.03.16 14:21
Оценка:
Здравствуйте, Тёма, Вы писали:

Тё>Сейчас требуется увеличить точность периода до 1мс и поднять частоту до 300-500 гц. Винда тут уже не помощник.


На современном железе ядро обычной (XP/7/8/8.1) винды с легкостью обрабатывает частоту событий до 800-1000 Гц и обеспечивает точность периода до 400-500 мкс. Стабильность нарушают исключительно драйверы — как левые, так и некоторые встроенные. Часто гадят видеодрайверы, сетевые, драйверы сопряжения с ACPI и ноутбучными контроллерами (EC). Во многих случаях можно подобрать версии/конфигурации, в которых задержки будут достаточно малы. Подозреваю, что в Embedded можно проделать то же самое. Если винда, как среда выполнения, привычна и удобна — логичнее допилить ее, нежели осваивать новую ОС.
Re[2]: Помогите с выбором ОСРВ
От: Тёма  
Дата: 21.03.16 14:51
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, Тёма, Вы писали:


Тё>>Сейчас требуется увеличить точность периода до 1мс и поднять частоту до 300-500 гц. Винда тут уже не помощник.


ЕМ>На современном железе ядро обычной (XP/7/8/8.1) винды с легкостью обрабатывает частоту событий до 800-1000 Гц и обеспечивает точность периода до 400-500 мкс. Стабильность нарушают исключительно драйверы — как левые, так и некоторые встроенные. Часто гадят видеодрайверы, сетевые, драйверы сопряжения с ACPI и ноутбучными контроллерами (EC). Во многих случаях можно подобрать версии/конфигурации, в которых задержки будут достаточно малы. Подозреваю, что в Embedded можно проделать то же самое. Если винда, как среда выполнения, привычна и удобна — логичнее допилить ее, нежели осваивать новую ОС.


Это труднопрогнозируемый по сроку путь в никуда =)
Оно ещё и от железа зависит. Каждый раз при заказе железа под новый проект с вероятностью 0.3 вылазит что-нибудь типа "компонент Х внезапно под 8 недель и только от 20 штук" и приходится куда-то менять конфиг. И сразу вся эта тонкая настройка слетает.
А про драйверы вы правы. Больше всего картину портила запись на диск и, внезапно, включенная опция Energy Efficient Ethernet у сетевухи.
Но даже сейчас, после всех настроек на которые мне хватило мозгов, винда может раз в пол часа-час выдать 20-30 мс вместо 10, и даже это критично.

Вобщем, можно и дальше закручивать шестигранный болт шлицевой отверткой. Но в какой-то момент уже надо купить соотв. ключ =)
Отредактировано 21.03.2016 14:53 Тёма . Предыдущая версия .
Re[3]: Помогите с выбором ОСРВ
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 21.03.16 15:32
Оценка:
Здравствуйте, Тёма, Вы писали:

Тё>Оно ещё и от железа зависит. Каждый раз при заказе железа под новый проект с вероятностью 0.3 вылазит что-нибудь типа "компонент Х внезапно под 8 недель и только от 20 штук" и приходится куда-то менять конфиг. И сразу вся эта тонкая настройка слетает.


А на неизвестном заранее железе Вы с любой ОС будете с высокой вероятностью иметь геморрой. Гарантировать величину задержек можно лишь на "аппаратно-программном комплексе", тут без вариантов.

Если не нужны навороченные аппаратные конфигурации — попробуйте посмотреть в сторону компактных SoC на ARM/MIPS, как в виде независимых плат типа Raspberry, так и каких-нибудь маршрутизаторов с поддержкой OpenWRT/DD-WRT и прочих открытых систем. Но там, соответственно, будет тот самый геморрой с опенсорсом.

Тё>Больше всего картину портила запись на диск и, внезапно, включенная опция Energy Efficient Ethernet у сетевухи.


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

Тё>Вобщем, можно и дальше закручивать шестигранный болт шлицевой отверткой. Но в какой-то момент уже надо купить соотв. ключ =)


Беда в том, что для Ваших болтов универсального ключа не существует в природе. Разве что наборы, которые все равно придется так и ли иначе дотачивать под каждый из очередных болтов.
Re[3]: Помогите с выбором ОСРВ
От: кт  
Дата: 23.03.16 11:45
Оценка:
Здравствуйте, Тёма, Вы писали:


Тё>Вобщем, можно и дальше закручивать шестигранный болт шлицевой отверткой. Но в какой-то момент уже надо купить соотв. ключ =)


Используются и отвертки и молотки. А куда деваться?

http://rsdn.ru/article/RSDN-2014-2/Docs/02-07-win/02-07-win.xml
Автор(ы): Караваев Дмитрий Юрьевич
Дата: 04.01.2015
в статье описана доработка Windows-XP для изменения политики планирования потоков, которая потребовалась для выполнения на конкретной задачи.
Re[3]: Помогите с выбором ОСРВ
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 25.03.16 17:49
Оценка:
Здравствуйте, Тёма, Вы писали:


Тё>Это труднопрогнозируемый по сроку путь в никуда =)

Тё>Оно ещё и от железа зависит. Каждый раз при заказе железа под новый проект с вероятностью 0.3 вылазит что-нибудь типа "компонент Х внезапно под 8 недель и только от 20 штук" и приходится куда-то менять конфиг. И сразу вся эта тонкая настройка слетает.

Mach3 — ПО для управления ЧПУ управляет по LPT четыремя шаговиками, выдавая и больше 1КГц на каждый, плюс PWM сигнал на скорость шпинделя. Ну и входные сигналы обрабатывает. На случайно найденой на помойке плате 10+ лет старости. Правда, он драйвер какой-то свой ставит.

Тё>А про драйверы вы правы. Больше всего картину портила запись на диск и, внезапно, включенная опция Energy Efficient Ethernet у сетевухи.

Тё>Но даже сейчас, после всех настроек на которые мне хватило мозгов, винда может раз в пол часа-час выдать 20-30 мс вместо 10, и даже это критично.

А, ну это не знаю, может и бывает так, и тот же Mach3 в этих случая косячит

Слышал про RT Linux вроде — какое-то риал тайм ядро типа в режиме гипервизора как-то, а под ним линукс крутится. Вроде и ОС, а вроде и риалтайм доступен

ЗЫ А, Линукс не торт, сорри
Маньяк Робокряк колесит по городу
Re: Помогите с выбором ОСРВ
От: ioni Россия  
Дата: 27.03.16 14:16
Оценка:
Здравствуйте, Тёма, Вы писали:

Тё>Есть задача управления некими девайсами, забирать с них данные и отправлять команды надо регулярно. Раньше было 100 гц и более-менее нормально справлялась Windows Embedded. Сейчас требуется увеличить точность периода до 1мс и поднять частоту до 300-500 гц. Винда тут уже не помощник. Приём\передача данных по UDP и по RS-485 через платы MOXA.

Тё>Логичным выглядит переход на ОСРВ. Выбор между совместными с windows системами типа RTX или InTime, и полноценными ОС типа QNX. Linux теоретически рассматриваю, но с опенсорсом как-то наелся уже, по моему опыту как повезёт, можно крупно попасть на сырую недоделку.
Тё>Если кто-то имел опыт подобной разработки, помогите пожалуйста с выбором.

А чем вам Windows Embedded Compact не подходит ( только не просто windows embedded ), вполне себе hard real time.
ну а так все зависит от того сколько вы готовы заплатить, vxworks, qnx, windows ce,...
Re: Помогите с выбором ОСРВ
От: ioni Россия  
Дата: 27.03.16 14:25
Оценка:
Здравствуйте, Тёма, Вы писали:

Тё>Есть задача управления некими девайсами, забирать с них данные и отправлять команды надо регулярно. Раньше было 100 гц и более-менее нормально справлялась Windows Embedded. Сейчас требуется увеличить точность периода до 1мс и поднять частоту до 300-500 гц. Винда тут уже не помощник. Приём\передача данных по UDP и по RS-485 через платы MOXA.

Тё>Логичным выглядит переход на ОСРВ. Выбор между совместными с windows системами типа RTX или InTime, и полноценными ОС типа QNX. Linux теоретически рассматриваю, но с опенсорсом как-то наелся уже, по моему опыту как повезёт, можно крупно попасть на сырую недоделку.
Тё>Если кто-то имел опыт подобной разработки, помогите пожалуйста с выбором.

Вот еще туда же
http://home.iitj.ac.in/~saurabh.heda/Papers/Research%20Papers/2009/Untitled%20Folder/RTOS%20Comparison%20after2009.pdf
Re[2]: Помогите с выбором ОСРВ
От: Тёма  
Дата: 27.03.16 19:11
Оценка:
Здравствуйте, ioni, Вы писали:

I>А чем вам Windows Embedded Compact не подходит ( только не просто windows embedded ), вполне себе hard real time.

I>ну а так все зависит от того сколько вы готовы заплатить, vxworks, qnx, windows ce,...

С Windows CE был небольшой опыт лет 7 назад, тогда пришёл к выводу, что без BSP от производителя железа её не запустить, а железо я сам подбираю. Можно в принципе попробовать еще раз, много времени прошло.
А по цене да, узнали цены на QNX и RTX и как-то поостыл пыл всё переделать под ОСРВ =) Буду выпрашивать триал и оценивать по конкретному результату.

Документ из ответа ниже интересный, посмотрю, спасибо.
Re[3]: Помогите с выбором ОСРВ
От: LuciferSaratov Россия  
Дата: 27.03.16 19:19
Оценка:
Здравствуйте, Тёма, Вы писали:

Тё>А по цене да, узнали цены на QNX и RTX


странно, что тут никто до сих пор FreeRTOS не упомянул.
вроде бы вполне зрелое решение, есть и поддержка за деньги, если надо.
Re[4]: Помогите с выбором ОСРВ
От: GaZpaR  
Дата: 28.03.16 09:53
Оценка:
Здравствуйте, LuciferSaratov, Вы писали:

LS>Здравствуйте, Тёма, Вы писали:


Тё>>А по цене да, узнали цены на QNX и RTX


LS>странно, что тут никто до сих пор FreeRTOS не упомянул.

LS>вроде бы вполне зрелое решение, есть и поддержка за деньги, если надо.

Ещё есть вот такая штука , вроде не менее популярная чем freeRTOS.
Re[4]: Помогите с выбором ОСРВ
От: Тёма  
Дата: 28.03.16 09:54
Оценка:
Здравствуйте, Marty, Вы писали:

M>Mach3 — ПО для управления ЧПУ управляет по LPT четыремя шаговиками, выдавая и больше 1КГц на каждый, плюс PWM сигнал на скорость шпинделя. Ну и входные сигналы обрабатывает. На случайно найденой на помойке плате 10+ лет старости. Правда, он драйвер какой-то свой ставит.


Не думаю, что там точное время важно. Главное выдать нужное количество импульсов на все двигатели синхронно. Драйвер, скорее всего, для прямого доступа к LPT.
В PWM с LPT я не очень верю, только если на низкой частоте и не очень точно.

M>Слышал про RT Linux вроде — какое-то риал тайм ядро типа в режиме гипервизора как-то, а под ним линукс крутится. Вроде и ОС, а вроде и риалтайм доступен

M>ЗЫ А, Линукс не торт, сорри

В целом торт, но по моему опыту количество подводных граблей в опенсорсе может быть очень большим. Всё сильно зависит от конкретного проекта.
Re[3]: Помогите с выбором ОСРВ
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 28.03.16 16:17
Оценка:
Здравствуйте, Тёма, Вы писали:

Тё>С Windows CE был небольшой опыт лет 7 назад, тогда пришёл к выводу, что без BSP от производителя железа её не запустить, а железо я сам подбираю.


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

Если у Вас непостоянная аппаратная конфигурация — без драйверов Вам в любом случае не обойтись. А гарантировать того, что они не будут портить время отклика, никто, разумеется, не сможет.

Я бы для начала попробовал ту же XP Embedded на многоядерном процессоре, приняв меры для распределения кода по ядрам. Сгодится даже двухъядерный, если первое ядро отдать под обработчики прерываний и системый код, а на втором гонять только код, критичный к задержкам, и без крайней нужды не пользоваться примитивами, захватывающими общие блокировки или вызывающими IPI (к ним, кстати, относится и DbgPrint).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.