|
Пакет
CRW-DAQ
Программный пакет CRW-DAQ зарегистрирован в государственном Реестре программ для ЭВМ как «Программа для автоматизации физических измерений и экспериментальных установок (CRW-DAQ)» Это название хорошо описывает его предназначение. CRW-DAQ - Web sites 1 2. |
|
DIM
SMI
ROOT
1
GNUPLOT
1,2,3,4
Markdown
Cygwin
Guide
unix
man
www
Lua
www
svg-edit
www
1 2
UnitConverter
CRC Calculator
Каталоги:
Файлы:
Crw32 file index:
Примечание:
Файловый индексатор Crw32 доступен только после выполнения индексации,
которая выполняется либо при инсталляции, либо позже командой
Инструменты\Консольные утилиты\Make Crw32 HTML indexes.
Daq32 file index:
Примечание:
Файловый индексатор Daq32 доступен только после выполнения индексации,
которая выполняется либо при инсталляции, либо позже командой
Инструменты\Консольные утилиты\Make Daq32 HTML indexes.
Введение в CRW-DAQ
CRW-DAQ software suite
Авторские права.
Лицензия
RUS
,
ENG
.
|
CRW-DAQ - официально зарегистрированнная программа,
предназначенная для разработки систем сбора данных и автоматизации исследовательских физических
установок, а также первичного анализа измеряемых экспериментальных данных.
Программа доступна на сайте www.crw-daq.su.
Автор и разработчик программы CRW-DAQ -
Курякин Алексей Валерьевич,
который написал всю системную часть пакета и немалую часть прикладных программ.
Соавтор -
Виноградов Юрий Иванович,
который оказывал помощь в идейных и методических вопросах, а также создал
много прикладных программ.
Значительную помощь в создании пакета оказали также перечисленные ниже сотрудники,
написавшие значительную часть прикладных программ.
Программа разработана в славном городе Сарове, Россия.
Примечание: Разработка шла на Delphi 5.0 в период 2001..2008 г. При создании программы использован опыт программы CRW16 для DPMI. |
|
Пакет CRW-DAQ
в Гос. |
Автор
в.н.с.,к.ф.м.н. |
Соавтор
дфмн,быв.нач.лаб. |
|
нач.лаб. |
н.с. |
инженер |
|
н.с. |
инженер |
инженер |
Славный |
Серафима |
и Ядерного |
Россия |
Реальное время?Аксиома №1
Аксиома №1 написана крупными буквами во всех серьезных документах, описывающих Windows, Linux, Unix. Есть модификации каждой из упомянутых операционных систем, утверждающие, что они реализованы как RealTime системы. Не собираюсь ни с кем спорить. Если ты богат, как ГазПром, имеешь большую и хорошо оплачиваемую задачу, можно позволить себе вести разработку приложений на специализированной системе типа QNX, Real Time Linux и т.д. В реальности приходится работать на том, что есть, то есть на одном из упомянутых трех китов современной компьютерной индустрии. Если же учесть, какой "хвост" из готовых наработок, обязательств и пожеланий тяготеет над теми, кто давно уже работает в конкретной системе, например, Windows, получается, что выбора зачастую и нет. Поэтому могу согласиться со всеми, кто скажет "Надо писать под QNX или …(любимая система советчика)". Надо. И еще раз надо. Но против паровоза не попрешь. Смена платформы - дорогая вещь, минимум год работы, а платить за это никто не станет.
Давайте поэтому не вдаваться в бесполезные споры. Лучше поговорим, что же такое RealTime и что может предложить в этом смысле Windows/Linux/Unix. Мой опыт говорит, что их возможности примерно одинаковы. Разумеется, под Windows понимается Windows NT/2000/XP.
О значении термина RealTime можно долго спорить. В недостижимом идеале RealTime система - такая система, которая мгновенно реагирует на изменение параметров измеряемого объекта и мгновенно же вырабатывает реакцию на нее. На практике же возникает вопрос "а насколько мгновенно". А также резонный вопрос "а сколько надо-то?". Я считаю, что эти вопросы должны быть увязаны друг с другом, иначе разговор теряет смысл. Например, можно сказать, что QNX является RealTime системой, потому что вход в прерывание у нее составляет, к примеру, 3 микросекунды. Но позвольте, скажет метеоролог, следящий за температурой воздуха, зачем мне это надо, если моя задача требует выполнения измерений раз в 10 минут? А физик скажет: для регистрации элементарных частиц мне нужна реакция 10 наносекунд. А 3 микросекунды - какой же это RealTime? И оба будут правы. Для одного RealTime - наносекунды, для другого - сутки. В зависимости от задачи. И не надо говорить, что опрос раз в сутки - не RealTime. Если нарушение срока очередного опроса повлечет за собой нежелательные последствия, это RealTime система, независимо от того, равен этот период наносекунде или минуте. Упор тут надо делать на гарантии опроса в заданное время, а не на конкретной цифре периода времени опроса. Другой аспект связан с понятием жесткого и мягкого реального времени. Мне кажется, тут важнее всего - кто инициирует опрос. Если опрос инициирует объект измерения (аппаратное прерывание), а система гарантирует реакцию в течение заданного срока - реальное время жесткое. Если опрос инициирует субъект - наблюдатель, то есть программа, в том числе по прерываниям таймера компьютера, реальное время мягкое. Жесткое реальное время возникает в случае, когда информационная загрузка очень неравномерна. В этом случае опрос может идти редко, но, если уж в нем есть необходимость, должен быть выполнен быстро. Я бы еще ввел понятие "статистическое реальное время". Это когда скажем, опрос делается в среднем через 100 миллисекунд, но может колебаться от 50 до 200. Для некоторых систем это вполне приемлемо.
Можно ввести такие определения. Задача t реального времени - задача, в которой задержка времени опроса/реакции на срок более чем t, приводит к потере информации или другому нарушению нормального функционирования программы/алгоритма или измеряемого/контролируемого объекта. Система t реального времени - контрольно-измерительная система, которая гарантирует, что задержка времени опроса/реакции составляет не более чем t. Естественно, что задача t реального времени требует для решения не менее чем системы t реального времени. Однако гнаться за бесконечно малым временем реакции t не стоит, это не улучшит характеристики системы, а может и навредить, если ведет к перегрузке процессора, снижению устойчивости или стабильности работы.
Перейдем теперь к тому, что может дать CRW-DAQ под Windows. Ядро Windows-NT/2000/XP имеет, по крайней мере для процессов RealTime и потоков с приоритетом tpTimeCritical, довольно стабильное время переключения контекста 10 миллисекунд. Специальными вызовами (см. SetClockRes) можно установить квант времени операционной стстемы в 1 ms. Более высокой скорости обычными средствами не добиться. Все программы и сервисы Windows, включая Explorer, имеют приоритет не выше tpHighest, поэтому слабо влияют на частоту опроса потоков tpTimeCritical. Если подключить к машине измерительную карту, программно генерирующую под CRW-DAQ меандр с частотой 100 Гц в потоке tpTimeCritical, на осциллографе можно увидеть, что запуск любого обычного приложения слабо сказывается на форме и частоте меандра. Даже запуск нескольких экземпляров архиватора для создания 600-мегабайтного zip-архива не дает заметного замедления реакции. При этом надо заметить, что RealTime задача должна быть "интеллигентной", она должна быстро делать свое дело и тут же освобождать процессор, переводя поток в спящий режим. Это связано с тем, что Windows "штрафует" потоки, которые не освобождают процессор и дают большую загрузку. Штраф заключается в том, что таким потокам реже выделяется квант времени. См. также о планировании (scheduling) потоков.
Лемма №1.
При правильной настройке программы и конкретной инсталляции Windows система CRW-DAQ является
10 миллисекундной системой мягкого реального времени.
Она может применяться для решения задач 10 миллисекундного реального времени
с равномерной информационной загрузкой.
При специальных усилиях реакция системы может быть улучшена до 1 миллисукунды.
Лемма №2.
При правильной настройке программы и конкретной инсталляции Windows и при наличии фирменных драйверов
устройств система CRW-DAQ может служить системой жесткого реального времени, время реакции определяется
драйверами и самими устройствами.
Что понимается здесь под настройкой Windows? Это в первую очередь:
Что понимается под настройкой программы? Это правильная организация потоков CRW-DAQ. Каждое устройство CRW-DAQ имеет свой программный поток и такие временные характеристики как:
InquiryPeriod = aPeriod DevicePolling = aDelay, aPriorityПараметры aPeriod, aDelay, aPriority задают временные характеристики опроса устройства. При выборе времен надо учесть, что квант времени Windows может составлять от 1 до 10 миллисекунд. Приоритет потока влияет на гарантию его своевременной активизации: чем выше приоритет, тем стабильнее частота опроса. Не следует делать высокоприоритетными все потоки устройств CRW-DAQ. Отнюдь не все устройства требуют жесткого времени опроса. Лучше дать им низкий приоритет, чтобы облегчить работу тех устройств, где режим времени действительно жесткий. См. подробнее описание [DeviceList].
Надо отметить, что система CRW-DAQ имеет консоль монитора ресурсов, через которую можно наблюдать за частотой работы всех потоков программы, а также сторожевой таймер для отслеживания зависших потоков.