طراحی کنترل کننده مد لغزشی

سیستم زیر را در نظر بگیرید :

معادله 1 ) فرم 1 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

که در آن J ممان اینرسی ،  سیگنال زاویه ، u(t) ورودی کنترل و d(t) عبارت از اغتشاش می باشد بطوریکه  می باشد.

حال با انتخاب تابع مدلغزشی به شکل زیر داریم :

معادله 2 ) فرم 2 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

که در این معادله c باید شرایط هورویتز را فراهم کند بنابراین

در این شرایط خطای ردیابی و مشتق آن عبارتند با :

معادله فرم 2.1 300x38 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

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

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

با مشتق گیری از صفحه لغزشی (معادله 2) داریم :

معادله 3 ) فرم 3 300x26 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

و در نتیجه :

معادله فرم 3.1 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

به منظور تضمین اینکه  کنترل کننده مدلغزشی را به صورت زیر خواهیم داشت :

معادله 4 ) فرم 4 300x71 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

چرا که با تعریف تابع لیاپانوف به صورت زیر

معادله فرم 4.1 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

خواهیم داشت :

معادله فرم 4.2 300x37 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

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

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

به منظور شبیه سازی بهتر است ابتدا به پست های آموزش شبیه سازی در متلب (لینک) نگاهی داشته باشید. ابتدا بایستی یک فایل به عنوان محل ذخیره سازی شبیه سازی در سیستم در نظر بگیرید (مسیر این فولدر بایستی تماما با نام های لاتین نامگذاری شود)، سپس کار را با ساخت یک مدل در محیط سیمولینک متلب آغاز می کنیم. در این مدل نیاز به بلوک های متلب فانکشن (Matlab function) و انتگرال گیر پیوسته (Integrator) به عنوان اولین بلوک ها خواهیم داشت. حال نیاز است تا در متلب فانکشن معادلات دینامیک سیستم را پیاده سازی کنیم. این دینامیک به صورت معادلات حالت در بلوک بیان خواهد شد.

با یک نگاه به دینامیک سیستم درمی یابیم که معادله دیفرانسیل آن مرتبه دوم می باشد بنابراین با یک سیستم مرتبه دوم با دو متغیر حالت مواجه هستیم. (x1 , x2)

حال با توجه به دینامیک سیستم کدهای زیر را برای بیان دینامیک سیستم در متلب فانکشن (Matlab function) خواهیم نوشت :

function [x1d,x2d] = fcn(x1,x2,u)

% parameter’s

J = 2;

% equation’s

x1d = x2;

x2d = 1/J*(u+d);

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

حال با سیو این مرحله به سراغ کدنویسی کنترل کننده (کنترلر) خواهیم رفت.

در طراحی کنترلر کار را همواره از آخر شروع می کنیم. نگاهی به معادله 4 که فرم تمام شده کنترلر را نشان می دهد تقریبا تمامی متغیرهای لازم برای تولید کنترلر را به ما نشان خواهد داد. در این معادله متغیرها (بدون در نظرگیری پارامترهای ثابت مدل و کنترلر) به ترتیب عبارتند از مشتق خطا ، مشتق دوم مسیر مطلوب برای متغیر حالت اول و صفحه لغزش . بنابراین نیاز است تمامی این متغیرها را در سیمولینک متلب تولید کنیم.

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

با این اوصاف کد بیان شده در سیستم کنترل عبارت خواهد بود با :

function u = fcn(e,d_e)

% parameter’s

J = 2;

c = 1;

k = 1;

eta = 1;

% equ

s = c*e+d_e;

u = J*(-c*d_e+0-1/J*(k*s+eta*sign(s)));

2 ورودی خطا و مشتق خطا برای تابع تعریف شده و صفحه لغزش در خود تابع تعریف شده است.

کلیه پارامترهای کنترلی 1 در نظر گرفته شده اند.

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

شکل 1 مدل شبیه سازی سیستم به همراه کنترلر در سیمولینک متلب 300x126 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

شکل 1 ) مدل شبیه سازی سیستم به همراه کنترلر در سیمولینک متلب

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

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

کد زیر برای این کار نوشته شده است :

clc

close

clear

t=20;

sim(‘Tra_Sliding’)

%% Plot

figure

plot(x1.time,x1.signals.values(:,1))

hold on

plot(x1.time,x1.signals.values(:,2),’r’)

legend(‘\theta’,’\theta_d_e_s’)

xlabel(‘time(s)’)

ylabel(‘X’)

title(‘Plot of \theta’)

تابع sim برای شبیه سازی مدل نامگذاری شده استفاده می شود. همچنین t=20 زمان شبیه سازی را به مدل سیمولینک فرمان می دهد. شکل زیر نتیجه بدست آمده برای شبیه سازی را نمایش می دهد :

شکل 2 نمودار بدست آمده برای متغیر حالت اول در شبیه سازی متلب در کنار مقدار مطلوب آن 300x225 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

شکل 2 ) نمودار بدست آمده برای متغیر حالت اول در شبیه سازی متلب در کنار مقدار مطلوب آن

همانطور که مشاهده می شود نتیجه خروجی در مقیاس ریز نتوانسته به خوبی خروجی مطلوب را ردیابی کند که این به خاطر پارامترهای کنترل کننده می باشد با تغییر پارامترهای کنترلر از 1 به 10 شکل زیر را خواهیم داشت :

شکل 3 نتیجه خروجی شبیه سازی برای متغیر تتا به ازای پارامترهای کنترلر بزرگتر معادل با 10 300x225 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

شکل 3 ) نتیجه خروجی شبیه سازی برای متغیر تتا به ازای پارامترهای کنترلر بزرگتر معادل با 10

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

شکل 4 نتیجه خروجی شبیه سازی برای متغیر تتا با تغییر مقدار اولیه به 4.5 300x225 طراحی و شبیه سازی کنترلر مد لغزشی در سیمولینک متلب

شکل 4 ) نتیجه خروجی شبیه سازی برای متغیر تتا با تغییر مقدار اولیه به 4.5

می توانید فایل تکمیل شده شبیه سازی را از لینک دریافت کنید. (رمز : barghtech)

در روزهای آینده سعی خواهد شد تا آموزش تصویری شبیه سازی نیز انجام شود …

منبع : برق تِک

About برق تِک

Leave a Reply

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *