Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GOSI 2 / ПСУ ТСА / ПСУ,ТСА_ответы.doc
Скачиваний:
30
Добавлен:
17.04.2015
Размер:
8.17 Mб
Скачать

1. Разработайте подпрограмму ввода данных с АЦП (выберите принцип действия АЦП) для ОМЭВ МК51 (обмен по прерыванию). Покажите место данной подпрограммы в общей структуре программного обеспечения и ее взаимодействие с другими программными модулями.

∆Tmax = 0.5ms

время преобразования

Обмен по прерыванию.

Достоинства: сокращаются затраты машинного времени на обмен с медленно действующими ВУ, из-за отсутствия повторения цикла опроса.

Недостаток: требуются дополнительные аппаратные затраты не­обходим контроллер прерываний.

Можно выделить 5 основных этапов механизма прерывания:

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

2) Анализ прерывания. Так как в ЭВМ может существовать нес­колько устройств, требующих обмена с прерыванием, то может поступить несколько запросов прерывания одновременно. Поэтому каждому типу прерываний присваивается определенный приоритет.

3) Фиксация состояния процессора. Для фиксации состояния процессора необходимо зафиксировать состояния: Счетчика адреса, аккумулятора и указателя стека.

Для полного сохранения необходимо еще сохранить состояние регистров.

Эта операция выполняется аппаратным путем.

4) Выполнение программы обслуживающей прерывание. Для каждо­го уровня прерывания назначен некоторый адрес в адресной час­ти памяти, который будет содержать адрес подпрограммы обра­ботки прерывания. Этот адрес называется адрес-вектор.

5) Восстановление прерванного процесса. Необходимо восстано­вить состояние регистров, указателя стека, аккумулятора и счетчика адреса.

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

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

;происходит в 2 этапа, т.к. входов 8, а выходов 4.

setb p2.3 ; устанавливаем на выходе порта p2.3 единицу.

;Т.е. включаем передачу первых 4 сигналов для мультиплексоров

mov c, 78h ; Присваиваем С значение 0

mov p2.0, c ; передает на выход p2.0 значение С. На входе р1 сформируется байт

; из значений сигналов 1,3,5,7,9,11,13,15

mov a, p1 ; передаем этот байт в Акк из порта р1

mov 20h, a ; записываем полученный байт в РПД с адресом 20h

mov p2.3, c ; передаем на выход p2.3 значение 0. На входе р1 сформируется

; байт из значений сигналов 2,4,6,8,10,12,14,16

mov a, p1 ; передаем байт в Акк из порта р1

mov 21h, a ; записываем полученный байт в РПД 21h

setb p2.0 ; Подаем на p2.0 единицу, выключаем первую группу мультиплексоров

mov p2.1, c ; Подаем на p2.1 ноль, включаем вторую группу мультиплексоров.

;На входе р1 сформируется байт из значений сигналов 18,20,22,24,26,28,30,32

mov a, p1 ; передаем байт в Акк из порта р1

mov 23h, a ; записываем полученный байт в РПД 22h

setb p2.3 ; передаем на выход p2.3 значение 1.На входе р1 сформируется байт

; байт из значений сигналов 17,19,21,23,25,27,29,31

mov a, p1 ; передаем байт в Акк из порта р1

mov 22h, a ; записываем полученный байт в РПД 22h

setb p2.1 ; Подаем на p2.1 единицу, выключаем вторую группу мультиплексоров

mov p2.2, c ; Подаем на p2.2 ноль, включаем мультиплексор DD5.На входе р1 сформируется

; байт из значений сигналов 33,35,36,38,0,0,0,0

mov a, p1 ; передаем байт в Акк из порта р1

mov p2.3, c ; передаем на выход p2.3 значение 0.На входе р1 сформируется

; байт из значений сигналов 0,0,0,0,34,0,37,0

add a, p1 ; сложим полученный байт в аккумуляторе с байтом на порту р1

; Получим байт из значений сигналов 33,35,36,38,34,0,37,0

