- •1.1. Роль вычислительной техники в управлении процессами
- •1.5. Руководство для читателя
- •Глава 8 посвящена архитектуре системных шин; наибольшее внимание уделено стандарту vme.
- •Процессы реального времени. Методы программирования. Задачи цифрового управления
- •2.1.1. Пример — пресс для пластика
- •2.1.2. Управление на основе последовательного программирования
- •2.1.3. Управление на основе прерываний
- •2.2. Примеры задач управления процессами
- •2.2.1. Управление последовательностью событий и бинарное управление
- •2.2.2. Простой контур управления — регулятор температуры
- •2.2.3. Генерация опорного значения
- •2.2.4. Системы, содержащие несколько контуров управления.
- •2.2.5. Взаимосвязанные системы
- •2.2.6. Критичные по времени процессы
- •2.2.7. Свойства процессов, усложняющие управление
- •2.3. Особенности систем цифрового управления
- •2.4.2 Модельный пример 2 – биологическая очистка сточных вод (процесс активированного отстоя)
- •2.5. Заключение
- •3. Описание и моделирование систем
- •3.1.2. Масштаб времени динамических моделей
- •3. 1.3. Моделирование динамических систем
- •3.1.4. Моделирование дискретных событий
- •3.2. Основы моделирования динамических систем
- •3.2.1. Механические системы
- •3.2.2. Электромагнитные цепи
- •Пример 3.4
- •7.4. Функциональные карты
- •7.4.1. Синтаксис функциональных карт
- •4 2. Реализация функциональных карт
- •7.4.3. Применение функциональных карт в промышленном управлении
- •7.5. Заключение
- •10.6. Методы программирования в реальном времени
- •10.6.1. Что такое программа реального времени?
- •10.6.2. Среда программирования
- •10.6.3. Структура программы реального времени
- •10.6.4. Обработка прерываний и исключений
- •10.6.5. Программирование операций ожидания
- •10.6.6. Внутренние подпрограммы операционной системы
- •10.6.7. Приоритеты процессов и производительность системы
- •10.7. Языки программирования и операционные системы реального времени
- •10.7.1. Требования к языкам и операционным системам реального времени
10.7. Языки программирования и операционные системы реального времени
10.7.1. Требования к языкам и операционным системам реального времени
Программирование в реальном времени требует специальных средств, которые не всегда встречаются в обычных языках последовательного программирования. Язык или операционная система для программирования в реальном времени должны предоставлять следующие возможности:
описание параллельных процессов;
переключение процессов на основе динамических приоритетов, которые могут изменяться, в том числе и прикладными процессами;
синхронизация процессов;
обмен данными между процессами;
функции, связанные с часами и таймером, абсолютное и относительное время ожидания;
прямой доступ к внешним аппаратным портам;
обработка прерываний;
обработка исключений.
Немногие языки обеспечивают все эти возможности. Большинство имеет лишь часть из них, хотя для определенных приложений этого оказывается достаточно. Некоторые компании разработали специальные языки для поддержки своих собственных аппаратных средств. Эти языки не претендуют на универсальность и ориентированы скорее на конкретные ЭВМ и их интерфейсы. Обычно они базируются на существующих языках — FORTRAN, BASIC — с расширениями, включающими функции реального времени, о чем свидетельствуют их названия типа "Process BASIC" и "Real-time FORTRAN". Некоторые языки не поддерживают программирования в реальном времени в строгом смысле, но они легко расширяются, например С и С++.
В 1970-е годы широкую поддержку получила концепция единого переносимого многоцелевого языка программирования. В результате был разработан язык ADA. Его главная идея состоит в том, что среда программирования, т. е. язык, должна быть полностью отделена от аппаратных средств. Программист не должен сталкиваться с деталями машинного уровня, а работать только в терминах абстрактных структур и типов данных.
Опыт показал нереалистичность такого подхода. Универсальные, сильно типизированные языки программирования гарантируют определенный уровень надежности программы, но в то же время ограничивают гибкость. Быстрое развитие технических средств предъявляет новые требования, которые не могли быть предусмотрены в сущеествующих языках, и многие программисты чувствуют ограничения, используя не самые современные языки программирования. Цена надежности языка — сложность и громоздкость, а генерируемый при этом компилятором код — избыточен и малоффективен. Открытый язык типа С, основаный на ограниченном количестве базовых идей, обладает большей гибкостью и предоставляет опытному программисту больше возможностей. Не существует наилучшего языка - для каждого приложения и среды необходимо подбирать свои средства и при этом учитывать квалификацию и предпочтения разработчиков.