در آموزش‌های پیشین مجله فرادرس، با برنامه‌نویسی در متلب و اصول شبیه‌سازی در سیمولینک آشنا شدیم. در این آموزش، شبیه سازی مدار در متلب و سیمولینک را در قالب مثال یک مدار RLC بیان می‌کنیم.

مدل‌سازی مدار RLC

یک مدار RLC در شکل ۱ نشان داده شده است.

شکل ۱: یک مدار RLC
شکل ۱: یک مدار RLC

ابتدا معادلات مدار RLC را به دست می‌آوریم. در مدار مورد نظر، جریان $$i$$ رابطه مستقیمی با افت ولتاژ‌ $$ v _L $$ سلف دارد؛ بدین صورت که مشتق ولتاژ $$v_C$$ متناسب با جریان $$i$$ گذرنده از آن است. بنابراین، می‌توانیم دو معادله دیفرانسیل مرتبه اول و سپس با اعمال قانون ولتاژ کیرشهف (KVL)، معادله ولتاژ حلقه را بنویسیم.

$$ \large L \frac {d i } { d t } = v _ L \\
\large C \frac { d v _ C } { d t } = i \\
\large – v _ s + R i + v _L + v _ C = 0 $$

دو متغیر $$i$$ و $$ v _ C $$ متغیرهای حالت نامیده می‌شوند. معادلات بالا، به عنوان معادلات جبری دینامیکی (DAE) شناخته می‌شوند. با جایگذاری مقدار $$v _L$$ در معادله جبری، به دو معادله دیفرانسیل معمولی (ODE) خواهیم رسید:

$$ \large L \frac { d i } { d t } = v _ s – R i – v _ C \\
\large C \frac { d v _c } { d t } = i $$

در معادلات بالا، مشتق متغیرهای حالت برحسب خود حالت‌ها و ورودی $$ v _ s $$ بیان شده‌ است.

توصیف عمومی سیستم بالا به صورت زیر است:

$$ \large \dot {x }  = f ( x , u ) $$

که در آن، $$u$$ ورودی و $$ x $$ بردار متغیرهای حالت است.

در مدار RLC بالا، $$ x = [ i , v _ C ] ^ T $$ و $$ u = v _ s $$. مدار RLC یک سیستم خطی است و می‌توانیم مدل فضای حالت خطی زیر را برای آن بنویسیم:

$$\large \dot { x } = \underbrace { \left [ \begin {array} {cc}{ \frac { – R } { L } } & { \frac { – 1 } { L } } \\ { \frac { 1 } { C } } & { 0 } \end {array} \right ] } _ { A } x + \underbrace { \left [ \begin {array} { c } { \frac { 1 } { L } } \\ { 0 } \end {array} \right ] } _ { B } \underbrace { v _ { s } } _ { u } $$

خروجی $$y$$ مدل را نیز به صورت زیر تعریف می‌کنیم:

$$ \large y = C x + D u $$

که در آن، $$ C = I $$ یک ماتریس همانی است و $$ D = [0,0]^ T $$.

اگر فقط جریان را به عنوان خروجی در نظر بگیریم، داریم:

$$ \large y = [ 1 \;\;\;\; 0 ] x $$

شبیه‌سازی در پایتون

برای مقایسه، شبیه‌سازی را در پایتون نیز انجام می‌دهیم. کد پایتون زیر برای شبیه‌سازی مدار RLC نوشته شده است. در این برنامه، ابتدا تابعی برای محاسبه مشتق‌های $$ dx/dt $$ تعریف شده است. ورودی‌های این تابع پارامترهای RLC، بردار متغیر حالت $$ x $$ و منبع ولتاژ $$ v _ s $$ هستند. در ادامه برنامه، روش ذوزنقه‌ای رایج برای انتگرال‌گیری عددی نوشته شده است. در هر گام $$k$$، مشتق‌های $$ dx/dt$$ با فراخوانی تابع محاسبه می‌شوند. بر اساس مشتق، حالت در گام‌های بعدی با استفاده از روش اویلر رو به جلو تخمین زده می‌شود. بر اساس این تخمین، مشتق در گام $$k + 1 $$ محاسبه می‌گردد. با استفاده از دو مشتق، حالت $$ x _ {k+1}$$ در گام $$k + 1 $$ محاسبه خواهد شد.

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

