Аппаратные и программные


А.2.5.3 Пример использования



Download 3,23 Mb.
Pdf ko'rish
bet169/179
Sana24.02.2022
Hajmi3,23 Mb.
#234030
TuriУчебное пособие
1   ...   165   166   167   168   169   170   171   172   ...   179
А.2.5.3 Пример использования 
Рассмотрим более сложный пример практического использования 
конечных автоматов в программировании 
.
Рисунок 102. Конечный автомат, описывающий работу устройства 


271 
Данная диаграмма состояний описывает алгоритм управления некоторым 
устройством. 
Как преобразовать ее в привычный исходный текст на языке Си? 
Достаточно просто. Для начала, заведем переменную, в которой мы будем 
держать состояние нашего конечного автомата. Сразу замечу: переменная 
должна быть статической, т.е. она ни в коем случае не должна находиться в 
регистре процессора или в стеке. 
unsigned char State=0; // Состояние автомата. 
Далее, описываем сам автомат. Переменные Ki – это дискретные выходы. 
Pi – дискретные входы. Символом Ti мы обозначим значение, снятое с 
термодатчика, ti – время. 
Для реализации автомата на языке Си проще и нагляднее воспользоваться 
оператором SWITCH. Каждый CASE является одним из состояний автомата. 
Переход из состояния в состояние осуществляется путем записи номера нового 
состояния в переменную State.
switch(State) 

case 0: // INIT 
U2=0; 
K11=0; K10=0; K4_2=0; K4=0; 
if(START) State=1;
// Переход в состояние 1 
break; 
case 1: // START 
// Читаем температуры T5 и T2 
// : 
if(STOP) State=5; 
if(T2 > (T5+2*dT) ) 

State=2; 
K11=1; 
// Установить задержку для таймера t1 

break; 
case 2: // ON 
// Индицируем текущее состояние системы 
// : 
if(STOP) State=5; 
if(t>=300) 

K4_1=1, K4_2=1, K10=1; 
State=3; 

break; 
case 3: //CONTROL 
// Выполняем алгоритм управления нашим устройством 
// : 
if(STOP) State=5; 
if(T2 < (T5+dT) ) 

K11=0; 


272 
State=4; 

break; 
case 4: //OFF 
// Индицируем текущее состояние системы 
// : 
if(STOP) State=5; 
if(t >=t2) 

K4_1=0, K4-2=0,K10=0; 
State=1; 

break; 
case 5: // STOP 
// Останов системы 
// : 
// Выполнить проверку P3 
if(P3==0) 

K4-1=0, K4-2=0, K10=0, U2=0; 
State=0; 

break; 

Как видно из рисунка и исходного текста на языке C, автомат может 
находиться в шести состояниях. Переход от состояния к состоянию 
осуществляется после анализа условий. Условия (показаны в квадратных 
скобках на дугах) реализованы оператором IF. Если на дугах указано действие 
(отмечается символом '/') то оно исполняется внутри IF, в процессе перехода. 
Действия, указанные внутри прямоугольников выполняются каждый раз, при 
попадание в данное состояние. 
Как видно из исходного текста, оператор SWITCH , запущенный один раз 
выполняет только один шаг конечного автомата. Для того, чтобы выполнить 
всю программу необходимо каким-то образом повторять вызов описанной 
выше конструкции. Это может быть выполнено в виде банального оператора 
цикла WHILE или более сложным способом. В частности автоматы удобно 
использовать внутри обработчиков прерывания от таймера, т.к. время 
выполнения программы в таком случае достаточно просто проанализировать 
[52]. 
В чем удобство использования конечных автоматов? Во-первых, – 
простота реализации. Во-вторых, детерминированность и, как следствие 
детерминированности – тестопригодность. В каждый момент времени 
выполняется конкретный шаг алгоритма. Состояние такого автомата 
описывается всего одной переменной, если известно состояние переменной – 
однозначно известен текущий шаг. 
К сожалению, автоматные модели далеко не идеальны. Самым крупным 
недостатком автоматной модели является трудность описания сложных систем 
с большим числом состояний.


273 

Download 3,23 Mb.

Do'stlaringiz bilan baham:
1   ...   165   166   167   168   169   170   171   172   ...   179




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish