نوشته‌ها

همه چیز در مورد نرم افزار matlab و کاربردهای آن

مقدمه

متلب یک زبان برنامه‌نویسی سطح بالای نسل چهارم و یک محیط تعاملی برای محاسبات عددی، تجسم و برنامه‌نویسی می‌باشد که از ترکیب دو واژه MATrix (ماتریس) و LABoratory (آزمایشگاه) ایجادشده است این نام حاکی از رویکرد ماتریس محور برنامه است که در آن حتی اعداد منفرد نیز به‌صورت یک ماتریس با ابعاد ۱*۱ در نظر گرفته می‌شود. برنامه متلب یک برنامه جهت استفاده مهندسین است.
نرم‌افزار متلب توسط شرکت MathWorks تولیدشده است. این شرکت در سال ۱۹۸۴ در ایالت ماساچوست امریکا تأسیس شد. در سال ۱۹۷۰ Cleve Moler رییس دانشکده نیومکزیکو نرم‌افزار متلب را بر پایه زبان فرترن نوشت. در سال ۱۹۸۳ این نرم‌افزار را بر پایه زبان برنامه‌نویسی C شکل دادند و پس از تأسیس شرکت گسترش ان سرعت گرفت.
متلب توانایی کار با ماتریس‌ها، رسم انواع توابع و داده‌ها، پیاده‌سازی انواع الگوریتم‌ها، ایجاد رابط کاربری، ارتباط با برنامه‌های نوشته‌شده به زبان‌های دیگر ازجمله C، C++، JAVA  و فرترن و ایجاد مدل‌ها و برنامه‌های کاربردی را فراهم می‌کند.
سیستم متلب از پنج قسمت اصلی ایجادشده است.
زبان متلب: متلب یک زبان سطح بالای ماتریس- آرایه‌ای است ویژگی‌های برنامه‌نویسی شی گرا را شامل می‌شود که می‌توان با کمک آن برنامه‌های ساده و پیچیده را ایجاد کرد
محیط کاری متلب: مجموعه‌ای از ابزار و امکانات است که شما به‌عنوان کاربر متلب یا برنامه‌نویس متلب با آن‌ها تعامل دارید. این محیط شامل امکاناتی برای مدیریت متغیرها در فضای کاری  و ابزاری جهت توسعه، مدیریت، رفع خطا و ایجاد M فایل‌ها در برنامه‌های متلب می‌باشد.
کنترل گرافیک: همان سیستم گرافیکی متلب است که شامل دستورات سطح بالا برای تجسم داده‌های دوبعدی و سه‌بعدی، پردازش تصویر، انیمیشن و گرافیک است. همچنین شامل دستورات سطح پایین است که به شما اجازه می‌دهد که ظاهر گرافیکی برنامه‌های خود را به‌صورت سفارشی طراحی کنید.
کتابخانه توابع ریاضی متلب: مجموعه گسترده‌ای از الگوریتم‌های محاسباتی اعم از توابع ابتدایی مانند سینوس، کسینوس تا توابع پیچیده مانند ماتریس معکوس، مقادیر ویژه ماتریس و تبدیل فوریه سریع را شامل می‌شود.
رابط برنامه‌های کاربردی متلب (API): کتابخانه‌ای است که امکان نوشتن برنامه‌های فرترن و C که با متلب در تعامل باشند را فراهم می‌کند. این رابط شامل امکاناتی نظیر فراخوانی روال از متلب (اتصال پویا)، فراخوانی متلب به‌عنوان یک موتور محاسباتی و خواندن و نوشتن به فایل‌های mat است.

مزایای متلب

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

معایب متلب

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

کاربردهای متلب

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

  • پردازش سیگنال و ارتباطات
  • پردازش تصویر و ویدئو
  • سیستم‌های کنترل
  • تست و اندازه‌گیری
  • مهندسی مالی
  • محاسبات زیستی

قدرت محاسبات ریاضی متلب

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

  • کار با ماتریس‌ها و آرایه‌ها
  • رسم نمودارهای دوبعدی و سه‌بعدی و گرافیک
  • جبر خطی
  • معادلات جبری
  • توابع غیرخطی
  • آمار
  • آنالیز داده
  • حساب دیفرانسیل و انتگرال و معادلات دیفرانسیل
  • محاسبات عددی
  • ادغام
  • براز منحنی

جعبه‌ابزارهای متلب

