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

Страницы работы

Фрагмент текста работы

21.ПРОГРАММИРОВАНИЕ ТИПОВЫХ ФУНКЦИЙ УПРАВЛЕНИЯ: ОПРОС ДВОИЧНОГО ДАТЧИКА, ОЖИДАНИЕ СОБЫТИЯ(ПЕРЕПАДА УРОВНЕЙ И ИМПУЛЬСА), ЗАЩИТА ОТ ДРЕБЕЗГА

Типовые программы (процедуры) управления и контроля используются при работе с дискретными датчиками (кнопки, реле, переключатели) и с дискретными исполнительными устройствами (светодиоды, лампочки, реле,  двигатели переменного тока):

1.  опрос двоичного датчика

2.  ожидание события

3.  формирование управляющего сигнала

4.  формирование временной задержки

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

Опрос состоит в том, что МП опрашивает состояние датчика и зависимости от состояния происходит переход к какой-то ветви программы.

Пример подключения датчика к порту ввода:

OPROS: IN IPORT

ANI 0000 0010B  ; выделить D1

JZ M2                   ; если D1 = 0

M1: …                         ; если D1 = 1

M2: …

Ожидание события  (ожидание появления определенного сигнала) − МП опрашивает состояние датчика в цикле до тех пор, пока на выходе датчика не будет заданного сигнала. Сигналы по виду разделяются на:

Ожидание размыкания контактов (высокого уровня)

CALL WAIT_H

WAIT_H:   IN IPORT

ANI 0000 0100B  ; выделить D2

JZ WAIT_H         ; цикл ожидания

RET                      ; выход

Ожидание замыкания контактов (низкого уровня)

WAIT_L:   IN IPORT

ANI 0000 0100B  ; выделить D2

JZ WAIT_L        ; цикл ожидания

RET                      ; выход

Борьба с дребезгом контактов

При использовании контактных элементов появляется дребезг (многократное срабатывание)

Для борьбы:

1. аппаратный метод − используются RS − триггеры или триггер Шмидта

2. программный метод:

а) подсчитывается число переключений контакта.

Время дребезга зависит от типа контакта: для реле небольшой мощности ≈ 20 ÷ 30 мс, для кнопок ≈ 10 мс, для герконовых реле ≈ 2 мс.

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

WAIT_L:   IN IPORT

ANI 0000 0010B

JNZ WAIT_L        ; цикл, если D1 = 1

CALL DELAY      ; подпрограмма задержки на tзд

RET

22.ПРОГРАММИРОВАНИЕ ТИПОВЫХ ФУНКЦИЙ УПРАВЛЕНИЯ: ФОРМИРОВАНИЕ УПРАВЛЯЮЩИХ СИГНАЛОВ(СТАТИЧЕСКИХ И ИМПУЛЬСНЫХ), РЕАЛИЗАЦИЯ ВРЕМЕННЫХ ЗАДЕРЖЕК

Подключение исполнительного устройства к порту вывода

Виды управляющих сигналов:

1] Статические

VKL: MVI A, 01H

OUT OPORT  ; вывод D0 = 1

OTKL: MVI A, 00H

OUT OPORT  ; вывод D0 = 0

OTKL: XRA A           ; сброс (А)

OUT OPORT  ; вывод D0 = 0

2] Формирование импульсных управляющих сигналов

XRA A

OUT OPORT    ; вывод D1 = 0

MVI A, 02H

OUT OPORT    ; вывод D1 = 1

CALL DELAY  ; задержка на tИ

XRA A

OUT OPORT     ; вывод D1 = 0

MEANDER:  MVI A, 02H

OUT OPORT

CALL DELAY

XRA A

OUT OPORT

CALL DELAY

JMP MEANDER

MEANDER:  XRI 02H

OUT OPORT

CALL DELAY

JMP MEANDER

Формирование временных задержек

Для формирования временной задержки обычно используется метод программных циклов, при котором в некоторый регистр общего назначения, выполняющего роль счетчика, загружается число, которое затем в каждом проходе цикла уменьшается на 1. Так продолжается до тех пор, пока содержимое регистра-счетчика не станет равным нулю, что интерпретируется программой как момент выхода из программного цикла. Время задержки при этом определяется числом, загруженным в регистр-счетчик, и временем выполнения команд, образующих программный цикл. Схема алгоритма такой программы приведена на рис.1. Программы имеет символическое имя DELAY (задержка). Обычно программы временной задержки оформляются как подпрограммы, вызов которых из основной программы осуществляется по команде CALL DELAY, а возврат в основную программу - по команде RET.

Если в качестве регистра-счетчика использовать регистр В, то текст программы, отображающий структуру алгоритма на рис.1, имеет вид:

Возврат

 
 


Рис.1. Структурная схема алгоритма подпрограммы временной задержки

CALL       DELAY  ; вызов подпрограммы задержки

DELAY:   MVI       B, X        ; загрузка в регистр В числа Х

LOOP:    DCR         B             ; декремент В

JNZ          LOOP     ; цикл, если (В)=0

RET                         ; возврат в основную программу, если

; (В)=0

Для получения требуемой временной задержки необходимо определить значение числа Х, загружаемого в регистр-счетчик В. Определение числа Х выполняется на основе расчета времени выполнения команд, образующих данную подпрограмму. При этом необходимо учитывать, что команды MVI B, X и RET выполняются однократно, а число повторений команд DCR B и JNZ LOOP равно числу Х, загружаемому в регистр В. Кроме того, обращение к подпрограмме временной задержки осуществляется по команде CALL DELAY, время выполнения которой также необходимо учитывать при подсчете временной задержки.

В описании команд микропроцессора КР580ВМ80А указывается, за сколько машинных тактов Т выполняются команды [2, с.307-315]. На основе этих данных можно записать длительность выполнения команд:

CALL DELAY       -  17 тактов

MVI  B, X               -  7 тактов

DCR  В                   -  5 тактов

JNZ  LOOP             -  10 тактов

RЕТ                         -  10 тактов

Время выполнения любой команды подсчитывается по формуле: t = n * T, где n - число машинных тактов в команде;

Т - длительность машинного такта.

Длительность машинного такта определяется частотой fт тактового генератора микропроцессорной системы:

Т=1/fт

Величина Х может быть вычислена по формуле:

X=(tз-to)/tц, где tз - заданная величина задержки;

tо - время, требуемое для однократно выполняемых команд;

tц - время цикла, требуемое для выполнения циклически повторяемых команд.

Для примера примем, что требуемая временная задержка tз=100мкс, тактовая частота fт=2,0 МГц.

Рассчитаем

Т=1/fт=0,5 мкс, tо=(17+7+10)*0,5=17 мкс, tц=(10+5)*0,5=7,5 мкс, Х=(100-17)/7,5=11,07.

Если принять Х=11, получим tз=17+11*7,5=99,5 мкс, следовательно временная задержка будет реализована с погрешностью.

Определим величину погрешности программной реализации задержки.

Абсолютная погрешность

tз=99,5-100=-0,5 мкс.

Относительная погрешность      =   tз/tз * 100%=0,5/100*100%=0,5%.

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

В случае, когда точность формирования задержки 100 мкс с погрешностью -0,5мкс (-0,5%) не удовлетворяет разработчика, поступают одним из следующих способов:

1) уменьшают полученное значение Х на единицу или несколько единиц

Похожие материалы

Информация о работе

Тип:
Ответы на экзаменационные билеты
Размер файла:
1 Mb
Скачали:
0