Автор: Пользователь скрыл имя, 20 Июня 2013 в 16:21, курсовая работа
Самым основным преимуществом цифровых систем является возможность быстрого изменения алгоритма их работы, изменяя только их программную часть. Программа цифрового регулятора может быть изменена в соответствии с требованиями проектировщиков или приспособлена к характеристикам объекта без каких-либо изменений в аппаратной части регулятора. Эти и другие преимущества дискретных систем склоняют выбор проектировщиков к выбору цифровых регуляторов.
Введение…………………………………………………………………..3 стр.
1. Составление структурной схемы исполнительной системы, расчет параметров. Выбор структуры преобразователя ……………………….4 стр.
2. Построение блока сбора данных. Выбор датчиков. Потенциальное разделение. Структура аналогового ввода. Нормализация сигналов. Аналоговая фильтрация. УВХ. АЦП………………………………………………….6 стр.
3. Ввод импульсных сигналов. Подсчет скорости. Расчет обратных связей блока сбора данных на уровне цифровых кодов………………………………12 стр.
4. Блок обработки данных. Аналоговый прототип. Синтез аналоговых регуляторов………………………………………………………………..14 стр.
5. Дискретизация аналоговых прототипов регуляторов. Перерасчет входов и выходов в цифровые эквиваленты. Согласование с выходом исполнительной системы…………………………………………………………………….19 стр.
6. Ограничение тока (выходного сигнала регулятора скорости). Задатчик интенсивности процессов разгона исполнительной системы………….21 стр.
7. Моделирование системы в среде Matlab. Исследование переходных процессов в аналоговом и дискретных вариантах……………………….23 стр.
8. Разработка алгоритмов регуляторов……………………………………26стр.
9. Разработка программы регуляторов. Построение рабочей структуры микроконтроллерной системы сбора, обработки данных, формирования управляющих воздействий…………………………………………………28 стр.
Заключение…………………………………………………………………..33 стр.
Список литературы………………………………………………………….34 стр.
----------
0.08 s + 1
>> Zf=c2d(Wf,0.001,'zoh')
Transfer function:
0.01242
----------
z - 0.9876
Sampling time: 0.001
.
Представим ее в виде z – передаточной функции:
Помножим числитель и знаменатель на z-1:
Проведя дальнейшие преобразования получим:
На основе алгоритма вычисления из предыдущего пункта можно составит программу управления контроллером:
В данной программе подразумевается, что любое целое число, это дробное число с 4 – мя знаками после запятой.
.MODEL SMALL
.STACK 64
.DATA
ICR19 EQU 453h; Имя адресу регистра управления прерыванием PPG0/1
Ind EQU 400h; Имя адресу порта индикатора
PCSR0 EQU 0000 0122h; Присвоение имен адресам регистров установки
PCSR1 EQU 0000 012Ah; периода повторения импульсов
PCSR2 EQU 0000 0132h; EQU – директива присвоения имени
PCSR3 EQU 0000 013Ah;
PDUT0 EQU 0000 0124h; Присвоение имен адресам регистрам установки
PDUT1 EQU 0000 012Ch; скважности импульсов
PDUT2 EQU 0000 0134h;
PDUT3 EQU 0000 013Ch;
PCNH0 EQU 0000 0126h; Присвоение имен адресам регистров состояния PPG
PCNH1 EQU 0000 012Eh;
PCNH2 EQU 0000 0136h;
PCNH3 EQU 0000 013Eh;
Port_Uz EQU 0000 0146h; Порт для ввода Uз
Port_DS EQU 0000 014Eh; Порт для ввода информации с датчика скорости
Port_DT EQU 0000 0156h; Порт для ввода информации с датчика тока
Port_OUT EQU 0000 015Eh;Порт для вывода результата работы регулятора
Koc DW 00520; Задаем коэфф-т обратной связи по скорости
Kot DW 08333; Задаем коэфф-т обратной связи по току
Kf1 DW 09876; Задаем первый кофф-т фильтра равный 0,9876
Kf2 DW 00124; Задаем второй кофф-т фильтра равный 0,0124
K1 DW 03000; Задаем первый кофф-т регулятора скорости равный 0,3
K2 DW 02900; Задаем второй кофф-т регулятора скорости равный 0,29
K3 DW 347800; Задаем первый кофф-т регулятора тока равный 34,78
K4 DW 343500; Задаем второй кофф-т регулятора тока равный 34,35
A DW 0;
B DW 0;
Xi DW 0;
Xi1 DW 0;
Yi DW 0;
Yi1 DW 0;
Uout_f DW 0;
Uout_f_Pred DW 0;
Uout_RS DW 0;
Uout_RS_Pred DW 0;
Uout_RT DW 0;
Uout_RT_Pred DW 0;
GCN20 EQU 0000 011Bh; Присвоение имени адресу GCN20
GCN10 EQU 0000 0118h
PFR0 EQU 00000418h; Присвоение имени адресу регистра PFR0 переключения
;выводов микроконтроллера с I/O на OCPA0…OCPA3 (PPG0…PPG3)
IRQF0 EQU FFEF; маска сброса бита 4 PCNH0 запроса прерывания
IRQF1 EQU 0010; маска установки бита 4 PCNH0 запроса прерывания
;-------Главная программа-----
.CODE; начало сегмента кода программы
MAIN PROC FAR
START: ;метка начала программы
AND CCR,#0BFH ;Запретить прерывание в регистре CPU PS:CCR, бит I=0
MOV ICR19,00h ;установит уровень прерывания 0 (высший)
MOV PFR0 #0000 0000 0000 1111h ; подключение к выходу OCPA0…OCPA3
MOV PCNH0,#110000000100000B; Разрешен запрос прерывания бит 5=1
MOV PCNH1,#110000000000001B; Инвертированная полярность
MOV PCNH2,#110000000000001B; PCNH0->TK1, PCNH1->TK2, PCNH2->TK3,
MOV PCNH3,#110000000000000B; PCNH3->TK4,нормальная полярность
MOV PCSR0,#0063H; Ввод в регистры установки периода
MOV PCSR1,#0063H; Период для всех ключей одинаков
MOV PCSR2,#0063H; и равен m
MOV PCSR3,#0063H;
MOV GCN20,#00001111H ;Разрешение сигналов с EN0…EN3 регистра CN20
MOV GCN10,#0011001000010000B ;
ZADAN EQU 000008h; присвоить имя ZADAN порту ввода c адресом 000008h
MOV ILM,#07h ;установит уровень 7 в PS:ILM
OR CCR,#40h ; Разрешить прерывание в регистре CPU PS:CCR, бит I=1
LOOP: MOV Ind, #00h; Команды переключают содержимое регистра 0–>1–>0
MOV Ind, #01h ; Заполняют цикл не выполняя полезной работы. Ожидание
; прерывания от PPG по окончании циклов
m
BRA LOOP ; безусловный переход
; ---------обработчик прерывания - программа
управления--------------------
WARI: AND PCNH0, IRQF0; Очистить флаг запроса прерывания PCNH0
MOV CX, 10000;
IN AX, Port_Uz; Берем значение Uз в ветвь обратной связи
MOV Uz, AX; предаем его из AX в переменную Uz
MOV AX, Uout_f_Pred; Отправляем предыдущее значение выхода фильтра в AX
MOV BX, Kf1; Отправляем значение первого коэффициента в BX
MUL BX; Умножаем Uout_f_Pred*Kf1
DIV CX;
MOV DX, AX;
MOV AX, Uz_Pred; Умножаем Uz_Pred*Kf2
MOV BX, Kf2;
MUL BX;
DIV CX;
ADD AX, DX; Uout_f_Pred*Kf1 + Uz_Pred*Kf2
MOV Uout_f, AX; Uout_f = Uout_f_Pred*Kf1 + Uz_Pred*Kf2
MOV Uz_Pred, Uz;
IN AX, Port_DS; Берем значение скорости w в ветвь обратной связи
MUL Koc; Домнажаем это значение на Кос
DIV CX; и делим на 10000 чтобы сохранить понятие 4 знака после запятой
SUB Uout_f, EAX; Отнимаем от значения с выхода фильтра значение w*Koc
MOV Xi, AX;
MOV A, K1;
MOV B, K2;
MOV Yi1, Uout_RS_Pred;
MOV Xi1, Uout_f_Pred;
CALL PF;
MOV Uout_f_Pred, Uout_f;
MOV Uout_RS, Yi;
IN AX, Port_DT; Берем значение тока t в ветвь обратной связи
MUL Kot; Домнажаем это значение на Коt
DIV CX; и делим на 10000 чтобы сохранить понятие 4 знака после запятой
SUB Uout_RS, AX; Отнимаем от значения с выхода фильтра значение w*Kot
MOV Xi, AX;
MOV A, K3;
MOV B, K4;
MOV Yi1, Uout_RT_Pred;
MOV Xi1, Uout_RS_Pred;
CALL PF;
MOV Uout_RS_Pred, Uout_RS;
MOV Uout_RS_Pred, Uout_RS;
MOV Uout_RT_Pred, Uout_RT;
MOV Uout_RT, Yi;
OUT Port_OUT, Uout_RT;
MOV A, ZADAN; ввод задания
SUB ZADAN, 0
BN Obrat ;если ZADAN отрицательно флаг N=1, перейти к Obrat
MOVW PDUT0,PCSR0 ; ТК1 открыт, выход прямой PDUT0=PCSR0
MOVW PDUT1,0h ; ТК2 закрыт нулевым сигналом, выход обратный
MOVW PDUT2,A ;ТК3 переключается, выход обратный
MOVW PDUT3,A ; ТК4 переключается, выход прямой
JMP OBHOD
Obrat: MOVW PDUT0,A ;ТК1 переключается, выход прямой PDUT0=PCSR0
MOVW PDUT1,A ;ТК2 переключается, выход обратный
MOVW PDUT2, PCSR0 ;ТК3 открыт, выход обратный
MOVW PDUT3,0h ;ТК4 закрыт нулевым сигналом, выход прямой
OBHOD: RETI ; возврат из обработчика прерывания
JMP START ; конец программы, выполнять программу с метки START
MAIN ENDP
PF PROC NEAR ;Подпрограмма для вычисления ПФ по формуле Yi = Yi-1+ A*Xi - B*Xi-1
MOV AX, A; A*Xi
MOV BX, Xi;
MUL BX;
DIV CX;
MOV BX, Yi1; Yi-1+ A*Xi
ADD AX, BX;
MOV BX, AX;
MOV DX, Xi1; B*Xi-1
MUL DX;
DIV CX;
SUB BX, AX; Yi-1+ A*Xi - B*Xi-1
MOV Yi, BX; Yi = Yi-1+ A*Xi - B*Xi-1
PF ENDP
END MAIN
Далее приводится функциональная схема управления электроприводом.
В состав этого семейства микроконтроллеров входит программируемый генератор импульсов на 4 или 8 каналов (в зависимости от модификации контроллера) 16-ти битовых таймеров РРG (каналы ch0…ch3 на рисунке 20).
Рисунок 20. Функциональная схема генератора импульсов на 4-канала PPG
Работу таймеров PPG поддерживают: 16-битовый перезагружаемый таймер (16-bit reload timer), который является отдельным встроенным в контроллер блоком, при симметричном управлении не используется; general control registr 20 (GCN20)-основной регистр управления, используется, чтобы включить или отключить программную активацию; disable register 0 (PDBL0) установка бит в “0”-пропускает, а в “1”-блокирует тактовые импульсы, (по умолчанию все биты регистра установлены в “0”); general control registr 10 (GCN10)–основной регистр выбора источника запуска: программного или от перезагружаемого таймера. Последние три регистра входят в состав генератора импульсов. Каждый канал PPG0…PPG3 имеет по одному внешнему выходу соответственно OCPA0…OCPA3. Развернутая функциональная схема одного канала таймера PPG приведена на рисунке 21.
Рисунок 21. Функциональная схема одного канала таймера PPG
Модуль 16-битового таймера PPG содержит 16-битовый счетчик обратного счета (16-bit down-counter, PDSR), предварительный настраиваемый делитель тактовой частоты (prescaler), 16-битовый регистр PCSR установки периода управляющих импульсов транзисторных ключей, 16-битовый регистр PDUT установки скважности управляющих импульсов транзисторных ключей, 16-битовый регистр PCNH управления состоянием таймера PPG. Каждый таймер PPG может быть настроен на режим работы широтно-импульсной модуляции (PWM) или режим формирования одиночных импульсов.
Заключение
В данной работе я составил
программу регулятора скорости электродвигателя
на основе тиристорного преобразователя.
Была реализована программа
По выражению (7.1.8) составим программу
цифрового регулятора тока. Обозначим
переменные в таблице 1:
Таблица 1. Используемые переменные.
Переменная |
Хранимое значение |
uprslovo |
Управляющее двоичное слово 01011111: 0 – обозначение управляющего слова; 1 – автоотключение каналов портов после выхода из программы; 0 – укороченный процесс записи; 1 – тип приоритетов не установлен; 1111 – разрешена работа по всем каналам. |
Portuprsl |
адрес порта устройства сопряжения цифрового регулятора и объета управления |
outport |
адрес порта вывода управляющего сигнала на объект управления. |
inport1 |
адрес порта ввода управляющего воздействия. |
inport2 |
адрес порта ввода сигнала с датчика тока якоря двигателя |
I0 |
Iя[nT] |
Im1 |
Iя[(n-1)T] |
dU0 |
∆U[nT] = Uрс[nT] – Uот[nT]. |
dUm1 |
∆U[(n-1)T] = Uрс[(n-1)T] – Uот[(n-1)T]. |
Программа цифрового регулятора:
TITLE CURRENT_REGULATOR
REGUL_SEGMENT
ORG 100H
I0 dw 0 ; резервирование памяти под переменные
Im1 dw 0
dU0 dw 0 ; текущее входное напряжение
dUm1 dw 0 ; напряжения на предыдущих циклах
UPRSLOVO equ 01011111B ; загрузка управляющего слова,
A dw 2888 ; задание постоянных коэффициентов
B dw 2813
K dw 10000
INPORT1 equ 301h ; присвоение имён портам ввода/вывода
INPORT2 equ 302h
OUTPORT equ 303h
PORTUPRSL equ 304h
dUm1 equ 0 ; начальные условия
Im1 equ 0
START
LOOP
IN AX, INPORT2 ; читаем сигнал обратной связи
MOV BX, AX
IN AX, INPORT1 ; читаем сигнал задания
SUB AX, BX ; вычисляем dU0
MOV dU0, AX ; храним dU0 для участия в след. цикле
IMUL A ; (AX)¬A *dU0
IDIV K ; (AX)¬A*dU0/K
MOV I0, AX ; I0= - A*dU0/K
MOV AX, dUm1 ; (AX)¬dUm1
IMUL B ; (AX)¬B*dUm1
IDIV K ; (AX)¬B*dUm1/K
SUB I0, AX ; I0= - A*dU0/K+B*dUm1/K
MOV AX, Im1 ; (AX)¬Im1
IDIV K ; (AX)¬Im1/K
SUB I0, АХ ; I0= - A*dU0/K+B*dUm1/K-Im1/K
MOV AX, I0 ; пересылка выходного сигнала в аккумулятор
OUT OUTPORT, AX ; вывод выходного сигнала из аккумулятора
MOV Im1, I0 ; подготовка данных для следующего цикла
MOV dUm1, dU0
JMP LOOP ; безусловный переход к следующему циклу вычислений
REGUL ENDS
END START
12.2. Программирование регулятора скорости.
По выражению (7.2.8) составим программу цифрового регулятора тока. Обозначим переменные в таблице 2:
Таблица 2. Используемые переменные.
Переменная |
Хранимое значение |
uprslovo |
Управляющее двоичное слово 01011111: 0 – обозначение управляющего слова; 1 – автоотключение каналов портов после выхода из программы; 0 – укороченный процесс записи; 1 – тип приоритетов не установлен; 1111 – разрешена работа по всем каналам. |
рortuprsl |
адрес порта устройства сопряжения цифрового регулятора и объета управления |
outport |
адрес порта вывода управляющего сигнала на объект управления. |
inport1 |
адрес порта ввода управляющего воздействия. |
inport2 |
адрес порта ввода сигнала с датчика тока якоря двигателя |
W0 |
w[nT] |
Wm1 |
w[(n-1)T] |
dU0 |
∆U[nT] = Uрс[nT] – Uот[nT]. |
dUm1 |
∆U[(n-1)T] = Uрс[(n-1)T] – Uот[(n-1)T]. |