Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
промышленные контроллеры.doc
Скачиваний:
39
Добавлен:
02.04.2015
Размер:
711.17 Кб
Скачать

14. Упражнения

Для получения некоторых навыков составления управляющих программ студенту предлагаются уже решенные задачи.

В качестве объекта автоматизации рассматривается сушильная камера, в которой необходимо поддерживать заданную температуру (рис.14.1).

На рис. 14.1 сделаны следующие обозначения:

СК - сушильная камера;

НЭ - нагревательный элемент;

РН - регулятор напряжения на нагревательном элементе;

ДТ - датчик температуры; В - вентилятор;

Р2.10 - десятый бит порта Р2, с которого снимается показание о включенном (Р2.10=1) или выключенном (Р2.10=0) нагревательном элементе;

Р2.8 - восьмой бит порта Р2, с которого снимается показание о включенном (Р2.8=1) или выключенном (Р2.8=0) вентиляторе;

Р2.2 и Р2.4 - второй и четвертый биты порта Р2, с которых снимаются показания предельных значений температуры в сушильной камере; при Р2.2=1 температура достигла верхнего предельного значения (ВП); при Р2.4=1 температура достигла нижнего предельного значения (НП); при Р2.2=0 и Р2.4=0 температура находится в заданных допустимых пределах;

Р5.6 - четвертый бит порта Р5, с которого снимается и подается на аналого-цифровой преобразователь (АЦП) непрерывный сигнал, характеризующий величину температуры в сушильной камере;

Р2.1 - первый бит порта Р2, на который подается сигнал на включение (логическая единица) или на выключение (логический ноль) нагревательного элемента;

Р2.5 - пятый бит порта Р2, на который подается сигнал на включение (логическая единица) или на выключение (логический ноль) вентилятора; Р2.0 - нулевой бит порта Р2, на который подается сигнал с канала широтно-импульсной модуляции (ШИМ) для управления тиристором, который регулирует величину электрического тока, протекающего через нагревательный элемент.

Рис. 14.1

Задача № 1

Подключить нагревательный элемент к напряжению питания. Программа

BSET P2.1; запись в регистр данных порта Р2.1 единицы для ее

вывода из порта (включить)

BSET DP2.1; запись единицы в регистр направления (вывод)

Задача № 2

Если не включен вентилятор, то отключить нагревательный элемент от напряжения питания.

Граф-схема алгоритма программы представлена на рис.14.2.

По граф-схеме алгоритма составляется программа.

Программа

W: BCLR DP2.8; запись нуля в регистр направления (ввод)

BMOV R1.1 ,Р2.8; пересылка содержимого порта Р2.8 в R1.1

JNB R1.1,W; условный переход: если в первом бите порта R1 нет

единицы, то перейти по метке

BCLR Р2.1; запись в регистр данных порта Р2.1 нуля для вывода его из порта (отключение)

BSETD P2.1; запись в регистр направления единицы (вывод)

Рис. 14.2

Задача № 3

Если включен вентилятор и подано напряжение питания на

нагревательный элемент, то установить напряжение на нагревательном

элементе за счет широтно-импульсной модуляции, соответствующее индексу

модуляции 0,5 при частоте следования импульсов 100 Гц.

Граф-схема алгоритма программы представлена на рис. 14.3. По граф-схеме алгоритма составляется программа.

Программа

Q: BCLR DP2.10; запись нуля в регистр направления (ввод)

BMOV R1.1,Р2.10; пересылка содержимого порта Р2.10 в R1.1

BCLR DP2.8; запись нуля в регистр направления (ввод)

BMOV R2.1,Р2.8; пересылка содержимого порта Р2.8 в R2.1

BAND R1.1,R2.1; логическое умножение битов регистров R1.1 и

R2.1

JMPR CC_Z, Q; условный переход: если результат логического

умножения равен нулю, то перейти по метке (повторить контроль).

Расчет кода переполнения.

