طراحی یک کنترل کننده فازی برای کنترل یک سروموتور DC با Matlab

طراحی یک کنترل کننده فازی برای کنترل یک سروموتور DC با Matlab

در این قسمت نحوه طراحی یک کنترل کننده فازی برای کنترل یک سروموتور DC با Matlab را آموزش می دهیم. فرض کنید تابع تبدیل یک سروموتور DC بصورت زیر است:

34

قبل از اینکه وارد طراحی کنترل کننده فازی شویم ابتدا باید نحوه ایجاد کنترل کننده فازی در متلب را آموزش بدهیم. برای این کار هم می توان از دستورات متلب استفاده کرد و هم می توان از تولباکسی که در متلب قرار دارد استفاده کرد که ما کار با تولباکس Fuzzy Logic Design را آموزش می دهیم.برای وارد شدن به این تولباکس ابتدا دستور fuzzy را در command window بنویسید تا صفحه زیر آشکار شود:

Fis Editor 1

همان طور که مشاهده می کنید این صفحه از قسمت های زیر تشکیل شده است:

1) input: در این قسمت ورودی های سیستم مشخص می شود که برای کار ما دو ورودی خطای سرعت و تغییرات خطای سرعت می باشد.

2) Untitled: در این قسمت قوانین نوشته می شود.

3) output: در این قسمت خروجی های سیستم تعیین می شود که برای کار ما ولتاژ موتور می باشد.

4) Current Variable: در این قسمت اطلاعات مربوط به متغیری که انتخاب شده نشان داده می شود.سعی کنید برای هر متغیر نام مناسبی انتخاب کنید تا زمانی که قوانین را طراحی می کنیم دچار مشکل نشویم.

5) قسمت پایین سمت چپ که در این قسمت نحوه استدلال و استنتاج کردن قوانین و روابط فازی مشخص می شود.بهتر است این قسمت ها را تغییر ندهید.

برای اضافه کردن ورودی و خروجی می توانید مانند شکل زیر عمل کنید:

Fis Editor 2

ابتدا ما دو ورودی با نام های e و deltae و یک خروجی با نام V می سازیم.حال روی ورودی e دو بار کلیک کرده تا وارد صفحه زیر شویم:

Fis Editor 3

ابتدا با کلیک بر روی هر متغیر رنج تغییرات آن (گوشه پایین سمت چپ) را مشخص می کنیم.که برای کار ما رنج تغییرات هر سه متغیر را [-3,3] انتخاب کرده ایم.حال باید توابع عضویت ها را طراحی کنیم.از قسمت Type توابع مختلفی را می توان انتخاب کرد (مثلثی ،ذوزنقه ای ،زنگوله ای و …) و در قسمت Params می توان پارامتر های یک تابع را مشخص کرد (مثلا در مورد تابع مثلثی پارامترها عبارت اند از: نقطه شروع،نقطه ارتفاع و نقطه انتهایی) . برای طراحی ما  روی mf1 کلیک کرده و در قسمت Name حرف n را و از قسمت Type گزینه trapmf را انتخاب و در قسمت Params اعداد [-Inf -3 -2 0] را می نویسیم.می توان توابع عضویت دلخواه نیز ایجاد کرد.برای این کار از سربرگ Edit گزینه ی Add Custom MF را انتخاب کنید.به همین ترتیب توابع عضویت های دیگر p,z,any را تشکیل داده و همین کار را برای متغیرهای دیگر انجام می دهیم.

حال باید قوانین را طراحی کنیم،برای این کار روی گزینه Untitled کلیک کرده و وارد آن می شویم و سپس قوانین زیر را در آن ایجاد می کنیم:

1. If (e is n) and (deltae is any) then (output1 is n)

2. If (e is p) and (deltae is any) then (output1 is p)

3. If (e is z) and (deltae is any) then (output1 is n)

4. If (e is z) and (deltae is any) then (output1 is p)

5. If (e is z) and (deltae is any) then (output1 is z)

Fis Editor 4

توجه کنید که پس از انتخاب هر کدام از پارامترها گزینه Add rule را زده تا قانون ثبت شود و برای حذف قانونی،ابتدا روی آن کلیک کرده و سپس گزینه Delete rule را بزنید. برای مشاهده خروجی از سربرگ View گزینه Rule را انتخاب کنید و با تغییر دادن ورودی ها تغییرات خروجی را مشاهده کنید.

Fis Editor 5

برای ذخیره فایل طراحی از سربرگ File گزینه Export To File را انتخاب کرده و فایل را با پسوند fis ذخیره کنید. برای استفاده از این فایل در سیمولینک متلب باید بلوک Fuzzy Logic Controller را انتخاب کنید.

Block Fuzzy logic controller

توجه کنید که چون فایل fis ما یک استراکچر می باشد باید نام فایل را داخل ' ' قرار دهیم.

شکل زیر نحوه کنترل را نشان می دهد:

control of servo

در اینجا برای اینکه مقایسه ای بین کنترل کننده فازی با کنترل کننده PID انجام دهید به شکل موج های زیر توجه کنید:

compare FLC & PID

همان طور که مشخص است پاسخ کنترل کننده فازی سریع تر بوده است.

شکل زیر یک تفاوت دیگر این دو کنترل کننده را نشان می دهد:

compare FLC & PID

همان طور که می دانید خروجی کنترل کننده ها نباید به اشباع برود ولی کنترل کننده PID به اشباع رفته است.

برای دانلود این پروژه بر روی عکس زیر کلیک کنید.

Download

149 Comments

mehri

درباره10 سال ago

سلام. خیلی عالی بود. مرسی

پاسخ

masoud

درباره10 سال ago

salam....run nemishe...error migire....

پاسخ

Admin

درباره10 سال ago

فایل راحت اجرا می شود گمانم نرم افزار متلب شما دچار مشکلی می باشد روی سیستم دیگری تست کنید.

پاسخ

فاطمه

درباره10 سال ago

