Автор работы: Пользователь скрыл имя, 01 Апреля 2014 в 14:34, курсовая работа
По результатам курсовой работы были исследованы основные системы автоматического контроля и регулирования влажности на шлихтовальных машинах. Разработана МП система с конкретными датчиками и исполнительными устройствами.
Проведено конструкторское проектирования системы контроля влажности. Был разработан алгоритм и программа на языке Assembler для контроля и регулирования влажности основы на шлихтовальной машине.
Была построена имитационная модель САР влажности основы и сняты показания и результаты.
Введение 4
1 Обзор систем управления влажности основы на шлихтовальных машинах
5
1.1 Электронный кондуктометрический регулятор влажности основ ЭКРВО-1Т4
5
1.2 Влагомер ткацких основ ВК-2 9
1.3 Регулято¬р влажности ЭРВО-II системы ЦНИХБИ 11
1.4 Регулятор влажности фирмы Интрон (ГДР) 16
1.5 Регулятор влажности фирмы Маало (ФРГ) 20
2.5 Выбор операционных усилителей 10
2.6 Выбор мультиплексора 11
3 Программа на языке ASEMBLER для управления ЭВМ 13
Список используемой литературы 29
Закрытый обдуваемый двигатель марки 4A90А8У3 с техническими характеристиками:
Частота вращения ротора, об/мин: 700.
Мощность: 0,75Вт.
Ток статора (А) при напряжении 380 В: 2,7.
КПД, %: 68,0.
Cosφ: 0,62.
5 Создание алгоритма и
5.1 Алгоритм МП системы контроля и управления влажности основы
5.2 Программа написанная на ASSEMBLER
org 0000h; Начальный адрес
jmp INICIAL_; Переход на блок инициализации
org 0003h; Переход на блок
jmp KLAV_; обработки клавиатуры
INICIAL_:
CLK bit P1.1; Канал синхронизации на АЦП
DO bit P1.2; Канал приема данных с АЦП
CS bit P1.0; Канал запуска/остановки преобразования на АЦП
MUXI bit P1.5; Подача сигнала на адрес входного мультиплексора
MUXO bit P1.5; Подача сигнала на адрес выходного мультиплексора
K1 bit P2.5; Код клавиши
K2 bit P2.6; пришедший с
K3 bit P2.7; шифратора
WMCON equ 96h; регистор WMCON для управления работой флэш памяти
COD_ACP equ 2Dh; Код пришедший с АЦП
PODG_:
mov SP, #40h; Указатель вершины стека на 40h
mov IE, #01h; Выбор прерывания по INT0
setb IT0; Настройка INT0 на падение потенциала
setb EA; Запуск всех прерываний
mov TMOD, #11h; Выбор T/C0 и T/C1 в режим таймера
orl WMCON, #18h; установка бита режима записи и выбор режима доступа в EEPROM (EEMWE=1, EEMEN=1)
mov DPTR, #0001h; Заданное значение влажности находится по адрессу 0001h
mov A, #09h; Сохранения значения заданной величины
movx @DPTR, A; влажности в EEPROM
inc DPTR; Выбор параметра заданного отклонения по адрессу 0002h
mov A, #02h; Сохранения заданной величины
movx @DPTR, A; отклонения в EEPROM
inc DPTR; Выбор параметра заданной температуры по адрессу 0003h
mov A, #19h; Сохранения заданной величины (25)
movx @DPTR, A; температуры в EEPROM
anl WMCON, #0EFh; Очистка бита EEMWE после завершения записи
MAIN:
; Блок вычисления аналогого сигналала
PREOBRAZOVANIE:
Clr MUXI; Выбор канала сигнала с датчика влажности
call ACP_; Получение кода с АЦП
mov A, COD_ACP; код напряжения записать в аккомулятор
mov B, #04h; 4 -> B
mul AB; код напряжения*4 - для получения реального значения влажности
mov 29h, B; Запись влажности реальной
mov 2Ah, A; в байт 29h (ст) 2Ah (мл)
mov DPTR, #0001h; Выбор Влажность заданая из EEPROM
movx A, @DPTR; и запись его в аккомулятор
mov B, #0Ah; Запись 10 -> B
mul AB; 10*Влажность заданная
mov 2Bh, B; Запись результата 10*Влажность заданная
mov 2Ch, A; в 2Bh (cт) 2Ch (мл)
mov R0, #2Ch; Подготовка к функции
mov R1, #2Ah; вычитания 2х байтовых чисел
call VICHITANIE_2B; Получение разности текущей влажности и заданной
jc MENSHE; ∆m – отрицательное (MENSHE)
mov DPTR, #0002h; Выбор заданного отклонения из EEPROM
movx A, @DPTR; и запись его в аккомулятор
mov B, #0Ah; Запись 10 -> B
mul AB; 10*Влажность заданная
mov 29h, B; Запись 10*отклонения
mov 2Ah, A; в байт 29h (ст) 2Ah (мл)
mov R0, #2Ch; Подготовка к функции
mov R1, #2Ah; вычитания 2х байтовых чисел
call VICHITANIE_2B; ∆m-E Разность отклонения влажности и отклонение заданая
jc DISPLAY; ∆m<E то выход на блок DISPLAY
setb MUXI; Выбор канала сигнала с датчика температуры
call ACP_; Получение кода с АЦП
mov A, COD_ACP; код напряжения записать в аккомулятор
mov B, #04h; 2 -> B
mul AB; код напряжения*2 - для получения реального значения температуры
mov 29h, B; Запись температуры реальной
mov 2Ah, A; в байт 29h (ст) 2Ah (мл)
mov DPTR, #0001h; Выбор температуры заданой из EEPROM
movx A, @DPTR; и запись его в аккомулятор
mov B, #0Ah; Запись 10 -> B
mul AB; 10*Температура заданная
mov 2Bh, B; Запись результата 10* Температура заданная
mov 2Ch, A; в 2Bh (cт) 2Ch (мл)
mov R0, #2Ch; Подготовка к функции
mov R1, #2Ah; вычитания 2х байтовых чисел
call VICHITANIE_2B; Получение разности текущей влажности и заданной
cj MENSHE2; T>Tпред (MENSHE2)
clr MUXO; Выбор выхода сигнала на вентилятор
mov P0, #FFh; включить вентилятор
jmp DISPLAY; выход на блок DISPLAY
MENSHE2:
setb MUXO; Выбор выхода сигнала на заслонку
mov P0, #FFh; включить двигатель открывающий заслонку
jmp DISPLAY; выход на блок DISPLAY
MENSHE:
mov DPTR, #0002h; Выбор заданного отклонения из EEPROM
movx A, @DPTR; и запись его в аккомулятор
mov B, #0Ah; Запись 10 -> B
mul AB; 10*Влажность заданная
mov 29h, B; Запись 10*отклонения
mov 2Ah, A; в байт 29h (ст) 2Ah (мл)
mov R0, #2Ch; Подготовка к функции
mov R1, #2Ah; вычитания 2х байтовых чисел
call VICHITANIE_2B; ∆m-E Разность отклонения влажности и отклонение заданая
jc DISPLAY; ∆m<E то выход на блок DISPLAY
clr MUXO; Выбор выхода сигнала на вентилятор
mov P0, #0Fh; убавить вентилятор
setb MUXO; Выбор выхода сигнала на заслонку
mov P0, #0Fh; убавить двигатель открывающий заслонку
; Блок отображения чисел на дисплее
DISPLAY:
mov A, BOOL; Значение буаленских переменых в аккомулятор
cjne A, #10h, NEXT; Включено ли отображение текущей влажности
mov 31h, 29h; Запись влажности текущей
mov 32h, 2Ah; в байт 31h (ст) 32h (мл)
call PREOB16V10; Подпрограмма преобразования 16-ного числа в 10-ное
NEXT: mov R0, #1Dh; Адресс первого индикатора
mov R6, #00h; Номер индикатора
SCREEN:
mov A, P3; Перенос содержимого P3 в аккоммулятор
swap A; Cмена местами ст. и мл. тетрады
anl A, #0F0h; Обнуление младшей тетрады
add A, R6; Добавление в ьладшею тетраду номер текущего зажигаемого индикатора
swap A; Расположение бит в первоначальном порядке
mov P3, A; Подача на дешифратор номер индикатора
mov A, P2; P2 -> A
anl A, #0F0h; Обнуление младшей тетрады
mov A, @R0; Засылка в младшею тетраду десятичное число
mov P2, A; Засылка кода цифры на декодер
mov TL1, #0C7h; Загрузка в таймер Т/С1
mov TH1, #0B5h; чмсло B5C7h=46535 - 19 мС
setb TR1; Включение таймера T/C1
WAIT_19MS:
jnb TF1, WAIT_19MS; Ждать пока бит TF1 не переполнится
clr TF1; Сброс бита TF1
clr TR1; Выключение таймера Т/C1
inc R0; Переход к адресу содержащий следующее десятичное число
inc R6; Cледующий номер индикатора
cjne R6, #08h, SCREEN; Делать эти операции пока все индикаторы не загорятся
jmp MAIN;
ACP_:
mov COD_ACP, #00h; Очистка содержимого байта COD_ACP
setb DO; Установка начального
setb CS; состояния АЦП
clr CLK;
clr CS; Запуск АЦП
mov R7, #11h; 17 -> R7
WAIT_17MKS:
nop; Задержка на17 мкС
djnz R7, WAIT_17MKS;
mov R0, #08h; 8 -> R0
DATA_ACP:
setb CLK;
nop
nop
clr CLK; Формирование импульса для чтения бита
nop
nop
mov C, DO; Чтение бита с АЦП
mov A, COD_ACP; вталкивание бита
rlc A; данных в байт COD_ACP
mov COD_ACP, A;
nop
nop
nop
djnz R0, DATA_ACP; Выполнять операции пока все биты не будут переданы
nop
nop
setb CS; Конец считывания битов данных
nop
nop
RET
KLAV_:
call DELAY50; Вызов подпрогаммы задержки на 50 мС
call SAVE_ST; Cохранение в стэк
mov A, #00h; Очистка содержимого аккомулятора
clr C; Очистка бита С
jb K3, L1; Запись
setb C; в аккомулятор
L1: rlc A; код
jb K2, L2; нажатой
setb C; клавиши
L2: rlc A;
jb K1, L3;
setb C;
L3: rlc A;
cjne A, #01h, JUMP1; Определения
jmp SB1; какая
JUMP1: cjne A, #02h, JUMP2; кнопка
jmp SB2; нажата
JUMP2: cjne A, #03h, JUMP3; и переход
jmp SB3; на соответствующую
JUMP3: cjne A, #04h, JUMP4; подпрограмму
jmp SB4;
JUMP4: jmp END_KLAV;
; Кнопка отображения заданной величины влажности
SB1:
mov BOOL, #20h; Влажность заданная=true
mov DPTR, #0001h; Выбор заданной Влажности
movx A, @DPTR; и запись её в аккомулятор
mov B, #0Ah; 10->B
mul AB; Для получения дробной части значения влажности
mov 31h, B; Результат записать
mov 32h, A; в 31h (ст.) 32h (мл.)
jmp END_KLAV;
; Кнопка отображения текущей влажности
SB2:
mov BOOL, #10h; Влажность текущая=true
jmp END_KLAV;
; Кнопка +
SB3:
call VIBOR_PARAMETRA
inc A; Увеличение на 1 заданную влажность
call ZAPIS_PARAMETRA
jmp END_KLAV;
; Кнопка отображения текущей температуры
SB4:
setb MUXI; Выбор канала сигнала с датчика температуры
call ACP_; Получение кода с АЦП
mov 31h, B; Результат записать
mov 32h, A; в 31h (ст.) 32h (мл.)
jmp END_KLAV;
; Кнопка отображения заданной величины температуры
SB5:
mov DPTR, #0003h; Выбор заданной температуры
movx A, @DPTR; и запись её в аккомулятор
mov B, #0Ah; 10->B
mul AB; Для получения дробной части значения влажности
mov 31h, B; Результат записать
mov 32h, A; в 31h (ст.) 32h (мл.)
jmp END_KLAV;
; Кнопка -
SB6:
call VIBOR_PARAMETRA
dec A; Уменьшение на 1 заданную влажность
call ZAPIS_PARAMETRA
END_KLAV:
call PREOB16V10; Подпрограмма преобразования 16-ного числа в 10-ное
call LOAD_ST; Выгрузка содержимого стэка
RETI
; Блок преобразования 16ное число в десятичное представленное в 2х байтовой форме
; Десятичное число 2-х байтого формата
можно представить в виде 4*Х1*10^3+2*X2*10^2+(9*X1+5*
PREOB16V10:
mov R2, 31h; Запись входных
mov R3, 32h; переменых
call RAZLOZH_X1X2X3X4;
mov 25h, R4; Х1 -> 25h
mov 26h, R5; X2 -> 26h
mov 27h, R6; X3 -> 27h
mov 28h, R7; X4 -> 28h
; Преобразование слагаемого Х4
mov A, 28h; Занос всего числа в аккомулятор
call SLOZHEDINIC; подпрограмма для работы только с единичной частью числа
; Преобразование слагаемого 6*X1+6*X2+6*X3
mov R1, #27h; Выполним в
mov R7, #03h; цикле
EDINIC_3:
mov A, @R1; 3 простых
mov B, #06h; операции
mul AB; 6*Хn
call SLOZHEDINIC;
dec R1;
djnz R7, EDINIC_3;
; Преобразование слагаемого 9*X1
mov A, 25h;
mov B, #09h;
mul AB;
call SLOZHDESIATKOV; подпрограмма для работы только с десятичной частью числа
; Преобразование слагаемого 5*X2
mov A, 26h;
mov B, #05h;
mul AB;
call SLOZHDESIATKOV;
; Преобразование слагаемого X3
mov A, 27h;
call SLOZHDESIATKOV;
; Преобразование слагаемого 2*X2
mov A, 26h;
mov B, #02h;
mul AB;
call SLOZHSOTEN; подпрограмма для работы только с сотой частью числа
; Преобразование слагаемого 4*X1
mov A, 25h;
mov B, #04h;
mul AB;
call SLOZHTISIACH; подпрограмма для работы только с тысячной частью числа
RET
; Задержка на 50 мС
DELAY50:
mov TL0, #0AFh; Запись числа 3CAFh
mov TH0, #3Ch; в таймер/счетчик T/C0
setb TR0; запуск таймера
WAIT_50MS:
jnb TF0, WAIT_50MS; Ждать пока таймер не переполнится
clr TF0; Сброс бита переполнения таймера
clr TR0; Останов таймера
RET
; Алгоритм сложения десятичных цифр начиная с единиц
SLOZHEDINIC:
call RAZLOZHENIE_3;
mov A, R4;
mov R0, #24h;
mov R6, #03h;
call SLOZHENIE;
mov A, R3;
mov R0, #23h;
mov R6, #02h;
call SLOZHENIE;
mov A, R2;
mov R0, #22h;
mov R6, #01h;
call SLOZHENIE;
RET
; Алгоритм сложения десятичных цифр начиная с десятков
SLOZHDESIATKOV:
call RAZLOZHENIE_3;
mov A, R4;
mov R0, #23h;
mov R6, #03h;
call SLOZHENIE;
mov A, R3;
mov R0, #22h;
mov R6, #02h;
call SLOZHENIE;
mov A, R2;
mov R0, #21h;
mov R6, #01h;
call SLOZHENIE;
RET
; Алгоритм сложения десятичных цифр начиная с сотен
SLOZHSOTEN:
call RAZLOZHENIE_3;
mov A, R4;
mov R0, #22h;
mov R6, #02h;
call SLOZHENIE;
mov A, R3;
mov R0, #21h;
mov R6, #01h;
call SLOZHENIE;
RET
; Алгоритм сложения десятичных цифр начиная с тысяч
SLOZHTISIACH:
call RAZLOZHENIE_3;
mov A, R4;
mov R0, #21h;
mov R6, #02h;
call SLOZHENIE;
mov A, R3;
mov R0, #20h;
mov R6, #01h;
call SLOZHENIE;
RET
;Подпрограмма разложение
RAZLOZHENIE_3:
mov B, #64h; Занос в регистор В числа 100
div AB;
mov R2, A; Число сотен в R1
mov A, B; Остаток от деления
mov B, #0Ah; делим заново
div AB;
mov R3, A; Число десятков в R2
mov R4, B; Число единиц в R3
RET
; Сложение чисел в пределе одного разряда и в аккомулятор записывается число переходящее к другому разряду
SLOZHENIE:
add A, @R0;
da A;
mov R5, A;
anl A, #0Fh;
mov @R0, A;
mov A, R5;
swap A;
anl A, #0Fh;
dec R0;
djnz R6, SLOZHENIE;
RET
; Выделение разрядов числа
RAZLOZH_X1X2X3X4:
mov A, R2; Выделение и запись
anl A, #0Fh; числа Х2
mov R5, A; в отдельну ячейку
mov A, R2;
swap A; Смена младшой и старшей тетрады
anl A, #0Fh; Выделение и запись
mov R4, A; числа Х1 в отдельну ячейку
mov A, R3; Выделение и запись
anl A, #0Fh; числа Х4
mov R7, A; в отдельну ячейку
mov A, R3;
swap A; Смена младшой и старшей тетрады
anl A, #0Fh; Выделение и запись
mov R6, A; числа Х3 в отдельну ячейку
RET
; Подпрограмма вычитания 2х байтовых чисел
VICHITANIE_2B:
clr C; cброс С в 0
mov R7, #02h; Количество байтов в числе
VICH_2B:
mov A, @R0; Байт 1ого числа в аккомулятор
subb A, @R1; Вычитание байта 1ого числа из байта 2ого числа
mov @R0, A; Результат записывается в адрес находящийся в R0
Информация о работе Разработка и исследование МП системы влажности основы на шлихтовальной машине