Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > SCADA-системы и контроллеры стандарта IEC (МЭК) > Как обеспечивается реальное время? |
Автор: LeonidPr 30.3.2012, 18:19 |
Мучает меня вот такой вопрос. Два раза прочитал http://www.rtsoft-training.ru/?p=600014 статью и все равно многое не понял. Это не единственная статья, где я встречаю понятие "ядро реального времени", причем относительно к некоторому прикладному приложению. Если бы разговор шел о ядре реального времени ОСРВ, то тут вроде все понятно. Но вот в контексте прикладного (по отношению к ОС) программного обеспечения, мне этот термин не понятен. Непонятно собственно вот что: Как обеспечивается жесткое реальное время в прикладном ПО? Какие требования при этом накладываются на архитектуру такого ПО? Та же SCADA. Она же ведет периодический опрос устройств. Если событие на объекте возникло в некоторый момент времени, SCADA узнает о нем только при следующем опросе и время это (между событием и опросом) недетерминированно. О каком же жестком реальном времени может идти речь? Или задача реального времени "крутится" внутри ПЛК? А SCADA занимается только взаимодействием с пользователем и архивацией. Есть много литературы и статей об операционных системах реального времени, их архитектуре, алгоритмах планирования и т.д. Можете посоветовать литературу по разработке ПО на базе ОСРВ? Добавлено через 14 минут и 17 секунд Сейчас обдумывал все, что здесь понаписал и вдруг мысль проскочила. Может говоря о ядре реального времени имеют в виду, что интервал опроса датчиков неизменен? |
Автор: LeonidPr 31.3.2012, 12:30 | ||||||
Ну то, что на винде и линухе без примочек (RTX, RT-Linux, KURT) реальное время обеспечить нельзя это понятно. Я наверное не совсем точно вопрос сформулировал.
Да эта статья одна из многих, где о всяких таких вещах говорится, но всегда в общем без особой конкретики.
Ага, квазиреальное время получим. Так вот, вопрос наверное чуть по другому сформулирую. Пусть есть нижний уровень, обеспечивающий возможность создания ПО реального времени (например ОСРВ типа QNX). Тогда, какие есть рекомендации, может паттерны, требования к архитектуре такого ПО? Т.е. имея в руках ОСРВ, как создавать приложения реального времени? Например, вот http://wiki.oscada.org/Doc/OpenSCADA050?show_files=1 в разделе 2 есть такая фраза:
там конечно говорится о Linux, но насколько я понял, любая POSIX совместимая ОСРВ эту функцию предоставляет. То есть, получается, что поддержка реального времени заключается в том, что поток проснется точно по истечение времени, указанного в качестве аргумента clock_nanosleep() (если конечно не будет активного потока в более высоким приоритетом)? |
Автор: xvr 31.3.2012, 19:21 | ||||||
Они автоматом получатся (ну или почти автоматом) ![]() ОСРВ отличается от не РВ тем, что она гарантирует, что на любое событие (как внутри, так и снаружи ОС) его обработчик будет вызван не позже, чем через некоторое константное время. Вот http://en.wikipedia.org/wiki/Real-time_computing неплохо написанно.
Ну собственно требование одно - ОС вам обеспечивает работу своих служб в РВ, а вот обеспечение работы пользовательской программы в РВ - это уже задача самой программы
Это всего лишь один из аспектов РВ. И он один (сам по себе) еще не сделает из системы ОСРВ |
Автор: LeonidPr 31.3.2012, 20:05 |
Понятно. В общем, я так понимаю пора найти хорошую книжку по какой-нибудь ОСРВ и основательно её проштудировать:-) Спасибо за объяснения. |