با سلام، من رشته ام شبکه هستش برای بخشی از پایان نامه ام به منطق فازی احتیاج پیدا کردم. چند تا سوال داشتم خواش میکنم کمکم کنید.1- FLC چه کار میکنه و به زبون ساده چی هستش؟ 2- آیا پایگاه قوانین رو باید خودمون با توجه به موضوعمون بنویسیم یا باید بر حسب حساب و کتاب و قانون خاصی باشه؟ و بعد از نوشتن باید چگونه ازش استفاده کنیم؟ خیلی ممنون

پاسخ

Admin

درباره10 سال ago

FLC مخفف کلمه Fuzzy Logic Controller می باشد و به زبون ساده یک کنترل کننده می باشد.

برای مثال شما بجای اینکه از چند if مختلف برای برقراری شرط مورد نظر استفاده کنید از این نوع کنترل کننده استفاده می کنید.توجه داشته باشید که در اینجا ممکن است چند if و هرکدام بصورت درصدی درست باشند و نتیجه خروجی میانگین درستی هر شرط می باشد.

قوانین فازی را باید خودتان و با توجه به موضوعتان بنویسید.برای مثال می خواهید اگر ورودی سیستم در مجموعه هایی که قبلاً تعریف کرده بود قرار داشت عملیات خاصی روی آن صورت بگیرد.پس باید قوانین را مطابق نحوه استنتاج خود بنویسید.

پاسخ

sara

درباره10 سال ago

سلام موقع سیو به من error میده که نمیتونم در فایل c ذخیره کنم ، در جای دیگه ذخیره کردم، و بعد هم در fuzzy logic controller امکان نوشتن اسم فایل ذخیره شده رو ندارم!!!!!!

پاسخ

Admin

درباره10 سال ago

به احتمال زیاد مسیر متلب را دست انتخاب نکرده اید.

مسیر directory را به مسیر فایل اکسترکت شده تغییر دهید.

پاسخ

سحر

درباره10 سال ago

سلام من سیستم فازی رو براساس نیازم نوشتم و سیو هم کردم حالا نمی خوام ببرمش توی حالت سیمولینک می خوام دیتام رو توش وارد کنم باید چیکار کنم ؟چه جری از این فایل های fis میشه استفاده کرد؟

پاسخ

Admin

درباره10 سال ago

برای استفاده از سیستم فازی در M-file کافی است که از دستور زیر استفاده کنید:

a=evalfis([e de],fisname)

که e و de ورودی کنترل کننده فازی و fisname نام کنترل کننده فازی می باشد.

پاسخ

keyvan

درباره9 سال ago

سلام برای رفع خطای Invalid FIS file name چه کار باید کرد؟ با تشکر

پاسخ

Admin

درباره9 سال ago

این خطا ممکن است دو دلیل داشته باشد: دلیل اول اینکه اگر فایل کنترل کننده فازی را ساخته و در بلوک مربوطه نام آن را قرار دادید ممکن است مسیر(دایرکتوری) نرم افزار روی آدرس فایل fis نباشد. دلیل دوم هم ممکن است اگر فایل fis را داخل workspace نیست باید به فرم زیر نام fis را داخل ‘ ‘قرار دهید: ‘PID.fis‘

پاسخ

Ghazal

درباره9 سال ago

سلام،منم با خطای Invalid FIS file name مواجه شدم.نام 'servo.fis' با دابل کلیک بر روی بلوک و در پنجره ای که باز می شود نوشته شده.پس مشکل کجاست؟ دو دلیل در بالا ذکر کردید،دلیل اولی که در بالا ذکر کردید رو متوجه نشدم،مسیر ( دایرکتوری) نرم افزار روی آدرس فایل fis نیست، یعنی چی؟؟ باید چکار کنم؟؟؟؟ لطفا کمک کنید

پاسخ

Admin

درباره9 سال ago

در قسمت آدرس بار نرم افزار که بصورت پیش فرض بصورت زیر است:
C:\Program Files (x86)\MATLAB\R2012b

را به مکانی که فایل را از حالت فشرده خارج کردید قرار دهید. مثلاً اگر روی دستکتاپ فایل را اکسترکت کردید آدرس بالا را بصورت زیر تغییر دهید:

C:\Users\110\Desktop

پاسخ

Ghazal

درباره9 سال ago

باسلام و خسته نباشید من یک مقاله را شبیه سازی کردم ولی در اعمال کنترلر دچار اشکال شدم.من مقاله و شبیه سازی خودم و توضیحات اشکالم را به ایمیل شما ارسال کردم.امکانش هست که به من کمک کنید؟ با تشکر

پاسخ

mohammad

درباره9 سال ago

سلام در این برنامه کار custmf1 در برنامه چیه با تشکر

پاسخ

Admin

درباره9 سال ago

شما می توانید یک تابع عضویت دلخواه برای خودتان بنویسید و استفاده کنید ام فایل custmf1 یک تابع عضویت دلخواه است که استفاده کردم.

پاسخ

رضا

درباره9 سال ago

سلام. با تشکر از نکات آموزشی که اراءه فرمودید. می خواستم بدونم اکه بخوام یک کنترلر adaptive fuzzy طراحی کنم یعنی کنترلری که با افزایش زمان مراکز توابع عضویت خروجی دائم بهتر بشوند، آیا امکانش هست که با سیمولینک این کار رو انجام داد؟

پاسخ

Admin

درباره9 سال ago

با خود بلوک Fuzzy Controller نمی شود این کار را کرد ولی می توان تک تک قوانین را با بلوک های دیگر یا ام فایل ساخته و استفاده کنید.

البته اگر تعداد قوانین زیاد باشد این کار خیلی پیچیده می شود.
 

پاسخ

مقداد

درباره9 سال ago

میشه توضیح بدین که داره چیکار میکنه و هر کدوم از اون قطعاتو برای چی گذاشتین مرسی... این نرم افزار و pid هم از گشت و گذار تو نت متوجه شدم (البته خیلی خیلی کم) اگه اشتباه نکنم این برا بچه های کارشناسی و بالاتر باشه... ولی خوب داوست دارم یاد بگیرم ممنون میشم...

پاسخ

محمد

درباره8 سال ago

با سلام اگه امکان داره واسم مقاله مربوط به پروژه رو ایمیل کنید ممنون میشم

پاسخ

Admin

درباره8 سال ago

این پروژه فقط یک مثال بوده و از روی مقاله ای شبیه سازی نشده است.

پاسخ

محسن

درباره9 سال ago

سلام 1-چرا برای قسمت فازی سیستم گسسته استفاده کردید ولی برای pid از سیستم پیوسته استفاده شده است؟ 2-چرا در قسمت گسسته خروجی هر قسمت گسسته شده در round ضرب شده است؟

پاسخ

Admin

درباره9 سال ago

برای استفاده از کنترل کننده فازی در عمل چون قرار است که بر روی میکرو پیاده سازی شود و حجم حافظه میکرو محدود است باید قوانین فازی را محدود کنید.همچنین ورودی ها را محدوده ای در نظر می گیریم تا تعداد حالت ها کاهش یابد.در شبیه سازی نیازی به آنها نیست.

پاسخ

محسن

درباره9 سال ago

نقش m.file در این شبیه سازی چی هستش؟ تابع تعلق any که از نوع custmf می باشد را چطور درست کردید؟ به نظر شما تابع تعلقی که کل بازه را در نظر گرفته باشد برای شبیه سازی درست است؟

پاسخ

Admin

درباره9 سال ago

هدف از این ام فایل فقط آموزشی بوده است. شما می توانید هر تابع عضویت دلخواه با هر شکل و رابطه ای را با ام فایل ایجاد نمایید.

پاسخ

الیاس

درباره9 سال ago

عالـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــی بود

پاسخ

محمد

درباره9 سال ago

با سلام میشه توضیحات مربوط به این شبیه سازی رو برام بفرستید عالی بود paeez2012@yahoo.com تشکر

پاسخ

سحر

درباره9 سال ago

سلام در قسمت سیمولینک gain ای که بعد از FLC گذاشته شده برای چیه؟ممنون

پاسخ

Admin

درباره9 سال ago

به این بهره در اصطلاح scaling factor گفته می شود و برای تنظیم محدوده متغیرهای فازی استفاده می شود.

معمولا رنج توابع عضویت به صورت پریونیت هستند و از این ضرایب برای تغییر آن استفاده می شود.

پاسخ

امیر

درباره9 سال ago

با سلام در متلب 2014 هم قابل اجراست؟

پاسخ

Admin

درباره9 سال ago

بله. این مثال با نسخه 2012b شبیه سازی شده است.

پاسخ

ns

درباره9 سال ago

سلام میشه کامل توضیح بدید چطوری تابع عضویت any رو درست کردید؟ با تشکر

پاسخ

Admin

درباره9 سال ago

تابع عضویت any اشتراک سه تابع عضویت دیگر است. در مطلب می توان هر نوع تابع عضویت با هر شکلی را ایجاد نمود.

برای نمونه به ام فایل این شبیه سازی نگاه کنید.

پاسخ

ns

درباره9 سال ago

خیلی ممنون بابت راهنمایی تون. میشه توضیح بدین در برنامه cutommf1.m چرا در خط اخر y=out'میشه؟ چر به این صورت نمیشه out=y?

پاسخ

Admin

درباره9 سال ago

بردار y یک بردار سطری است ولی خروجی باید حتماً بردار ستونی باشد.

پاسخ

1407

درباره9 سال ago

اگه امکانش هست متغیر های استفاده شده (n,p,z,any) را توضیح دهید

پاسخ

Admin

درباره9 سال ago

n مخفف negative p مخفف positive z مخفف zero و any اشتراک هر سه محسوب می شود.

پاسخ

ns

درباره9 سال ago

متشکر.چرا y' ستونی است؟

پاسخ

Admin

درباره9 سال ago

اگر بجای y(i) قرار دهید y(i,1) مشکلتان حل می شود.
 

پاسخ

ns

درباره9 سال ago

تفاوتش با کد شما اینکه شما بعد از else ، y=1 قرار دادین و من y=0 حالا مشکلش چیه نمیدونم؟

پاسخ

Admin

درباره9 سال ago

مشکل داخل شرط است.

پاسخ

محمد

درباره9 سال ago

سلام میخواستم بدونم که اون فضای حالت گسسته برای چیه؟ یعنی شما اون تابع تبدیل رو گسسته سازی کردید؟ و اگر اره، برای چی؟ مگه نمیشد با همون تابع تبدیل کار کرد؟ یک سوال هم راجع به نمودار گشتاور سرعت سروموتور داشتم با تشکر از سایت خوبتون

پاسخ

Admin

درباره9 سال ago

جواب شما در دیدگاه های قبلی داده شده است.

پاسخ

ns

درباره9 سال ago

سلام. خیلی ممنون که به سوالا جواب میدید. از کجا معلوم میشه کنترلر PID به اشباع رفته؟

پاسخ

Admin

درباره9 سال ago

اشباع برای هر سیستمی معنی خاصی دارد. برای مثال اگر ولتاژ سروموتور حداکثر 12 ولت باشد خروجی کنترل کننده که به سیستم اعمال می شود نمی تواند بیشتر از 12 ولت شود.

پاسخ

ns

درباره9 سال ago

چرا از بلوک های round استفاده کردید؟

پاسخ

Admin

درباره9 سال ago

جواب شما در دیدگاه های قبلی داده شده است.

پاسخ

Hamed

درباره9 سال ago

با سلام و تشکر از توضیحات جامعتان دوست عزیز من میخوام با فازی یک شیر رو کنترل کنم ک شیر رو لحظه ای بازو بست کنه چطور میشه مثل pid که از فرکانشس میشه استفاده کرد از فازی در این زمینه بهره برد. متشکرم

پاسخ

Admin

درباره9 سال ago

اگر از میکرو استفاده می کنید کافی است که خروجی کنترل کننده فازی را در تایمر استفاده کنید.

یعنی با افزایش خروجی کنترل کننده پهنای پالس PWM یک باید افزایش یابد.

پاسخ

Hamed

درباره9 سال ago

سلام ؛اگر قرار باشه در بحث سیمولینگ مطلب چطور میشه پیاده سازی کرد؟

پاسخ

Admin

درباره9 سال ago

باید از بلوک PWM Generator استفاده کنید.

پاسخ

حمید

درباره9 سال ago

سلام لطفا در خصوس جدول تصمیم گیری کنترل کننده که طراحی شده کمی توضیح دهید و اصولا اختلاف بین جدول تصمیم گیری و جدول جستجو در چیست ؟ با تشکر از استاد گرامی

پاسخ

Admin

درباره9 سال ago

شاید مشکل ترین قسمت یک کنترل کننده فازی همین نحوه طراحی قوانین و توابع عضویت است که به مهارت های طراح و تجربه و آشنایی طراح با سیستم بستگی دارد.

اگر در این زمینه تخصص ندارید پیشنهاد می کنم که حتماً به مقالات مربوطه مراجعه کنید.
 

پاسخ

حمید

درباره9 سال ago

سلام (آخرین سوال) لطفا در خصوص قانون ترکیبی استنتاج از نوع sup-min هم توضیح دهید ؟ تنها max و min در محیط مطلب هست sup ندارد یا به عبارتی موجود نیست با تشکر

پاسخ

Admin

درباره9 سال ago

در متلب برای and کردن دو روش min و prod را دارد و اگر روش دیگری لازم دارید خودتان باید بصورت ام فایل نوشته در محیط FIS فراخوانی کنید.
 

پاسخ

جعفر

درباره9 سال ago

با سلام یک سوال داشتم بهد از این که خروجی رو از بلوک های flc و pid میگیرین وارد یه بلوکی میکنید که یک معادله دارد این بلوک ها چی هستن؟

پاسخ

Admin

درباره9 سال ago

این بلوک ها همان بلوک سروموتورذ هستند.

پاسخ

جعفر

درباره9 سال ago

با سلام در صورت امکان در مورد اشباع سیستم کمی بیشتر توضیح بدهید

پاسخ

Admin

درباره9 سال ago

منظور از اشباع در این سیستم این است که سیگنال خروجی کنترل کننده مستقیماً به سیستم نمی تواند اعمال شود و برای مثال این سیگنال به یک چاپر داده می شود تا سیگنال موردنیاز موتور را تامین کند. خود چاپر بدلیل محدود بودن منبع ولتاژ نمی تواند هر سیگنال کنترلی را با یک گین ثابت تقویت کند و دارای مقدار حداکثری است. به همین علت خروجی چاپر دارای اشباع است. اگر به ولتاژ خروجی کنترل کننده PI نگاه کنید چاپر باید ولتاژ خیلی زیادی به موتور اعمال کند در صورتی که منبع ولتاژ خود چاپر ممکن است بیشتر از چند ولت نباشد.

پاسخ

حمید

درباره9 سال ago

سلام اگر یک شکلی را مثلا ( ذوزنقه ) بخواهیم در محیط گرافیکی نظیر محیط بالا به عنوان خروجی پیاده سازی کنیم و اطلاعاتی از ورودیها و قوانین نداشته باشیم به گونه ای که شکل تابع خروجی قابل پیاده سازی باشد تحت این شرایط ورودیها و قوانین ما چگونه خواهد بود ؟ با تشکر از سایت خوبتان

پاسخ

Admin

درباره9 سال ago

اگر شما هیچ اطلاعاتی ندارید باید از الگوریتم ژنتیک استفاده کند.

پاسخ

معصومه

درباره9 سال ago

سلام سوالی داشتم از ادمین محترم لطفا به نحوه نوشتن تابع عضویت زیر دقت فرمایین TERM low: (0,0) (2,1) (5,0); TERM medium :(1, 0) (4,1) (6,1) (9,0); TERM high : (5,0) (7,1) (10,0); اگر پرانتز را (x,y) در نظر بگیریم ، همونطور که ملاحضه میکنین قسمت medium ما دوتا بازه وسطی قسمت y یک هست یعنی ذوزنقه میشه ولی بقیه یعنی low , high بصورت مثلثی می باشد باتوجه به این توضیحات آیا اینگونه نوشتن درست است یا باید همه مثلثی گرفته شوند؟ ممنون میشم سریع پاسخ دهید. با تشکر

پاسخ

Admin

درباره9 سال ago

یکی از مشکلات کنترل کننده فازی نیاز به داشتن تجربه و دید نسبت به رفتار سیستم است. یک طراح باید بداند که کدام توابع و برای کدام قسمت استفاده شوند. از نظر تئوری هیچ مشکلی برای استفاده از توابع مختلف وجود ندارد ولی برای پیاده سازی در میکرو بهتر است که همه توابع یکسان باشند.

پاسخ

معصومه

درباره9 سال ago

