Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Используемые в программе процедуры и макрокоманды

Proc _Reg

Цифровой регулируемый привод, таймерное исполнение!

Zad5:;задача 5 в меню каркасной программы

mov [I],0;инициализация переменных, I(k)

mov [I1],0;I(k-1)

mov [Nupr],0;управление на ЦАП

mov [Y],0;Y(k)

mov [Y1],0;Y(k-1)

mov [X],4000;задание скорости на входе фильтра

mov ax,[X];

sar ax,3;;ах=4000/8=500

mov [C],ax;С=500

TaimIni 2735, Privod;f0=438Гц = 1/Т 0 ; Т 0 = 0,00228с,

;вектор прерывания - Privod

; цикл фоновой (прерываемой) программы

ckl:

DisplBin 320,Y;индикация переменных, задание

DisplBin 350,Nos;обратная связь

DisplBin 380,Nras;рассогласование

DisplBin 410,Nu;управление

KeyTest;клавиатура нажималась? jz ckl;переход по нулю

ExitInt;выход из прерываний

WriteReg 0D000h, Nul;обнулить ЦАП, останов привода jmp menu;выход в меню

;=========================================

;обработчик таймерных прерываний

Privod: push ax;сохранение регистров фоновой программы

push cx

push dx

Call _Fz;фильтр, расчет задания, результат в Y

Call _Fos;формирование обратной связи Nos

Call _Reg;ПИ-регулятор, выход в Nu

mov al,20h;код 20h – в регистр al

out 20h,al;al – в порт с адресом 20h

pop dx;восстановить регистры

pop cx

pop ax

sti;разрешить прерывания процессору

iret;возврат в фоновую программу

;===========================

;Используемые процедуры

PROC _Fz;формирование задания, выход фильтра

mov ax,0

add ax,[C];ax=500

add ax,[Y];ax=500+y(k-1)

mov bx,[Y1]

sar bx,3;bx=1/8[y(k-1)]

sub ax,bx;ax=500 + y(k-1) -1/8[y(k-1)]

mov [Y],ax;Y(k) – новое значение задания скорости

mov [Y1],ax;Y(k-1) ← Y(k) для нового цикла

ret;возврат из процедуры

;================================================

;процедура формирования обратной связи с АЦП

PROC _Fos;формирование обратной связи

ReadReg 0F400h, Nos;чтение АЦП в переменную Nos ret

ENDP

;==========================================

;процедура регулятора скорости

mov dx,0;делимое в dx,ax

mov ax,[Nras];

mov bx,[a];делитель a=7 в регистре bx

div bx;деление dx:ax на bx; в ах –частное, в dx–остаток

add ax,[I1];ax=Nras/a+I(k-1)

mov [I],ax;I(k) – интегральная часть

mov [I1],ax;I(k-1)=I(k)

add ax,[Nras];добавить пропорциональную часть

mov [Nu],ax;Nu=ax – управление для ЦАП

WriteReg 0D100h;переслать в ЦАП

ret;возврат из процедуры

ENDP

;================================================

;Сегмент данных

DATASEG;начало сегмента данных

INCLUDE "pr_menu.dat";файл с данными для меню

 

;Область для сохранения параметров системы.

oldip8 dw 0;старое смещение вектора прер.

oldcs8 dw 0;старый сегмент вектора прер.

;область сегмента данных – управление приводом

X dw 0;задание на входе фильтра

Y dw 0;выход фильтра y(k)

Y1 dw 0;выход фильтра y(k-1)

C dw 0;константа

I dw 0;компонент интеграла I(k)

I1 dw 0;компонент интегралаI(k-1)

Nos dw 0;значение обр.связи в k интервале

Ras dw 0;рассогласование

Nu dw 0;управление (на ЦАП)

a dw 7;коэффициент а=7 алгоритма

Nul dw 0;нулевая константа для ЦАП

;конец сегмента данных

ENDS

;===============================================

STACK 200h;начало сегмента стека размером 200h

;===============================================

END Start;конец программы, стартовый адрес

;===============================================

Процедуры

_DisplBin – вывод на экран однословного двоичного числа со знаком путем прямой записи в видеопамять. Требует установки: в di –адреса знакоместа на мониторе, в переменной Atr – атрибута символов.

_PrintBin – вывод двоичного числа в десятичной форме.

_TestKey – вывод на монитор кодов и сканкодов клавиатуры в десятичной форме.

<== предыдущая лекция | следующая лекция ==>
Структура программы управления приводом | Макрокоманды. KeyWait– чтение символа из буфера клавиатуры и ожидание ввода, если буфер пуст
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 497; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.