Система управления хлебопечью

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    73,62 Кб
  • Опубликовано:
    2012-12-27
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Система управления хлебопечью

Система управления хлебопечью

Реализуемые функции.

Данное устройство должно обеспечивать:

1.   Работу печи без предварительной ручной установки исходных параметров;

2.       Ручную установку параметров режимов;

.        Поддержку трёх программируемых режимов: “Замешивание”, “Брожение”и “Выпечка”;

.        Контроль бункеров;

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

Устройство индикации

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

Клавиши управления.

Для организации управления устройством используются 5 клавиш:

1)     Переход к следующему режиму “^”;

2)      Установка параметров текущего режима “SET”

)        Инкремент параметра "+";

)        Декремент параметра " - "

)        Клавиша подтверждения "ОК".

Выбор элементной базы.

При выполнении данной курсовой работы, я воспользовался отечественным микроконтроллером КМ1816ВЕ5.

Данный выбор был обусловлен тем, что при построении принципиальной схемы данного устройства, у меня не возникло необходимости использования аналого-цифрового преобразователя, и для реализации требуемых функций достаточно двух 16-битных таймеров/счетчиков. Применение же микроконтроллера ADUC или микроконтроллера 51-й серии привело бы к дороговизне и функциональной избыточности принципиальной схемы данного устройства.

Микроконтроллер имеет следующий состав:

8-разрядный центральный процессор, управляющий работой исполнительных устройств микро ЭВМ и имеющий аппаратную поддержку операций умножения и деления. Всего процессор выполняет 111 команд разрядностью в 1, 2 или 3 байта;

внутренняя (расположенная на кристалле) память программ объемом 4К байт;

внутренняя память данных объемом 128 байт, используемая для организации регистровых банков, стека и хранения пользовательских данных;

32 двунаправленные интерфейсные линии, индивидуально настраиваемые на ввод или вывод информации и организованные в виде четырех 8-разрядных параллельных портов Р0-Р3;

два 16-разрядных многорежимных таймера/счетчика T/C0 и T/C1, используемые для подсчета внешних событий, организации временных задержек и тактирования последовательного порта;

двунаправленный дуплексный асинхронный последовательный приемопередатчик - последовательный порт;

двухуровневая приоритетная система прерываний от четырех внутренних и двух внешних источников;

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

Микроконтроллеры серии 1816 требуют одного источника электропитания напряжением +5 В ± 10%, рассеивают мощность около 1,5 Вт и работают в диапазоне температур от 0 до 700 С.

Микроконтроллер КМ1816ВЕ51 может работать в диапазоне частот от 1,2 до 12 МГц, при этом минимальный цикл выполнения команды равен

мкс, а быстродействие равно одному миллиону коротких операций в секунду.

Микроконтроллер выполнен на основе высокоуровневой n-МОП технологии и выпускается в корпусе БИС, имеющем 40 внешних выводов. Цоколевка корпуса


Также при построении принципиальной схемы я воспользовался кварцевым резонатором с частотой OSC=12 МГц, это было обусловлено удобством работы с таймерами/счётчиками и высокой стабильностью его частоты. При этой частоте машинный цикл имеет период в 1 мкс:

 = OSC/2,

M = CLK/6 = 1 МГц

В качестве ЖКИ-модуля был выбран алфавитно-цифровой ЖКИ-модуль фирмы EDT на базе микроконтроллера HD44780 фирмы Hitachi формата 40х2.

Для соединения ЖКИ-модуля с управляющей системой используется параллельная синхронная шина, насчитывающая 8 или 4 (выбирается программно) линий данных DB0…DB7, линию выбора операции R/W, линию выбора регистра RS и линию стробирования/синхронизации E. Кроме линий управляющей шины имеются две линии для подачи напряжения 5V - GND и Vсс и линия для подачи напряжения питания драйвера ЖКИ - Vo. Выбор адресуемого регистра (данных или команд) производится линией RS. Если RS = 0, то адресуется регистр команд, если RS = 1 - регистр данных.

Функциональная схема устройства



Описание и использование узлов

Датчик температуры.

Датчик температуры построен на остове мультивибратора с терморезистором. При изменении температуры, изменяется сопротивление терморезистора, что приводит к изменению периода сигнала на выходе мультивибратора. Частотный диапазон сигнала от 1КГц до 100КГц. Верхний предел частоты соответствует минимальной температуре, а нижний - максимальной. В данном устройстве диапазоном температуры от 0 до 500 С.

