رفتن به مطلب

مدل کردن سرعت موتور dc در متلب


ارسال های توصیه شده

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

 

motor1.GIF

 

برای این مثال ، ما مقادیر زیر را برای پارامتر های فیزیکی فرض کردیم. (این مقادیر از یک آزمایش بر روی یک موتور واقعی بدست آمده است)

 

Matlab.JPG

 

گشتاور موتور( T ) با یک ضریب ثابت ( Kt ) وابسته به جریان آرمیچر ( i ) است .نیروی محرکه معکوس (e) به صورت زیر به سرعت چرخشی وابسته است.

 

Mfo1.GIF

 

در استاندارد SI ، ثابت آرمیچر (Kt) برابر با (Ke) ثابت موتور است.

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

 

Mfo2.GIF

 

 

 

تابع انتقال:

به وسیله تبدیل لاپلاس مدل روابط بالا رو می تونیم به شکل زیر پیاده کنیم:

 

Mfo3.GIF

 

با حذف کردن (I(s می تونیم تابع انتقال حلقه باز رو به صورت زیر بدست بیاریم ، به طوری که سرعت دورانی در خروجی و ولتاژ در ورودی است.

 

Mfo9.GIF

 

 

 

فضای حالت:

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

 

sseqn1.gif

 

 

احتیاجات طراحی :

ابتدا موتور ما با یک ورودی ولتاژ 1 ولت فقط می تواند 0.1 (rad/sec) بچرخد ( این با پاسخ مدار حلقه باز شیبه سازی شده اثبات می شود.) بعد از اینکه احتیاجات لازم و پایه موتور داده شد ، موتور باید با سرعت مورد انتظار بچرخد. خطای حالت دائمی سرعت موتور باید کمتر از 1% باشد. برای ادامه کار لازم است که موتور به سرعت دائمی برسد. در این حالت زمان آن را روی 2 ثانبه تنظیم می کنیم. چون سرعت بیشتر به تجهیزات آسیب می رساند. اورشوت هم کمتر از 5% باشد.

 

 

نمایش در مطلب :

ما می تونیم تابع انتقال بالا رو به صورت صورت و مخرج در مطلب نمایش بدیم:

 

Mfo7.GIF

 

یک m-file باز کنید و اطلاعات زیر را وارد کنید:

 

J=0.01;
b=0.1;
K=0.01;
R=1;
L=0.5;
num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];
---------------------------------------------------
num = numerator
den = denominator

 

 

حالا ببینیم سیستم حلقه باز اصلی چطوری اجرا میشه . اطلاعات بدست آمده زیر را به انتهای m-file اضافه کرده و برنامه را اجرا کنید.( پاسخ پله= Step )

 

step(num,den,0:0.1:3)

title('Step Response for the Open Loop System')

 

شما باید یک همچین شکلی رو بدست آورده باشید :

 

wol_error.gifاین عکس کوچک شده است برای مشاهده ی سایز اصلی کلیک کنیدstep1.GIF

 

 

از روی شکل می بینیم که وقتی 1 ولت به سیستم اعمال میشه ماکزیمم سرعت موتور فقط 0.1 (rad/sec) است. 10 برابر کمتر از سرعت مطلوب ما.همچنین موتور در 3 ثانیه به سرعت دائمی می رسد. این یعنی که زمان 2 ثانیه ای که ما در نظر گرفتیم خوب نبوده است.

 

فضای حالت:

ما همچنین می تونیم سیستم رو با روابط فضای حالت نمایش بدیم . اطلاعات زیر رو در یک m-file جدید وارد کنید:


[left]J=0.01;
b=0.1;
K=0.01;
R=1;
L=0.5;
A=[-b/J   K/J
  -K/L   -R/L];
B=[0
  1/L];
C=[1   0];
D=0;

step(A, B, C, D)[/left]

این m-file را در مطلب اجرا کنید . شما باید خروجی ای مشابه با شکل بالا بدست بیارین.

لینک به دیدگاه

شبیه سازی موتور DC در مطلب

 

 

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

 

فقط لازم به ذکره که در نسخه های جدید مطلب گزینه ها تغییر داده یا جابه جا شده اند در صورت لزوم بگین تا راهنماییتون کنم.مثلا اگر زیرمجموعه Linear block را پیدا نکردید . بلوک ها را در Commonly Used blocks بیابید.

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

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

 

سیمولینک را باز کرده و یک پنجره مدلسازی جدید باز کنید.

ابتدا ما می خواهیم تا انتگرال های شتاب دورانی و نیز میزان تغییرات جریان آرمیچر را مدل کنیم.

 

eqns_2.gif

 

یک بلوک انتگرال گیر وارد کنید. ( از Linear block library) و خطوط ورودی و خروجی را رسم کنید.

 

برچسب خط ورودی با "(d2/dt2(theta" و برچسب خط خروجی با"(d/dt(theta" در شکل مشخص شده است.( برای نوشتن برچسب فقط بر روی یک قسمت خالی بالای خط دابل کلیک کنید.)

 

یک انتگرال گیر دیگر وارد کنید و خطوط ورودی و خروجی را مشخص کنید.

 

برچسب ورودی"(d/dt(i" است و برچسب خروجی " i " است.

 

motor001.gif

 

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

 

eqns_3.gif

 

مشتق دوم شتاب زاویه ای برابر است با ضرب 1/J در مجموع دو جمله ( یکی مثبت ، یکی منفی ) و همچنین مشتق جریان برابر است با ضرب 1/L در مجموع سه جمله ( یکی مثبت ، دو تا منفی ).

- یک بلوک مثلثی بهره (Gain) وارد کنید (از Linear block library ) و هر کدام را با خط به انتگرال گیرها متصل کنید.

- بر روی بلوک بهره دابل کلیک کنید و مطابق با شتاب زاویه ای مقدار آن را "1/J" قرار دهید. ( به برچسب ها دقت کنید)

- برچسب نوشته شده زیر گین را به "inertia" یعنی اینرسی تغییر دادیم تا مشخص شود.

- مقدار بلوک گین دیگر را هم به "1/L" تغییر داده و بر چسب آن را "Inductance" قرار دهید.

- دو بلوک جمع (Sum) وارد کنید (از Linear block library ) و با خط آنها را به بلوک های گین متصل کنید.

- علامت های یک بلوک جمع را به "+ -" ( یکی مثبت ، یکی منفی ) و بلوک دیگر را به "- + -" ( یکی مثبت ، دو تا منفی ) تغییر دهید.( مطابق با روابط کیرشهف و دقت کنید هر بلوک به گین و انتگرال گیر خودش متصل باشد)

 

motor002.gif

 

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

- یک بلوک گین زیر بلوک اینرسی وارد کنید ، سپس با یک تک کلیک آن را انتخاب کرده و از منوی Format گزینه Flip را انتخاب کنید ( یا Ctrl-F- در نسخه های جدید Ctrl-I ) . نوک بلوک از راست به چپ برمی گردد.

- مقدار بلوک را "b" تعیین کرده و برچسب آن را "damping" ، استهلاک ، نام گذاری کنید.

- از وسط خط خروجی انتگرال گیر تــتا یک انشعاب گرفته ( Ctrl را نگه دارید و رسم کنید) و آن را به ورودی بلوک گین "damping" وصل کنید.

- از خروجی گین به سر منفی بلوک جمع (Sum) تــتا وصل کنید.

حالا گشتاور آرمیچر را اضافه می کنیم:

- یک بلوک گین وارد کنید مقدار آن را "K" ( نمایش دهنده ثابت موتور ) و برچسب آنرا "Kt" تعیین کنید و سپس آن را به ورودی مثبت بلوک جمع تــتا وصل کنید.

- خروجی انتگرال گیر جریان را به سمت ورودی بلوک "Kt" هدایت کنید.

 

motor003.gif

 

- حالا ما شرایط ولتاژ را که در رابطه کیرشهف نشان داده شده را وارد می کنیم ، ابتدا افت ولتاژ روی مقاومت بوبین را اضافه می کنیم.

- یک بلوک گین در بالای بلوک اندوکتانس وارد کنید و آن را از راست به چپ بر گردانید.

- مقدار این بلوک را "R" و برچسب آنرا "Resistance"تعیین کنید.

- یک انشعاب از خروجی انتگرال گیر جریان گرفته ( Ctrl را نگه دارید و رسم کنید) و آنرا به ورودی بلوک بهره مقاومت وصل کنید.

- یک خط از خروجی گین مقاومت به علامت منفی بالایی بلوک Sum معادله جریان وصل کنید.

 

حالا نیروی محرکه معکوس موتور را اضافه می کنیم.

- یک بلوک گین وارد کرده و آنر ا به سر منفی پایینی بلوک Sum معادله جریان وصل کنید .

- مقدار آن را "K" نشان دهنده ثابت موتور و برچسب آنرا "Ke" تعیین کنید.

- یک انشعاب از خروجی انتگرال گیر تــتا ( معادله دوران ) گرفته و به بلوک "Ke" وصل کنید.

 

motor004.gif

 

شرایط دیگر ولتاژ در رابطه کیرشهف ، کنترل ورودی است(V) ما یک ورودی پله را اعمال می کنیم.

- یک بلوک پله (Step) وارد کنید ( از Sources block library) و آنرا به ورودی مثبت بلوک Sum معادله جریان وصل کنید.

- برای مشاهده سرعت خروجی یک اسکوپ وارد کنید(از Sinks block library ) و آن را به خروجی انتگرال گیر معادله دوران وصل کنید.

- برای تنظیم کردن یک ورودی پله مناسب در t = 0 ، بر روی بلوک پله ورودی دابل کلیک کرده و Step time را "0" تعیین کنید.

 

motor005.gif

 

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

 

پاسخ حلقه باز

برای سیمولینک این سیستم ، ابتدا باید زمان شبیه سازی مناسب را مشخص کرد. گزینه Parameters را از منوی Simulation انتخاب کرده و در فیلد Stop time عدد "3" را وارد کنید. سه ثانیه برای مشاهده پایخ مدار باز کافی است.

حالا باید پارامترهای فیزیکی را مشخص کنیم. در پنجره Command Window مطلب فرامین زیر را وارد کنید :

 

J=0.01;
b=0.1;
K=0.01;
R=1;
;L=0.5

شبیه ساز را اجرا کنید (Ctrl-t یا انتخاب Start از منوی Simulation ). وقتی که شبیه سازی به پایان رسید ، بر روی اسکوپ دابل کلیک کرده و دکمه autoscale را فشار دهید. حالا خروجی زیر را خواید دید.

 

motstep.gif

 

بدست آوردن مدل خطی از داخل مطلب:

 

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

این کار را می توانیم با بلوک های اتصال ورودی و خروجی و نیز فرمان Linmod انجام بدیم.

ابتدا بلوک پله ورودی را با یک بلوک In و بلوک اسکوپ خروجی را با یک بلوک Out تعویض کنید. ( آنها را از Connections block یا Commonly Used Block بیابید.)

این تعریف های ورودی و خروجی سیستم به منظور فرایند استخراج است.

 

motormod.gif

 

 

خب حالا فایل مدل را با نام motormod.mdl ذخیره کنید. مطلب مدل خطی را از فایل مدل ذخیره شده استخراج خواهد کرد ، نه در خود پنجره باز مدل.

 

در پنجره Command Window مطلب فرمان های زیر را یکی یکی وارد کرده و اجرا کنید .

[A,B,C,D]=linmod('motormod')
[num,den]=ss2tf(A,B,C,D)

 

با اجرای فرمان اول ، مطلب ماتریس های فضای حالت (SS) و با اجرای فرمان دوم ، مطلب صورت و مخرج تابع انتقال (TF) را خواهد داد.( فضای حالت را به تابع انتقال تبدیل می کند)

 

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

 

step(num,den);

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...