Диссертация (1143270), страница 24
Текст из файла (страница 24)
П1-1. Текст подпрограммы нечетких вычислений. Фрагмент 1.205call rulptr;dptr - на правило R[r0]mov a,r1dec aadd a,dplmov dpl,ajnc inpcalc1inc dph;dptr - на R[r0].inp[r1]inpcalc1:movx a,@dptrjz nextinppush amov dptr,#INPDEFmov a,1clr csubb a,#1add a,dplmov dpl,ajnc inpcalcainc dphinpcalca:movx a,@dptr;смещение по входамmov dptr,#INPUTSpop badd a,bdec aadd a,dphmov dph,apush 0mov a,1dec aadd a,#30hmov 0,amov a,@r0;фаззификацияpop 0add a,dplmov dpl,ajnc inpcalcbinc dphinpcalcb:movx a,@dptrmov b,amov a,flagsjb acc.0, new_hgtmov a,bcjne a,height,inpcalc4inpcalc4:jnc nextinpnew_hgt:mov a,bmov height,amov a,flagsanl a,#0FEhmov flags,anextinp:djnz r1,inpcalcРис. П1-2.
Текст подпрограммы нечетких вычислений. Фрагмент 2.inpcalc:206tmpcalc:calc_a:calc_b:calc_c:next_tmp:nextrul:n_rul:lcall rulptrmov a,2clr csubb a,#1add a,#00000101badd a,82hmov 82h,ajnc calc_ainc 83hmovx a,@dptrjz next_tmppush E0hmov dptr,#TMPOUTmov E0h,2clr csubb a,#1mov b,#00001010bmul abpop F0hadd a,F0hclr csubb a,#1add a,82hmov 82h,ajnc calc_bmov a,83hadd a,#1mov 83h,amovx a,@dptrcjne a, 45h, calc_cjnc next_tmpmov a,45hmovx @dptr,adjnz 2,tmpcalcdjnz 0,n_rulljmp defuzljmp newrul;dptr - на R[r0].out[r2];переход к след.
правилуРис. П1-3. Текст подпрограммы нечетких вычислений. Фрагмент 3.207mulres:mulpart:up:dn:dn_prb:tmp:tmp1:equ 90hequ 96hequ 90hequ 98hequ b0hequ c0hequ c8hdefuz:outprep:mov 2,#00000101bmov dptr,#DIVUPmov a,2dec amov b,#7mul abadd a,82hmov 82h,E0hmov E0h,83haddc a,F0hmov 83h,E0hmov 0,#up+6movx a,@dptrmov @r0,ainc dptrdec r0cjne r0,#up-1,$prepupmov dptr,#DIVDNmov a,2dec amov b,#6mul abadd a,82hmov 82h,E0hmov E0h,83haddc a,F0hmov 83h,E0hmov 0,#dn+6movx a,@dptrmov @r0,ainc dptrdec r0cjne r0,#dn,$prepdnmov res,#0lcall div7bmov a,r2dec aadd a,#Y1mov r1,amov @r1,resdjnz r2, n_prepjmp exitjmp outprepret$prepup:$prepdn:nextout:n_prep:exit:;дефаззификация;конец Fuzzy-вычисленийРис.
П1-4. Текст подпрограммы нечетких вычислений. Фрагмент 4.208mlt5b:push 0push 1push 2$mltstp:mov r0,#mulres+5mov r1,#mulpart+11mov r2,amov a,r2mov b,@r0mul abmov @r1,adec r1mov @r1,bdec r1dec r0cjne r0,#mulres-1,$mltstpmov r0,#mulres+5mov r1,#mulpart+11clr amov @r0,aclr c$sumstp:push pswpop pswmov a,@r0addc a,@r1mov @r0,adec r0dec r1clr aaddc a,@r1mov @r0,adec r1push pswcjne r0,#mulres-1,$sumstppop pswpop 2pop 1pop 0retРис. П1-5.
Текст подпрограммы нечетких вычислений. Фрагмент 5.209rulptr:mov dptr,#RULESmov a,0dec amov b,#00001010bmul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,aretNUMRUL:NUMINP:NUMOUT:INPDEF:db 5db 3db 2db 0db 3db 6INPUTS:vX1:vX1_T1:vX1_T2:vX1_T3:vX2:vX2_T1:OUTDEF:OUTS:vY1:vY1_T1:MAXOUT:RULES:;Пример кодирования базы знаний;число правил;число входов;число выходов;смещения по термам для Х1;смещения по термам для Х2;смещения по термам для Х3db 255,255,255,255,254,253,252,251,250,249,248,247,246,245,244,243;и.т.д.
256 значений развертки терма 1 для Х1db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;и.т.д. 256 значений терма 2 для Х1db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;и.т.д. 256 значений терма 3 для Х1db 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ;и.т.д. 256 знач. терма 1 для Х2;аналогично представляются все термы входных переменныхdb 0db 3;смещения по термам для Y1;смещения по термам для Y2db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ;и.т.д. 256 значений терма 1 для Y1;далее аналогично описываются термы выходных переменныхdb 215,62,150,0,0,0,0,0,0,0;табл.максимумов выходов;далее аналогичные строки для Y2-Y5, (неиспользуемые обнулены)db 1,0,0,0,0,1,0,0,0,0db 2,3,0,0,0,2,1,0,0,0db 3,0,0,0,0,3,0,0,0,0db 0,1,0,0,0,0,1,0,0,0db 0,2,0,0,0,0,2,0,0,0;табл.правилTMPOUT: db 0,0,0,0,0,0,0,0,0,0;таблица временных максимумовDIVDN:db 00h,00h,00h,00h,00h,00hDIVUP:db 00h,00h,00h,00h,00h,00h,00hРис.
П1-6. Текст подпрограммы нечетких вычислений. . Фрагмент 6.210Приложение 2. Основные структурные схемы микропроцессоров совстроенными нечеткими вычислителямиРис. П2-1. Внутренняя структура микропроцессорасо встроенным аппаратным нечетким вычислителем (обведен).211Рис. П2-2. Структура модуля фаззификации (фрагмент).212Рис. П2-3.
Структура модуля памяти правил (фрагмент).213Рис. П2-4. Структура модуля логического вывода (фрагмент).214Рис. П2-5. Структура модуля дефаззификации (фрагмент).215Приложение 3. Описание системы Fuzzy51В соответствии с описанной в главах 1 и 2 последовательностью этаповпроектирования нечетких контроллеров, пакет Fuzzy51 организован в видесовокупностиподдерживающихэтиэтапыподсистем:“Структура”,“Переменные”, “Правила”, “Исследование”, “Справка” (рис. П3-1).Рис. П3-1.
Пакет Fuzzy51. Вкладка “Структура”.Группы “Контроллер нечетких выводов” и “Редактирование” позволяютпользователю задать структуру разрабатываемого нечеткого контроллера,добавляя и удаляя входы и выходы НК. В поле «Описание» рекомендуется ввестикомментарий к проекту.Группа “Проект” осуществляет управление текущим проектом (открытие,сохранение, обнуление). Кнопка-панель “Транслировать” активизирует функциюавтоматической генерации программы-эмулятора (на языке ассемблера для216микроконтроллеров x51), эквивалентной разработанному нечеткому вычислителю.Группа“Листингтрансляции”отображаетиспользуемыепрограммнымэмулятором ресурсы.Рис.
П3-2. Пакет Fuzzy51. Вкладка “Переменные”.Группа “Редактирование переменных”, “Выбор терма”, кнопки-панели“Добавить” и “Удалить” позволяют пользователю задать и именовать термы длякаждого входа и выхода; выбор активной лингвистической переменнойосуществляется в группе “Выбор имени” и ниспадающем списке с именамилингвистических переменных, ранее заданных пользователем на вкладке“Структура”.Задание функции принадлежности для любого терма любой лингвистическойпеременной осуществляется выбором имени переменной и нужного терма из217ниспадающих списков и последующим вводом функции принадлежности вкусочно-линейном представлении с помощью манипулятора «мышь».
Позицияуказателя отображается в группе “Текущая точка”. Ось абсцисс представляетсобой диапазон изменения лингвистической переменной в масштабе байтовойсетки (0 - 255). По оси ординат в процентах отображается степень принадлежностизначений лингвистической переменной данному терму. Цвет графика функциипринадлежности терма указан в группе “Легенда”. Кроме графическогопредставления заданной функции принадлежности терма, используется еечисловое отображение (доступное для редактирования) в группе “Текущий терм” ввиде 256 строк формата X:m, где Х – значение лингвистической переменной, m –степень принадлежности этого значения активному терму.Рис.
П3-3. Пакет Fuzzy51. Вкладка “Правила”.218Группа “База правил” отображает заданные разработчиком правила в видетаблицы объемом до 255 строк формата “ЕСЛИ X1… и X2… и X3... иX4… и X5 …, ТО Y1… и Y2… и Y3… и Y4…и Y5…”.Создание нового и удаление текущего правила (отмеченного символом “>” встолбце порядковых номеров правил) осуществляется нажатием кнопок-панелей“Создать новое” и “Удалить текущее” в группе “Редактирование базы”.Задание входных лингвистических переменных и термов, применяемых втекущем правиле, осуществляется в группе “Изменение правила”, “Если…”;выходных – в группе “Изменение правила”, “То…”ниспадающихспискахсименамис использованиемлингвистическихпеременныхисоответствующих им термов.Для удаления из текущего правила только одного условия или логическоговыводанеобходимониспадающемспискезафиксироватьвыборвыбратьтермовзначениедля“Пусто”всоответствующемсоответствующейсоответствующейкнопкой-панельюпеременнойи“Добавитьктекущему правилу”.Группа “Фазовые траектории” позволяет отображать до 5 фазовых портретовразработанногонечеткогоконтроллера;абсциссаиординатапортрета,характеризующего одно из сечений передаточной функции (ее размерностьопределяется количеством входов и выходов НК) назначаются пользователем всоответствующихниспадающихсписках.Отображаютсятакжечисловыемгновенные значения входов и выходов.Выбор источника и приемника информации осуществляется в группеэлементов “Управление”: при статической отладке нечеткого контроллерацелесообразно пользоваться ручным вводом значений входных переменных; длявычислений с большим объемом данных применяется файловый ввод-вывод; дляорганизации интерактивной связи между приложениями применяется обмен поDDE и посредством DLL.219Рис.
П3-4. Пакет Fuzzy51. Вкладка “Исследование”.Для файлового ввода-вывода разработчиком предварительно готовится изаносится в каталог проекта файл с именем name_inp.txt (где name – имя проекта)следующего формата: в первой строке, начинающейся с символа “;” располагаетсякомментарий; во всех последующих строках перечислены числовые значениявходов, каждое завершаемое запятой и пробелом. Например, для НК с четырьмявходами:;Комментарий55, 123, 212, 58,197, 24, 76, 5,По окончании трассировки пользователю станет доступен файл name_out.txt,в котором к каждой строке будет добавлены столбцы, соответствующиерезультирующим значениям используемых выходов для заданного кортежавходов.220Приложение 4.Оттиски наград конкурсных мероприятий и актов о внедрениях221222223224225226227228229.