Датчики давления.

Датчики давления построены аналогично датчику температуры, с той разницей, что здесь используется вместо терморезистора, резистор сопротивление которого зависит от давления оказываемого на него. Частотный диапазон сигнала от 1КГц до 100КГц. Диапазон давления от 1 до 3000 гр..

Бункеры

Это поле ёмкости для ингредиентов к которым подключены датчики давления. Также они снабжены устройством управления, при подаче на вход которого логической единицы он открываются, а при подаче нуля закрываются.

Миксер- также снабжён устройством управления, при подаче на его вход единицы, он упускается и начинает работать, при подаче нуля останавливается и поднимается.

Двигатель при подаче на вход его устройства управления единицы он включается, при подаче нуля выключается.

Описание алгоритма.

При написании данной программы я описал следующие процедуры:

Процедура обработки прерывания таймера нулевого канала timer_int.

В данной процедуре производится слежение за нажатием клавиш, а также она выполняет функции декрементирующего таймера времени выполнения текущей стадии. После каждого переполнения в регистры Th0 и Tl0 заносится число 3cafh (15535), что приводит к тому, что 0-й таймер переполняется 20 раз в секунду. После каждого переполнения происходит вузов данного обработчика и проводится проверка нажатой клавиши. В данном обработчике используется флаг fpp, который отвечает за запуск или остановку таймера стадии. Если fpp=1, то производится проверка, не прошло ли 20 переполнений таймера, если прошло, то производится декрементация таймера стадии. Как только время выполнения текущей стадии истекает, то флаг сбрасывается.

Процедура инициализации inic.

Данная процедура отвечает за начальную настройку системы управления печью. В начале она производит установку всех параметров по умолчанию, устанавливает режим работы таймеров/счётчиков, значения регистров Th и Tl, запускает 0-й таймер и разрешает обработку прерываний от таймеров. Затем она выдаёт три звуковых сигнала в виде пиков. После чего происходит начальная инициализация жидкокристаллического индикатора.

Процедура вывода информации на ЖКИ outGKI.

В начале производится очистка дисплея при помощи команды 1h. Затем производится вывод на дисплей символов содержащихся в массиве sod(i). Запись во внутренние регистры ЖКИ осуществляется при помощи сигнала е. При помощи сигналов rs и rw, осуществляется установка командного режима или режима приёма данных:

 = 0, rw = 0 - запись команды;

rs = 0, rw = 1 - чтение команды;

rs = 1, rw = 0 - запись данных;

rs = 1, rw = 1 - чтение данных;

Функция снятия данных с датчиков datchik(i).

Данная функция данные с датчиков и возвращает их показатели в числовом виде (rez word). Параметром данной функции является переменная i типа word, которая соответствует номеру линии порта P0. Сначала обнуляем значения регистров таймера первого канала Th1 и Tl1. Затем смотрим с какого датчика снимаем данные. Поскольку вызов процедуры может не совпасть с началом импульса, то сначала ожидаем, пока высокий уровень сигнала на выходе датчика не сменится низким, затем опять ожидаем высокий уровень. Как только пришёл высокий уровень, сразу начинаем засекать его длительность (запускаем 1-й таймер). По окончании выключаем 1-й таймер и снимаем с него данные. В регистрах Th1, Tl1 будет длительность полупериода в микро секундах. Следующим шагом является преобразование регистров Th1 и Tl1 в формат слова. Это достигается при помощи функций языка PLM Double и SHL.

При помощи команды double расширяем значение регистра Th1 до размеров слова и помещаем в переменную t, затем при помощи команды сдвигаем содержимое младшей части t в старшую часть, после чего прибавляем к t значение регистра Tl1. Теперь в t мы получили длительность полупериода выходного сигнала датчика, после умножения полученного значения на 2, мы получаем длительность периода выходного сигнала датчика (в “тиках”). Теперь умножаем полученное значение на заранее подготовленный коэффициент koef(i) (который равен величине измеряемого параметра приходящегося на один тик). И возвращаем полученное значение.

Тело основной программы

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

На экран выводится запрос о начале работы (“Начать?”). Затем если нажата клавиша “SET” (key=2), то программа входит в режим установки параметров, в противном случае, если нажата клавиша “OK” (key=5), начинаем работу с параметрами установленными по умолчанию при инициализации. При этом клавиши “+” и “-” не активны.

В режиме установки параметров программа находится до тех пор, пока не нажата клавиша “OK” (что означает согласие с введенными параметрами). В данном режиме активны только клавиши “OK”, “SET” и “^”. При этом на экран выводится текущая выбранная для редактирования стадия работы и значение её параметров. При нажатии клавиши “^” (key=1) происходит переход к следующей стадии. При нажатии клавиши “SET” мы входим в режим установки параметров выбранного режима, условием выхода из которого является четырёхкратное нажатие клавиши “SET”, поскольку почти в каждом режиме у нас по четыре параметра.

При нажатии клавиш “+” (key=3) и “-” (key=4), происходит инкрементация или декрементация соответствующего параметра, при этом происходит слежение за тем, чтобы текущий параметр не вышел за границы предельных значений. После установки всех параметров текущей стадии, мы возвращаемся к предыдущему режиму. Если была нажата клавиша “OK”, то возвращаемся обратно в бесконечный цикл.

Если была нажата клавиша “OK”, то программа переходит в режим работы устройства.

В начале работы устройства выдаётся короткий звуковой сигнал, затем открываются бункеры и запускается миксер. После чего ожидаем, пока опустошаться бункеры, это осуществляется при помощи постоянной проверки датчиков давления в бункерах (do while ((datchik(1)<>0) and datchik(2)<>0)); end;). Как только бункеры опустошались, закрываются бункеры, выдаётся звуковой сигнал и начинается стадия замешивания.

Стадия замешивания.

Вначале задаются параметры замешивания. Это делается путём установки начальных значений переменных h, m и s ответственных за таймер стадии, в обработчике прерываний от нулевого таймера. Затем путём установки флага fpp запускается таймер стадии. После чего программа ожидает, пока время выполнения текущей стадии не истечёт (пока не будет сброшен флаг fpp). При этом на жидкокристаллический индикатор выводится время до окончания текущей стадии. Как только время выполнения стадии истечёт, миксер выключается и выдаётся короткий звуковой сигнал.

Стадия брожения.

Вначале задаются параметры брожения. Это делается путём установки начальных значений переменных h, m и s ответственных за таймер стадии, в обработчике прерываний от нулевого таймера и переменной temt соответствующей контрольному значению температуры брожения. Затем включается двигатель и путём установки флага fpp запускается таймер стадии. После чего программа ожидает, пока время выполнения текущей стадии не истечёт (пока не будет сброшен флаг fpp). При этом на жидкокристаллический индикатор выводится время до окончания текущей стадии и текущая температура внутри печи, а также производится контроль температуры в печи (if (datchik(1)<temt) then P25=1b; else P25=0b;). Как только время выполнения стадии истечёт, двигатель и обогреватель выключается, после чего выдаётся короткий звуковой сигнал.

Стадия выпечки.

Вначале задаются параметры выпечки. Это делается путём установки начальных значений переменных h, m и s ответственных за таймер стадии, в обработчике прерываний от нулевого таймера и переменной temt соответствующей контрольному значению температуры выпечки. Затем включается двигатель и путём установки флага fpp запускается таймер стадии. После чего программа ожидает, пока время выполнения текущей стадии не истечёт (пока не будет сброшен флаг fpp). При этом на жидкокристаллический индикатор выводится время до окончания текущей стадии и текущая температура внутри печи, а также производится контроль температуры в печи (if (datchik(1)<temt) then P25=1b; else P25=0b;). Как только время выполнения стадии истечёт, двигатель и обогреватель выключается. В конце программа выдаёт три коротких звуковых сигнала свидетельствующих о готовности продукции.

Программа возвращается в исходное состояние.

Приложение 1

хлебопечь индикация температура время

Инструкция пользователю

Панель управления состоит из пяти кнопок: “OK”, “SET”, “^”, “+” и “-”.

Включите устройство. Устройство включается при помощи кнопки “ON”. Затем откройте крышку бункеров и загрузите в них ингредиенты. После включения устройства прозвучит три коротких звуковых сигнала свидетельствующих о готовности печи к работе и на экране появится надпись:


Если вы хотите начать выпечку изделия с параметрами установленными по умолчанию, которые приведены ниже, то нажмите кнопку “OK”, что приведёт к началу выпечки изделия.

Параметры по умолчанию:

Стадия

Время hh:mm:ss

Температура °C

Замешивание

00:20:00

-

Брожение

04:30:00

40

Выпечка

00:40:00

400


Если вы не согласны с текущими параметрами, то нажмите кнопку “SET”, после чего вы перейдёте в меню установки параметров стадий и на дисплее появится имя первой стадии и значение её текущих параметров:


Если значения параметров текущей стадии вас устраивают, нажатием кнопки “^”, вы можете перейти к следующей. При этом возможны например следующие состояния дисплея:

Если значения параметров какой либо из стадий вас не устраивают, то нажатием кнопки “SET”, вы можете перейти в режим установки параметров текущей стадии. При этом изменяемый параметр будет выделен квадратным скобками. В этом режиме вы можете увеличивать или уменьшать значение изменяемого параметра при помощи кнопок “+” и “-” соответственно. Для перехода к следующему параметру необходимо опять нажать кнопку “SET”. Когда будут установлены все параметры текущей стадии, вы вернётесь к меню установки параметров стадий. Если текущие параметры стадий вас устраивают, то нажмите кнопку “OK”, после чего вы вернётесь к исходному меню.

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

Затем начнётся стадия замешивания, которая будет сопровождаться сообщением о оставшемся времени до конца текущей стадии. После окончания стадии замешивания прозвучит один короткий звуковой сигнал.

После стадии замешивания начнётся стадия брожения. При этом на дисплее будет выведена информация о времени оставшемся до окончания текущей стадии и текущая температура внутри печи. По окончании стадии брожения прозвучит один короткий звуковой сигнал.

После стадии брожения начнётся стадия выпечки. При этом на дисплее будет выведена информация о времени оставшемся до окончания текущей стадии и текущая температура внутри печи. По окончании стадии выпечки прозвучит три короткий звуковых сигнала, сигнализирующих о готовности изделия.

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

Приложение 2

Схема устройства



Приложение 3

Листинг программы

start:do;

$include (reg812r.dcl)

declare

GKIini(*) byte constant(3bh, 0ch, 6h, 0fh, 1h), /*Команды инициализации ЖКИ*/

koef(3) word constant(100h, 250h, 300h), /*Коэффициенты датчиков*/

/*Вып-ка С*/(*) byte constant(20h, 20h, 42h, 0c3h, 0beh, 2dh, 0bah, 61h, 20h, 20h, 20h, 20h, 43h, 20h, 20h),

/*Вып-ка [ ]С*/(*) byte constant(20h, 42h, 0c3h, 0beh, 2dh, 0bah, 61h, 20h, 5bh, 20h, 20h, 20h, 5dh, 43h, 20h),

/*Брож-е С*/(*) byte constant(20h, 20h, 0a0h, 70h, 6fh, 0b6h, 2dh, 65h, 20h, 20h, 20h, 20h, 43h, 20h, 20h),

/*Брод-е [ ]С*/(*) byte constant(20h, 0a0h, 70h, 6fh, 0b6h, 2dh, 65h, 20h, 5bh, 20h, 20h, 20h, 5dh, 43h, 20h),

/*Начать?*/(*) byte constant(20h, 20h, 20h, 20h, 20h, 48h, 61h, 60h, 61h, 0bfh, 3fh, 20h, 20h, 20h, 20h),

/*Замешивание*/(*) byte constant(20h, 20h, 0a4h, 61h, 0bch, 65h, 0c1h, 0b8h, 0b3h, 61h, 0bdh, 0b8h, 65h, 20h, 20h),

/* : : */(*) byte constant(20h, 20h, 20h, 20h, 20h, 3ah, 20h, 20h, 3ah, 20h, 20h, 20h, 20h, 20h, 20h),

/*[ ]: : */(*) byte constant(20h, 5bh, 20h, 20h, 5dh, 3ah, 20h, 20h, 3ah, 20h, 20h, 20h, 20h, 20h, 20h),

/* :[ ]: */(*) byte constant(20h, 20h, 20h, 20h, 3ah, 5bh, 20h, 20h, 5dh, 3ah, 20h, 20h, 20h, 20h, 20h),

/* : :[ ]*/(*) byte constant(20h, 20h, 20h, 20h, 20h, 3ah, 20h, 20h, 3ah, 5bh, 20h, 20h, 5dh, 20h, 20h),

 (56) byte, /*Содержание ЖКИ*/

(pkey, key) byte, /*Предыдущая и текущая нажатые клавиши*/

tmr0 byte, /*Число переполнений таймера/счётчика T0*/

stad byte, /*Текущая стадия работы печки*/

nset byte, /*Число нажатий клавиши SET*/

(i, j, n) byte,

(h, m, s) byte, /*Время до окончания текущей стадии*/

(thz, tmz, tsz, thb, tmb, tsb, thc, tmc, tsc) byte, /*Длительность стадий*/

(temt, temb, temc) word, /*Температуры стадий*/

fpp bit, /*Флаг начала отсчёта таймера(начало работы режима)*/

t byte;

_int:procedure interrupt 1; /*Обработчик прерывания от 0-го таймера*/=3ch;0=0afh;

pkey=key; /*Контроль клавиш*/

if not(P03) then key= 1; /*^*/not(P04) then key= 2; /*SET*/not(P05) then key= 3; /*+*/not(P06) then key= 4; /*-*/not(P07) then key= 5; /*OK*/

fpp=1b then do; /*”Таймер”*/ (tmr0>20) then do; /*(Частота 20 переполнений в секунду)*/

if s<0 then do; m=m-1; s=59; end;m<0 then do; h=h-1; m=59; end;=s-1;(s<0) and (m=0) and (h=0) then fpp=0b;=0;;=tmr0+1;;

timer_int;

: procedure; /*Процедура инициализации*/=0; /*Установка основных переменных в нач-е значение*/

thz=0; /*Часы замешивания*/

tmz=20; /*Минуты замешивания*/

tsz=0; /*Секунды замешивания*/

thb=4; /*Часы брожения*/

tmb=30; /*Минуты брожения*/

tsb=0; /*Секунды брожения*/

thc=0; /*Часы выпечки*/

tmc=40; /*Минуты выпечки*/

tsc=0; /*Секунды выпечки*/

temb=40; /*Температура брожения*/

temc=400; /*Температура выпечки*/

tmod=00000001b; /*1-й режим*/

IT0=1; /*переполнение по фронту сигнала*/

IT1=1;

th0=3ch; /*Частота переполнения 0-го таймера 20 Гц*/

tl0=0afh;=0h;=0h;

0=1; /*Запуск T0*/

et0=1; /*Разрешение прерывания от T0*/

tr1=0;=1;

n=0 to 3; /*Пикаем 3 раза*/=1b;time(255);=0b;time(255);;=0f8h;3=0ffh;

do n=0 to 5; /*Производим инициализацию ЖКИ*/=0;time(1);=0; rw=1; e=1;while(P37); end;=0;rs=0; rw=0;=GKIini(n);=1;time(1);;

end inic;

outGKI:procedure; /*Процедура вывода информации на ЖКИ*/

e=0; /*Очистка экрана ЖКИ*/

rs=0; rw=1; e=1;

do while(P37); end;=0;rs=0; rw=0;=1h;=1;time(10);

i=0 to 55; /*Вывод на ЖКИ*/=0;time(10);=0; rw=1; e=1;while(P37); end;=0; rs=1; rw=0;=sod(i);=1;time(10);;outGKI;

: procedure(i) word; /*Функция снятия данных с датчика*/i byte, rez word;1=0; tl1=0;

if i=0 then do; /*Проверка датчика температуры*/

do while P00; end; /*Ожидаем начало нового импульса*/

do while not(P00); end;while P00; /*Замеряем его*/=1;;1=0;

end;

if i=1 then do; /*Проверка датчика давления 1-го бункера*/

do while P01; end;while not(P01); end;while P01;=1;;1=0;

end;

if i=2 then do; /*Проверка датчика давления 2-го бункера*/

do while P02; end;while not(P02); end;while P02;=1;;=0;;=double(tl1); /*Преобразуем TH, TL в слово*/=shl(t, 8);

t=(t+double(th1))*2; /*Число тиков за период*/

rez=koef(i)*t/1000; /*Умножаем на коэффициент*/

return rez;

end datchik;

/*//////////////////////////////////////////////////////////*/ /*Основная программа*/

call inic; /*Производим инициализацию*/

do while 1;

/*Начать?*/i=0 to 15;(i)=beg(i);(i+40)=20h;;outGKI;

((key=2) and (pkey<>2)) then do; /*Если нажали SET*/=0;

/*1/ Замешивание 2/ T=[thz]:tmz:tsz*/i=0 to 15;(i)=zames(i);(i+40)=time1(i);;(2)=(thz/10)+30h;(3)=(thz mod 10)+30h;(6)=(tmz/10)+30h;(7)=(tmz mod 10)+30h;(10)=(tsz/10)+30h;(11)=(tsz mod 10)+30h;outGKI; while not((key=5) and (pkey<>5)); /*При помощи “OK” подтверждаем ввод прарам-в*/