سلام ممنون از پاسختون باتوجه به پاسختون سوالی که دارم این هست که بنده با این کدها در محیط کلاد سیم برای پایان نامه خود اینگونه از فازی برای توابع عضویتش استفاده کرده ام. شما فرمودین در حالت تئوری ایرادی نداره ولی بنده در حالت شبیه سازیش استفاده کرده ام شبیه سازی در محیط کلاد سیم با جی فازی لاجیک با این اوصاف باز ایرادی نداره؟ و سوال دیگه آیا باز تو شبیه سازی میشه low , hight رو 3 بازهای و medium رو هم چهار بازه ای در نظر گرفت؟ مثل : Fuzzify input variable 'Bandwidth' ( TERM low := (1000,0) (1250,1) (1500,0); (TERM medium := (1100, 0) (1400,1) (1700,1) (1900,0); (TERM high := (1500,0) (1750,1) (2000,0); END_FUZZIFY FUZZIFY Node_capacity // Fuzzify input variable 'Node_capacity': { 'rancid', 'delicious' } (TERM low := (500,0) (900,1) (1050,0); (TERM medium := (600, 0) (1100,1) (1500,1) (1900,0); (TERM high := (1050,0) (1650,1) (2000,0); END_FUZZIFY // Defzzzify output variable 'Result' : {'cheap', 'average', 'generous' } TERM Inappropriate := (0,0) (2,1) (5,0); TERM medium := (1,0) (5,1) (9,0); TERM Adequate := (5,0) (7,1) (10,0); END_DEFUZZIFY

پاسخ

Admin

درباره9 سال ago

از نظر تئوری هیچ مشکلی ندارد و می توانید هرچقدر خواستید تابع تعریف کنید فقط سعی کنید توابع متقارن باشند.

پاسخ

شمیم

درباره8 سال ago

سلام باتشکر از اموزشتون میخاستم ببینم چجوری میتونیم فایل رو اجرا کنیم! من فایل Custmf.m رو از متلب باز کردم میزنم runهیچ اتفاقی رخ نمیده و توو command window این پیغام رو نمایش میده: >> custmf1 Error using custmf1 (line 2) Not enough input arguments.

پاسخ

Admin

درباره8 سال ago

ابتدا آدرس دایرکتوری نرم افزار را روی مکانی که فایل ها قرار دارند گذاشته و سپس فایل سیمولینک را اجرا کنید نه ام فایل را.

پاسخ

saeed141

درباره8 سال ago

دوستان سلام. من می خوام کار شبیه سازی یک موتور القائی را با استفاده از روش کنترل فازی انجام بدهم ولی به جدول داده های ورودی از این موتور القائی نیاز دارم. برام فرقی نمی کنه که چه نوع موتور القائی باشه. فقط به داده های ورودی جهت شبیه سازی کنترل سرعت موتور القائی نیاز شدید دارم. اگر کسی از دوستان می تونه کمک کنه بهم خبر بده. ممنونم می شم. متشکر

پاسخ

minicontrol

درباره8 سال ago

با سلام خیلی ممنون بابت آموزش بسیار خوب و مفیدتون. بسیار عالی بود. ببخشید من میخوام از روش فازی تطبیقی اسفاده کنم ولی وارد نیستم مخصوصا قسمت تطبیقی. ممنون میشم راهنمائی بفرمائید و اگه مطلب و یا سایتیو میشناسید ک مفید هست معرفی کنید.

پاسخ

Admin

درباره8 سال ago

باید به کتاب آقای wang یا مقالات مرتبط مراجعه کنید.

پاسخ

آرش

درباره8 سال ago

سلام. و خسته نباشید. میشه لطف کنید معادله فضای حالتشونو برام بنویسین! ممنون میشم

پاسخ

Admin

درباره8 سال ago

به پست زیر مراجعه کنید:

https://motodrive.ir/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%DA%98%D9%86%D8%AA%DB%8C%DA%A9-%D8%AF%D8%B1-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%88-%D8%AA%D9%86%D8%B8%DB%8C%D9%85

پاسخ

آرش

درباره8 سال ago

سلامی دوباره ، اگر قرار باشد از بلوک steady space در سیمولینک این مثال استفاده کنیم چه تغییراتی در خوده سیمولینک انجام بدیم. ؟؟؟؟؟؟؟؟

پاسخ

Admin

درباره8 سال ago

در خود فایل سیمولینک از بلوک steady space استفاده شده است.

پاسخ

رضا

درباره8 سال ago

سلام خسته نباشید من یه کنترل کننده فازی برای کنترل فرکانس درست کردم که باید مقادیر kp و ki را به عنوان خروجی به کنترل کننده pi بدهم اما خروجی کنترل کننده فازی را نمیشه به ورودی pi متصل کرد. میخواستم واسه کنترل کنترل کننده pi با کنترل فازی کمکم کنید. با تشکر

پاسخ

Admin

درباره8 سال ago

یک کنترل کننده PID فازی در کتاب آقای wang موجود است که می تواند به شما در طراحی کنترل کننده کمک کند.

پاسخ

asal

درباره8 سال ago

سلام مرسی برا سایت خوبتون. من سیستم پیل سوختی رو شبیه سازی کردم و برا کنترلش به طور جداگانه فازی و pid استفاده کردم ولی نمیدونم چرا پاسخ pid بهتر از فازی شده، شبیه سازیم درسته ولی با pid ولتاژ خروجی زودتر پایدار میشه... ممنون میشم جوابمو بدین

پاسخ

Admin

درباره8 سال ago

خود کنترل کننده فازی نیز دارای ضرایبی است که باید تنظیم شوند و می توان جواب بهتری از این کنترل کننده گرفت.

پاسخ

iman

درباره8 سال ago

با سلام لطفا نحوهی تبدیل سورس کد متلب به فایل hex برای کنترل یک موتور dc را با استفاده از luckup table را توضیح دهید متشکرم

پاسخ

Admin

درباره8 سال ago

کد متلب را نمی توان به فایل hex تبدیل نمود.

پاسخ

soroush

درباره8 سال ago

سلام ممنون از سایت خوبتون فقط یه سوال دارم ک جوابی براش پیدا نکردم . تویه شبیه سازی یه مقاله کنترل دور موتور DC با استفاده از منطق فازی گیر افتادم .مقادیر چنتا از گین هاش رو نداده و همینطور بازه تابع عضویت رو هم بهم نداده فقط تابع عضویت های ورودی و خروجی و خطا رو کشیده ولی رویه شکل هم مقداری برا این بازه قرار نگرفته میشه راهنماییم کنید ک باید چطوری این بازه تابع عضویت رو بدست بیارم.تو مراجع مقاله هم دنبالش گشتم ولی متاسفانه چیز قابل قبولی پیدا نکردم .ممنون میشم اگه راهنماییم کنید.

پاسخ

Admin

درباره8 سال ago

کافی است که فایلی که با پسوند .fis در فایل شبیه سازی قرار دارد را در تولباکس فازی متلب باز کنید تا بتوانید بازه ها را مشاهده کنید.

 

پاسخ

حمید

درباره8 سال ago

لطفا در مورد گسسته سازی سیستم اصلی توضیح دهید و دستورش را قرار دهید. من دستور زیر را برای گسسته سازی نوشتم و بجای سیستم گسسته، سیستم بدست آمده با کد زیر را قرار دادم ولی جواب مناسبی نمیده. وقتی بجای سیستم گسسته همان سیستم اصلی پیوسته را قرار دادم، باز هم جواب خوب نیست. همچنین در مورد گین 0.511 قبل از سیستم گسسته و دلیل آن توضیح دهید. num=[1] den=[1 1 0] sys=tf(num,den) c2d(sys,0.002)

پاسخ

Admin

درباره8 سال ago

من این سیستم رو از یک مقاله انتخاب کرده ام. در مورد گین 0.511 هم باید بگویم که کنترل کننده فازی نیز دارای ضرایبی به نام scaling factor است که مانند کنترل کننده pid می تواند تنظیم شود.

پاسخ

آرش

درباره8 سال ago

با سلا و احترام ممنون از لطفتون و مطالب خوبتون. سیمولینک را که ران میکنم پیام Undefined function 'sf' for input arguments of type 'char'. را میدهد دلیلش و کسی میدونه راهنمایی کنه؟ ممنون

پاسخ

Admin

درباره8 سال ago

این شبیه سازی با نسخه ۲۰۱۲ انجام شده است و باید مسیر دایرکتوری متلب روی مکانی که فایل ها قرار دارند باشد تا بدون مشکل اجرا شود.

پاسخ

saeed.darziii

درباره8 سال ago

سلام خسته نباشید اگه کسی جواب سوال منو میدونه لطفا بگه .... سوالم اینه که در سیمولینک چطوری میشه قطعاته controller و pwm controller ساخت یا داخل محیط کار اورد؟ توی یک تمرین گیر کردم که فردا باید تحویلش بدم لطفا مراحلشو برام توضیح بدید ممنون

پاسخ

Admin

درباره8 سال ago

می توانید از بلوک های آماده استفاده نمایید. کافی است کمی جستوجو نمایید.

پاسخ

امیر

درباره8 سال ago

سلام. تو جدول قوانین فازی من در متغیر خروجی اعداد ثابت وجود دارند چطور می تونم عدد ثابت تنظیم کنم؟ اعداد 0 و 0/9 و 1 در خروجی من هستن. باتشکر.

پاسخ

Admin

درباره8 سال ago

باید نوع فازی را Sugeno-Type Fuzzy انتخاب کنید.

پاسخ

امیر

درباره8 سال ago

ممنون. فقط تو سیمولینک فازی تو قسمت type همچین اسمی نیست؟

پاسخ

Admin

درباره8 سال ago

منظور من در قسمت تولباکس فازی است. در ابتدا باید نوع آن را seguno انتخاب نمایید.

پاسخ

محسن

درباره8 سال ago

سلام. یه بلوک فازی تو سیمولینک دارم با خطای زیر مواجه می شم: Derivative input 23 of 'Fuzzy_BR/powergui/EquivalentModel1/State-Space' at time 0.890276258572449 is Inf or NaN. Stopping simulation. ممنون می شم راهنمایی کنید.

پاسخ

Admin

درباره8 سال ago

حتماً در شبیه سازی سیستم ناپایدار شده است که این پیام نمایش داده می شود.

پاسخ

امیر

درباره8 سال ago

سلام. فایل m-file که تو پیوست هست برای چی هست؟ باتشکر.

پاسخ

Admin

درباره8 سال ago

یک نمونه تابع عضویت می باشد که نشان می دهد کاربر می تواند هر تابع عضویتی تعریف نماید.

پاسخ

امیر

درباره8 سال ago

سلام. اگر تو ورودی خواستم علاوه بر سه تا mf1 / mf2 / mf3 مثلا mf4 هم اضافه کنم چکار باید بکنم؟ ممنون.

پاسخ

Admin

درباره8 سال ago

از قسمت بالای پنجره تب Edit گزینه add membership function رو کلیک کنید.

پاسخ

امیر

درباره8 سال ago

سلام...یک بلوک فازی با اسم "mp" دارم...سیمولینک که اجرا می کنم این خطا را می ده.. بلوک فازی تو محل فایل سیمولینک قرار دادم ولی این error رو متوجه نمی شم برا چیه؟ ممنون Error evaluating parameter 'fis' in 'PMSG/MPPT/Fuzzy Logic Controller' Caused by: Undefined variable "mp" or class "mp.fis".

پاسخ

Admin

درباره8 سال ago

فایل را ارسال کنید تا بررسی کنم:

admin@motodrive.ir

پاسخ

امیر

درباره8 سال ago

سلام...مشکلم حل شد...خیلی ممنون.

پاسخ

امیر

درباره8 سال ago

سلام...فایل شما را که اجرا می کنم با خطای زیر مواجه می شم: Error in 'servo/Fuzzy Logic Controller': Initialization commands cannot be evaluated. Caused by: Attempt to reference field of non-structure array.

پاسخ

Admin

درباره8 سال ago

ابتدا مسیر دایرکتوری نرم افزار را روی مکانی که فایل ها قرار دارند انتخاب کنید و سپس شبیه سازی را اجرا کنید.

پاسخ

امیر

درباره8 سال ago

ببخشید بیشتر توضیح بدید متوجه نشدم!

پاسخ

Admin

درباره8 سال ago

آدرس بار نرم افزار متلب را روی مکانی که فایلها قرار دارند قرار دهید.

پاسخ

کاظمی

درباره7 سال ago

با عرض سلام و خسته نباشد من با استفاده از سیمولینک یک کنترل کننده فازی را طراحی کردم . تنظیمات بلوک فازی را نیز تغییر ندادم، همه را به صورت پیش فرض گذاشتم. فقط اینکه از توابع عضویت گوسی در ورودی و خروجی استفاده کردم. حالا مشکلی که دارم این است که نمی توانم تشخیص دهم از چه فازی سازی استفاده شده؟؟؟؟در تنظیمات بلوک غیرفازی سازی ازش استفاده شده معرفی کرده ولی چیزی درباره فازی ساز ندیدم. شما می توانید مرا راهنمایی کنید؟

پاسخ

Admin

درباره7 سال ago

منظورتان را متوجه نمی شوم. مگر از توابع گوسی برای فازی سازی استفاده نکرده اید؟ این توابع ورودی های crips را به فازی تبدیل می کنند.

پاسخ

کاظمی

درباره7 سال ago

منظورم این بود که من در قسمت Type که نوع توابع عضویت رو باید معلوم کنیم از guassmf استفاده کردم. الان نوع فازی ساز من همین گوسی می شود؟؟؟مگر این نوع تابع عضویت نمی شود؟ برای تعیین نوع غیرفازی ساز کادری وجود داشت بنام Defuzzification که توانستم غیرفازی ساز را تشخیص دهم ولی چیزی برای فازی ساز پیدا نکردم. اگر لازم است شبیه سازی را ایمیل کنم ممنون

پاسخ

Admin

درباره7 سال ago

بله فازی ساز شما همین گوسی می باشد.

پاسخ

کاظمی

درباره7 سال ago

خیلی ممنون از راهنماییتون ولی یک سوال دیگر هم داشتم. فرضا اگر من نوع تابع عضویت را در قسمت Type ذوزنقه ای یا زنگوله ای انتخاب میکردم. نوع فازی ساز چه می شد؟ما سه نوع فازی ساز منفرد، گوسین و مثلثی که بیشتر نداریم. می شود یک راهنمایی کلی به من بدهید

Admin

درباره7 سال ago

در متلب توابع عضویت مختلفی وجود دارد و حتی امکان نوشتن کد و طراحی یک تابع عضویت دلخواه نیز وجود دارد.

کاظمی

درباره7 سال ago

الان متوجه شدم...پس براساس این توابع عضویت های مختلف نوع فازی سازی های متفاوتی هم داریم. چون من در کتاب که نگاه کردم همین سه نوع را معرفی کرده بود. متشکرم

پاسخ

حسین

درباره7 سال ago

سلام.فایل custmf1 رو که run میکنم این خطا رو میده Not enough input arguments. Error in custmf1 (line 2) for i=1:length(x) علتش چیه؟

پاسخ

Admin

درباره7 سال ago

شما باید مسیر دایرکتوری نرم افزار matlab را روی مکانی که فایل ها وجود دارند قرار دهید و سپس فایل سیمولینک را اجرا کنید نه این ام فایل را.

این ام فایل مربوط به یکی از توابع عضویت است.

پاسخ

حسین

درباره7 سال ago

سلام مجدد میشه درباره نحوه کارکرد سیستم,دستوراتی که نوشتین و بلوک هایی که تو محیط سیمولینگ استفاده کردین توضیح بدین,ممنون

پاسخ

Admin

درباره7 سال ago

در حال آماده سازی یک مجموعه فیلم آموزشی می باشم.

پاسخ

مریم

درباره7 سال ago

سلام خسته نباشید ورودی های منطق فازی من هر کدوم فرمولی دارن برای اینکه محاسبه بشوند. چه طوری این فرمول ها را وارد کنم؟

پاسخ

Admin

درباره7 سال ago

ابتدا باید توسط بلوک های سیمولینک ورودی ها را محاسبه کنید و سپس به بلوک فازی ارسال کنید.

پاسخ

پوریا سلیمی

درباره6 سال ago

سلام .من برای پایان نامم نیاز به کمک دارم.برای مانیتورینگ یک دستگاه در حال کارسوال داشتم.چطور میشه یکسری اطلاعات را به صورت آموزشی به سیستم سیمولینک بدهیم و این اطلاعات ذخیره شوند. سپس با دادن اطلاعات جدید و شرایط جدید سیستم این اطلاعات جدید را با داده های ثبت شده قبلی مقایسه کند و گزارش وضعیت به ما بدهد ممنون میشم اگر اطلاعاتی هست ایمیل کنید.با تشکر

پاسخ

Admin

درباره6 سال ago

این کار نیاز به سیستم های واسطی مانند کارتهای DAQ است تا به محیط سیمولینک متصل شود و اطلاعات را ذخیره کند.

پاسخ

محسن

درباره6 سال ago

اقا سلام خوبین میشه کمک کنین من ی شبیه سازی کردم عور میده ممنون میشم The block diagram 'Wind_PMSG_Cp_With_Controller' uses bus signals or has signals/parameters that are associated with bus objects. However, the 'Mux blocks used to create bus signals' diagnostic is not configured to 'error'. از همین کنترل کننده فازیم استفاده کردم اگه امکان هست

پاسخ

Admin

درباره6 سال ago

به احتمال زیاد شما یک شبیه سازی قدیمی را با نسخه جدید باز کرده اید که چنین خطایی می دهد. در صورتی که مشکل باقی ماند می توانید فایل را ارسال کنید تا بررسی کنم.

پاسخ

امین

درباره5 سال ago

چه نوعی از کنترلر فازی استفاده شده ؟؟؟

پاسخ

Admin

درباره5 سال ago

از نوع ممدانی استفاده شده است

پاسخ

محمد

درباره5 سال ago

سلام، علت این خطا چیه؟"Specify membership function parameters as a numeric vector."

پاسخ

Admin

درباره5 سال ago

باید فایل را بررسی کنم.

پاسخ

فروغ

درباره5 سال ago

سلام من یک fis ساختم حالا وقتی fuzzy logic controller رو می زنم می خوام اسم فایل fis رو در کادر باز شده وارد کنم اون textboxی که باید اسم رو وارد کنم غیرفعال است می شه لطفا راهنمایی کنید؟ (مسیر متلب هم در همون جایی هست که فایل fis قرار داره) با سپاس و درود

پاسخ

Admin

درباره5 سال ago

شاید مشکل از نسخه ای است که نصب کرده اید. با این حال باید فایل رو بررسی کنم.

پاسخ

amin

درباره5 سال ago

سلام ممنون ولی توابع عضویت رو کامل توضیح ندادید به چه صورته؟ مثلا تعداد توابع برای ورودی ها و خروجی و همچنین نوعشون. همشون باید ذوزنقه ای باشن؟

پاسخ

Admin

درباره5 سال ago

هر چقدر تعداد توابع عضویت بیشتر باشد ساختار پیچیده تر ولی دقیق تر خواهد شد. معمولاً توابع عضویت گوسی کاربرد بیشتری نسبت به توابع عضویت دیگر دارد.

پاسخ

mohammad

درباره5 سال ago

سلام ببخشید قسمتی که نوشته [-Inf -3 -2 0] چ معنی داره؟ شاید برای من بد اورده باشه

پاسخ

Admin

درباره5 سال ago

یک تابع عضویت ذوزنقه ای با چهار نقطه مشخص می شود. نقطه شروع، نقطه رسیدن به مقدار پیک اول، نقطه دوم پیک و نقطه رسیدن به صفر.

پاسخ

آرزو

درباره5 سال ago

سلام . من همین پروژه رو دارم ولی تابع تبدیل سرووم یکم فرق میکنه(مخرجش درجه 3 هست). چجوری باید توابع عضویت رو طراحی کنم براش؟ بهترین کنترلر فازی که میتونم براش طراحی کنم چجوری بهش برسم؟ شما اینجا از ورودی پالس استفاده کردی . اگه ورودی سینوسی بود توابع عضویتمون چجوری میشن؟ ممنون از سایت عالیتون

پاسخ

Admin

درباره5 سال ago

مهم ترین مشکل کنترل کننده فازی طراحی آن است و به تجربه نیاز دارد. توابع عضویت تان فرقی ندارد فقط ممکن است تعداد آنها بیشتر شود یا همچنین قوانین بیشتر شوند. در کل باید تجربه داشته باشید.

پاسخ

amin

درباره5 سال ago

بنده هم دقیقا همین مشکل رو دارم. برای ورودی پالس کنترلم خیلی خوب جواب میده ولی برای ورودی سینوسی ورودیم با خروجیم اختلاف داره . توابع عضویتم رو چجوری باید تعریف کنم؟ تابع تبدیل من 19640/s3+201s2+6290s هست. (19640 صورته) ممنون میشم اگر آموزشی دارید برای من ارسال کنید

پاسخ

Admin

درباره5 سال ago

مهمترین مشکل کنترل کننده فازی همین تنظیم آنها و تعیین توابع عضویت است که بهترین راه استفاده از الگوریتم های بهینه سازی برای تنظیم آنها است.

پاسخ

saya

درباره5 سال ago

با سلام کنترلر فازی برای بهبود کدام پارامترها طراحی میشود؟ خطای حالت ماندگار؟ overshoot? rise time? یا موارد دیگر ؟ به عبارت دیگر در این پروژه کدام پارامتر برای ما اهمیت دارد ؟

پاسخ

Admin

درباره5 سال ago

این بستگی به سیستم تحت کنترل شما دارد. در برخی سیستم ها اورشوت ممکن است که باعث خرابی شود. به طور کلی به سیستم تخت کنترل وابسته است.

پاسخ

Fatemeh

درباره5 سال ago

سلام وقتتون بخیر برای استفاده از Fuzzy logic controller Ruleviewer نیز باید به همین ترتیب عمل کنیم؟ چون وقتی روی این بلوک کلیک میکنم FIS matrix خواسته شده

پاسخ

Admin

درباره5 سال ago

بله باید به همین ترتیب عمل کنید و نام ساختار فازی را در قسمت FIS matrix وارد کنید.

پاسخ

fatemeh

درباره5 سال ago

خیلی ممنون از راهنماییتون فقط رنج ورودی ها و خروجی ها چطور تعیین میشه؟ برچه اساسی؟ همینطور نوع توابع عضویت

پاسخ

Admin

درباره5 سال ago

معمولاً ورودی و خروجی ها را باید پریونیت کرد و قبل از ورودی ها و بعد از خروجی ها ضرایبی برای تنظیم قرار داد. توابع عضویت گوسی معمولاً بهتر جواب می دهند.

پاسخ

fatemeh

درباره5 سال ago

خیلی ممنون، لطف کردین

پاسخ

neda

درباره4 سال ago

سلام وخسته نباشین. شرمنده یه سوال داشتم در مورد اینکه الان شما موتور استنتاج فازی رو طراحی کردین و تموم شد؟ چون استاد ما گفته یه موتور استنتاج فازی طراحی کنیم با تولباکس متلب میخواستم بدونم طراحی موتور استنتاج همین است و بس ؟ من مقاله ای دارم که هم ورودی هاش داره هم خروجی و هم رول هاشو همینارو جایگذاری کنم تو تلباکس موتور استنتاجم طراحی میشه یا نه؟؟

پاسخ

Admin

درباره4 سال ago

بله همین گونه موتور استنتاج را می توانید با تولباکس متلب طراحی کنید.

پاسخ

pari

درباره4 سال ago

با سلام و خسته نباشین یه سوال داشتم میخواستم بدونم شما الان موتور استنتاج رو طراحی کردین و تموم شد؟

پاسخ

Admin

درباره4 سال ago

بله موتور استنتاج طراحی گردیده است.

پاسخ

sahar

درباره4 سال ago

باسلام و عرض خسته نباشید...بخش قوانین یا همون رولهای من شامل 19684رول هست...برنامه رو که اجرا می کنم اصلا اجرا نمیشه و هنگ میکنه نمیدونم مشکل از سیستم یا ورژن متلب من هست یا با توجه به تعداد قوانین فازی زیاد کلا روش دیگه ای هست که باید استفاده کنم و من ازش خبر ندارم؟میشه لطفا راهنمایی کنید

پاسخ

Admin

درباره4 سال ago

به احتمال زیاد به دلیل زیاد بودن قوانین شما است. می توانید از جدول لوک آپ به عنوان جایگزینی برای بلوک کنترل فازی در سیمولینک استفاده کنید.

پاسخ

Leave a Comment

Please be polite. We appreciate that.
Your email address will not be published and required fields are marked