طراحی یک کنترل کننده فازی برای کنترل یک سروموتور 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

یک امتیازدو امتیازسه امتیازعالی بودخیلی عالی بود (3 votes, average: 3٫67 out of 5)
Loading...

116 Comments

mehri

درباره3 سال ago

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

پاسخ دادن

masoud

درباره3 سال ago

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

پاسخ دادن

Admin

درباره3 سال ago

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

پاسخ دادن

فاطمه

درباره3 سال ago

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

پاسخ دادن

Admin

درباره3 سال ago

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

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

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

پاسخ دادن

sara

درباره3 سال ago

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

پاسخ دادن

Admin

درباره3 سال ago

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

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

پاسخ دادن

سحر

درباره3 سال ago

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

پاسخ دادن

Admin

درباره3 سال ago

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

a=evalfis([e de],fisname)

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

پاسخ دادن

keyvan

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

Ghazal

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

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

C:\Users\110\Desktop

پاسخ دادن

Ghazal

درباره2 سال ago

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

پاسخ دادن

mohammad

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

رضا

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

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

پاسخ دادن

مقداد

درباره2 سال ago

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

پاسخ دادن

محمد

درباره1 سال ago

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

پاسخ دادن

Admin

درباره1 سال ago

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

پاسخ دادن

محسن

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

محسن

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

الیاس

درباره2 سال ago

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

پاسخ دادن

محمد

درباره2 سال ago

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

پاسخ دادن

سحر

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

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

پاسخ دادن

امیر

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

ns

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

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

پاسخ دادن

ns

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

1407

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

ns

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

ns

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

محمد

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

ns

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

ns

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

Hamed

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

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

پاسخ دادن

Hamed

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

حمید

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

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

پاسخ دادن

حمید

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

جعفر

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

جعفر

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

حمید

درباره2 سال ago

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

پاسخ دادن

Admin

درباره2 سال ago

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

پاسخ دادن

معصومه

درباره2 سال 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

درباره2 سال ago

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

پاسخ دادن

معصومه

درباره2 سال 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_FUZZIFYFUZZIFY 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

درباره2 سال ago

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

پاسخ دادن

شمیم

درباره1 سال ago

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

پاسخ دادن

Admin

درباره1 سال ago

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

پاسخ دادن

saeed141

درباره1 سال ago

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

پاسخ دادن

minicontrol

درباره1 سال ago

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

پاسخ دادن

Admin

درباره1 سال ago

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

پاسخ دادن

آرش

درباره1 سال ago

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

پاسخ دادن

Admin

درباره1 سال ago

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

http://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

پاسخ دادن

آرش

درباره1 سال ago

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

پاسخ دادن

Admin

درباره1 سال ago

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

پاسخ دادن

رضا

درباره1 سال ago

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

پاسخ دادن

Admin

درباره1 سال ago

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

پاسخ دادن

asal

درباره12 ماه ago

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

پاسخ دادن

Admin

درباره12 ماه ago

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

پاسخ دادن

iman

درباره12 ماه ago

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

پاسخ دادن

Admin

درباره12 ماه ago

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

پاسخ دادن

soroush

درباره11 ماه ago

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

پاسخ دادن

Admin

درباره11 ماه ago

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

 

پاسخ دادن

حمید

درباره10 ماه ago

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

پاسخ دادن

Admin

درباره10 ماه ago

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

پاسخ دادن

آرش

درباره10 ماه ago

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

پاسخ دادن

Admin

درباره10 ماه 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 انتخاب نمایید.

پاسخ دادن

محسن

درباره7 ماه ago

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

پاسخ دادن

Admin

درباره7 ماه ago

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

پاسخ دادن

امیر

درباره7 ماه ago

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

پاسخ دادن

Admin

درباره7 ماه ago

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

پاسخ دادن

امیر

درباره7 ماه ago

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

پاسخ دادن

Admin

درباره7 ماه ago

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

پاسخ دادن

امیر

درباره7 ماه ago

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

پاسخ دادن

Admin

درباره7 ماه ago

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

admin@motodrive.ir

پاسخ دادن

امیر

درباره7 ماه ago

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

پاسخ دادن

امیر

درباره7 ماه ago

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

پاسخ دادن

Admin

درباره7 ماه ago

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

پاسخ دادن

امیر

درباره7 ماه ago

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

پاسخ دادن

Admin

درباره7 ماه ago

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

پاسخ دادن

کاظمی

درباره5 ماه ago

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

پاسخ دادن

Admin

درباره5 ماه ago

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

پاسخ دادن

کاظمی

درباره5 ماه ago

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

پاسخ دادن

Admin

درباره5 ماه ago

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

پاسخ دادن

کاظمی

درباره5 ماه ago

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

Admin

درباره5 ماه ago

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

کاظمی

درباره5 ماه ago

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

پاسخ دادن

حسین

درباره3 ماه ago

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

پاسخ دادن

Admin

درباره3 ماه ago

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

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

پاسخ دادن

حسین

درباره3 ماه ago

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

پاسخ دادن

Admin

درباره3 ماه ago

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

پاسخ دادن

Leave a Comment

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


*

code