
- •Тема 1. Введение
- •§ 1.1. Определение и виды систем реального времени (срв)
- •§ 1.2. Технология olap как пример срв
- •Тема 2. Комплекс технических средств (ктс) срв
- •§ 2.1. Устройства связи с оперативным персоналом (усоп)
- •§ 2.2. Датчики
- •§ 2.3. Исполнительные устройства (механизмы)
- •Тема 3. Последовательное программирование и программирование задач рв
- •§ 3.1. Задачи, процессы, потоки
- •Основные свойства задач
- •§ 3.2. Режимы планирования задач в срв
- •Циклический (круговой) алгоритм
- •Разделение времени
- •Кооперативная многозадачность
- •Приоритетная многозадачность с вытеснением
- •§ 3.3. Синхронизация задач в осрв
- •Связанные задачи
- •Общие ресурсы
- •Синхронизация с внешними и внутренними внештатными событиями
- •Синхронизация по времени
- •Тема 4. Специфика и свойства (параметры) осрв
- •§ 4.1. Параметры осрв
- •§ 4.2. Краткий обзор и классификация осрв
- •§ 4.3. Требования к языкам рв
- •§ 4.4. Структура программ срв
- •Тема 5. Назначение, цели и функции асу тп
- •§ 5.1. Системы диспетчерского управления (Scada-системы)
- •Функциональная структура Scada
- •Особенности Scada как процесса управления
- •Основные требования к Scada-системе
- •Область применения
§ 4.3. Требования к языкам рв
программирование в РВ требует специальных средств, которые не в полном объеме встречаются в обычных языках. Язык для программирования в РВ в совокупности с ОСРВ должен предоставлять следующие возможности:
Описание параллельных процессов;
Переключение процессов на основе динамических приоритетов;
Синхронизация процессов;
Обмен данными между процессами;
Функции, связанные с часами и таймерами, абсолютное и относительное время ожидания;
Прямой доступ к внешним аппаратным портам;
Обработка прерываний;
Обработка исключений.
Некоторые компании разрабатывали специальные языки для поддержки своих собственных аппаратных средств. Они не претендуют на универсальность и ориентированы на конкретные компьютеры и их интерфейсы. Обычно подобные языки базируются на существующих (FORTRAN, BASIC) с расширениями, включающими функции РВ, о чем свидетельствует их название типа «Process Basic» или «Real-Time Fortran». Некоторые языки не поддерживают программирование в РВ в строгом смысле, но они легко расширяются (С++).
В 70-е годы выдвигалась концепция единого переносимого многоцелевого языка программирования в РВ, а именно языка ADA. Его главная идея состоит в том, что среда программирования должна быть полностью отделена от аппаратных средств. Программист не должен сталкиваться с деталями аппаратного уровня, а работать только в терминах абстрактных структур и типов данных. Опыт показал (не реалистичность) низкую эффективность этого подхода. Поскольку универсальные сильно типизированные языки существенно ограничивают гибкость. А быстрое развитие технических средств диктует новые требования, которые не могут быть предусмотрены в типизированном универсальном языке.
Вывод: Не существует наилучшего языка программирования в РВ, поскольку для каждого приложения и программно-аппаратной платформы необходимо подбирать свои средства (инструменты), учитывая квалификацию и предпочтения разработчиков.
С и С++
С 80-х годов эти языки стали популярными для всех приложений, требующих высокой эффективности, в частности, для программ РВ.
С – слаботипизированный язык и позволяет программисту делать почти все, вплоть до манипуляции с регистрами и битами. Поскольку наиболее распространенными ОС в приложениях автоматического управления процессами являются UNIX-системы, язык С является практически вынужденным выбором при разработке программ РВ.
С++ – представляет собой еще более мощный инструмент и, хотя программирование в РВ непосредственно на С++ не поддерживается, может быть реализован программирование задач РВ с помощью специально разработанных программных модулей и библиотек.
Basic
Простота этого языка часто критикуется, поскольку он не является хорошим средством для создания больших структурных систем. Однако на Basic можно разработать приложения значительно быстрее, чем на других языках. Кроме того, Basic имеется почти на всех мини и микро компьютерах.
Следовательно, удобен для разработки небольших приложений, которые могут входить в крупные системы, но его не следует использовать для приложений, превышающих 1000 строк.
FORTRAN
Благодаря тому, что Fortran имеет устойчивое применение в научных приложениях, нередко информация в СРВ обрабатывается существующими Fortran-программами, а новые программы анализа и статистики также пишутся на Fortran.
Pascal и Modula 2
Эти языки предполагают, что программист постоянно остается в ограниченной среде, предоставленной программой, что совсем не соответствует реальной практике. Гибкость использования этих языков существенно выше, если программы для специальных приложений (обработчики прерываний, драйверы и др.) написаны на языке Assembler. Оба языка поддерживают подключение внешних модулей на Assembler, Pascal и Modula 2 являются хорошим средством для разработки встроенных систем, но не подходят для сложных приложений в распределенных компьютерных системах.