Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Различные авторы Весь текст 2311.07 Kb

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 67 68 69 70 71 72 73  74 75 76 77 78 79 80 ... 198
         бораторных измерений, упрощенные системы роботов и т.д.

             Проектирование систем реального времени с использованием
                            операционной системы MS-DOS

              Проектирование систем  реального  времени  с  использованием
         операционной системы MS-DOS  затруднено  отсутствием  официальной
         методологии  такого  проектирования.  Эта нехватка общего подхода
         выражается в возникновении таких проблем, как:
            1. В работающих системах реального времени могут возникать не-
         объяснимые аварийные ситуации или результаты работы будут  выгля-
         деть странно из-за проблем синхронизации.
            2. Существующие реализации указанных систем  становятся  неуп-
         равляемыми  вследствие произошедших в них изменений и расширений.
            3. Когда процесс программирования системы закончен, нельзя по-
         ручится за ее работоспособность в дальнейшем.

                                      - 5-20 -

              На рисунке 5-9 представлены методы проектирования систем не-
         реального времени.  Синхронные методы разработки требуют выполне-
         ния  только одной задачи в каждой реализации системы.  Синхронные
         методы могут быть трех типов:
            . упорядоченный опрос (без прерываний)
            . главный цикл с прерываниями
            . циклическое планирование.

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

                ЪДДДДДДДДДДДДДДДДДДД¬
                ¦     Методы        ¦
                ¦  проектирования   ¦
                ¦                   ¦
                АДДДДДДДДДВДДДДДДДДДЩ
               ЪДДДДДДДДДДБДДДДДДДДДДДД¬
               ¦                       ¦
         ЪДДДДДБДДДДД¬            ЪДДДДБДДД¬
         ¦ синхронные¦            ¦мульти- ¦
         ¦(однознач- ¦            ¦задачный¦
         ¦ ные)      ¦            ¦режим   ¦
         АДДДДДДДДДДДЩ            АДДДВДДДДЩ
                        ЪДДДДДДДДДДДДД†ДДДДДДДДДДДД¬
                        ¦             ¦            ¦
                 ЪДДДДДДБДДДДДД¬  ЪДДДБДДД¬   ЪДДДДБДДДДД¬
                 ¦упорядоченный¦  ¦главный¦   ¦цикличес- ¦
                 ¦опрос (без   ¦  ¦цикл с ¦   ¦кое плани-¦
                 ¦прерываний)  ¦  ¦прерыва¦   ¦рование   ¦
                 АДДДДДДДДДДДДДЩ  ¦ниями  ¦   АДДДДДДДДДДЩ
                                  АДДДДДДДЩ

             Рис. 5-9. Методы проектирования систем реального времени

             Пример упрощенной системы управления домашним хозяйством

              Давайте рассмотрим упрощенную  систему  управления  домашним
         хозяйством, предназначенную следить за расходом тепла, предупреж-
         дать о пожаре и управлять орошением газонов,  что показано на ри-
         сунке 5-10.  Температура регистрируется температурно-чувствитель-
         ным   устройством.    Некоторый    преобразователь    преобразует
         температуру из аналогового в цифровое значение.  Это значение мо-
         жет быть считано из порта и сравнено с  образцовой  температурой.
         Значение  образцовой  температуры может задаваться пользователем.
         Для простоты давайте будем считать это значение постоянной  вели-
         чиной с именем ref_temp.  Программа adjust_temp,  предназначенная
         управлять температурами,  задана в листинге 5-2. Отметим, что эта
         программа  содержит только важные части программы.  Менее сущест-
         венные подробности (такие,  как объявление и инициализация  пере-
         менных) здесь не показаны.


                                      - 5-21 -
                                    образцовая
                                    температура
                      преобразова-                 преобразова-
                      тели                         тели
          от датчика  ЪДДДДДДДД¬   ЪДДДДДДДДД¬   ЪДДДДДДДДД¬   к наг-
          температур  ¦        ¦   ¦         ¦   ¦         ¦   рева-
          ДДДДДДДДДДД¦        ¦ДД¦         ¦ДД¦         ¦ДДтелю
                      АДДДДДДДДЩ   ¦         ¦   АДДДДДДДДДЩ
          от датчика  ЪДДДДДДДД¬   ¦компьютер¦   ЪДДДДДДДДД¬   к сигна-
          огня(дыма)  ¦        ¦   ¦         ¦   ¦         ¦   лу тре-
          ДДДДДДДДДДД¦        ¦ДД¦         ¦ДД¦         ¦ДДвоги
                      АДДДДДДДДЩ   ¦         ¦   АДДДДДДДДДЩ
          от таймера реального     ¦         ¦   ЪДДДДДДДДД¬   к венти-
          времени                  ¦         ¦   ¦         ¦   лю оро-
          ДДДДДДДДДДДДДДДДДДДДДДДД¦         ¦ДД¦         ¦ДДшения
                                   ¦         ¦   АДДДДДДДДДЩ   газонов
                                   АДДДДДДДДДЩ

                Рис. 5-10.  Упрощенная система управления домашним
                                    хозяйством

                        Листинг 5-2. Программа adjust_temp
         ----------------------------------------------------------------
            adjust_temp:
                    ; delta- для избежания колебаний температур
                    ; ref_temp- значение образцовой температуры
                    ; temp_port- порт, через который выводится
                    ;            информация  по  управлению
                                 температурой
                    ; inc_cod-  сегмент программы для повышения
                                температуры
                    ; dec_code- сегмент программы для снижения
                                температуры
                    ; read_port- порт, через который ведется
                    ;            считывание значений текущей
                                 температуры
                    in   al,read_port ; считать температуру в AL
                    mov  bl,ref_temp  ; получить ref_temp в BL
                    mov  cl,bl  ; BL будет использоваться позднее
                    sub  cl,delta     ; ref_temp - delta в CL
                    cmp  al,cl        ; текущая температура меньше
                                      ; ref_temp - delta ?
                    jl   increase     ; тогда увеличить температуру
                    add  bl,delta     ; ref_temp + delta в BL
                    cmp  al,bl        ; текущая температура больше
                                      ; ref_temp + delta ?
                    jg   decrease     ; тогда уменьшить температуру
                    ret               ; сделано
            decrease:
                    mov  al,dec_code  ; dec_code
                    out  temp_port,al ; temp_port
                    ret
            increase
                    mov  al,inc_code  ;inc_cod подлежит выводу в
                    out  temp_port,al ; temp_port
                    ret
         ----------------------------------------------------------------

                                      - 5-22 -

              Отметим, что нагревание не меняется, когда температура оста-
         ется  в пределах диапазона от ( ref_temp - delta) до (ref_ temp +
         delta),  как это показано на рисунке 5-11.  Здесь значение  delta
         представляет собой маленькую величину допуска (например,  в одном
         градусе 1F * и он используется для избежания температурных  коле-
         баний.
         ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            * Один градус по Фаренгейту (1F) приблизительно равен по Цель-
              сию 0,56 градуса (0,56 C) (Примеч. переводчика.)


                              Образцовая температура
                                    (ref_temp)

                                        ¦
             низкая темпера-            ¦            высокая темпера-
                тура         ¦ДdeltaДД¦ДДdeltaД¦ тура
            ДДДДДДДДДДДДДДДДД†ДДДДДДДДДД†ДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДД
                   повышение       температура       уменьшение
                  температуры      не меняется       температуры

             Рис. 5-11. Использование допуска delta небольшой величины
                       для избежания температурных колебаний

              Для того,  чтобы понять концепцию колебаний,  будем считать,
         что значение delta равно нулю.  В этом случае температуру следует
         корректировать  всякий  раз,  когда  она  точно не равна значению
         ref_temp. Предположим,  что  температура оказалась немного меньше
         значения ref_temp.  Теперь при обращении к процедуре будет предп-
         ринято действие, повышающее температуру. В результате температура
         повысится до значения, превышающего величину ref_temp. Теперь при
         очередном вызове процедуры будет предпринято действие, понижающее
         температуру. В результате таких действий температура будет то по-
         вышаться, то понижаться попеременно. Вот это и называется колеба-
         нием температур. Таким образом, применение величины delta (малой,
         но  не равной нулю) способствует погашению колебаний,  потому что
         температура не меняется при этом в небольшом  диапазоне ref_temp.
             Теперь давайте  рассмотрим  программу  по активизации сигнала
         пожарной тревоги. Нам следует только послать какой-нибудь сигнал,
         который отключит потом сигнал о пожаре.  Эта процедура под назва-
         нием initiate_alarm представлена в Листинге 5-3.
                      Листинг 5-3. Программа initiate_alarm:
         ---------------------------------------------------------------
         initiate_alarm:
                         ; alarm_port -порт для подачи сигнала тревоги
                         ; activate_signal  -  сигнал для активизации
                                               тревоги
                         mov        al,activate_signal
                         out        alarm_port,al
                         ret
         ---------------------------------------------------------------

              Далее рассмотрим  процедуру  управления  орошением  газонов.
         Предположим,  что нам нужно поливать газоны по вечерам с 18.30 до
         20.30.  Это требование диктует нам необходимость пользоваться ре-
         альным  временем,  то есть часами.  В листинге 5-4 показана такая

                                      - 5-23 -
         процедура, имеющая имя water_lawn.

                        Листинг 5-4. Программа  water_lawn
         ----------------------------------------------------------------
            water_lawn:
                        ; start_hours -  компонент "часы" начального
                        ;                времени
                        ; start_mins  -  компонент "минуты" начального
                        ;                времени
                        ; stop_hours -   компонент "часы" конечного
                        ;                времени
                        ; stop_miins -   компонент "минуты" конечного
                        ;                времени
                        ; water_port -   порт для управления
                        ;                орошением газона
                        ; start_code   - программа  начала
                        ;                орошения
                        ; stop_code -    программа окончания
                        ;                орошения
                        ; watering  -    переменная состояния,
                        ;                говорящая о том, что
                        ;                началось ли орошение
Предыдущая страница Следующая страница
1 ... 67 68 69 70 71 72 73  74 75 76 77 78 79 80 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама