آخرین اخبار پربازدیدترین ها
کد خبر: 32080
۱۷:۴۰ ۰۳ /۰۳/ ۱۳۹۷

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

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

سرویس آموزش و آزمون برق نیوز:


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

۱. If (e is n) and (deltae is any) then (output۱ is n)

۲. If (e is p) and (deltae is any) then (output۱ is p)

۳. If (e is z) and (deltae is any) then (output۱ is n)

۴. If (e is z) and (deltae is any) then (output۱ is p)

۵. If (e is z) and (deltae is any) then (output۱ is z)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

برای دانلود این پروژه بر روی گزینه زیر کلیک کنید.
 
 
 
حجم:12 کیلوبایت
ارسال نظرات قوانین ارسال نظر
لطفا از نوشتن با حروف لاتین (فینگلیش) خودداری نمایید.
از ارسال دیدگاه های نا مرتبط با متن خبر، تکرار نظر دیگران، توهین به سایر کاربران و ارسال متن های طولانی خودداری نمایید.
لطفا نظرات بدون بی احترامی، افترا و توهین به مسئولان، اقلیت ها، قومیت ها و ... باشد و به طور کلی مغایرتی با اصول اخلاقی و قوانین کشور نداشته باشد.
در غیر این صورت، «برق نیوز» مطلب مورد نظر را رد یا بنا به تشخیص خود با ممیزی منتشر خواهد کرد.
نتیجه عبارت زیر را وارد کنید
=
captcha