Разработка и исследование МП системы влажности основы на шлихтовальной машине

Автор работы: Пользователь скрыл имя, 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

Вложенные файлы: 1 файл

Курсовой АТПП.docx

— 2.59 Мб (Скачать файл)

 

Закрытый обдуваемый двигатель марки 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*X2+X3)*10+6*X1+6*X2+6*X3+X4 , где Х1Х2Х3Х4 - шестнадцатиричное число

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;                               Деления числа на 100

mov R2, A;                            Число сотен в R1

mov A, B;                            Остаток от деления

mov B, #0Ah;    делим заново

div AB;                               на 10

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

 

; Выделение разрядов числа Х1Х2Х3Х4 (16) и запись их в отдельные  ячейки

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

Информация о работе Разработка и исследование МП системы влажности основы на шлихтовальной машине