Контроллер управления светофором

Проект программы, имитирующей автоматизированную систему управления светофором. Установка QNX 6.5 на виртуальную машину, ее графические возможности. Описание виджетов приложения; разработка GUI. Алгоритм функционирования программы контроллера управления.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 24.05.2015
Размер файла 823,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

Федеральное государственное автономное образовательное учреждение высшего профессионального образования

Санкт-Петербургский государственный университет аэрокосмического приборостроения

КАФЕДРА №43

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОЙ РАБОТЕ

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

Тема:

Контроллер управления светофором

Работу выполнила

А.А. Свиридова

Студентка группы 4136

Санкт-Петербург - 2015

РЕФЕРАТ

Пояснительная записка к курсовой работе содержит 26 страниц, 9 рисунков, 1 приложение. Использовано 9 источников.

Ключевые слова: контроллер управления светофором, QNX, photon applicaton builder

Объектом проектирования являлся светофор, разработанный с помощью Photon application builder. Пояснительная записка включает в себя код программы, описание разработки программы, а так же демонстрацию ее работы.

Целью работы является разработка приложения, имитирующего работу контроллера управления светофором.

В результате выполнения курсовой работы:

· было проведено знакомство с QNX 6.5;

· были изучены графические возможности Photon Application Builder;

· были освоены возможности виртуальной машины VMW player;

· было улучшено понимание принципов работы ОСРВ.

СОДЕРЖАНИЕ

  • ВВЕДЕНИЕ
  • 1. Анализ задачи
  • 2. Установка QNX 6.5 на виртуальную машину
  • 3. Разработка приложения
    • 3.1 Описание виджетов
    • 3.2 Разработка GUI
    • 3.3 Разработка алгоритма функционирования программы
    • 3.4 Демонстрация работы приложения
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  • ПРИЛОЖЕНИЕ

Введение

Система реального времени (СРВ) -- это система, которая должна реагировать на события во внешней по отношению к системе среде или воздействовать на среду в рамках требуемых временных ограничений [4]. Оксфордский словарь английского языка говорит о СРВ как о системе, для которой важно время получения результата [3]. Другими словами, обработка информации системой должна производиться за определённый конечный период времени, чтобы поддерживать постоянное и своевременное взаимодействие со средой. Естественно, что масштаб времени контролирующей системы и контролируемой ей среды должен совпадать.

Под реальным временем понимается количественная характеристика, которая может быть измерена реальными физическими часами, в отличие от логического времени, определяющего лишь качественную характеристику, выражаемую относительным порядком следования событий [2]. Говорят, что система работает в режиме реального времени, если для описания работы этой системы требуются количественные временныме характеристики [1].

QNX -- POSIX-совместимая операционная система реального времени, предназначенная преимущественно для встраиваемых систем [4]. Считается одной из лучших реализаций концепции микроядерных операционных систем.

Как микроядерная операционная система, QNX основана на идее работы основной части своих компонентов, как небольших задач, называемых сервисами. Это отличает её от традиционных монолитных ядер, в которых ядро операционной системы -- одна большая программа, состоящая из большого количества «частей», каждая со своими особенностями. Использование микроядра в QNX позволяет пользователям (разработчикам) отключить любую ненужную им функциональность, не изменяя ядро. Для этого можно просто не запускать определённый процесс.

Система достаточно небольшая, чтобы в минимальной комплектации уместиться на одну дискету, вместе с этим она считается очень быстрой и должным образом «законченной» (практически не содержащей ошибок).

QNX Neutrino, выпущенная в 2001 году, перенесена на многие платформы, и сейчас способна работать практически на любом современном процессоре, используемом на рынке встраиваемых систем. Среди этих платформ присутствуют семейства x86, MIPS, PowerPC, а также специализированные семейства процессоров, такие, как SH-4,ARM, Strong ARM и xScale.

Система платная, при этом для некоммерческого использования и для обучения она предлагается бесплатно в течение 30 дней.

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

