• Sonuç bulunamadı

3. BULANIK MANTIK TEMELLİ YAZILIM GELİŞTİRME VE ARAÇLARI

3.1. Fuzzytech Paket Programı

Fuzzytech, bulanık mantık ile modelleme yapmak ve test edebilmek için geliştirilmiş dünyanın sayılı paket programlarındandır. Sistem bir kere tasarlandığında Fuzzytech oluşturulan tasarımı FTL dosya yapısı olarak kaydeder. FTL "Fuzzy Technology Language" ifadesinin kısaltmasıdır ve bulanık mantık yapısının programlama dili olarak düşünülebilir. FuzzyTech her türlü grafik arayüz desteğini verdiğinden FTL de kod yazılmasına gerek yoktur. Bunun yanısıra Fuzzytech FTL de hazırlanan yapıyı,bulanık mantık sisteminin çalıştırılacağı donanım için gerekli gömülü kod haline çevirebilir. Bu sebeple mikrokontroller ve PC tabanlı uygulamalar için vazgeçilmez bir araçtır. Birçok modeli(edition) vardır. Pamukkale Üniversitesi bünyesinde bulunan Fuzzytech paket programının modeli Fuzzytech MCU-MP dir. Bu model kullanılarak oluşturulan bulanık mantık modellemesi sonucunda ASCI C, ASM, Matlab dosya tabanlı kodlar üretilebilir. Bunun dışında en gelişmiş Fuzzytech modeli olan Fuzzytech Professional modeli kullanılarak Visual C++/MFC ,Visual Basic, Matlab, ANSI C, Java tabanlı kodlar elde edilebilir. Fuzzytech programı ilk çalıştırıldığında şekil 3.1’ deki görüntü ekrana gelir (WEB_1).

Şekil 3.1 FuzzyTECH ilk açılış görüntüsü

Burada File->New menusu kullanılarak yeni bir proje oluşturulabileceği gibi, çoğu kişi tarafından da daha hızlı proje hazırlanabildiği için tercih edilen File->Fuzzy Design Wizard kullanılarak proje hazırlanır. Fuzzy Design Wizard’ı çalıştırdıktan sonra şekil 3.2’ deki ekran görüntüsü ekrana gelir.

Next düğmesine basınca şekil 3.3’ deki ekran görüntüsü elde edilir.

Şekil 3.3 Fuzzy Design Wizard’ ın ilk adımı

Burada “inputLVs” yazan yere bulanık modellemenizde kullanmak istediğiniz giriş değişkenlerinin sayısını , “input Terms/LV” yazan yere bu değişkenler için düşünülen dilsel olay sayısını gireriz. Aynı şekilde “Output LVs” yazan yere bulanık modellemenizde kullanmak istediğiniz çıkış değişkenlerinin sayısını, “output Terms/LV” yazan yere bu değişkenler için düşünülen dilsel olay sayısını gireriz. Modellemede ara değer tanımlamak istersek “ intermediateLVS” alanına adedini ve karşısına da dilsel olay sayısını yazarız. Next düğmesine basınca şekil 3.4’ deki ekran görüntüsü elde edilir.

Şekil 3.4 Fuzzy Design Wizard’ ın ikinci adımı

Burada 1. giriş değişkenimizin adını error olarak tanımladığımız görülmektedir. Bu değişkenimizin fiziksel sistem içindeki aralığı Range From kutusu içinde tanımlanır. Burada dikkat edilmesi gereken husus fiziksel sistem içindeki aralık ile (bu olay program içinde shell value olarak adlandırılmıştır.) kod içerisinde kullanılan aralıkların uygun şekilde ayarlanmasıdır. Bu konuyu biraz daha açarsak ; Pic 16f877 kullanılarak bir analog değerin 10bitlik bir çözünürlükle okunduğunu düşünelim. Bu değeri set_value olarak tanımlanan bir değişkene atayalım. Aynı şekilde Pic 16f877 ‘nin başka bir analog girişini 10bitlik bir çözünürlükle okuyalım. Bunu da real_value adlı başka bir değişkene atayalım. Eğer biz error=set_value-real_value+1023 şeklinde bir tanımlama yaparsak, error sinyalimiz minimum 0 maksimum 2046 olur. Bu değerler fiziksel değerlerdir. Çünkü dış ortamdan A/D çevirici ile koda dönüşmüş değerlerdir. Fuzzytech ise bu değerlerin kod değerlerini kullanır. Şekil 3.5’ dede görüldüğü gibi Fuzzytech 0 için 0 değerini kullanırken 2046 için 65535 değerini kullanır.Bu durum uygulama kodları içinde daha net olarak gösterilmiştir.

Şekil 3.5 Değişken skalası

Next düğmesine bastıktan sonra şekil 3.6’ daki ekran görüntü oluşur.

Yukarıda sistemimiz için 2. bir giriş olan ivme değişkeninin tanımlanması görülmektedir. Next düğmesine basınca şekil 3.7’ deki görüntü oluşur.

Şekil 3.7 Fuzzy Design Wizard’ ın dördüncü adımı

Burada çıkış değişkenimizin adını power olarak tanımladığımız görülmektedir. Next düğmesine basınca şekil 3.8’ deki görüntü oluşur.

Next düğmesine basınca şekil 3.9’ daki görüntü oluşur.

Şekil 3.9 Fuzzy Design Wizard’ ın altıncı adımı

Burada “Rule Blocks” alanına bulanık mantık kural blok sayısı adedi girilir. Next düğmesine basınca şekil 3.10’ daki görüntü oluşur.

Böylece iki girişli bir çıkışlı bir proje oluşturulmuş oldu. Her bir değişkenin üzerine çift tıklayarak açılan pencerelerden dilsel değişkenlerin tanım aralığını belirlenebilir. Bununla ilgili ekran görüntüsü şekil 3.11’ de verilmiştir.