شکل ۲: نتایج شبیه‌سازی مدار RLC
شکل ۲: نتایج شبیه‌سازی مدار RLC

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

حل‌کننده‌های ODE متلب محیطی را برای انتگرال‌گیری عددی فراهم می‌کنند. تنها کافی است $$ f ( x , u )$$ را تعریف کرده و حل‌کننده را فراخوانی کنیم.

در یک ام‌فایل (m-file) به نام fun_RLC.m، تابعی با نام fun_RLC را برای محاسبه $$ f ( xx , u ) $$ تعریف می‌کنیم. برای استفاده از حل‌کننده‌های ODE، ابتدا $$u$$ را تعریف می‌کنیم. در اینجا، $$u = 1 $$ را به عنوان یک ورودی پله در نظر می‌گیریم تا پاسخ پله را مشاهده کنیم.

برنامه اصلی فراخوانی حل‌کننده ODE به صورت زیر است:

دقت کنید که در حل‌کننده‌های ODE باید نام تابع را برای محاسبه مشتق بردار حالت نوشت. ورودی‌های دوم و سوم تابع $$\text{ode45}$$ مدت زمان شبیه‌سازی و متغیرهای حالت اولیه هستند. همان‌طور که می‌بینیم، نتایج شبیه‌سازی مشابه شکل ۲ است.

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

در این بخش، دو روش را برای شبیه‌سازی مدار در سیمولینک بیان می‌کنیم. البته شبیه‌سازی را می‌توان با کمک کتابخانه‌هایی مانند Simscape Electrical در سیمولینک نیز انجام داد که در این آموزش به آن نمی‌پردازیم.

تشکیل مدل با تابع توکار Embedded Function

گام مهم فرایند تشکیل مدل شناسایی بردار متغیرهای حالت $$ x $$ و محاسبه مشتق $$ \dot {x } = f ( x , u ) $$ از بردار ورودی $$u$$ و خودِ $$ x $$ است. پس از آن، حالت و مشتق آن با یک انتگرال‌گیر با هم مرتبط می‌شوند. با تنظیم حالت اولیه $$ x ( 0 ) $$ در انتگرال‌گیر، مدل آماده اجرا خواهد بود.

شکل ۳: تشکیل مدل دینامیکی مبتنی بر انتگرال در سیمولینک
شکل ۳: تشکیل مدل دینامیکی مبتنی بر انتگرال در سیمولینک

شکل ۳ بلوک‌های تشکیل دهنده یک مدل دینامیکی را نشان می‌دهند که به صورت $$ \dot { x } = f ( x , u ) $$ توصیف می‌شود. از یک انتگرال‌گیر نیز برای برقراری ارتباط حالت و مشتق آن استفاده شده است. ورودی انتگرال‌گیر باید $$ f ( x , u ) $$ باشد، در حالی که خروجی آن، $$ x $$ است. $$f (x , u )$$ با استفاده از یک تابع توکار (Embedded Function) متلب محاسبه می‌شود. ورودی تابع یک بردار شامل منبع ولتاژ $$ v _ s $$ و متغیرهای حالت $$ x $$ است. $$ v _ s $$ و $$ x $$ به بلوک Mux وارد می‌شوند و یک بردار را تولید می‌کنند. درون تابع fcn_RLC، $$v _ s $$ و $$ x $$ از هم تفکیک شده‌اند. توجه کنید که ورودی دیگری به نام par نیز وجود دارد که یک ساختار (Structure) شامل مقادیر $$ R$$، $$ L $$ و $$ C $$ است.

شکل ۴: تنظیم ورودی تابع توکار متلب به عنوان یک پارامتر
شکل ۴: تنظیم ورودی تابع توکار متلب به عنوان یک پارامتر

همان‌طور که در شکل ۴ نشان داده شده است، متلب par را به عنوان یک ورودی در نظر می‌گیرد. برای آنکه par به عنوان یک پارامترِ مشخص در نظر گرفته شود، باید از گزینه Edit Data استفاده کرده و آن را به عنوان یک پارارمتر انتخاب کنیم.