Cisco Systems использует оптимизированную версию микроядра QNX Neutrino в программном обеспечении IOS XR. Программный пакет IOS XR предназначен для управления коммутаторами Cisco CRS-1, обеспечивает непрерывный режим работы и поддерживает развитые функции управления терабитными коммутаторами с распределённой архитектурой.

На март 2009 года решения на базе QNX лицензированы для использования на более чем 10,1 миллионах единиц техники от практически всех ведущих производителей автомобилей, включая BMW, Chrysler, Daimler, Fiat, Ford, General Motors, Honda, Hyundai, Mazda, Mitsubishi, Nissan, Saab, SsangYong, Toyota иVolkswagen. В частности, такие автомобили выпускаются под марками Acura, Alfa Romeo, Audi, Buick, Cadillac, Chevrolet, Dodge, Honda, Hummer, Infiniti, Jeep,Lancia, Mini, Mercedes, Opel, Pontiac, Saturn и другими.

Используется для управления роботом BigDog [5].

Наиболее крупными конкурентами QNX являются VxWorks, OS-9, Integrity, LynxOS, minix3(Под лицензией BSD), а также некоторые ОС на ядре Linux (RTLinux и др.) [6].

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

1. Анализ задачи

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

Для автомобилей:

· светофор горит зеленым, если движение разрешено;

· светофор горит желтым, если перестал гореть зеленый свет и скоро загорится красный;

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

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

Для пешеходов:

· горит зеленый, если движение разрешено;

· зеленый мигает, если движение скоро будет запрещено;

· горит красный, если движение запрещено.

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

Для разработки приложения была выбрана встроенная среда разработки системы QNX-Photon Application Builder по следующим причинам:

· Photon Application Builder не требует дополнительной установки и является полностью встроенным в систему QNX 6.5;

· Photon Application Builder имеет интуитивно понятный интерфейс, позволяющий легко и быстро разрабатывать приложения для ОСРВ;

· Photon Application Builder встроен в ОСРВ QNX, которая работает при небольших ресурсных затратах на виртуальной машине, не вызывая никаких задержек в системе, что позволяет работать в Photon Application Builder не испытывая трудностей с виртуальной машиной;

· ОСРВ QNX имеет простую установку на виртуальную машину, и не имеет никаких проблем с переносом данных из основной системы в виртуальную, а так же с подключением к интернету, что позволяет разрабатывать приложения на Photon Application Buider не переходя в основную систему.

2. Установка QNX 6.5 на виртуальную машину

Для того, чтобы установить ОСРВ QNXсо встроенным Photon Application builder на виртуальную машину требуется:

Скачать образы виртуальной машины и операционной системы с официальных сайтов http://www.vmware.com/ru и http://www.qnx.com;

Приобрести ключи для активации данных продуктов ( при выполнении данной работы использовались бесплатные 30- дневные версии продуктов);

1. Смонтировать образ QNX 6.5 на виртуальной машине, и запустить установку;

2. При запросе ключа, ввести ключ, приобретенный ранее.

3. Разработка приложения

3.1 Описание виджетов

Для реализации были выбраны следующие виджеты [8]:

a) Background - фон. С помощью данного виджета в приложении была увеличена привлекательность интерфейса;

b) Ellipse - «круги». Данные виджеты были использованы, чтобы изобразить цветные индикаторы светофора для пешеходов и водителей. Всего использовано 5 виджетов данного типа;

c) Text- текстовое поле. Использовано для отображения таймера при зеленом светофоре для пешеходов;

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

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

3.2 Разработка GUI

В качестве интерфейса использована модель светофора, включающая в себя:

· 3 световых индикатора для автомобилистов (красный, желтый и зеленый);

· 2 световых индикатора для пешеходов (красный и зеленый);

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

· кнопку, по нажатию которой пешеход запрашивает разрешение на переход дороги.

Изображение описанного выше интерфейса представлено на рисунке 1.

