طراحی یک کنترل کننده فازی برای کنترل یک سروموتور DC با Matlab
در این قسمت نحوه طراحی یک کنترل کننده فازی برای کنترل یک سروموتور DC با Matlab را آموزش می دهیم. فرض کنید تابع تبدیل یک سروموتور DC بصورت زیر است:
قبل از اینکه وارد طراحی کنترل کننده فازی شویم ابتدا باید نحوه ایجاد کنترل کننده فازی در متلب را آموزش بدهیم. برای این کار هم می توان از دستورات متلب استفاده کرد و هم می توان از تولباکسی که در متلب قرار دارد استفاده کرد که ما کار با تولباکس Fuzzy Logic Design را آموزش می دهیم.برای وارد شدن به این تولباکس ابتدا دستور fuzzy را در command window بنویسید تا صفحه زیر آشکار شود:
همان طور که مشاهده می کنید این صفحه از قسمت های زیر تشکیل شده است:
1) input: در این قسمت ورودی های سیستم مشخص می شود که برای کار ما دو ورودی خطای سرعت و تغییرات خطای سرعت می باشد.
2) Untitled: در این قسمت قوانین نوشته می شود.
3) output: در این قسمت خروجی های سیستم تعیین می شود که برای کار ما ولتاژ موتور می باشد.
4) Current Variable: در این قسمت اطلاعات مربوط به متغیری که انتخاب شده نشان داده می شود.سعی کنید برای هر متغیر نام مناسبی انتخاب کنید تا زمانی که قوانین را طراحی می کنیم دچار مشکل نشویم.
5) قسمت پایین سمت چپ که در این قسمت نحوه استدلال و استنتاج کردن قوانین و روابط فازی مشخص می شود.بهتر است این قسمت ها را تغییر ندهید.
برای اضافه کردن ورودی و خروجی می توانید مانند شکل زیر عمل کنید:
ابتدا ما دو ورودی با نام های e و deltae و یک خروجی با نام V می سازیم.حال روی ورودی e دو بار کلیک کرده تا وارد صفحه زیر شویم:
ابتدا با کلیک بر روی هر متغیر رنج تغییرات آن (گوشه پایین سمت چپ) را مشخص می کنیم.که برای کار ما رنج تغییرات هر سه متغیر را [-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)
توجه کنید که پس از انتخاب هر کدام از پارامترها گزینه Add rule را زده تا قانون ثبت شود و برای حذف قانونی،ابتدا روی آن کلیک کرده و سپس گزینه Delete rule را بزنید. برای مشاهده خروجی از سربرگ View گزینه Rule را انتخاب کنید و با تغییر دادن ورودی ها تغییرات خروجی را مشاهده کنید.
برای ذخیره فایل طراحی از سربرگ File گزینه Export To File را انتخاب کرده و فایل را با پسوند fis ذخیره کنید. برای استفاده از این فایل در سیمولینک متلب باید بلوک Fuzzy Logic Controller را انتخاب کنید.
توجه کنید که چون فایل fis ما یک استراکچر می باشد باید نام فایل را داخل ' ' قرار دهیم.
شکل زیر نحوه کنترل را نشان می دهد:
در اینجا برای اینکه مقایسه ای بین کنترل کننده فازی با کنترل کننده PID انجام دهید به شکل موج های زیر توجه کنید:
همان طور که مشخص است پاسخ کنترل کننده فازی سریع تر بوده است.
شکل زیر یک تفاوت دیگر این دو کنترل کننده را نشان می دهد:
همان طور که می دانید خروجی کنترل کننده ها نباید به اشباع برود ولی کنترل کننده PID به اشباع رفته است.
برای دانلود این پروژه بر روی عکس زیر کلیک کنید.
149 Comments
mehri
درباره10 سال agoسلام. خیلی عالی بود. مرسی
پاسخmasoud
درباره10 سال agosalam....run nemishe...error migire....
پاسخAdmin
درباره10 سال agoفایل راحت اجرا می شود گمانم نرم افزار متلب شما دچار مشکلی می باشد روی سیستم دیگری تست کنید.
پاسخفاطمه
درباره10 سال agoبا سلام، من رشته ام شبکه هستش برای بخشی از پایان نامه ام به منطق فازی احتیاج پیدا کردم. چند تا سوال داشتم خواش میکنم کمکم کنید.1- FLC چه کار میکنه و به زبون ساده چی هستش؟ 2- آیا پایگاه قوانین رو باید خودمون با توجه به موضوعمون بنویسیم یا باید بر حسب حساب و کتاب و قانون خاصی باشه؟ و بعد از نوشتن باید چگونه ازش استفاده کنیم؟ خیلی ممنون
پاسخAdmin
درباره10 سال agoFLC مخفف کلمه 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
درباره10 سال agoسلام برای رفع خطای Invalid FIS file name چه کار باید کرد؟ با تشکر
پاسخAdmin
درباره10 سال agoاین خطا ممکن است دو دلیل داشته باشد: دلیل اول اینکه اگر فایل کنترل کننده فازی را ساخته و در بلوک مربوطه نام آن را قرار دادید ممکن است مسیر(دایرکتوری) نرم افزار روی آدرس فایل fis نباشد. دلیل دوم هم ممکن است اگر فایل fis را داخل workspace نیست باید به فرم زیر نام fis را داخل ‘ ‘قرار دهید: ‘PID.fis‘
پاسخGhazal
درباره10 سال agoسلام،منم با خطای Invalid FIS file name مواجه شدم.نام 'servo.fis' با دابل کلیک بر روی بلوک و در پنجره ای که باز می شود نوشته شده.پس مشکل کجاست؟ دو دلیل در بالا ذکر کردید،دلیل اولی که در بالا ذکر کردید رو متوجه نشدم،مسیر ( دایرکتوری) نرم افزار روی آدرس فایل fis نیست، یعنی چی؟؟ باید چکار کنم؟؟؟؟ لطفا کمک کنید
پاسخAdmin
درباره10 سال agoدر قسمت آدرس بار نرم افزار که بصورت پیش فرض بصورت زیر است:
C:\Program Files (x86)\MATLAB\R2012b
را به مکانی که فایل را از حالت فشرده خارج کردید قرار دهید. مثلاً اگر روی دستکتاپ فایل را اکسترکت کردید آدرس بالا را بصورت زیر تغییر دهید:
C:\Users\110\Desktop
پاسخGhazal
درباره10 سال agoباسلام و خسته نباشید من یک مقاله را شبیه سازی کردم ولی در اعمال کنترلر دچار اشکال شدم.من مقاله و شبیه سازی خودم و توضیحات اشکالم را به ایمیل شما ارسال کردم.امکانش هست که به من کمک کنید؟ با تشکر
پاسخmohammad
درباره10 سال agoسلام در این برنامه کار custmf1 در برنامه چیه با تشکر
پاسخAdmin
درباره10 سال agoشما می توانید یک تابع عضویت دلخواه برای خودتان بنویسید و استفاده کنید ام فایل custmf1 یک تابع عضویت دلخواه است که استفاده کردم.
پاسخرضا
درباره10 سال agoسلام. با تشکر از نکات آموزشی که اراءه فرمودید. می خواستم بدونم اکه بخوام یک کنترلر adaptive fuzzy طراحی کنم یعنی کنترلری که با افزایش زمان مراکز توابع عضویت خروجی دائم بهتر بشوند، آیا امکانش هست که با سیمولینک این کار رو انجام داد؟
پاسخAdmin
درباره10 سال agoبا خود بلوک Fuzzy Controller نمی شود این کار را کرد ولی می توان تک تک قوانین را با بلوک های دیگر یا ام فایل ساخته و استفاده کنید.
البته اگر تعداد قوانین زیاد باشد این کار خیلی پیچیده می شود.
پاسخمقداد
درباره10 سال agoمیشه توضیح بدین که داره چیکار میکنه و هر کدوم از اون قطعاتو برای چی گذاشتین مرسی... این نرم افزار و pid هم از گشت و گذار تو نت متوجه شدم (البته خیلی خیلی کم) اگه اشتباه نکنم این برا بچه های کارشناسی و بالاتر باشه... ولی خوب داوست دارم یاد بگیرم ممنون میشم...
پاسخمحمد
درباره9 سال agoبا سلام اگه امکان داره واسم مقاله مربوط به پروژه رو ایمیل کنید ممنون میشم
پاسخAdmin
درباره9 سال agoاین پروژه فقط یک مثال بوده و از روی مقاله ای شبیه سازی نشده است.
پاسخمحسن
درباره10 سال agoسلام 1-چرا برای قسمت فازی سیستم گسسته استفاده کردید ولی برای pid از سیستم پیوسته استفاده شده است؟ 2-چرا در قسمت گسسته خروجی هر قسمت گسسته شده در round ضرب شده است؟
پاسخAdmin
درباره10 سال agoبرای استفاده از کنترل کننده فازی در عمل چون قرار است که بر روی میکرو پیاده سازی شود و حجم حافظه میکرو محدود است باید قوانین فازی را محدود کنید.همچنین ورودی ها را محدوده ای در نظر می گیریم تا تعداد حالت ها کاهش یابد.در شبیه سازی نیازی به آنها نیست.
پاسخمحسن
درباره10 سال agoنقش m.file در این شبیه سازی چی هستش؟ تابع تعلق any که از نوع custmf می باشد را چطور درست کردید؟ به نظر شما تابع تعلقی که کل بازه را در نظر گرفته باشد برای شبیه سازی درست است؟
پاسخAdmin
درباره10 سال agoهدف از این ام فایل فقط آموزشی بوده است. شما می توانید هر تابع عضویت دلخواه با هر شکل و رابطه ای را با ام فایل ایجاد نمایید.
پاسخالیاس
درباره10 سال 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 سال agon مخفف 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از نظر تئوری هیچ مشکلی ندارد و می توانید هرچقدر خواستید تابع تعریف کنید فقط سعی کنید توابع متقارن باشند.
پاسخشمیم
درباره9 سال agoسلام باتشکر از اموزشتون میخاستم ببینم چجوری میتونیم فایل رو اجرا کنیم! من فایل Custmf.m رو از متلب باز کردم میزنم runهیچ اتفاقی رخ نمیده و توو command window این پیغام رو نمایش میده: >> custmf1 Error using custmf1 (line 2) Not enough input arguments.
پاسخAdmin
درباره9 سال agoابتدا آدرس دایرکتوری نرم افزار را روی مکانی که فایل ها قرار دارند گذاشته و سپس فایل سیمولینک را اجرا کنید نه ام فایل را.
پاسخsaeed141
درباره9 سال agoدوستان سلام. من می خوام کار شبیه سازی یک موتور القائی را با استفاده از روش کنترل فازی انجام بدهم ولی به جدول داده های ورودی از این موتور القائی نیاز دارم. برام فرقی نمی کنه که چه نوع موتور القائی باشه. فقط به داده های ورودی جهت شبیه سازی کنترل سرعت موتور القائی نیاز شدید دارم. اگر کسی از دوستان می تونه کمک کنه بهم خبر بده. ممنونم می شم. متشکر
پاسخminicontrol
درباره9 سال agoبا سلام خیلی ممنون بابت آموزش بسیار خوب و مفیدتون. بسیار عالی بود. ببخشید من میخوام از روش فازی تطبیقی اسفاده کنم ولی وارد نیستم مخصوصا قسمت تطبیقی. ممنون میشم راهنمائی بفرمائید و اگه مطلب و یا سایتیو میشناسید ک مفید هست معرفی کنید.
پاسخAdmin
درباره9 سال agoباید به کتاب آقای wang یا مقالات مرتبط مراجعه کنید.
پاسخآرش
درباره9 سال agoسلام. و خسته نباشید. میشه لطف کنید معادله فضای حالتشونو برام بنویسین! ممنون میشم
پاسخAdmin
درباره9 سال 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
پاسخآرش
درباره9 سال agoسلامی دوباره ، اگر قرار باشد از بلوک steady space در سیمولینک این مثال استفاده کنیم چه تغییراتی در خوده سیمولینک انجام بدیم. ؟؟؟؟؟؟؟؟
پاسخAdmin
درباره9 سال agoدر خود فایل سیمولینک از بلوک steady space استفاده شده است.
پاسخرضا
درباره9 سال agoسلام خسته نباشید من یه کنترل کننده فازی برای کنترل فرکانس درست کردم که باید مقادیر kp و ki را به عنوان خروجی به کنترل کننده pi بدهم اما خروجی کنترل کننده فازی را نمیشه به ورودی pi متصل کرد. میخواستم واسه کنترل کنترل کننده pi با کنترل فازی کمکم کنید. با تشکر
پاسخAdmin
درباره9 سال agoیک کنترل کننده PID فازی در کتاب آقای wang موجود است که می تواند به شما در طراحی کنترل کننده کمک کند.
پاسخasal
درباره9 سال agoسلام مرسی برا سایت خوبتون. من سیستم پیل سوختی رو شبیه سازی کردم و برا کنترلش به طور جداگانه فازی و pid استفاده کردم ولی نمیدونم چرا پاسخ pid بهتر از فازی شده، شبیه سازیم درسته ولی با pid ولتاژ خروجی زودتر پایدار میشه... ممنون میشم جوابمو بدین
پاسخAdmin
درباره9 سال agoخود کنترل کننده فازی نیز دارای ضرایبی است که باید تنظیم شوند و می توان جواب بهتری از این کنترل کننده گرفت.
پاسخiman
درباره9 سال agoبا سلام لطفا نحوهی تبدیل سورس کد متلب به فایل hex برای کنترل یک موتور dc را با استفاده از luckup table را توضیح دهید متشکرم
پاسخAdmin
درباره9 سال agoکد متلب را نمی توان به فایل hex تبدیل نمود.
پاسخsoroush
درباره9 سال agoسلام ممنون از سایت خوبتون فقط یه سوال دارم ک جوابی براش پیدا نکردم . تویه شبیه سازی یه مقاله کنترل دور موتور DC با استفاده از منطق فازی گیر افتادم .مقادیر چنتا از گین هاش رو نداده و همینطور بازه تابع عضویت رو هم بهم نداده فقط تابع عضویت های ورودی و خروجی و خطا رو کشیده ولی رویه شکل هم مقداری برا این بازه قرار نگرفته میشه راهنماییم کنید ک باید چطوری این بازه تابع عضویت رو بدست بیارم.تو مراجع مقاله هم دنبالش گشتم ولی متاسفانه چیز قابل قبولی پیدا نکردم .ممنون میشم اگه راهنماییم کنید.
پاسخAdmin
درباره9 سال 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آدرس بار نرم افزار متلب را روی مکانی که فایلها قرار دارند قرار دهید.
پاسخکاظمی
درباره8 سال agoبا عرض سلام و خسته نباشد من با استفاده از سیمولینک یک کنترل کننده فازی را طراحی کردم . تنظیمات بلوک فازی را نیز تغییر ندادم، همه را به صورت پیش فرض گذاشتم. فقط اینکه از توابع عضویت گوسی در ورودی و خروجی استفاده کردم. حالا مشکلی که دارم این است که نمی توانم تشخیص دهم از چه فازی سازی استفاده شده؟؟؟؟در تنظیمات بلوک غیرفازی سازی ازش استفاده شده معرفی کرده ولی چیزی درباره فازی ساز ندیدم. شما می توانید مرا راهنمایی کنید؟
پاسخAdmin
درباره8 سال agoمنظورتان را متوجه نمی شوم. مگر از توابع گوسی برای فازی سازی استفاده نکرده اید؟ این توابع ورودی های crips را به فازی تبدیل می کنند.
پاسخکاظمی
درباره8 سال agoمنظورم این بود که من در قسمت Type که نوع توابع عضویت رو باید معلوم کنیم از guassmf استفاده کردم. الان نوع فازی ساز من همین گوسی می شود؟؟؟مگر این نوع تابع عضویت نمی شود؟ برای تعیین نوع غیرفازی ساز کادری وجود داشت بنام Defuzzification که توانستم غیرفازی ساز را تشخیص دهم ولی چیزی برای فازی ساز پیدا نکردم. اگر لازم است شبیه سازی را ایمیل کنم ممنون
پاسخAdmin
درباره8 سال agoبله فازی ساز شما همین گوسی می باشد.
پاسخکاظمی
درباره8 سال agoخیلی ممنون از راهنماییتون ولی یک سوال دیگر هم داشتم. فرضا اگر من نوع تابع عضویت را در قسمت Type ذوزنقه ای یا زنگوله ای انتخاب میکردم. نوع فازی ساز چه می شد؟ما سه نوع فازی ساز منفرد، گوسین و مثلثی که بیشتر نداریم. می شود یک راهنمایی کلی به من بدهید
Admin
درباره8 سال agoدر متلب توابع عضویت مختلفی وجود دارد و حتی امکان نوشتن کد و طراحی یک تابع عضویت دلخواه نیز وجود دارد.
کاظمی
درباره8 سال agoالان متوجه شدم...پس براساس این توابع عضویت های مختلف نوع فازی سازی های متفاوتی هم داریم. چون من در کتاب که نگاه کردم همین سه نوع را معرفی کرده بود. متشکرم
پاسخحسین
درباره8 سال agoسلام.فایل custmf1 رو که run میکنم این خطا رو میده Not enough input arguments. Error in custmf1 (line 2) for i=1:length(x) علتش چیه؟
پاسخAdmin
درباره8 سال agoشما باید مسیر دایرکتوری نرم افزار matlab را روی مکانی که فایل ها وجود دارند قرار دهید و سپس فایل سیمولینک را اجرا کنید نه این ام فایل را.
این ام فایل مربوط به یکی از توابع عضویت است.
پاسخحسین
درباره8 سال agoسلام مجدد میشه درباره نحوه کارکرد سیستم,دستوراتی که نوشتین و بلوک هایی که تو محیط سیمولینگ استفاده کردین توضیح بدین,ممنون
پاسخAdmin
درباره8 سال agoدر حال آماده سازی یک مجموعه فیلم آموزشی می باشم.
پاسخمریم
درباره7 سال agoسلام خسته نباشید ورودی های منطق فازی من هر کدوم فرمولی دارن برای اینکه محاسبه بشوند. چه طوری این فرمول ها را وارد کنم؟
پاسخAdmin
درباره7 سال agoابتدا باید توسط بلوک های سیمولینک ورودی ها را محاسبه کنید و سپس به بلوک فازی ارسال کنید.
پاسخپوریا سلیمی
درباره7 سال agoسلام .من برای پایان نامم نیاز به کمک دارم.برای مانیتورینگ یک دستگاه در حال کارسوال داشتم.چطور میشه یکسری اطلاعات را به صورت آموزشی به سیستم سیمولینک بدهیم و این اطلاعات ذخیره شوند. سپس با دادن اطلاعات جدید و شرایط جدید سیستم این اطلاعات جدید را با داده های ثبت شده قبلی مقایسه کند و گزارش وضعیت به ما بدهد ممنون میشم اگر اطلاعاتی هست ایمیل کنید.با تشکر
پاسخAdmin
درباره7 سال agoاین کار نیاز به سیستم های واسطی مانند کارتهای DAQ است تا به محیط سیمولینک متصل شود و اطلاعات را ذخیره کند.
پاسخمحسن
درباره7 سال 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
درباره7 سال agoبه احتمال زیاد شما یک شبیه سازی قدیمی را با نسخه جدید باز کرده اید که چنین خطایی می دهد. در صورتی که مشکل باقی ماند می توانید فایل را ارسال کنید تا بررسی کنم.
پاسخامین
درباره6 سال agoچه نوعی از کنترلر فازی استفاده شده ؟؟؟
پاسخAdmin
درباره6 سال agoاز نوع ممدانی استفاده شده است
پاسخمحمد
درباره6 سال agoسلام، علت این خطا چیه؟"Specify membership function parameters as a numeric vector."
پاسخAdmin
درباره6 سال agoباید فایل را بررسی کنم.
پاسخفروغ
درباره6 سال agoسلام من یک fis ساختم حالا وقتی fuzzy logic controller رو می زنم می خوام اسم فایل fis رو در کادر باز شده وارد کنم اون textboxی که باید اسم رو وارد کنم غیرفعال است می شه لطفا راهنمایی کنید؟ (مسیر متلب هم در همون جایی هست که فایل fis قرار داره) با سپاس و درود
پاسخAdmin
درباره6 سال agoشاید مشکل از نسخه ای است که نصب کرده اید. با این حال باید فایل رو بررسی کنم.
پاسخamin
درباره6 سال agoسلام ممنون ولی توابع عضویت رو کامل توضیح ندادید به چه صورته؟ مثلا تعداد توابع برای ورودی ها و خروجی و همچنین نوعشون. همشون باید ذوزنقه ای باشن؟
پاسخAdmin
درباره6 سال agoهر چقدر تعداد توابع عضویت بیشتر باشد ساختار پیچیده تر ولی دقیق تر خواهد شد. معمولاً توابع عضویت گوسی کاربرد بیشتری نسبت به توابع عضویت دیگر دارد.
پاسخmohammad
درباره6 سال agoسلام ببخشید قسمتی که نوشته [-Inf -3 -2 0] چ معنی داره؟ شاید برای من بد اورده باشه
پاسخAdmin
درباره6 سال agoیک تابع عضویت ذوزنقه ای با چهار نقطه مشخص می شود. نقطه شروع، نقطه رسیدن به مقدار پیک اول، نقطه دوم پیک و نقطه رسیدن به صفر.
پاسخآرزو
درباره6 سال agoسلام . من همین پروژه رو دارم ولی تابع تبدیل سرووم یکم فرق میکنه(مخرجش درجه 3 هست). چجوری باید توابع عضویت رو طراحی کنم براش؟ بهترین کنترلر فازی که میتونم براش طراحی کنم چجوری بهش برسم؟ شما اینجا از ورودی پالس استفاده کردی . اگه ورودی سینوسی بود توابع عضویتمون چجوری میشن؟ ممنون از سایت عالیتون
پاسخAdmin
درباره6 سال agoمهم ترین مشکل کنترل کننده فازی طراحی آن است و به تجربه نیاز دارد. توابع عضویت تان فرقی ندارد فقط ممکن است تعداد آنها بیشتر شود یا همچنین قوانین بیشتر شوند. در کل باید تجربه داشته باشید.
پاسخamin
درباره6 سال 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به احتمال زیاد به دلیل زیاد بودن قوانین شما است. می توانید از جدول لوک آپ به عنوان جایگزینی برای بلوک کنترل فازی در سیمولینک استفاده کنید.
پاسخ