По формуле

находится коэффициент деления

Код переполнения в десятичной системе счисления будет равен

В шестнадцатеричной системе счисления код переполнения примет вид

B=9E57h.

Код индекса модуляции определится как

В шестнадцатеричной системе счисления код индекса модуляции буде M=30D4h.

Рис. 14.3

Занесение кода переполнения и кода индекса модуляции в регистр переполнения и регистр сравнения.

MOV R3,#9E57h;

MOV R4,#30D4h;

PUSH R3;

PUSH R4;

POP CC0;

POP TOREL;

Заполнение битовых полей регистра режима.

ССМ0=111, АСС0=0.

В этом примере все битовые поля остальных каналов ШИМ (1, 2 и 3) заполняются нулями. Тогда код режима работы будет иметь вид 0007h. Полученный код заносится в регистр режима

MOV CCM0,#0007h;

Заполняются битовые поля регистра управления специальным таймером (см. пример 7.1). Разница состоит в том, что в примере 7.1 коэффициент деления был 512, а в данном примере этот коэффициент равен 8. Поэтому код примет значение 0040h. Полученный код управления записывается в регистр управления специальным таймером

MOV T01CON,#0040h;

Задается направление работы порта

BSET DP2.0;

Задача № 4

Если температура в сушильной камере превысила 64° С, то включить вентилятор.

Граф-схема алгоритма программы представлена на рис. 14.4.

Рис. 14.4

По граф-схеме алгоритма составляется программа.

Число 64 в шестнадцатеричной системе счисления выразится как 0040h. Программа

MOV R5,#0040h; запись в R5 числа 64

MOV R10,#0005h; занесение номера линии 5 порта Р5 в регистр

конфигурации АЦП

PUSH R10;

POP ADCON;

Q: BSET ADST; включение АЦП

W: NOP;

JB ADBSY.W; ожидание окончания преобразования

PUSH ADDAT;

POP R0; помещение результата в R0

AND R0,#0FFFh;

CMP R0,R5; сравнение температур

JMPR CC_ULE,Q; если разность R0-R5 меньше или равна нулю, то

перейти по метке

BCLR P2.5; занесение нуля в бит 5 порта Р2 (выключить)

BSET DP2.5; запись в регистр направления единицы (вывод)

Задача № 5

Если температура в покрасочной камере либо превысила верхний

допустимый предел, либо стала меньше нижнего допустимого предела, то с

промежутком времени в 10 с включить вентилятор.

Граф-схема алгоритма программы представлена на рис. 14.5. По графсхеме алгоритма составляется программа.

Программа

ST: BCLR DP2.2; запись нуля в регистр направления (ввод)

BMOV R3.1,P2.2; пересылка содержимого порта Р2.2 в R3.1

BCLR DP2.4; запись нуля в регистр направления (ввод)

BMOV R2.2,P2.4; пересылка содержимого порта Р2.4 в R2.2

BOR R3.1 R2.2; логическое сложение битов регистров R3.1 и R2.2

JMPR CC_Z,ST; условный переход: если результат логического

сложения равен нулю, то перейти по метке (повторить контроль)

MOV R12,#000Ah;

Расчет кода выдержки времени. Предварительно определяется

коэффициент деления из условия

При Т=1с условие примет вид kd>308,18. Ближайшее большее значение коэффициента деления равно kd=512. Тогда в десятичной системе счисления код выдержки времени будет равен

Рис. 14.5

В двоичной системе счисления код выдержки времени примет вид 37768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 0

В шестнадцатеричной системе счисления код выдержки времени примет

вид

А=6768h.

Код выдержки времени заносится в один из регистров общего назначения. Регистр общего назначения выбирается произвольно. KL: MOV R7,#6768h;

Производится пересылка содержимого R7 в регистр данных через стек. Рабочим таймером выбирается Т2.

PUSH R7;

POP T2;