Рисунок 1. Вид при начале работы приложения

3.3 Разработка алгоритма функционирования программы

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

1. зеленый для водителей начинает мигать (Рисунок 2);

2. выключает зеленый для водителей и включает желтый (Рисунок 3);

3. выключает желтый и включает красный (Рисунок 4);

4. включает зеленый для пешеходов и таймер (Рисунок 5);

5. по достижении таймера 3 секунд зеленый для пешеходов начинает мигать (Рисунок 6);

6. по истечению таймера включается красный для пешеходов (Рисунок 7);

7. включается желтый для водителей в дополнение к красному (Рисунок 8);

8. включается зеленый для водителей (Рисунок 9).

3.4 Демонстрация работы приложения

Демонстрация была проведена на машине с VMware Player, где была создана виртуальная машина с ОСРВ QNX.

Рисунок 2. Прошло минимальное время ожидания, кнопка нажата. Зеленый для водителей начал мигать

Рисунок 3. Включается желтый для водителей. Зеленый отключается

Рисунок 4. Включается красный для водителей. Желтый отключается

Рисунок 5. Загорается зеленый для пешеходов, начинается отсчет таймера

Рисунок 6. Значение таймера стало меньше трех секунд. Зеленый для пешеходов начал мигать

Рисунок 7. Загорается красный для пешеходов

Рисунок 8. Загорается желтый для водителей

Рисунок 9. Загорается зеленый для водителей. Желтый и красный отключаются. Система вернулась в начальное состояние, таймер обнулен

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

Заключение

В ходе выполнения курсовой работы был разработан контроллер управления кодовым замком, который работает в режиме реального времени и точно реагирует на нажатие кнопок. Использование Photon application builder позволило создать данное приложение без особых сложностей. Приложение выполняет все поставленные задачи/подзадачи и имеет приятный интерфейс.

Список ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. А.А. Блискавицкий, С.В. Кабаев. Операционные системы реального времени (обзор)// Средства и системы компьютерной автоматизации. http://www.asutp.ru (дата обращения 07.04.2015).

2. Жданов А.А. Операционные системы реального времени// "PCWeek", №8, 1999.

3. Оксфордский словарь английского языка // 2005.

4. Роберт Кертен. Введение в QNX Neutrino руководство для разработчиков приложений реального времени // 2-е издание. Санкт-Петербург: БХВ-Петербург, 2011. - 354 с.

5. Сергей Сорокин. Системы Реального Времени. // СТА. - 1997. - №2. - С 22-29.

6. Сергей Зыль. Проектирование, разработка и анализ программного обеспечения систем реального времени. // Санкт-Петербург: БХВ-Петербург, 20с. + CD. - Библиогр.: с. 318-назв.

7. Сергей Зыль. ОС реального времени QNX: от теории к практике. 2-е издание. // 1\310З-96.

8. Эрик Верхалст. Задача разработки ОСРВ для цифровой обработки сигналов // Мир компьютерной автоматизации. - 1997. - №4

9. Photon Programmer's Guide //2007

Приложение

Pushbutton.c

/* Your Description*/

/*AppBuilder Photon Code Lib */

/*Version 2.03*/

/* Standard headers*/

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

/* Local headers*/

#include "ablibs.h"

#include "abimport.h"

#include "proto.h"

int cout=0;

int mytest=0;

int

pushbutton( PtWidget_t *widget, ApInfo_t *apinfo, PtCallbackInfo_t

*cbinfo )

{

/* eliminate 'unreferenced' warnings */

widget = widget, apinfo = apinfo, cbinfo = cbinfo;

if(mytest==0)%если светофор находится в исходном состоянии(зеленый

для машин, красный для пешеходов) реагируем на нажатие кнопки

mytest=10;

return( Pt_CONTINUE );

}

Ontimer.c

/*Your Description*/

/*AppBuilder Photon Code Lib*/

/*Version 2.03*/