Şekil 3.11 Dilsel değişkenlerin tanım aralığı

Yukarıda da görüldüğü gibi istenilen giriş çıkış değişkenlerinden birisi seçilerek, seçilen bu değişkenin ayarlanması düşünülen dilsel ifade aralığı seçilir. Ardından da yukarıda görülen üçgenler fare sürüklemesi ile yeniden tanımlanabildiği gibi x/y yazan bölümlere ilgili değerler klavye ile girilerek yeniden tanımlama yapılabilir.”Rule Box” çift tıklanarak açılan pencereye de if-then-else kuralları uygulanarak aidiyetlik ile ilgili gerekli düzenlemeler yapılır. Bununla ilgili ekran görüntüsü şekil 3.12’ de görülmektedir.

Şekil 3.12 Kural tablosu

Tools->Project Options menusu kullanılarak açılan pencereden “general” başlığı altında temel değişken veri tipi seçilebilir. Değişkenin 16bitlik integer tipinde seçildiği şekil 3.13’ de gözükmektedir.

Şekil 3.13 Değişken tipi

Buraya kadar yapılanlarla proje tamamlanmıştır. Kod üretmeden önce Debug özelliği kullanılarak giriş değişkenlerinin değişik değerlerine karşılık çıkış değişkeninin nasıl değiştiğini gözlemlenebilir. Debug işlemi sırasında şekil 3.14’ deki görüntü elde edilir.

Şekil 3.14 Debug işlemi

Sıra oluşturulan bu proje için kod üretilmesine geldi. Bunun için Tools->Compile to menusundan istenilen kod tabanında ki seçenek seçilir. C tabanlı kod seçildiği zaman program proje adı ile aynı iki ANSI C tabanlı dosya üretir. Bu durumda şekil 3.15’ deki ekran görüntüsünü oluşur.

3.2. CCS C Paket Pogramı

CCS C, Microchip firmasının pic12,16 ve 18 serisi mikrokontrollerı için c derleyicisini sunar.Bu c derleyicisi bünyesinde barındırdığı fonksiyonlar sayesinde yazılım çok kolay kodlanabilir. Kodlara kolayca bakılabildiği için hızlı metotlar geliştirmenize olanak verir. Başlıca özellikleri şunlardır (WEB_4);

• MPLAB ve diğer simulatorlerle ayrıca programlayıcılarla tam uyumludur.

• Formatlı printf özelliği ile hex ve ondalık sayılarda kolay gösterim imkanı sağlar.

• Etkin fonksiyon uyarlaması sayesinde hardware stack limitlerinden daha fazla çağrılara izin verir.

• LCD modülleri,keypadler,24xx,93xx, serial

e2promlar,x10,DS1302,NJU6355,Real time cloks,DALLAS TOUCH

MEMORY, DS2223,PCF8570 Seri sram,LTC1298,PCF8591 A/D konvertörler ve daha fazlası için sürücüler eklenmiştir.

• 1,8,16 bit ve 32 bit floating point aritmetik kullanabilir.

• Assembly kodlar c programının içine herhangi bir yerde eklenebilir.

• Değişik kod sayfaları otomatik eklenirler.

• Sabitler(kelime ve kalıplar) program hafızasında yer alır.

• Standard tek bit kodlar (SHORT INT) sayesinde çok kısa ve değişken bit bazında kodlar üretilebilir.

• #BIT and #BYTE komutları c değişkenlerini kesin adreslere yerleştirirler.

• Özel pencerelerde ram hafıza haritası c/assembly listesi ve çağrı ağacını görüntüleyebilir.

• 8 veya16 bit pointerlar sunulur.

3.3. Fuzzytech – CCS C Uyumu

Fuzzytech ile üretilen kodlar CCS C compiler ile birebir uyumlu değildir. Bu sebeple kodlar üzerinde bazı değişiklikler yapmak gerekir. Bunlar sırasıyla şunlardır:

ftlibc.h dosyası üzerinde aşağıdaki değişiklikler yapılır ve bu dosya CCS C ile oluşturulan proje klasörüne five.c ve five.h adlı Fuzzytech tarafından bizim bulanık modelimize uygun olarak üretilen dosyalarla birlikte kopyalanır.

//#define VOID void //#define CONST const //typedef unsigned char BYTE; satırları iptal edilir.

typedef unsigned char FTCRTU8; typedef unsigned short FTCRTU16;

typedef unsigned long FTCRTU32; değişkenleri typedef unsigned int FTCRTU8;

typedef unsigned long int FTCRTU16;

typedef unsigned int32 FTCRTU32; şeklinde yeniden tanımlanır. five.h dosyası içindeki

//extern FUZZY * const pcvfive; satır silinir.

five.c dosyası içindeki

static const FUZZY tpts[28] = static const FUZZY xcom[7] = static const BYTE rt0[32] = static const FRAT frat0[14] =

değişkenler aşağıdaki gibi yeniden tanımlanır. static FUZZY tpts[28] =

static FUZZY xcom[7] = static BYTE rt0[32] = static FRAT frat0[14] =

Ayrıca CCS C ana kodun içine aşağıdakiler dahil edilir. #include "five.c"

#include "Hf2p.c" #include "Himfmin.c" #include "Hdcom.c" #include "Hdmom.c"

Oluşturulan modele bağlı olarak CCS C içine dahil edilmesi gereken dosya olur ise C:\Program Files\INFORM\fuzzyTECH 5.5\Runtime\C\Lib\Src\MCU altındaki dosyalardan yararlanılır (WEB_4).

Benzer Belgeler