شرکت سازنده و گروه‌های مختلف، ازجمله دانشگاه‌های سرتاسر جهان و برخی شرکت‌های مهندسی هرساله جعبه‌ابزارهای خاص-کاربردی به آن می‌افزایند که باعث افزایش کارایی و محبوبیت آن شده است. فهرستی از این جعبه‌ابزارها در زیر آمده است:

  • سیمیولینک، ابزاری برای شبیه‌سازی سامانه‌ها به‌ صورت انتزاعی
  • جعبه‌ابزار مخابرات متلب، توابع و ابزارهای محاسبات مهندسی مخابرات
  • جعبه‌ابزار کنترل متلب، توابع و ابزارهای محاسبات مهندسی کنترل
  • جعبه‌ابزار فازی متلب، توابع و ابزارهای محاسبات فازی
  • جعبه‌ابزار محاسبات متلب، توابع و ابزارهای محاسبات عددی
  • جعبه‌ابزار تخمین متلب، توابع و ابزارهای محاسبات بحث تخمین سیستم در مهندسی کنترل
  • جعبه‌ابزار آمار متلب، توابع و ابزارهای محاسبات آمار
  • جعبه‌ابزار جمع‌آوری داده متلب، توابع و ابزارهای جمع‌آوری داده
  • جعبه‌ابزار شبکه عصبی متلب، توابع و ابزارهای محاسبات شبکه عصبی
  • جعبه‌ابزار پردازش تصویر متلب، توابع و ابزارهای محاسبات پردازش تصویر
  • جعبه‌ابزار پردازش صوت متلب، توابع و ابزارهای محاسبات پردازش صوت
  • جعبه‌ابزار احتمالات متلب
  • جعبه‌ابزار محاسبات سیمبولیک متلب
  • جعبه‌ابزار کارگاه بی‌درنگ متلب، توابع و ابزارهای محاسبات سامانه‌های بی‌درنگ

منابع:

  1. “Matlab Tutorial of Fundamental Programming”, Khairul Anuar Ishak, Department of Electrical, Electronic & System Engineering Faculty of Engineering Universiti Kebangsaan Malaysi
  2. “Matlab numerical computing”,tutorialspoint, www.tutorialspoint.com
  3. “The Origins of MATLAB”, Cleve Moler, MathWorks
  4.  https://en.wikipedia.org/wiki/MATLAB

نظریه ماشین های القایی متقارن در متلب

  analysis of electric machinery exercises in Matlab

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

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

clear all
clc
J=.089;
rr=.816;
t=0;
i=0;
dt=.0001;
P=4;
Tl=11.9/2;
Te=0;
tet0=0;tetr0=0;tet=0;tetr=0;
rs=.435;
Wr0=0;
Xlr=.754;
Xls=.754;
Wb=120*pi;
Xm=26.13;
Xss=Xls+Xm;
Xrr=Xlr+Xm;
D=(Xss*Xrr)-(Xm^2);
vqr=0;vdr=0;vor=0;
Q0=[0;0;0;0;0;0];
Qqs=0;Qds=0;Qos=0;Qqr=0;Qdr=0;Qor=0;
while t<=3
Vas=220*(.8165)*cos(Wb*t);
Vbs=220*(.8165)*cos((Wb*t)-(2*pi/3));
Vcs=220*(.8165)*cos((Wb*t)+(2*pi/3));
Ks=(2/3)*[cos(tet0) cos((tet0)-(2*pi/3)) cos((tet0)+(2*pi/3));sin(tet0) sin((tet0)-(2*pi/3)) sin((tet0)+(2*pi/3));.5 .5 .5];
V1=Ks*[Vas;Vbs;Vcs];
vqs=V1(1,1);vds=V1(2,1);vos=V1(3,1);
Q=[Qqs;Qds;Qos;Qqr;Qdr;Qor];
V=[vqs;vds;vos;vqr;vdr;vor];
Wr=Wr0;
W=Wr;
A=[rs*Xrr/D (W/Wb) 0 (-rs*Xm/D) 0 0;(-W/Wb) rs*Xrr/D 0 0 -rs*Xm/D 0;0 0 rs/Xls 0 0 0;-rr*Xm/D 0 0 rr*Xss/D (W-Wr)/Wb 0;0 (-rr*Xm/D) 0 (-(W-Wr)/Wb) rr*Xss/D 0;0 0 0 0 0 rr/Xlr];
B=[1/Wb 0 0 0 0 0;0 1/Wb 0 0 0 0;0 0 1/Wb 0 0 0;0 0 0 1/Wb 0 0;0 0 0 0 1/Wb 0;0 0 0 0 0 1/Wb];
Brev=inv(B);
Arev=-inv(B)*A;
Q01=Arev*Q+Brev*V;
Te=(P/2)*(3/2)*(Xm/(D*Wb))*((Q(1,1)*Q(5,1))-(Q(2,1)*Q(4,1)));
Wr01=(P/2)*((Te-Tl)/J);
tet01=W;
tetr01=Wr;
Wr=Wr0+(Wr01*dt/2);
tet=tet0+(tet01*dt/2);
tetr=tetr0+(tetr01*dt/2);
Q=Q0+(Q01*dt/2);

Q02=Arev*Q+Brev*V;
Te=(P/2)*(3/2)*(Xm/(D*Wb))*((Q(1,1)*Q(5,1))-(Q(2,1)*Q(4,1)));
Wr02=(P/2)*((Te-Tl)/J);
Wr=Wr0+(Wr02*dt/2);
W=Wr;
tet02=W;
tetr02=Wr;
tet=tet0+(tet02*dt/2);
tetr=tetr0+(tetr02*dt/2);
Q=Q0+(Q02*dt/2);

Q03=Arev*Q+Brev*V;
Te=(P/2)*(3/2)*(Xm/(D*Wb))*((Q(1,1)*Q(5,1))-(Q(2,1)*Q(4,1)));
Wr03=(P/2)*((Te-Tl)/J);
Wr=Wr0+(Wr03*dt);
W=Wr;
tet03=W;
tetr03=Wr;
tet=tet0+(tet03*dt);
tetr=tetr0+(tetr03*dt);
Q=Q0+(Q03*dt);

Q04=Arev*Q+Brev*V;
Te=(P/2)*(3/2)*(Xm/(D*Wb))*((Q(1,1)*Q(5,1))-(Q(2,1)*Q(4,1)));
Wr04=(P/2)*((Te-Tl)/J);
Wr0=Wr0+(Wr01+2*Wr02+2*Wr03+Wr04)*(dt/6);
W=Wr0;
tet04=W;
tetr04=Wr;
tet0=tet0+(tet01+2*tet02+2*tet03+tet04)*(dt/6);
tetr0=tetr0+(tetr01+2*tetr02+2*tetr03+tetr04)*(dt/6);
Q0=Q0+(Q01+Q02*2+2*Q03+Q04)*(dt/6);
Qqs=Q0(1,1);Qds=Q0(2,1);Q0s=Q0(3,1);Qqr=Q0(4,1);Qdr=Q0(5,1);Q0r=Q0(6,1);
Te=(P/2)*(3/2)*(Xm/(D*Wb))*((Q(1,1)*Q(5,1))-(Q(2,1)*Q(4,1)));
I=(1/D)*[Xrr 0 0 -Xm 0 0;0 Xrr 0 0 -Xm 0;0 0 D/Xls 0 0 0;-Xm 0 0 Xss 0 0;0 -Xm 0 0 Xss 0;0 0 0 0 0 D/Xlr]*Q;
iqs=I(1,1);ids=I(2,1);ios=I(3,1);iqr=I(4,1);idr=I(5,1);ior=I(6,1);
Kr=(2/3)*[cos((tet0-tetr0)) cos(((tet0-tetr0))-(2*pi/3)) cos(((tet0-tetr0))+(2*pi/3));sin((tet0-tetr0)) sin(((tet0-tetr0))-(2*pi/3)) sin(((tet0-tetr0))+(2*pi/3));.5 .5 .5];
Irotor=inv(Kr)*[iqr;idr;ior];
iar=Irotor(1,1);ibr=Irotor(2,1);icr=Irotor(3,1);
Ks=(2/3)*[cos(tet0) cos((tet0)-(2*pi/3)) cos((tet0)+(2*pi/3));sin(tet0) sin((tet0)-(2*pi/3)) sin((tet0)+(2*pi/3));.5 .5 .5];
Istator=inv(Ks)*[iqs;ids;ios];
ias=Istator(1,1);ibs=Istator(2,1);ics=Istator(3,1);
i=i+1;
time(i)=t;
Iar(i)=iar;
Tee(i)=Te;
Ias(i)=ias;
WW(i)=(30*Wr0)/(2*pi);
t=t+.0001;
if t>=1.5
Tl=11.9;
end
end
plot(time,WW);xlabel(‘t’) ;ylabel(‘Wr’)
grid on
figure
plot(time,Ias);xlabel(‘t’) ;ylabel(‘ias’)
grid on
figure
plot(time,Iar);xlabel(‘t’) ;ylabel(‘iar’)
grid on
figure
plot(time,Tee);xlabel(‘t’) ;ylabel(‘Te’)
grid on
figure
plot(WW,Tee);xlabel(‘wr’) ;ylabel(‘Te’)
grid on

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

