Программирование алгоритмов реального времени
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Программирование в реальном времени представляет собой раздел мультипрограммирования, связанный с разработкой взаимосвязанных параллельных процессов и управлением временными характеристиками процессов, взаимодействующих с внешней средой. Между программами реального времени и обычными последовательными программами имеются существенные различия:

-  логика исполнения программы определяется внешними событиями и может зависеть от времени;

-  программа работает не только с данными, но и с сигналами, поступающими от внешней среды в случайные моменты времени;

-  программа работает в жестких временных ограничениях;

-  результат выполнения программы зависит от общего состояния системы и его нельзя предсказать заранее;

-  программа обычно работает в многозадачном режиме поэтому нуждается в средствах синхронизации и обмена данными;

-  исполнение программы не заканчивается по окончании входных данных - она всегда ждет поступления новых данных.

Языки программирования

Программирование в реальном времени требует специальных средств, которые не встречаются в обычных языках последовательного программирования. Язык или операционная система для программирования в реальном времени должны предоставлять следующие возможности:

-  описание параллельных процессов;

-  переключение процессов на основе динамических приоритетов, которые могут изменяться, в том числе, и прикладными процессами;

-  синхронизация процессов;

-  обмен данными между процессами;

-  функции, связанные с часами и таймером, абсолютное и относительное время ожидания;

-  прямой доступ к внешним аппаратным портам;

-  обработка прерываний;

-  обработка исключений.

Первым полным языком программирования в реальном времени является ADA, структура которого похожа на структуру языка Pascal: процессу соответствует задача, которая выполняется независимо от других задач на выделенном виртуальном процессоре, то есть параллельно с другими задачами. Задачи могут быть связаны с отдельными прерываниями и исключениями и работать как их обработчики.

Язык программирования С стал популярным для всех приложений, требующих высокой эффективности, в частности для систем реального времени. Это слаботипизированный язык, который позволяет программисту делать почти все вплоть до манипуляции с регистрами и битами. Небольшое количество заранее определенных функций и типов данных делает программы легко переносимыми между разными системами.

Язык С предпочтителен для написания программ с обращениями к функциям операционной системы, так как он обладает отличной совместимостью между логикой определения переменных и синтаксисом обращения к системе.

Главным преимуществом языка С++ является его способность поддерживать разработку легко используемых библиотек программ. Программирование в реальном времени непосредственно в С++ не поддерживается, но может быть реализовано с помощью специально разработанных программных модулей и библиотек классов.

В задачах контроля объектов управления и стабилизации их параметров используются специализированные языки Техно ST, Техно SFC, Техно FBD, Техно IL. Эти языки являются модификациями языков ST (Structured Text), SFC (Sequential Function Chart) FBD (Functional Block Diagram), LD (Ladder Diagram), IL (Instruction List) стандарта IEC61131-3.

Программа на языке Техно ST или ее компонент разрабатываются в текстовом виде и определяются как последовательность предложений, составленных из операндов, операторов и функций. Аналогичную форму имеют и программы, написанные на языке Техно IL. Язык Техно SFC позволяет создавать программы в виде алгоритма, состоящего из SFC-шагов и SFC-переходов. Для SFC- шагов задаются выполняемые действия, для SFC-переходов - условия переходов между шагами. Для перехода от одного шага к другому условие SFC-перехода должно быть истинным. Вид алгоритма в редакторе языка Техно SFC - это последовательность шагов с указанием условий перехода. Сама программа представляет собой текст, содержащий расшифровку шагов и переходов.

Язык Техно FBD - это язык функциональных блоков. Функциональный блок - это графическое изображение вызова встроенной функции Техно FBD (например, в системе Trace Mode имеется более 150 простых и сложных функций) или функции, определенной пользователем. Создание связей между блоками производится методом drag-and-drop, созданная связь обозначается на диаграмме линией. Аргументы и переменные FBD-программы задаются с помощью табличных редакторов.

Отладка программных комплексов реального времени

Основным методом обнаружения ошибок при отладке программ является их тестирование. Затраты на тестирование для обнаружения ошибок достигают 30...40% общих затрат на разработку программ и в значительной степени определяют качество созданного программного продукта.

Основная цель тестирования для обнаружения ошибок - выявление всех отклонений результатов функционирования реальной программы от заданных эталонных значений. Задача состоит в обнаружении максимального числа ошибок, в качестве которых принимается любое отклонение от эталонов.

Ошибки в алгоритмах и программах условно можно разделить на четыре типа.