Заполняются битовые поля регистра управления T2CON в соответствии с выбранным режимом работы таймера, и формируется код, который должен быть занесен в регистр управления.

T2I=110 - коэффициент деления в делителе частоты 512;

Т2М=000 - таймер работает от внутреннего генератора;

T2R=1 - таймер включен;

T2UD=0, T2UDE=0 - суммирование в счетчике тактовых импульсов;

Т2ОЕ=0 - выход переполнения отключен;

Т2ОТL=0 - счетчик не переполнен.

В соответствии с данным режимом работы таймера в регистр управления необходимо записать код в двоичной системе счисления вида

0000 0000 0100 0110

или в шестнадцатеричной системе счисления

0046h.

Код режима работы таймера заносится в регистр управления.

MOV T2CON,#0046h;

Установка программы на ожидание окончания выдержки времени (появление единицы в T2IR).

W: NOP; пустой шаг - некоторая задержка времени в выполнении программы

JNB T2IR,W; условный переход: если в T2IR нет единицы, то перейти

по метке

MOV T2CON,#0000h; выключение таймера

BCLR T2IR; установка триггера T2IR в ноль

SUB R12,#0001h; вычесть из числа 10 единицу

JMPR CC_NZ,KL; если не выполнены все 10 циклов, то перейти по

метке

BCLR P2.5; запись нуля в регистр данных (выключение)

BSET DP2.5; запись единицы в регистр направления (вывод)

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Бродин В.Б., Шагурин М.И. Микроконтроллеры, архитектура, программирование, интерфейс: Справочник. М.: Изд-во ЭКОМ, 1999.398 с.

2. Ремизевич Т.В. Микроконтроллеры для встраиваемых приложений: от общих подходов - к семействам НС05 и НС08 фирмы Motorola. М.: Изд-во ДОДЭКА, 2000.272 с.

ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ

Аналого-цифровой преобразователь (АЦП)-6,40

Канал широтно-импульсной модуляции (канал ШИМ)-6, 33

Код выдержки времени-28

Код индекса модуляции-34

Код переполнения-35

Комментарии-13

Метка-12

Микроконтроллер (МК)-4

Мнемокод-12

Операнды-12

Основной интерфейс-44

Полноэкранный отладчик-42

Таймеры-6, 27

Центральный процессор (ЦП)-5, 7

ПРИЛОЖЕНИЕ 1

ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ МК ТИПА 80С16х ФИРМЫ SIEMENS

Тип МК

Характеристики МК

МО161-Х

3 £

ся

и

М164-Х

н о

§

§

X

г~-

*£>

§

S

чэ

а

S m t~-

чэ

Тип ЦП

С1610

С166

С164

С167

С167

С167

С167

Время выполнения команды (нс)

250

200

100

100

100

100

100

Объем ОЗУ (Кбайт)

128

128

256

256

256

256

256

Объем ПЗУ (Кбайт)

128

128

256

256

256

256

256

Время выполнения команды умножения (не) 16x16 с результатом 32 бит

625

625

500

500

500

500

500

Количество уровней прерывания

20

32

32

56

56

56

56

Каналы АЦП: количество время преобразования (мкс) входное напряжение (В)

-

10 +5

8

10

4-5

16

10

+5

16

10

+5

16

10

+5

16

10

+5

Общее количество линий портов ввода/вывода

23

46

34

63

63

74

88

Количество универсальных таймеров

5

5

7

9

9

9

9

Последовательный канал RS232

1

2

1

1

1

1

1

САN-контроллер

+

-

-

+

+

Супервизор питания

+

+

+

+

+

+

+

Часовой таймер

_

+

+

+

+

Программатор

+

+

+

+

+

+

+

Интерактивная отладка на плате программ через RS232

+

+

+

+

+

+

+

Напряжение питания (В)

+5

+5

+5

+5

+5

+5

+5

Потребляемая мощность (Вт)

0,1

0,4

1,15

