طراحی یک کنترل کننده فازی برای کنترل یک سروموتور DC با Matlab
در این مقاله نحوه طراحی یک کنترل کننده فازی برای کنترل یک سروموتور DC با Matlab را آموزش داده می شود.
سرویس آموزش و آزمون برق نیوز:
در این مقاله نحوه طراحی یک کنترل کننده فازی برای کنترل یک سروموتور DC با Matlab را آموزش داده می شود. فرض کنید تابع تبدیل یک سروموتور DC بصورت زیر است:
قبل از اینکه وارد طراحی کنترل کننده فازی شویم ابتدا باید نحوه ایجاد کنترل کننده فازی در متلب را آموزش بدهیم. برای این کار هم میتوان از دستورات متلب استفاده کرد و هم میتوان از تولباکسی که در متلب قرار دارد استفاده کرد که ما کار با تولباکس Fuzzy Logic Design را آموزش میدهیم. برای وارد شدن به این تولباکس ابتدا دستور fuzzy را در command window بنویسید تا صفحه زیر آشکار شود:
همان طور که مشاهده میکنید این صفحه از قسمتهای زیر تشکیل شده است:
۱) input: در این قسمت ورودیهای سیستم مشخص میشود که برای کار ما دو ورودی خطای سرعت و تغییرات خطای سرعت میباشد.
۲) Untitled: در این قسمت قوانین نوشته میشود.
۳) output: در این قسمت خروجیهای سیستم تعیین میشود که برای کار ما ولتاژ موتور میباشد.
۴) Current Variable: در این قسمت اطلاعات مربوط به متغیری که انتخاب شده نشان داده میشود. سعی کنید برای هر متغیر نام مناسبی انتخاب کنید تا زمانی که قوانین را طراحی میکنیم دچار مشکل نشویم.
۵) قسمت پایین سمت چپ که در این قسمت نحوه استدلال و استنتاج کردن قوانین و روابط فازی مشخص میشود. بهتر است این قسمتها را تغییر ندهید.
برای اضافه کردن ورودی و خروجی میتوانید مانند شکل زیر عمل کنید:
ابتدا ما دو ورودی با نامهای e. و deltae و یک خروجی با نام V. میسازیم. حال روی ورودی e. دو بار کلیک کرده تا وارد صفحه زیر شویم:
ابتدا با کلیک بر روی هر متغیر رنج تغییرات آن (گوشه پایین سمت چپ) را مشخص میکنیم؛ که برای کار ما رنج تغییرات هر سه متغیر را [-۳، ۳]انتخاب کرده ایم. حال باید توابع عضویتها را طراحی کنیم. از قسمت 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)
توجه کنید که پس از انتخاب هر کدام از پارامترها گزینه Add rule را زده تا قانون ثبت شود و برای حذف قانونی، ابتدا روی آن کلیک کرده و سپس گزینه Delete rule را بزنید. برای مشاهده خروجی از سربرگ View گزینه Rule را انتخاب کنید و با تغییر دادن ورودیها تغییرات خروجی را مشاهده کنید.
برای ذخیره فایل طراحی از سربرگ File گزینه Export To File را انتخاب کرده و فایل را با پسوند fis ذخیره کنید. برای استفاده از این فایل در سیمولینک متلب باید بلوک Fuzzy Logic Controller را انتخاب کنید.
توجه کنید که، چون فایل fis ما یک استراکچر میباشد باید نام فایل را داخل ' ' قرار دهیم.
شکل زیر نحوه کنترل را نشان میدهد:
در اینجا برای اینکه مقایسهای بین کنترل کننده فازی با کنترل کننده PID انجام دهید به شکل موجهای زیر توجه کنید:
همان طور که مشخص است پاسخ کنترل کننده فازی سریعتر بوده است.
شکل زیر یک تفاوت دیگر این دو کنترل کننده را نشان میدهد:
همان طور که میدانید خروجی کنترل کنندهها نباید به اشباع برود، ولی کنترل کننده PID به اشباع رفته است.
برای دانلود این پروژه بر روی گزینه زیر کلیک کنید.
حجم:12 کیلوبایت
از ارسال دیدگاه های نا مرتبط با متن خبر، تکرار نظر دیگران، توهین به سایر کاربران و ارسال متن های طولانی خودداری نمایید.
لطفا نظرات بدون بی احترامی، افترا و توهین به مسئولان، اقلیت ها، قومیت ها و ... باشد و به طور کلی مغایرتی با اصول اخلاقی و قوانین کشور نداشته باشد.
در غیر این صورت، «برق نیوز» مطلب مورد نظر را رد یا بنا به تشخیص خود با ممیزی منتشر خواهد کرد.