Технологические ошибки документации и фиксирования программ в памяти ЭВМ составляют 5.. .10% от общего числа ошибок, обнаруживаемые при отладке. Многократный перекрестный контроль соответствия данных исходным документам позволяет доводить в отдельных случаях вероятность технологической ошибки в программе до уровня 10-7...10-8.

Программные ошибки определяются степенью автоматизации программирования и глубиной формализованного контроля текстов программ.

Алгоритмические ошибки - это ошибки, обусловленные некорректной постановкой функциональных задач, и неполным учетом всех условий решения. К ним также следует отнести ошибки связей модулей и функциональных групп программ.

Системные ошибки определяются неполной информацией о реальных процессах, происходящих в источниках и потребителях информации. Кроме того, эти процессы зачастую зависят от используемых алгоритмов и поэтому не могут быть достаточно точно определены заранее.

После тестирования для обнаружения ошибок применяется тестирование для их диагностики и локализации. Основная задача - точно установить место искажения программы или данных, явившегося причиной отклонения результатов от эталонных.

После локализации и устранения обнаруженных ошибок применяется контрольное тестирование, задача которого состоит в подтверждении правильности корректировки программы.

Основная задача комплексной отладки программ состоит в завершении разработки всего комплекса программ и в доведении его характеристик до значений, заданных требованиями технического задания. Должны быть:

-  завершены и проверены сопряжение и взаимодействие по передаче управления и по информации всех компонент, входящих в комплекс;

-  проверена возможность получения в процессе рабочего функционирования программного комплекса всех характеристик, заданных требованиями технического задания;

-  проверены полнота и состав технической документации, а также точность соответствия ее изделию - комплексу программ.

 

Типовая схема распределения оперативной памяти

В управляющих ЭВМ с непосредственным доступом к памяти в рабочем режиме оперативная память не предназначена для хранения программ и используется для переменной информации и информации, характеризующей режимы работы. В соответствии с функциональным назначением она делится на зоны, которые можно сгруппировать следующим образом:

1)  для информации управляющих и диспетчерских программ;

2)  для входной информации;

3)  для выдаваемой информации;

4)  для хранения результатов обработки информации;

5)  для хранения контрольной информации;

6)  для хранения программ.

В первую группу входят зоны, в которых хранятся

-  исходные данные текущего режима работы (признак включенного режима, характеристики функционирующих элементов системы, перечень решаемых задач);

-  таблица приоритетов (адреса начальных команд программ, включаемых центральным диспетчером);

-  шкала приоритетов (заявки на включение определенных программ и адреса сообщений, подлежащих обработке);

-  таблица периодических программ (темп и время последнего включения периодически исполняемых программ);

-  таблица выдачи сообщений (адреса этих сообщений).

Информация, хранящаяся в этих зонах, определяет последовательность удовлетворения заявок на включение программ и включает эти программы. Наиболее распространенные дисциплины обслуживания - это бесприоритетное обслуживание, обслуживание заявок в порядке поступления, приоритетное обслуживание без прерывания (относительные приоритеты) и приоритетное обслуживание с прерыванием (абсолютные приоритеты).

Бесприоритетное обслуживание осуществляется по кольцевому принципу. Для его реализации в памяти выделяются две зоны, одна из которых (зона заявок) хранит коды заявок на включение подпрограмм, а вторая (зона адресов) - начальные адреса этих подпрограмм. При необходимости вызова подпрограммы в закрепленную за ней ячейку записывается код вызова. Программа-диспетчер, последовательно анализируя содержимое ячеек зоны заявок, находит этот код, стирает его и включает в счет соответствующую подпрограмму, используя для этого ее начальный адрес из зоны адресов. Кольцевой принцип обеспечивается тем, что после выполнения j-й подпрограммы дальнейший анализ зоны заявок начинается с (j+1)-й или с первой ячейки зоны.

Обслуживание в порядке поступления требует для своей реализации учета последовательности поступления заявок.

Приоритетное обслуживание также требует для своей реализации двух зон: в одной из них хранится таблица установленного приоритета подпрограмм, в другой - заявки на работу подпрограмм и их порядковые номера.

 

 

Контрольные вопросы

 

1 Объясните типовую структурную схему управляющего алгоритма.

2 Какие задачи решают алгоритмы приема сообщений?

3 Какие функции осуществляют алгоритмы выдачи сообщений?

4 Что входит в состав программ управления и диспетчеризации?

5 Перечислите основные функции программы начального пуска.

6 Какие функции выполняет программа тактировки?

7 Какие функции выполняют диспетчерские программы?

8 Какие задачи выполняют программы подготовки к обработке?

9 Перечислите существенные различия между программами реального времени и обычными последовательными программами.