در این شکل می بینیم که سرعت گردش روتور از صفر تا 1800rpm افزایش می یابد و بعد ثابت می ماند, چون به سرعت نامی خود رسیده است. Wb

جریان استاتور با متلب


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

جریان روتور با متلب


شکل بالا تغییرات جریان روتور را به نمایش گذاشته است
گشتاور موتور القایی با متلب

گشتاور موتور القایی با متلب


در شکل بالا گشتاور الکترومغناطیسی بعد از نوسانات ابتدایی به صفر می رسد, حالا اگر بخواهیم گشتاور را بر حسب سرعت در متلب داشته باشیم به صورت زیر به دست می آید:
matlabi_elghayi55
بعد از بررسی ویژگی ماشین القایی مادامی که بی بار کار می کند میتواند بار نامی مکانیکی را روی محور ماشین القایی قرار داد. برای اینکار در برنامه متلب چند خط زیر را اضافه می کنیم:

if t>=1.5
Tl=11.9;
end

با اضافه کردن این قسمت از برنامه که در بالا با رنگ سبز نیز مشخص شده, این اتفاق در متلب می افتد و نتایج به صورت زیر است:

راه اندازی موتور القایی با متلب

راه اندازی موتور القایی با متلب


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

جریان استاتور با متلب


جریان روتور با متلب

جریان روتور با متلب


دلیل نوسانات در جریان روتور و استاتور قرار گرفتن بار نامی روی  محور ماشین است
matlabi_elghayi4
همانطور که مشاهده می شود گشتاور مغناطیسی در یک مقدار غیر از صفر ثابت می ماند.
matlabi_elghayi5
 
بزودی بخش دیگری از تحلیل رفتار موتور القایی را در متلب در سایت متلبی خواهید دید.

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

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

clear all
clc
ra=.6;
rf=240;
laa=.012;
lff=120;
laf=1.8;
Ta=laa/ra;
Tf=lff/rf;j=1;bm=0;bl=.2287;
disp(‘type your simulink program name and then type return’)
keyboard
subplot(311),plot(y(:,1),y(:,2)),title(‘ia,A’),grid
subplot(312),plot(y(:,1),y(:,3)),title(‘Te,n.m’),grid
subplot(313),plot(y(:,1),y(:,4)),title(‘if,A’),grid

در این برنامه متلب از دستور keyboard استفاده شده چرا که وقتی برنامه به این خط از برنامه متلب می رسد متوقف می شود و در حالت standby باقی می ماند تا ما اسم برنامه سیمولینک مورد نظر خود را می نویسیم.
بعد از اجرای برنامه سیمولینک به کامنت ویندوز متلب برمی گردیم و return را می نویسیم و اینتر میزنیم.
حالا دستورات plot شکلهای خروجی را رسم می کنند.
بلوک دیاگرام موتور شنت به صورت زیر است.

سیمولینک موتور شنت با متلب

مدلسازی موتور شنت با متلب
اگر نیاز به شبیه سازی موارد مشابه این آموزش دارید میتوانید انجام پروژه متلب خود را به متخصصین سایت متلبی بسپارید.
در سیمولینک متلب فوق گشتاور بار را صفر در نظر گرفته ایم که در ادامه غیر صفر بودن آنرا نیز بررسی خواهیم کرد.
مدلسازی موتور شنت با متلب

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

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

موتور شنت با بار در متلب

قرار دادن بار را روی ماشین در متلب با step انجام می دهیم. step را طوری تنظیم می کنیم که در لحظه مثلا 4ثانیه بار نامی که از تقسیم توان نامی بر سرعت نامی بدست می آید روی محور قرار گیرد.
متلبی دارای بانک بزرگ مقاله های شبیه سازی شده در متلب است. برای دیدن مقالات شبیه سازی شده به فروشگاه متلبی مراجعه نمایید.
مقدار گشتاور بار معادل 29.195 بدست می آید. من عمدا مقدار گشتاور را دوبرابر قرار دادم تا exaggerate کرده باشم و شکلها واضح تر باشند. در حقیقت تاثیر بار را بهتر خواهیم دید. نتایج عبارت اند از:
matlabi_motor shant3
تغییرات در لحظه 4ثانیه بوضوح مشهود است.مدلسازی موتور شنت با متلب را نیز انجام دادیم :)