0,4

0,5

1,0

2,0

ПРИЛОЖЕНИЕ 2 ПОРТЫ МК ТИПА 80С167 ФИРМЫ SIEMENS

Наименование порта

Назначение битов порта

Обозначение битов порта

Вводимая или выводимая информация

Шина данных Р0

Ввод/вывод команд и массивов данных

Р0.0

AD0

Р0.1

ADI

Р0.2

AD2

Р0.З

AD3

Р0.4

AD4

Р0.5

AD5

Р0.6

AD6

Р0.7

AD7

Р0.8

AD8

Р0.9

AD9

Р0.10

AD10

P0.ll

AD11

Р0.12

AD12

Р0.13

AD13

Р0.14

AD14

Р0.15

AD15

Шина адреса P1

Вывод адресов ячеек памяти

Р1.0

А0

Р1.1

А1

Р1.2

А2

Р1.3

A3

Р1.4

А4

Р1.5

А5

Р1.6

Аб

Р1.7

А7

Р1.8

А8

Р1.9

А9

Р1.10

А10

Р1.11

All

Вывод адресов ячеек памяти и выход блока 2 захват/сравнение

Р1.12

А12/СС24

Р1.13

А13/СС25

Р1.14

А14/СС26

Р1.15

А15/СС27

Порт ввода/вывода цифровой информации Р2

или входы/выходы блока 1 захват/сравнение

Р2.0

СС0IO

Р2.1

СС1IO

Р2.2

СС2IO

Р2.3

СС3IO

Р2.4

CC4IO

Р2.5

СС5IO

Р2.6

СС6IO

Р2.7

СС7IO

или входы прерываний или входы/выходы блока 1 захват/сравнение

Р2.8

CC8IO/EX0IN

Р2.9

CC9IO/EX1IN

Р2.10

СС10IO/ЕХ2IN

P2.ll

СС11IO/ЕХ3IN

Р2.12

CC12IO/EX4IN

Р2.13

CC13IO/EX5IN

Р2.14

CC14IO/EX6IN

Р2.15

CC15IO/EX7IN

Порт ввода/вывода цифровой информации Р3

или входы/выходы блока 1 таймеров

Р3.0

T0IN

Р3.1

T6OUT

Р3.2

САРМ

РЗ.З

T3OUT

Р3.4

T3EUD

РЗ.З

T4IN

Р3.6

T3IN

Р3.7

T2IN

или синхронный последовательный порт

Р3.8

MRST

Р3.9

MRST

или асинхронный последовательный порт

Р3.10

не используется

P3.ll

не используется

Р3.12

не используется

Р3.13

Р3.14

не используется

Р3.15

Порт ввода информации Р5

или входы АЦП

Р5.0

AN0

Р5.1

AN1

Р5.2

AN2

Р5.3

AN3

Р5.4

AN4

Р5.5

ANS

Р5.6

AN6

Р5.7

AN7

Р5.8

AN8

Р5.9

AN9

или входы блока 1 таймеров

Р5.10

AN10/T6EU

P5.ll

AN11/T5EU

Р5.12

AN12/T6IN

Р5.13

AN13/T5IN

Р5.14

AN14/T4EU

Р5.15

AN15/T2EU

Порт ввода/вывода информации Р7

или выходы каналов ШИМ

Р7.0

POUT0

Р7.1

POUT1

Р7.2

POUT2

Р7.3

POUT3

или входы/вькоды блока 2 захват/сравнение

Р7.4

СС28IO

Р7.5

СС29IO

Р7.6

СС30IO

Р7.7

СС31IO

Порт ввода/вывода информации Р8

или входы/выходы блока 2 захват/сравнение

Р8.0

СС16IO

Р8.1

CC17IO

Р8.2

СС18IO

Р8.3

СС19IO

Р8.4

СС20IO

Р8.5

СС21IO

Р8.6

СС22IO

Р8.7

СС23IO