10 Какие возможности должны предоставлять язык или ОС для программирования в реальном времени?

11 Перечислите языки программирования СРВ.

12 На какие этапы делится комплексная отладка программ реального времени?

13 Охарактеризуйте типы ошибок в алгоритмах и программах.

14 Расскажите о функциях программ контроля хода вычислительного процесса и обеспечения устойчивости вычислений.

15 Перечислите зоны, на которые делится оперативная память, в соответствии с функциональным назначением.

 


Лекция 30 Заключение Перспективы развития разработки и использования специализированных технических и программных средств и систем автоматизации.

 

Технические средства систем реального времени непрерывно развиваются: совершенствуется их практическая реализация, улучшаются характеристики, появляются новые принципы построения. В данном пособии изложены только основные идеи, выдержавшие проверку временем. После их изучения следует просматривать технические журналы и другую техническую документацию, чтобы быть в курсе новейших достижений.

Новые принципы управления появляются не так часто, но это также имеет место. Достаточно привести такие примеры как управление при помощи нечеткой логики или решение ряда задач с использованием генетических алгоритмов. Однако все-таки в этой области расширение идет по линии увеличения количества задач управления, а не принципов их решения. Поэтому программное обеспечение систем реального времени остается достаточно стабильным.

В целом построение систем реального масштаба времени отличается гораздо большим разнообразием применяемых принципов, технических и программных средств, чем построение информационных систем или систем управления экономико-организационными объектами. И это разнообразие с каждым годом все более и более расширяется.

В данном учебном пособии не рассматриваются вопросы проектирования систем управления реального времени. Это самостоятельная и сложная задача, которую разные генеральные конструкторы решают по-разному. Недаром говорят о различных школах проектирования, о существующих традициях. Однако здесь также прослеживается тенденция: все больше параметров теряют ограничения, и на первое место среди критериев эффективности выдвигается задача экономии ресурсов.

 

Список использованной литературы

 

1. Аристова Н.И. Промышленные программно-аппаратные средства на отечественном рынке АСУТП. Практическое пособие для специалистов / Н.И.Аристова, А.И. Корнеева. – М.: Научтехлитиздат, 2007. – 412 с.

2. Древс Ю.Г. Системы реального времени: технические и программные средства: Учебное пособие. М.: МИФИ, 2010. - 320 с.

3. Программируемые устройства автоматизации: учебное пособие /А.М. Борисов, А .С. Нестеров, Н.Л. Логинова. - Челябинск: Издательский центр ЮУрГУ, 2010. - 186 с.

4. Бабакина 11-Л., Колесников М.П. Современная промышленная электроника Под ред. проф. Шкодырева В.П. - СПб.: СПбГПУ, 2013. - 267 с.: ил.

5. Елизаров И. А., Мартемьянов Ю. Ф., Схиртладзе А. Г., Фролов С. В. Технические средства автоматизации. Программно-технические комплексы и контроллеры: Учебное пособие. М.: Машиностроение, 2004.- 180 с.

6. Рачков М. Ю. Технические средства автоматизации. Учебник для вузов. Изд-во МГИУ, 2007.-185 с.

7. Петров И. В. Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования. М.:СОЛОН-ПРЕСС, 2007.- 256 с.

8. Обзор статей в журналах «Современные технологии автоматизации», «Датчики и системы» 2011–2016 г.г.

9. Бычков М. Г. Промышленные компьютеры и программируемые логические контроллеры. М.: Изд-во МЭИ, 2002. 92 с.

10. Андреев Е.Б., Куцевич Н.А., Синенко О.В. SCADA-системы: взгляд изнутри. -М.: РТСофт, 2004.- 176 с.

11. Олссон Г., Пиани Д. Цифровые системы автоматизации и управления. СПб.: Невский Диалект, 2011. 557 с.

12. Антонов В.Н. Технические средства микропроцессорных распределенных систем управления / В.Н. Антонов, А.В. Наседкин, М.С. Федоров и др. – Л.: ЛЭТИ, 2009.

13. Шандров Б.В., Чудаков А.Д. Технические средства автоматизации. - M.: Академия, 2007.268 с.

14. Федоров Ю.Н. Справочник инженера по АСУ ТП: Проектирование и разработка. - M.: Инфра-Инженерия, 2009.928 с.

15. Шмид Д. Управляющие системы и автоматика. - M.:Техносфера, 2007.-584с.

16. Ицкович Э.Л. Методы рациональной автоматизации производства. - M.: Инфра-Инженерия, 2009. 256 с.


Дата: 2019-04-23, просмотров: 306.