if ((key=2) and (pkey<>2)) then do; /*Вход в режим программирования стадий*/=0; /*Начинаем с 0-го параметра*/

do while (nset<4); /*Пока не запрограммируем все параметры стадии*/

if stad=0 then do; /*Программирование стадии замешивания*/

if nset=0 then do; /*Часы замешивания*/

/*1/ Замешивание 2/ T=[thz]:tmz:tsz*/

do i=0 to 15;(i)=zames(i);(i+40)=time1(i);;(42)=(thz/10)+30h;(43)=(thz mod 10)+30h;(46)=(tmz/10)+30h;(47)=(tmz mod 10)+30h;(50)=(tsz/10)+30h;(51)=(tsz mod 10)+30h;outGKI;;nset=1 then do; /*Минуты замешивания*/

/*1/ Замешивание 2/ T=thz:[tmz]:tsz*/

do i=0 to 15;(i)=zames(i);(i+40)=time2(i);;(42)=(thz/10)+30h;(43)=(thz mod 10)+30h;(46)=(tmz/10)+30h;(47)=(tmz mod 10)+30h;(50)=(tsz/10)+30h;(51)=(tsz mod 10)+30h;outGKI;;nset=2 then do; /*Секунды замешивания*/

/*1/ Замешивание 2/ T=thz:tmz:[tsz]*/

do i=0 to 15;(i)=zames(i);(i+40)=time3(i);;(43)=(thz/10)+30h;(44)=(thz mod 10)+30h;(46)=(tmz/10)+30h;(47)=(tmz mod 10)+30h;(50)=(tsz/10)+30h;(51)=(tsz mod 10)+30h;outGKI;=3;;;

 stad=1 then do; /*Программирование стадии брожения*/

if nset=0 then do; /*Температура брожения*/

/*1/ Брож-е t=[temb]C 2/ T=thb:tmb:tsb*/i=0 to 15;(i)=brog2(i);(i+40)=time0(i);;(9)=(temb/100)+30h;(10)=((temb mod 100)/10)+30h;(11)=((temb mod 100) mod 10)+30h;(43)=(thb/10)+30h;(44)=(thb mod 10)+30h;(46)=(tmb/10)+30h;(47)=(tmb mod 10)+30h;(49)=(tsb/10)+30h;(50)=(tsb mod 10)+30h;outGKI;;nset=1 then do; /*Часы брожения*/

/*1/ Брож-е t=tembC 2/ T=[thb]:tmb:tsb*/i=0 to 15;(i)=brog1(i);(i+40)=time1(i);;(9)=(temb/100)+30h;(10)=((temb mod 100)/10)+30h;(11)=((temb mod 100) mod 10)+30h;(42)=(thb/10)+30h;(43)=(thb mod 10)+30h;(46)=(tmb/10)+30h;(47)=(tmb mod 10)+30h;(49)=(tsb/10)+30h;(50)=(tsb mod 10)+30h;outGKI;;nset=2 then do; /*Минуты брожения*/

/*1/ Брож-е t=tembC 2/ T=thb:[tmb]:tsb*/i=0 to 15;(i)=brog1(i);(i+40)=time2(i);;(9)=(temb/100)+30h;(10)=((temb mod 100)/10)+30h;(11)=((temb mod 100) mod 10)+30h;(42)=(thb/10)+30h;(43)=(thb mod 10)+30h;(46)=(tmb/10)+30h;(47)=(tmb mod 10)+30h;(50)=(tsb/10)+30h;(51)=(tsb mod 10)+30h;outGKI;;nset=3 then do; /*Секунды брожения*/

/*1/ Брож-е t=tembC 2/ T=thb:tmb:[tsb]*/i=0 to 15;(i)=brog1(i);(i+40)=time3(i);;(9)=(temb/100)+30h;(10)=((temb mod 100)/10)+30h;(11)=((temb mod 100) mod 10)+30h;(43)=(thb/10)+30h;(44)=(thb mod 10)+30h;(46)=(tmb/10)+30h;(47)=(tmb mod 10)+30h;(50)=(tsb/10)+30h;(51)=(tsb mod 10)+30h;outGKI;;;