یک مورد مهم‌تر، تنظیم صحیح مقادیر اولیه انتگرال‌گیر،‌ مخصوصاً‌ اندازه $$ x ( 0 ) $$ است. در این مثال، $$ x ( 0 ) $$ باید یک بردار شامل مقدار جریان اولیه و ولتاژ اولیه باشد. بنابراین، مقدار بردار اولیه را [۰,۰] یا (zeros(2,1 قرار می‌دهیم.

در مرحله شبیه‌سازی، می‌توانیم در قسمت تنظیمات سیمولینک، دوره شبیه‌سازی، روش انتگرال‌گیری عددی و اندازه گام را تعیین کنیم.

شکل ۵: تنظیم صحیح $$ x ( 0 ) $$ 
شکل ۵: تنظیم صحیح $$ x ( 0 ) $$

تشکیل مدل بر اساس S-function

در رویکرد S-function، کل سیستم در یک بلوک تعریف می‌شود که در شکل ۶ نشان داده شده است. یک S-function قالب مشخص و ثابتی برای تعریف ابعاد سیستم، حالت اولیه، مشتق حالت و… دارد. برای مدار RLC مورد نظر، از قالب سیستم پیوسته استفاده می‌کنیم.

شکل ۶: تشکیل مدل در سیمولینک با استفاده از S-function
شکل ۶: تشکیل مدل در سیمولینک با استفاده از S-function

S-function سه مورد دارد که باید به آن‌ها توجه کنیم: (الف) مقداردهی اولیه، (ب) محاسبه مشتق و (ج) تعریف خروجی. تنظیمات بردار حالت اولیه ورودی، خروجی و حالت در ابتدای کار تنظیم می‌شوند. این کار با تابع mdlInitializeSizes انجام می‌شود. کار دوم، محاسبه مشتق است که با کمک تابع mdlDerivatives انجام می‌گیرد. کار سوم، تعریف خروجی است که با تابع mdlOutputs آن را انجام می‌دهیم. برنامه S-function به صورت زیر است:

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

روش‌های شبیه‌سازی که در بخش قبل به آن‌ها اشاره کردیم، به یک سیستم دینامیکی عمومی قابل اعمال هستند. برای سیستم‌های خطی، می‌توانیم مستقیماً از دستور‌های متلب به منظور شبیه‌سازی استفاده کنیم. جعبه‌ابزار کنترل متلب توابع زیادی برای تحلیل و شبیه‌سازی سیستم‌های خطی نامتغیر با زمان (LTI) دارد. با نوشتن چند خط دستور می‌توان مدل یک سیستم LTI را ساخت و آن را در حوزه زمان شبیه‌سازی کرد. با کمک این دستورها، نیازی به نوشتن برنامه‌های طولانی نداریم.

در ادامه، با در نظر گرفتن مدار RLC، مدل LTI آن را در قالب تابع تبدیل یا فضای حالت خواهیم ساخت.

تعریف مدل‌های خطی

اولین گام، تعریف مدل LTI مدار RLC است. در بخش‌های قبل، مدل این مدار را در فرم زیر به دست آوردیم:

$$ \large \begin {align*}
\dot { x } & = A x + B u \\
y & = C x + D u
\end {align*} $$

با تعریف $$A$$، $$B$$، $$C$$ و $$D$$ این مدل فضای حالت را می‌توان، در یک خط، به صورت زیر تعریف کرد:

تابع تبدیل مدل نیز به صورت زیر به دست می‌آید:

$$\text{sys2}$$ به فرم یک تابع تبدیل لاپلاس است.

یک رویکرد دیگر تعریف مدل در حوزه فرکانس است. بدین منظور، مدل امپدانس را برای هر عنصر مدار بررسی می‌کنیم. مدل امپدانس اصطلاحی است که نسبت نِمُو یا تغییر ولتاژ به نمو جریان $$ \frac { \Delta V (s)} { \Delta I (s)} $$ را در حوزه فرکانس توصیف می‌کند. تکنیک مدل‌سازی امپدانس، یک تکنیک مدل‌سازی پرکاربرد در تحلیل مبدل‌های الکترونیک قدرت است. مدل امپدانس مقاومت همان $$R$$ و مدل امپدانس سلف و خازن نیز، به ترتیب، $$Ls$$ و $$ \frac { 1 } { C s } $$ است.

بنابراین، می‌توانیم عبارت تغییر جریان را با قانون اهم به دست آوریم. تابع تبدیل $$ \Delta V ( s) $$ به $$ \Delta I ( s)$$ به صورت زیر است:

$$ \large \frac { \Delta I (s)} { \Delta V _ s (s) } = \frac { 1 } { R + L s + 1/ (Cs)} $$

در یک سیستم خطی، هنگام توصیف تابع تبدیل، معمولاً از نوشتن $$ \Delta $$ چشم‌پوشی می‌کنیم. همچنین $$s$$ داخل پرانتز را نمی‌نویسیم.

$$ \large \frac { I } { V _ s } = \frac { 1 } { R + L s + 1/ (Cs)}
\\ \large \frac { V _C } { V _ s } = \frac {I \times \frac {1 } {Cs} } {V _ s } \\
\large \frac { V _ L } { V _ s} = s L \frac { I } { V _ s}
$$

توابع تبدیل بالا روابط ورودی/خروجی جریان، ولتاژ خازن و ولتاژ سلف در برابر ولتاژ‌ ورودی را تعریف می‌کنند. این توابع تبدیل را می‌توان با استفاده از عملگر لاپلاسِ s در متلب بیان کرد:

خط دوم رابطه ورودی/خروجی ولتاژ و جریان منبع را تعریف می‌کند. خط سوم نیز رابطه ورودی/خروجی ولتاژ منبع و ولتاژ خازن را معرفی می‌کند. خط چهارم برای تعریف رابطه ورودی/خروجی بین ولتاژ منبع و ولتاژ‌ سلف است.

پاسخ زمانی

با تعریف مدل، می‌توانیم شبیه‌سازی حوزه زمان را با استفاده از دستورهای متلب انجام دهیم.

مثال ۱: پاسخ زمانی جریان $$ i ( t) $$ را وقتی ولتاژ منبع یک پاسخ پله باشد.

حل: پاسخ پله را می‌توان با استفاده از دستور step متلب به دست آورد. برنامه متلب مورد نظر به صورت زیر است:

مثال ۲: پاسخ حوزه زمان جریان $$i(t)$$ را وقتی که ولتاژ‌ منبع از ۰ به یک ولتاژ‌سینوسی با فرکانس ۶ هرتز تغییر می‌کند، به دست آورید.

حل: به طور کلی، می‌توانیم از lsim برای شبیه‌سازی پاسخ به هر ورودی $$u$$ استفاده کنیم. کد مربوط به این مثال به صورت زیر است:

شکل ۷ نمودارهای مربوط بو دو دستور step و lsim را نشان می‌دهد.

شکل ۷: پاسخ ورودی پله و ورودی سینوسی
شکل ۷: پاسخ ورودی پله و ورودی سینوسی

تحلیل سیستم خطی

در یک سیستم تک‌ورودی-تک‌خروجی (SISO)، می‌توانیم تحلیل سیستم خطی را با استفاده از دستور bode متلب برای به دست آوردن نمودارهای بُد، دستور pole برای یافتن قطب‌ها، دستور zero برای یافتن صفرهای سیستم و pzmap برای پیدا کردن قطب‌ها و صفرها در فضای حقیقی-موهومی انجام دهیم.

شکل ۸ با استفاده از دستور زیر رسم شده است.

شکل ۸: نمودارهای بُد برای $$I/V_s$$ و $$V_c/V_s$$
شکل ۸: نمودارهای بُد برای $$I/V_s$$ و $$V_c/V_s$$

نمودارهای بُد (اندازه) شکل ۸ مقدار پیک ۵۰۰ هرتز را نشان می‌دهند. این موضوع نشان دهنده وجود نوسان‌هایی با فرکانس ۵۰۰ هرتز است. اگر مقاومت کوچک‌تر باشد، مقدار این پیک محسوس‌تر خواهد بود. هرچه پیک نمودار اندازه بُد بیشتر باشد، نوسان در فرکانس ۵۰۰ هرتز میرایی کمتری خواهد داشت. با مقایسه شکل‌های ۷ و ۲ می‌توان دریافت که فرکانس‌ نوسان‌ها تقریباً ۵۰۰ هرتز است.

اگر این مطلب برایتان مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

telegram
twitter

سید سراج حمیدی

«سید سراج حمیدی» دانش‌آموخته مهندسی برق است. فعالیت‌های کاری و پژوهشی او در زمینه سیستم‌های فتوولتائیک و کاربردهای کنترل در قدرت بوده و، در حال حاضر، آموزش‌های مهندسی برق و ریاضیات مجله فرادرس را می‌نویسد.

بر اساس رای ۱ نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

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