Автор работы: Пользователь скрыл имя, 22 Декабря 2012 в 23:16, курсовая работа
Основной технической базой автоматизации управления технологическими процессами являются специализированные микропроцессорные устройства. При изучении специализированных микропроцессорных устройств рассматриваются приемы проектирования как аппаратных, так и программных средств.
Введение 4
1 Постановка задачи 5
1.1 Описание технологического процесса 5
1.2 Описание имеющихся средств автоматизации 13
1.3 Требования к программно–техническому комплексу 17
2 Выбор конфигурации и средств локальной вычислительной сети 19
2.1 Структура вычислительного комплекса 19
2.2 Конфигурация локальной вычислительной сети 20
3 Создание локального уровня автоматизации 22
3.1 Сравнительный анализ существующих контроллеров. Выбор ПЛК 22
3.2 Алгоритм управления 24
3.3 Листинг программы 26
4 Создание мнемосхемы для АРМ оператора 34
Заключение 36
Список использованной литературы 37
Приложение А (обязательное) 38
Приложение Б (справочное) 40
Каждый порт микроконтроллера используется для передачи информации и управления. Порт P0 служит для посылки управляющих сигналов исполнительным механизмам (задвижкам и барботирующим кольцам), порт P1, выводы которого соединены с АЦП, используется для получения показаний датчиков технологического процесса. Выводы порта P2 соединены с индикаторами датчиков и автономными устройствами индикации и принимают дискретные сигналы о состоянии технологического процесса. Наконец, порт P3 выполняет функции управления АЦП и передачи информации пульту оператора.
3.2 Алгоритм управления
Микроконтроллер системы работает по записанной в нем программе языка низкого уровня. Упрощенная блок–схема алгоритма работы микроконтроллера изображена на рисунке 3.2
Рисунок 3.2
После подачи на специальный вход микроконтроллера сигнала сброса начинается съем показаний с датчиков. АЦП поочередно опрашивает каждый датчик, переводя их показания в цифровой код, и посылает эти значения в микроконтроллер. Тот, в свою очередь, сохраняет показания в ОЗУ и проверяет вывод RxD, который служит приемником данных, поступающих по линии RS–485, на наличие сигнала с пульта оператора. По стандарту RS–485 пакет данных начинается с нуля, таким образом, МК реагирует на сигнал низкого логического уровня на этом входе, посылая при этом по линии TxD сигнал «0», сообщая о готовности принять пакет. Получив сигнал о готовности МК, внешнее управляющее устройство начинает передачу однобайтового пакета по последовательной шине RxD через микросхему MAX202E. МК принимает пакет, сохраняя его в памяти, и производит дешифрацию полученной команды.
В зависимости от команды микроконтроллер может войти в режим ручного управления, сохраняя содержимое ОЗУ данных и состояние системы, но прекратив автоматический опрос датчиков и регулирование, в последующем полностью следуя командам оператора.
Если низкий логический уровень на входе RxD не зарегистрирован, т.е. в случае отсутствия команды оператора, микроконтроллер сохраняет показания в памяти и сравнивает их с номинальными параметрами технологического процесса, хранящимися в ПЗУ. Если текущие параметры технологического процесса отличаются от заданных, то микроконтроллер автоматически отдает команду о включении или отключении соответствующих исполнительных устройств.
3.3 Листинг программы
Ниже приведен листинг программы на языке ассемблера, записанной в ПЗУ микроконтроллера, работающей по алгоритму, описанному в пункте 3.2.
;Определение констант для дальнейшего алгоритма
;
R7 .EQU 7
R6 .EQU 6
R5 .EQU 5
R4 .EQU 4
R3 .EQU 3
R2 .EQU 2
R1 .EQU 1
R0 .EQU 0
ACC .EQU 0E0H ; адрес аккумулятора
B .EQU 0F0H ; адрес регистра B
PSW .EQU 0D0H ; адрес регистра (слова) состояния
SP .EQU 81H ; адрес указателя стека
DPL .EQU 82H ; адрес младшей половины DPTR
DPH .EQU 83H ; адрес старшей половины DPTR
P0 .EQU 80H ; адрес регистра порта P0
P1 .EQU 90H ; адрес регистра порта P1
P2 .EQU 0A0H ; адрес регистра порта P2
P3 .EQU 0B0H ; адрес регистра порта P3
B.0 .EQU 0F0H ; адреса отдельных битов регистра B
B.1 .EQU 0F1H
B.2 .EQU 0F2H
B.3 .EQU 0F3H
B.4 .EQU 0F4H
B.5 .EQU 0F5H
B.6 .EQU 0F6H
B.7 .EQU 0F7H
ACC.0 .EQU 0E0H ; адреса отдельных битов аккумулятора
ACC.1 .EQU 0E1H
ACC.2 .EQU 0E2H
ACC.3 .EQU 0E3H
ACC.4 .EQU 0E4H
ACC.5 .EQU 0E5H
ACC.6 .EQU 0E6H
ACC.7 .EQU 0E7H
PSW.0 .EQU 0D0H ; адреса отдельных битов регистра PSW
PSW.1 .EQU 0D1H
PSW.2 .EQU 0D2H
PSW.3 .EQU 0D3H
PSW.4 .EQU 0D4H
PSW.5 .EQU 0D5H
PSW.6 .EQU 0D6H
PSW.7 .EQU 0D7H
P .EQU PSW.0 ; имена флагов регистра PSW
OV .EQU PSW.2
RS0 .EQU PSW.3
RS1 .EQU PSW.4
F0 .EQU PSW.5
AC .EQU PSW.6
CY .EQU PSW.7
P0.0 .EQU 080H ; адреса отдельных линий порта P0
P0.1 .EQU 081H
P0.2 .EQU 082H
P0.3 .EQU 083H
P0.4 .EQU 084H
P0.5 .EQU 085H
P0.6 .EQU 086H
P0.7 .EQU 087H
P1.0 .EQU 090H ; адреса отдельных линий порта P1
P1.1 .EQU 091H
P1.2 .EQU 092H
P1.3 .EQU 093H
P1.4 .EQU 094H
P1.5 .EQU 095H
P1.6 .EQU 096H
P1.7 .EQU 097H
P2.0 .EQU 0A0H ; адреса отдельных линий порта P2
P2.1 .EQU 0A1H
P2.2 .EQU 0A2H
P2.3 .EQU 0A3H
P2.4 .EQU 0A4H
P2.5 .EQU 0A5H
P2.6 .EQU 0A6H
P2.7 .EQU 0A7H
P3.0 .EQU 0B0H ; адреса отдельных линий порта P3
P3.1 .EQU 0B1H
P3.2 .EQU 0B2H
P3.3 .EQU 0B3H
P3.4 .EQU 0B4H
P3.5 .EQU 0B5H
P3.6 .EQU 0B6H
P3.7 .EQU 0B7H
;Управление АЦП
ALE .EQU P3.6
AD .EQU P3.7
;Линия связи с MAX202E
RXD .EQU P3.0
TXD .EQU P3.1
;Управление исполнительными механизмами
DOUT1 .EQU P0.0
DOUT2 .EQU P0.1
DOUT3 .EQU P0.2
DOUT4 .EQU P0.3
;Коды сигналов оператора
RISET1 .EQU 10001110b ;команды повышения температуры
RISET2 .EQU 10011110b
DECRT1 .EQU 10101110b ;команды понижения температуры
DECRT2 .EQU 10111110b
PUSK .EQU 11001110b ;запуск подачи реагентов
STOP .EQU 11011110b ;
CONTI .EQU 11111110b ;
;
;Определим переменные регулирования
;
DSEG AT 30H
Tmin: DS 80 ;мин. температура среды
Tmax: DS 100 ;макс. температура среды
Pmax: DS 200 ;макс. давление
combuf DS 0 ;буфер временного хранения команды
;
;Начало программы
.ORG 0H
LJMP BEGIN
.ORG 100H
BEGIN:
;Начальная установка
MOV P0,#11111111b
MOV P1,#11111111b
MOV P2,#11111111b
MOV P3,#11111101b ;на выход ALE подаем 0
MOV B,#00000111b ;номер датчика
OPROS: SETB ALE ;импульс начала преобразования
CLR ALE
NOP ;задержка на время преобразования
NOP ;ровно 25 мкс
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR AD
MOV A,P0 ;считываем показания датчика
SETB AD
PUSH A ;запоминаем их в стеке
MOV A,B ;проверяем адрес
JZ PAUSE ;если B=0, то заканчиваем опрос
DEC B ;если нет, то изменяем адрес
MOV P0.5,B.5
MOV P0.6,B.6
MOV P0.7,B.7
LJMP OPROS ;зацикливаем опрос датчиков
PAUSE: MOV B,#07H ;вводим начальный адрес для нового опроса
POP R0 ;сохраняем в РОН показания
POP R1
POP R2
POP R3
POP R4
POP R5
POP R6
POP R7
MOV CY, RXD ;проверяем наличие сигнала на RS–485
JC SEND ;если RxD=1, то сигнала нет
;если он есть, то далее обрабатываем его
;Ответ на сигнал оператора
SIGNAL: SETB F0 ;установка флага «ручного» режима
SETB ACC.0 ;готовимся к принятию команды в АСС
CLR TXD ;отвечаем о готовности принять команду
WAIT2: MOV CY,RXD ;ожидаем первого бита команды
JNC WAIT2 ;для всех команд он равен единице
MOV ACC.1,RXD ;записываем значение команды в АСС
MOV ACC.2,RXD
MOV ACC.3,RXD
MOV ACC.4,RXD
MOV ACC.5,RXD
MOV ACC.6,RXD
MOV ACC.7,RXD
SETB TXD ;завершаем прием команды
SETB RXD
MOV combuf,A ;делаем рабочую копию команды
CLR CY ;выполняем дешифрацию команды
SUBB A,RISET1 ;команда повышения температуры №1?
JZ TEMPR1
MOV A,combuf
CLR CY
SUBB A,RISET2 ;команда повышения температуры №2?
JZ TEMPR2
MOV A,combuf
CLR CY
SUBB A,DECRT1 ;команда понижения температуры №1?
JZ TEMPD1
MOV A,combuf
CLR CY
SUBB A,DECRT2 ;команда понижения температуры №2?
JZ TEMPD2
MOV A,combuf
CLR CY
SUBB A,PUSK ;команда запуска подачи реагентов?
JZ ZADVION
MOV A,combuf
CLR CY
SUBB A,STOP ;команда остановки подачи реагентов?
JZ ZADVIOFF
MOV A,combuf
CLR CY
SUBB A,CONTI ;команда продолжения опроса?
JZ CONTINUE
CLR F0 ;если команда неизвестна
LJMP SIGNAL ;то продолжаем режим приема сигнала
;Осуществляем регулирование
REGUL: MOV A,R0 ;
CLR CY ;для вычитания не нужен заём
SUBB A,Tmin ;если температура сильно понизилась
MOV CY,ACC.0 ;то старший бит ACC равен 1
JC TEMPUP1 ;повышаем температуру
MOV A,R0
CLR CY
SUBB A,Tmax ;если температура повысилась
MOV CY,ACC.0 ;то старший бит ACC равен 0
JNC TEMPDO1 ;понижаем температуру
MOV A,R3 ;регулирование температуры колонн 3,4
CLR CY ;для вычитания не нужен заём
SUBB A,Tmin ;если температура сильно понизилась
MOV CY,ACC.0 ;то старший бит ACC равен 1
JC TEMPUP2 ;повышаем температуру
MOV A,R3
CLR CY
SUBB A,Tmax ;если температура повысилась
MOV CY,ACC.0 ;то старший бит ACC равен 0
JNC TEMPDO2 ;понижаем температуру
MOV A,R4 ;регулирование давления
CLR CY
SUBB A,Pmax ;если давление возросло
MOV CY,ACC.0 ;то старший бит АСС равен 0
JNC GAS ;принимаем меры по уменьшению
MOV A,R4
CLR CY
SUBB A,Pmax ;если давление в норме
MOV CY,ACC.0 ;то старший бит АСС равен 1
CLR DOUT3 ;система выпуска газов отключена
MOV B,#07H ;параметр цикла опроса
LJMP OPROS ;продолжаем опрос датчиков
;Отправка дейтаграммы состояния процесса
SEND: CLR TXD ;запрос на передачу информации
MOV B,#07H ;готовим цикл для передачи
WAIT1: MOV CY,RXD ;ожидаем ответа сервера
JC WAIT1
SETB TXD ;сервер ответил, начинаем передачу
TRANSM: MOV A,@B
RLC A ;заносим поочередно данные в бит переноса
MOV TXD,CY ;из регистра
RLC A
MOV TXD,CY
RLC A
MOV TXD,CY
RLC A
MOV TXD,CY
RLC A
MOV TXD,CY
RLC A
MOV TXD,CY
RLC A
MOV TXD,CY
RLC A
MOV TXD,CY
DJNZ B,TRANSM ;повторять, пока данные всех
SETB TXD ;регистров не будут отправлены
LJMP REGUL ;начинаем процесс регулирования
Информация о работе Автоматизация процесса переработки ядерных отходов