/*1/ Вып-ка t=[temc]C 2/ T=thc:tmc:tsc*/i=0 to 15;(i)=vip2(i);(i+40)=time0(i);;(9)=(temc/100)+30h;(10)=((temc mod 100)/10)+30h;(11)=((temc mod 100) mod 10)+30h;(43)=(thc/10)+30h;(44)=(thc mod 10)+30h;(46)=(tmc/10)+30h;(47)=(tmc mod 10)+30h;(49)=(tsc/10)+30h;(50)=(tsc mod 10)+30h;outGKI;;nset=1 then do; /*Часы выпечки*/

/*1/ Вып-ка t=temcC 2/ T=[thc]:tmc:tsc*/i=0 to 15;(i)=vip1(i);(i+40)=time1(i);;(9)=(temc/100)+30h;(10)=((temc mod 100)/10)+30h;(11)=((temc mod 100) mod 10)+30h;(42)=(thc/10)+30h;(43)=(thc mod 10)+30h;(46)=(tmc/10)+30h;(47)=(tmc mod 10)+30h;(49)=(tsc/10)+30h;(50)=(tsc mod 10)+30h;outGKI;;

nset=2 then do; /*Минуты выпечки*/

/*1/ Вып-ка t=temcC 2/ T=thc:[tmc]:tsc*/i=0 to 15;(i)=brog1(i);(i+40)=time2(i);;(9)=(temc/100)+30h;(10)=((temc mod 100)/10)+30h;(11)=((temc mod 100) mod 10)+30h;(42)=(thc/10)+30h;(43)=(thc mod 10)+30h;(46)=(tmc/10)+30h;(47)=(tmc mod 10)+30h;(50)=(tsc/10)+30h;(51)=(tsc mod 10)+30h;outGKI;;nset=3 then do; /*Секунды выпечки*/

/*1/ Вып-ка t=temcC 2/ T=thc:tmc:[tsc]*/i=0 to 15;(i)=brog1(i);(i+40)=time3(i);;(9)=(temc/100)+30h;(10)=((temc mod 100)/10)+30h;(11)=((temc mod 100) mod 10)+30h;(43)=(thc/10)+30h;(44)=(thc mod 10)+30h;(46)=(tmc/10)+30h;(47)=(tmc mod 10)+30h;(50)=(tsc/10)+30h;(51)=(tsc mod 10)+30h;outGKI;;;

((key=2) and (pkey<>2)) then do; /*При нажатии клавиши SET сл-й пар-р*/=nset+1;;

((key=3) and (pkey<>3)) then do; /* При нажатии + инкрементируем зн-е параметра*/case stad;case nset;;=thz+1;(thz>59) then thz=59;;;=tmz+1;(tmz>59) then tmz=59;;;=thz+1;(tsz>59) then tsz=59;;;case nset;;=temb+1;(temb>500) then temb=500;;;=thz+1;(thb>59) then thb=59;;;=tmz+1;(tmb>59) then tmb=59;;;=thb+1;(tsb>59) then tsb=59;;;case nset;;=temc+1;(temc>500) then temc=500;;;=thc+1;(thc>59) then thc=59;;;=tmc+1;(tmc>59) then tmc=59;;;=thc+1;(tsc>59) then tsc=59;;;;;

((key=4) and (pkey<>4)) then do; /* При нажатии - декрементируем зн-е параметра*/case stad;case nset;;=thz-1;(thz<0) then thz=0;;;=tmz-1;(tmz<0) then tmz=0;;;=thz-1;(tsz<0) then tsz=0;;;case nset;;=temb-1;(temb<0) then temb=0;;;=thz-1;(thb<0) then thb=0;;;=tmz-1;(tmb<0) then tmb=0;;;=thb-1;(tsb<0) then tsb=0;;;case nset;;=temc-1;(temc<0) then temc=0;;;=thc-1;(thc<0) then thc=0;;;=tmc-1;(tmc<0) then tmc=0;;;=thc+1;(tsc<0) then tsc=0;;;;;;;

if ((key=1) and (pkey<>1)) then do; /*При нажатии ^ переходим к прогр-ю сл-ей стадии */

stad=stad+1;(stad=3) then stad=0;;

if (stad=0) then do; /*Выводим текущее состояние параметров*/

/*1/ Замешивание 2/ T=thz:tmz:tsz*/

do i=0 to 15;(i)=zames(i);(i+40)=time0(i);;(43)=(thz/10)+30h;(44)=(thz mod 10)+30h;(46)=(tmz/10)+30h;(47)=(tmz mod 10)+30h;(49)=(tsz/10)+30h;(50)=(tsz mod 10)+30h;outGKI;;

(stad=1) then do;

/*1/ Брож-е t=tembC 2/ T=thb:tmb:tsb*/i=0 to 15;(i)=brog1(i);(i+40)=time0(i);;(9)=(temb/100)+30h;(10)=((temb mod 100)/10)+30h;(11)=((temb mod 100) mod 10)+30h;(43)=(thb/10)+30h;(44)=(thb mod 10)+30h;(46)=(tmb/10)+30h;(47)=(tmb mod 10)+30h;(49)=(tsb/10)+30h;(50)=(tsb mod 10)+30h;outGKI;;

(stad=2) then do;

/*1/ Вып-ка t=temcC 2/ T=thc:tmc:tsc*/i=0 to 15;(i)=vip1(i);(i+40)=time0(i);;(9)=(temc/100)+30h;(10)=((temc mod 100)/10)+30h;(11)=((temc mod 100) mod 10)+30h;(43)=(thc/10)+30h;(44)=(thc mod 10)+30h;(46)=(tmc/10)+30h;(47)=(tmc mod 10)+30h;(49)=(tsc/10)+30h;(50)=(tsc mod 10)+30h;outGKI;;

;;

 ((key=5) and (pkey<>5)) then do; /*При согласии на начало начинаем приготовление*/

P2=1b; /*Пикаем*/time(255);2=0b;

P27=1b; /*открываем оба бункера*/

P24=1b;

P26=1b; /*Запускаем миксер*/

do while ((datchik(1)<>0) and (datchik(2)<>0)); end; /*Ждём пока опустошаться*/27=0b; /*закрываем бункеры*/

P24=0b;

P2=1b; /*Пикаем*/time(255);2=0b;

h=thz; /*Задаём параметры замешивания*/

m=tmz;

s=tsz;

fpp=1b; /*Запускаем таймер*/

do while (fpp);

/*Выводим состояние*/

/*1/ Замешивание 2/ T=thz:tmz:tsz*/

do i=0 to 15;(i)=zames(i);(i+40)=time0(i);;(43)=(thz/10)+30h;(44)=(thz mod 10)+30h;(46)=(tmz/10)+30h;(47)=(tmz mod 10)+30h;(49)=(tsz/10)+30h;(50)=(tsz mod 10)+30h;outGKI;;=0b; /*Выключаем миксер*/=1b; /*Пикаем*/time(255);2=0b;

h=thb; /*Задаём параметры брожения*/

m=tmb;=tsb;=temb;23=1b; /*Включаем двигатель*/

fpp=1b; /*Запускаем таймер*/

do while (fpp);(datchik(1)<temt) then P25=1b; /*Следим за температурой*/ P25=0b;

/*Выводим состояние*/

/*1/ Брож-е t=tembC 2/ T=thb:tmb:tsb*/i=0 to 15;(i)=brog1(i);(i+40)=time0(i);;(9)=(temb/100)+30h;(10)=((temb mod 100)/10)+30h;(11)=((temb mod 100) mod 10)+30h;(43)=(thb/10)+30h;(44)=(thb mod 10)+30h;(46)=(tmb/10)+30h;(47)=(tmb mod 10)+30h;(49)=(tsb/10)+30h;(50)=(tsb mod 10)+30h;outGKI;;=1b;time(255);=0b;=thc; /*Задаём параметры выпекания*/

m=tmc;=tsc;=temc;23=1b; /*Включаем двигатель*/

fpp=1b; /*Запускаем таймер*/

do while (fpp);(datchik(1)<temc) then P25=1b; /*Следим за температурой*/ P25=0b;

/*Выводим состояние*/

/*1/ Вып-ка t=temcC 2/ T=thc:tmc:tsc*/

do i=0 to 15;(i)=vip1(i);(i+40)=time0(i);;(9)=(temc/100)+30h;(10)=((temc mod 100)/10)+30h;(11)=((temc mod 100) mod 10)+30h;(43)=(thc/10)+30h;(44)=(thc mod 10)+30h;(46)=(tmc/10)+30h;(47)=(tmc mod 10)+30h;(49)=(tsc/10)+30h;(50)=(tsc mod 10)+30h;outGKI;;n=0 to 3; /*Звук трижды*/=1b;time(255);=0b;time(255);;;

/*//////////////////////////////////////////////////////////*/

start

Похожие работы на - Система управления хлебопечью

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!