mov 24h, a ; записываем полученный байт в РПД 24h

setb p2.2 ; Подаем на p2.1 единицу, выключаем вторую группу мультиплексоров

; считывание данных из последовательного порта.

setb p2.7 ; Подаем на p2.7 сбрасываем триггеры, начинаем считывание данных с ЧПУ токарного станка

mov a, sbuf ; из буфера последовательного порта в Акк

rrc a ;Cчитывание сигнала S1

mov 25h, a ;Запись сигнала S1-S7 в РПД 25h

setb p2.7 ; Подаем на p2.7 сбрасываем триггеры, начинаем считывание данных с ЧПУ

шлифовального станка

mov a, sbuf ; из буфера последовательного порта в Акк

rrc a ;Cчитывание сигнала S8

mov 2Fh, c ;Запись сигнала S8 в РПД

mov 26h, a ;Запись сигнала S9-S12 в РПД 26h

2. Разработайте подпрограмму анализа аварийных ситуаций робота-манипулятора с тремя степенями свободы (в реальном масштабе времени) для мк51.

На роботе-манипуляторе с тремя степенями свободы имеется три реверсивных двигателя. Управляющие воздействия для перемещения манипулятора формируются микроконтроллером. Для управления необходимо шесть управляющих воздействий – по два на каждую степень свободы.

Список переменных:

  • Количество импульсов

-Номер текущей операции

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

Подпрограмма обработки прерывания:

;выбор входной переменной для наблюдения

MOV TCON, #00000000b ;останов таймера

LCALL reset_timer ; перезагрузка таймера

MOV R6, #7Fh ;показатель декремента времени

JNB y8, nextvar1 ;условие зажатие руки

MOV R4, x1min ;выбор мин. времени такта

MOV R5, x1max ;выбор макс. времени такта

MOV R1, #21h ;адрес блока, в котором находится переменная

MOV R7, 21h ;временное запоминание состояния блока

MOV TCON, #00010000b ;пуск таймера

nextvar1:

JNB y2, nextvar2 ; условие движение в право

MOV R4, x2min ;выбор мин. времени такта

MOV R5, x2max ;выбор макс. времени такта

MOV R1, #24h ;адрес блока, в котором находится переменная

MOV R7, 24 ;временное запоминание состояния блока

MOV TCON, #00010000b ;пуск таймера

nextvar2:

RET

;Обработка прерывания от таймера

;срабатывает каждые 20 мс

time:

;Проверяем изменение информации с датчиков

;перемещение содержимого измененного блока (байта) в А

MOV A, @R1

XRL A, R7 ;сравнение с предыдущим значением

JZ next2 ;если блок не изменился, ничего не делаем

MOV A, R4

;если минимальное время такта еще не истекло - авария

JNZ crash_loop

;если минимальное время такта истекло -

;значит ИМ сработал в отведенном временном интервале

MOV TCON, #00000000b ;останов таймера

LJMP next3

next2:

DJNZ R6, next3 ;уменьшаем на единицу пок-ль декремента

;если показатель декремента = 0, то

;прошло 20 * 50 = 1000 мс = 1 с

LCALL reset_timer ;перезагрузка таймера

MOV R6, #7Fh ;показатель декремента времени

DJNZ R5, next4 ;уменьшаем на единицу макс. время

;если макс. время = 0, значит ИМ не сработал

LJMP crash_loop ;переход к остановке работы

next4:

MOV A, R4

JZ next3 ;если мин. время уже равно 0, пропускаем

DEC R4

LJMP next3

crash_loop:

LJMP crash_loop ;остановка работы, выполняется при аварии

next3:

RETI

3. Разработайте фрагмент функциональной, схемы МПСУ на базе ОЭВМ ввода данных с аналогового датчика, например с термопары, алгоритм процесса измерения температуры и подпрограмму коррекции случайной составляющей погрешности результатов измерения (допустимая погрешность - 0,2 %).