/*Standard headers*/

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

/*Local headers*/

#include "ablibs.h"

#include "abimport.h"

#include "proto.h"

extern int mytest;

extern int count=0;

int mytime=0;

int special=0;

char s[256];

int remember=0;

//int sec=0;

int

ontimer( PtWidget_t *widget, ApInfo_t *apinfo, PtCallbackInfo_t *cbinfo )

{

/* eliminate 'unreferenced' warnings */

widget = widget, apinfo = apinfo, cbinfo = cbinfo;

mytime++;

if(mytime==1)

{

PtSetResource(ABW_clr,Pt_ARG_INSIDE_COLOR,PgARGB(0,105,105,1

05),0);

PtSetResource(ABW_cly,Pt_ARG_INSIDE_COLOR,PgARGB(0,105,105,1

05),0);

PtSetResource(ABW_clg,Pt_ARG_INSIDE_COLOR,PgARGB(0,0,255,0),0

);

PtSetResource(ABW_crg,Pt_ARG_INSIDE_COLOR,PgARGB(0,105,105,1

05),0);

PtSetResource(ABW_crr,Pt_ARG_INSIDE_COLOR,PgARGB(0,255,0,0),0

);

}

if(mytest==10)%если пешеход нажал кнопку

{

if(mytime>=50)%если у автомобилей достаточно долго горел зеленый,

начинаем цикл

{

mytest=1;

special=0;

count=0;

remember=0;

}

}

if(mytest==1)%зеленый у водителей начинает мигать

{

special++;

count++;

if(remember<3)

{

if(count==5)

{

PtSetResource(ABW_clg,Pt_ARG_INSIDE_COLOR,PgARGB(0,105,105,1

05),0);

}

if(count==10)

{

count=0;

PtSetResource(ABW_clg,Pt_ARG_INSIDE_COLOR,PgARGB(0,0,255,0),0

);

remember=remember+1;

}

}

if(special==45)%у водителей включается желтый сигнал

{

PtSetResource(ABW_clg,Pt_ARG_INSIDE_COLOR,PgARGB(0,105,105,1

05),0);

PtSetResource(ABW_cly,Pt_ARG_INSIDE_COLOR,PgARGB(0,255,255,0

),0);

}

if(special==60)%у водителей отключается желтый и включается

красный сигнал

{

PtSetResource(ABW_cly,Pt_ARG_INSIDE_COLOR,PgARGB(0,105,105,1

05),0);

PtSetResource(ABW_clr,Pt_ARG_INSIDE_COLOR,PgARGB(0,255,0,0),0

);

mytest=2;

special=0;

}

}

if(mytest==2)%начинается цикл пешеходов

{

special++;

if(special==30)%у пешеходов загорается зеленый, начинается обратный

отсчет секундомера

{

PtSetResource(ABW_crg,Pt_ARG_INSIDE_COLOR,PgARGB(0,0,255,0),

0);

PtSetResource(ABW_crr,Pt_ARG_INSIDE_COLOR,PgARGB(0,105,105,1

05),0);

count=0;

remember=10;

mytest=3;

sprintf(s,"%d",remember);

PtSetResource(ABW_PtText1,Pt_ARG_TEXT_STRING,s,0);

special=0;

}

}

if(mytest==3)%считаем секунды, пока у пешеходов горит зеленый свет

{

count++;

if(count==10)%прошла одна секунда

{

remember=remember-1;

count=0;

sprintf(s,"%d",remember);

PtSetResource(ABW_PtText1,Pt_ARG_TEXT_STRING,s,0);

}

if(remember==0)%время пешеходов истеко, выключаем зеленый для

пешеходов и включаем красный

{

mytest=4;

sprintf(s,"%d",remember);

PtSetResource(ABW_PtText1,Pt_ARG_TEXT_STRING,s,0);

PtSetResource(ABW_crg,Pt_ARG_INSIDE_COLOR,PgARGB(0,105,105,1

05),0);

PtSetResource(ABW_crr,Pt_ARG_INSIDE_COLOR,PgARGB(0,255,0,0),0

);

count=0;

special=0;

}

if(remember<=3 && remember>0)%если у пешеходов осталось 3

секунды до конца зеленого сигнала начинаем мигать зеленым сигналом

{

special=100;

}

if(special==100)

{

if(count==5 & remember!=1)

{

PtSetResource(ABW_crg,Pt_ARG_INSIDE_COLOR,PgARGB(0,105,105,1

05),0);

}

if(count==0)

{

PtSetResource(ABW_crg,Pt_ARG_INSIDE_COLOR,PgARGB(0,0,255,0),

0);

}

}

}

if(mytest==4)%закончили цикл пешеходов, начали цикл начала

движения у машин

{

count++;

if(count==30)%включаем желтый сигнал для автомобилей

PtSetResource(ABW_cly,Pt_ARG_INSIDE_COLOR,PgARGB(0,255,255,0

),0);

if(count==60)%завершение цикла работы нажатия на кнопку, возвращение системы в исходное состояние

{

mytest=0;

mytime=0;

count=0;

remember=0;

special=0;

}

}

return( Pt_CONTINUE );

//PtSetResource(ABW_PtLabel1,Pt_ARG_TEXT_STRING,"asdad",0);

//sprint(s,"%2d:%2d",min,sec);

//PtSetResource(ABW_PtLabel1,Pt_ARG_TEXT_STRING,s,0);

}

Размещено на Allbest.ru


Подобные документы

  • Разработка функциональной и принципиальной схемы. Выбор управляющего контроллера. Описание МК PIC16F626, МК AVR, МК 51. Выбор элементной базы. Разработка управляющей программы. Описание алгоритма работы программы. Схема устройства, листинг программы.

    курсовая работа [492,9 K], добавлен 28.12.2012

  • Устройство и назначение однокристальных микроконтроллеров, сферы их применения. Разработка контроллера для управления домашней метеостанцией: расчет принципиальной схемы и характеристика ее элементов, выбор датчиков. Описание программы управления.

    курсовая работа [280,3 K], добавлен 28.12.2012

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

    курсовая работа [757,2 K], добавлен 26.12.2012

  • Разработка функциональной и принципиальной схемы. Выбор электронного ключа. Передача данных в тайм-слотах. Master для чтения одного бита данных. Разработка программы управления цифровым кодовым замком. Главные особенности функционирования программы.

    курсовая работа [970,8 K], добавлен 28.12.2012

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

    курсовая работа [540,6 K], добавлен 28.12.2012

  • Разработка алгоритма и программы управления поворотной платформой лифта при помощи языка программирования Java Script. Проектирование приложения к браузеру в среде Adobe Dreamweaver CS5. Схема алгоритма, текст программы для двухмерной модели лифта.

    курсовая работа [353,1 K], добавлен 18.05.2013

  • Описание функциональной схемы контроллера системы отопления, обеспечивающего многопозиционный контроль температуры и управление ветками отопления и котлом. Разработка принципиальной схемы. Обоснование выбора. Алгоритм работы устройства. Листинг программы.

    курсовая работа [1,1 M], добавлен 26.12.2012

  • Описание функциональных блоков контроллера. Анализ серий микроконтроллеров представленных на рынке и используемых в цифровых магнитолах: AVR, PIC, MK-51. Микровыключатели К1-К6, их функции. Разработка функционирования программы, схема устройства.

    курсовая работа [483,5 K], добавлен 28.12.2012

  • Языки программирования для промышленного контроллера WinCon W-8737. Использование редактора потоковых диаграмм. Технические характеристики и виды шаговых двигателей. Блок-схемы алгоритмов программ управления. Разработка структурной схемы устройства.

    дипломная работа [1,7 M], добавлен 20.12.2015

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

    курсовая работа [744,6 K], добавлен 08.11.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.