Скачиваний:
30
Добавлен:
10.12.2013
Размер:
492.54 Кб
Скачать

2.3.4 Разработка алгоритма функционирования и программного обеспечения модуля ип/асвк.

Программно-аппаратным блоком модуля ИП/АСВК является микроконтроллер AT90S2313.

Микроконтроллер должен обеспечить выдачу сигнала на закрытие стопорного клапана в случае:

  • ”зависания” центрального вычислителя системы;

  • падения напряжения питания ниже уровня 4.40 В.

В любом случае срабатывания аппарата системы встроенного контроля должен быть снят сигнал исправности БЗД “БЗД испр”.

Время выполнения контроллером данных функции должно быть меньше цикла работы центрального вычислителя системы. Цикл работы модуля 5066 – 20 мс, таким образом время на отработку контроллером функций должно быть менее 20 мс.

”Зависание” центрального вычислителя системы контролируется сигналом ”метка FMC”. Данный сигнал генерируется модулем центрального процессора 5066 на каждом цикле работы. Отсутствие данного сигнала сигнализирует о нарушении функционирования модуля центрального процессора.

Исправность БЗД контролируется центральным вычислителем системы. Модуль центрального процессора 5066 при правильном подключении и функционировании всех датчиков генерирует сигнал БЗД испр_0.

Формирование сигнала при падении напряжения питания ниже уровня 4.40 В осуществляется микросхемой MAX 707.

Алгоритм функционирования модуля ИП/АСВК:

На каждом цикле работы микроконтроллер следит за сигналами приходящими с модуля центрального вычислителя системы и с супервизора МАХ 707. Сигнал на закрытии е стопорного клапана генерируется при отсутствии сигнала “метка FMC” или отсутствии сигнала ”БЗД испр_0” или при наличии сигнала от супервизора.

Блок схема алгоритма работы микроконтроллера приведена на рисунке 2.

Рисунок 2. Блок-схема алгоритма работы микроконтроллера.

При программной реализации алгоритма для фиксирования прихода сигналов ”метка FMC”, сигнала от супервизора использовались внешние прерывания микроконтроллера. При приходе сигнала от супервизора генерируется прерывание INT0. По приходу этого прерывания выдается сигнал ”закрыть СК” и снимается сигнал ”БЗД испр”. При приходе сигнала ”метка FMC” запускается таймер-счетчик. Таймер-счетчик заполняется импульсами частотой равной частоте внешнего резонатора деленной на 1024. Частота внешнего резонатора – 7372800 Гц. Счетчик заполняется частотой 7200. Цикл работы микропроцессорного модуля 5066 – 20 мс. Сигнал ”закрыть ЗСК” генерируется если сигнал ”метка FMC” не пришел в течении 4-ех циклов (80 мс). За 80 мс в счетчик пройдет 576 импульсов. Счетчик имеет 8 разрядов, следовательно при предварительной записи в счетчик числа 64 он переполнится 3 раза за 80мс. Таким образом программируемый счетчик-таймер используется для проверки периодичности прихода сигнала ”метка FMC”. При приходе сигнала ”метка FMC” генерируется прерывание INT1. В процедуре обработки этого прерывания сбрасывается счетчик, в который записывается число переполнений таймера-счетчика. Инкрементирование счетчика число переполнений происходит по приходу прерывания от таймера-счетчика. В фоновом цикле идет постоянная проверка счетчика числа переполнений, если его значение превышает 3, выдается сигнал ”закрыть СК” и снимается сигнал ”БЗД испр”. Также в фоновом цикле ведется проверка наличия сигнала ”БЗД испр_0” генерируемого центральным вычислителем системы. В случае отсутствия данного сигнала снимается сигнал ”БЗД испр”. В случае прихода сигнала ”метка FMC” с периодичностью более 4-ех циклов работы процессорного модуля, наличия сигнала ”БЗД испр_0” и отсутствия сигнала от супервизора генерируется сигнал ”БЗД испр”.

Программа, реализующая данный алгоритм:

.DEF PORTB = $18; адрес порта В

.DEF DDRB = $17; регистр направления приемо-передачи порта В

.DEF PORTD = $12; адрес порта D

.DEF DDRD = $11; регистр направления приемо-передачи порта D

.DEF TCNT0 = $32; адрес счетчика-таймера 0

.DEF TCCR0 = $33; регистр управления счетчика-таймера 0

.DEF TIMSK = $39; регистр маски прерываний от таймеров-счетчиков

.DEF GIMSK = $3B; общий регистр маски прерываний

.ORG $000; прерывание от системного сброса

RJMP RESET

.ORG $001; прерывание INT0

RJMP FMC

.ORG $002; прерывание INT1

RJMP END

.ORG $003

RETI

.ORG $004

RETI

.ORG $005

RETI

.ORG $006; прерывание при переполнении таймера 0

RJMP TIMER

.ORG $007

RETI

.ORG $008

RETI

.ORG $009

RETI

.ORG $00A

RETI

FMC:

CLR R17; обнуление счетчика количества переполнений таймера

TIMER:

INC R17; увеличение счетчика на 1

LDI R16, 0B10000000

MOV TCNT0, R16; запись в таймер числа 64

LDI R16, 0B00000101

MOV TCCR0, R16; конфигурация таймера

RESET:

LDI R16, 0B11111111

MOV DDRB, R16; установка порта В на вывод

LDI R16, 0B00000000

MOV DDRD, R16; установка порта D на ввод

LDI R16, 0B11000000

MOV GIMSK, R16; маска для разрешения внешнего прерывания ;INT 0 и INT 1

LDI R16, 0B00000010

MOV TIMSK, R16; маска для разрешения прерывания таймера 0

CLR R17

LDI R16, 0B10000000

MOV TCNT0, R16

LDI R16, 0B00000101

LDI TCCR0, R16

SEI ; глобальное разрешение прерываний

BEGIN:

LDI R16, 0B00000100

CP R17, R16; проверка количества переполнений таймера-счетчика

BREQ END; переход на метку END если R16 и R17 равны

IN R19, PORTD; чтение порта D

ANDI R19, 0B00000001; выделение последнего бита порта D

BRNE END_0; переход на метку END если нет БЗД испр_0

LDI R18, 0B00000100

OUT PORTB, R18; вывод в порт В сигнала БЗД исправен

RJMP BEGIN; переход на метку BEGIN

END_0:

LDI R18, 0B00000000

OUT PORTB, R18; снятие сигнала БЗД исправен.

END:

CLI ; глобальное запрещение всех прерываний

LDI R18, 0B00010000

OUT PORTB, R18; вывод в порт В сигнала закрытие СК ;и снятие сигнала БЗД исправен.

RJMP END

Результаты, полученные при отладке программы на микроконтроллере AT90S2313, показывают, что генерация сигнала “закрыть СК” занимает 15*10-5 с, что удовлетворяет требованиям по быстродействию.

Соседние файлы в папке Диплом(мои наработки)