⏱️ مدت زمان مطالعه: حدود 30 دقیقه
🚀مقدمه
در مهندسی کنترل، بسیاری از سیستمهای صنعتی پیش از پیادهسازی روی تجهیزات واقعی، در محیط شبیهسازی مورد بررسی قرار میگیرند. این کار به مهندس کنترل اجازه میدهد رفتار سیستم، عملکرد کنترلکننده و پاسخ سیستم به ورودیهای مختلف را بدون نیاز به آزمایش مستقیم روی تجهیزات واقعی بررسی کند.
یکی از پرکاربردترین ابزارها برای این منظور، Simulink است که بهعنوان یکی از محیطهای قدرتمند نرمافزار MATLAB برای مدلسازی، شبیهسازی و تحلیل سیستمهای دینامیکی مورد استفاده قرار میگیرد.
در این مقاله، مفاهیم مقدماتی Simulink را با تمرکز بر کاربرد آن در سیستمهای کنترل صنعتی بررسی میکنیم و در ادامه یک مدل ساده کنترلی را مرحلهبهمرحله ایجاد خواهیم کرد.
💻Simulink چیست و چه کاربردی در مهندسی کنترل دارد؟
Simulink یک محیط گرافیکی برای مدلسازی و شبیهسازی سیستمهای دینامیکی است. برخلاف برنامهنویسی معمولی که در آن رفتار سیستم با مجموعهای از دستورات نوشته میشود، در Simulink مدل سیستم با استفاده از بلوکهای مختلف ساخته میشود.
هر بلوک میتواند یک وظیفه مشخص داشته باشد؛ برای مثال:
- تولید یک سیگنال ورودی
- انجام عملیات ریاضی
- نمایش خروجی
- مدلسازی تابع تبدیل یک سیستم
- ایجاد فیدبک
- پیادهسازی کنترلکننده PID
- انجام انتگرالگیری یا مشتقگیری
- ایجاد تأخیر زمانی
- مدلسازی سیستمهای فیزیکی
بلوکها با استفاده از خطوط سیگنال به یکدیگر متصل میشوند و در نهایت یک مدل کامل از سیستم ایجاد میشود.
💡چرا Simulink در کنترل صنعتی اهمیت دارد؟
در یک سیستم کنترل صنعتی معمولاً با اجزایی مانند سنسورها، عملگرها، کنترلکنندهها و فرایند صنعتی مواجه هستیم.
برای مثال، در یک سیستم کنترل دما میتوان ساختار کلی زیر را در نظر گرفت:
دمای مطلوب → کنترلکننده → عملگر → فرایند حرارتی → سنسور → فیدبک
پیش از اجرای چنین ساختاری روی یک سیستم واقعی، میتوان آن را در Simulink مدلسازی کرد و مواردی مانند موارد زیر را بررسی نمود:
- زمان پاسخ سیستم
- خطای ماندگار
- فراجهش
- پایداری سیستم
- اثر تغییر پارامترهای کنترلکننده
- عملکرد سیستم در برابر تغییر ورودی
- تأثیر اغتشاش
- عملکرد کنترلکننده PID
به همین دلیل، Simulink یکی از ابزارهای مهم در آموزش و طراحی سیستمهای کنترل است.
🛠️آشنایی با محیط Simulink
برای اجرای Simulink ابتدا MATLAB را اجرا کنید.
در پنجره MATLAB میتوانید عبارت زیر را در Command Window وارد کنید:
simulink
با اجرای این دستور، پنجره Simulink باز میشود.
در این محیط معمولاً با بخشهایی مانند موارد زیر سروکار داریم:
📚Library Browser
در Library Browser مجموعه بزرگی از بلوکهای آماده Simulink قرار دارد.
برخی از مهمترین دستهها عبارتاند از:
- Sources
- Sinks
- Continuous
- Discrete
- Math Operations
- Signal Routing
- Commonly Used Blocks
برای شروع کار، آشنایی با همین گروهها کافی است.
📦آشنایی با بلوکهای پرکاربرد Simulink
در پروژههای کنترل، چند بلوک بیش از سایر بلوکها مورد استفاده قرار میگیرند.
🪜 1. بلوک Step
این بلوک یک ورودی پلهای تولید میکند.
برای مثال اگر بخواهیم سیستم را با یک تغییر ناگهانی در مقدار مرجع آزمایش کنیم، میتوانیم از Step استفاده کنیم.
در سیستمهای کنترل، ورودی پله یکی از متداولترین ورودیها برای بررسی پاسخ گذرا است.
🌊 2. بلوک Sine Wave
این بلوک یک سیگنال سینوسی ایجاد میکند.
از آن میتوان برای بررسی رفتار سیستم در برابر ورودیهای متناوب استفاده کرد.
برای مثال:
Sine Wave → System → Scope
⚙️ 3. بلوک Transfer Fcn
بلوک Transfer Fcn برای مدلسازی تابع تبدیل سیستمهای خطی پیوسته استفاده میشود.
📊 4. بلوک Scope
Scope برای مشاهده سیگنالها و خروجی سیستم استفاده میشود.
بهعنوان مثال اگر خروجی سیستم را به Scope متصل کنیم، میتوانیم شکل زمانی پاسخ سیستم را مشاهده کنیم.
یک ساختار ساده میتواند به شکل زیر باشد:
Step
│
▼
Transfer Fcn
│
▼
Scope
این یکی از سادهترین مدلهایی است که میتوان برای شروع کار با Simulink ایجاد کرد.
رای ساخت مدلهای واقعیتر، به بلوکهایی برای انجام محاسبات، ایجاد فیدبک، پیادهسازی کنترلکننده و مدلسازی محدودیتهای فیزیکی نیاز داریم. در ادامه با چند بلوک مهم دیگر Simulink آشنا میشویم.
➕ 5. بلوک Sum
بلوک Sum برای جمع یا تفریق سیگنالها مورد استفاده قرار میگیرد.
یکی از مهمترین کاربردهای این بلوک در سیستمهای کنترل، محاسبه خطای سیستم است. در یک سیستم کنترل فیدبک، مقدار مرجع با مقدار فیدبک مقایسه میشود و اختلاف این دو بهعنوان خطا وارد کنترلکننده خواهد شد.
بهصورت ساده میتوان نوشت:
e(t) = r(t) - y(t)
که در آن:
r(t)مقدار مرجع سیستم است.y(t)خروجی سیستم یا سیگنال فیدبک است.e(t)خطای سیستم است.
برای مثال، ساختار ساده زیر را در نظر بگیرید:
Reference ──► Sum ──► Controller
▲
│
Feedback
در بلوک Sum میتوان مشخص کرد که هر ورودی با علامت مثبت یا منفی وارد محاسبات شود. این ویژگی باعث میشود بتوان از آن برای ایجاد ساختارهای مختلف جمع، تفریق و فیدبک استفاده کرد.
✖️ 6. بلوک Gain
بلوک Gain برای ضرب یک سیگنال در یک مقدار مشخص استفاده میشود.
اگر مقدار ورودی u(t) باشد و بهره برابر K در نظر گرفته شود، خروجی بلوک به شکل زیر خواهد بود:
y(t) = K u(t)
این بلوک در سیستمهای کنترل کاربرد بسیار زیادی دارد. برای مثال، میتوان از Gain برای اعمال بهره یک کنترلکننده تناسبی یا تغییر مقیاس یک سیگنال استفاده کرد.
در یک کنترلکننده تناسبی، رابطه کنترل به شکل زیر است:
u(t) = Kp e(t)
در این حالت، میتوان از یک بلوک Gain با مقدار Kp برای پیادهسازی بخش تناسبی کنترلکننده استفاده کرد.
∫ 7. بلوک Integrator
بلوک Integrator وظیفه انتگرالگیری از سیگنال ورودی را بر عهده دارد.
اگر ورودی این بلوک u(t) باشد، خروجی آن بهصورت کلی از رابطه زیر به دست میآید:
y(t) = ∫ u(t) dt
Integrator در مدلسازی بسیاری از سیستمهای دینامیکی کاربرد دارد. برای مثال، در مدلسازی سیستمهای مکانیکی میتوان از آن برای ارتباط بین سرعت و موقعیت استفاده کرد.
همچنین بخش انتگرالی کنترلکنندههای PI و PID را میتوان با استفاده از این بلوک مدلسازی کرد.
یکی از کاربردهای مهم بخش انتگرالی در کنترل، کاهش یا حذف خطای ماندگار سیستم است.
📐 8. بلوک Derivative
بلوک Derivative برای محاسبه مشتق سیگنال ورودی استفاده میشود.
اگر ورودی u(t) باشد، خروجی بلوک به شکل زیر خواهد بود:
y(t) = du(t) / dt
این بلوک در مدلسازی سیستمهای دینامیکی و همچنین پیادهسازی بخش مشتقی کنترلکننده PID کاربرد دارد.
در بخش مشتقی کنترلکننده PID، تغییرات خطا در طول زمان مورد توجه قرار میگیرد. به همین دلیل، این بخش میتواند در بهبود رفتار گذرای سیستم و کاهش نوسانات مؤثر باشد.
البته در سیستمهای واقعی، استفاده مستقیم از مشتقگیر ایدهآل میتواند حساسیت سیستم به نویز را افزایش دهد. به همین دلیل، در بسیاری از کاربردهای عملی از فیلتر مناسب در کنار بخش مشتقی استفاده میشود.
🎛️ 9. بلوک PID Controller
بلوک PID Controller یکی از مهمترین بلوکهای کنترلی در Simulink است.
کنترلکننده PID از سه بخش اصلی تشکیل میشود:
- P — Proportional: بخش تناسبی
- I — Integral: بخش انتگرالی
- D — Derivative: بخش مشتقی
رابطه کلی کنترلکننده PID را میتوان بهصورت زیر نوشت:
u(t) = Kp e(t) + Ki ∫e(t)dt + Kd de(t)/dt
هر یک از این بخشها نقش متفاوتی در عملکرد سیستم دارند. بهطور کلی:
- بخش P به مقدار فعلی خطا واکنش نشان میدهد.
- بخش I خطای تجمعیافته در طول زمان را در نظر میگیرد.
- بخش D به نرخ تغییرات خطا توجه میکند.
در Simulink میتوان از بلوک آماده PID Controller استفاده کرد و پارامترهای Kp، Ki و Kd را تنظیم نمود.
کنترلکننده PID در بسیاری از فرایندهای صنعتی مانند کنترل دما، سرعت، فشار، سطح و موقعیت مورد استفاده قرار میگیرد.
🔀 10. بلوک Mux
بلوک Mux برای ترکیب چند سیگنال در یک مسیر سیگنال استفاده میشود.
برای مثال، فرض کنید بخواهیم سه سیگنال مختلف را به یک Scope ارسال کنیم. میتوان این سیگنالها را با استفاده از Mux در یک مسیر قرار داد و سپس خروجی Mux را به Scope متصل کرد.
ساختار ساده آن به شکل زیر است:
Signal 1 ──┐
Signal 2 ──┼──► Mux ──► Scope
Signal 3 ──┘
این بلوک بهخصوص هنگام مقایسه چند سیگنال یا مشاهده همزمان چند خروجی در یک مدل کاربرد دارد.
🚧 11. بلوک Saturation یا اشباع
در سیستمهای واقعی، بسیاری از تجهیزات دارای محدودیت فیزیکی هستند. برای مثال، یک عملگر نمیتواند ولتاژ یا نیروی نامحدودی تولید کند.
بلوک Saturation برای مدلسازی چنین محدودیتهایی استفاده میشود.
برای مثال، فرض کنید یک عملگر فقط میتواند سیگنالی بین -10 و +10 تولید کند. در این حالت میتوان حد پایین و بالای بلوک Saturation را بهترتیب برابر با -10 و +10 قرار داد.
به این ترتیب:
u > 10 → 10
u < -10 → -10
استفاده از Saturation باعث میشود مدل شبیهسازی به شرایط واقعی سیستم نزدیکتر شود.
این بلوک در شبیهسازی سیستمهای صنعتی که دارای محدودیت در عملگرها هستند اهمیت زیادی دارد.
⏱️ 12. بلوک Transport Delay یا انتقال تاخیر زمانی
بلوک Transport Delay برای مدلسازی تأخیر زمانی در سیستم استفاده میشود.
در بسیاری از فرایندهای صنعتی، تغییر در ورودی بلافاصله در خروجی مشاهده نمیشود. برای مثال، در یک فرایند حرارتی ممکن است پس از تغییر توان ورودی، مدتی طول بکشد تا دمای سنسور تغییر کند.
در چنین شرایطی میتوان از Transport Delay برای ایجاد تأخیر زمانی در مدل استفاده کرد.
برای مثال:
Input ──► Transport Delay ──► System
اگر مقدار تأخیر برابر با T باشد، سیگنال خروجی با یک تأخیر زمانی نسبت به ورودی ظاهر خواهد شد.
وجود تأخیر در یک سیستم کنترل میتواند روی پایداری و عملکرد کنترلکننده تأثیر بگذارد. به همین دلیل، مدلسازی آن در شبیهسازی بسیاری از فرایندهای صنعتی اهمیت دارد.
📝جمعبندی بلوکهای مهم
تا اینجا با مجموعهای از بلوکهای پرکاربرد Simulink آشنا شدیم. هر یک از این بلوکها وظیفه مشخصی دارند، اما در یک مدل کنترلی معمولاً چند بلوک در کنار یکدیگر قرار میگیرند تا ساختار کامل سیستم ایجاد شود.
بهعنوان مثال، یک سیستم کنترل فیدبک میتواند از ترکیب Step، Sum، PID Controller، Transfer Fcn و Scope تشکیل شود.
نکته: آشنایی با این بلوکها تنها اولین مرحله یادگیری Simulink است. در یک پروژه واقعی، مهندس کنترل باید بتواند بر اساس مدل ریاضی سیستم، بلوکهای مناسب را انتخاب کرده و آنها را به شکل صحیح به یکدیگر متصل کند.
| بلوک | کاربرد اصلی | کاربرد در کنترل |
|---|---|---|
| 🪜 Step | تولید ورودی پله | بررسی پاسخ گذرا |
| 🌊 Sine Wave | تولید سیگنال سینوسی | بررسی پاسخ به ورودی متناوب |
| ➕ Sum | جمع و تفریق سیگنالها | محاسبه خطای فیدبک |
| ✖️ Gain | ضرب سیگنال در ضریب | اعمال بهره |
| ⚙️ Transfer Fcn | مدلسازی تابع تبدیل | مدلسازی دینامیک سیستم |
| ∫ Integrator | انتگرالگیری | مدلسازی سیستمهای دینامیکی |
| 📐 Derivative | مشتقگیری | بخش مشتقی کنترلکننده |
| 🎛️ PID Controller | پیادهسازی PID | کنترل فرایند |
| 📊 Scope | نمایش سیگنال | مشاهده پاسخ سیستم |
| 🔀 Mux | ترکیب سیگنالها | نمایش چند سیگنال |
| 🚧 Saturation | محدود کردن دامنه | مدلسازی محدودیت عملگر |
| ⏱️ Transport Delay | ایجاد تأخیر | مدلسازی فرایندهای دارای تأخیر |
در بخش بعد، یک مدل کنترل فیدبک ساده را در Simulink از ابتدا ایجاد میکنیم و نحوه اتصال بلوکها، تعریف ورودی و مشاهده پاسخ سیستم را مرحلهبهمرحله بررسی خواهیم کرد.
💻ساخت اولین مدل در Simulink
اکنون که با تعدادی از بلوکهای مهم Simulink آشنا شدیم، بهتر است یک مثال ساده را بهصورت عملی شبیهسازی کنیم.
در این مثال، یک سیستم خطی ساده را با استفاده از تابع تبدیل زیر مدلسازی خواهیم کرد:

هدف این مثال، آشنایی با فرایند ایجاد یک مدل در Simulink، قرار دادن بلوکها، تنظیم پارامترها، اتصال بلوکها و مشاهده پاسخ سیستم است.
1. ایجاد یک مدل جدید
برای شروع، MATLAB را اجرا کنید و در پنجره Command Window عبارت زیر را وارد کنید:
simulink
پس از باز شدن محیط Simulink، یک Blank Model ایجاد کنید.
پنجره مدل، محیطی است که در آن بلوکهای مختلف قرار گرفته و با استفاده از خطوط سیگنال به یکدیگر متصل میشوند.
2. اضافه کردن بلوک Step
در مرحله اول به یک ورودی برای سیستم نیاز داریم. برای این کار از بلوک Step استفاده میکنیم.
بلوک Step را میتوان از قسمت Library Browser و بخش Sources پیدا کرد.
این بلوک یک تغییر پلهای در ورودی ایجاد میکند و برای بررسی پاسخ گذرای سیستم بسیار مناسب است.
پس از قرار دادن بلوک در محیط مدل، میتوان پارامترهای آن را تنظیم کرد.
برای مثال، میتوان مقدار Step Time را برابر 1 قرار داد تا ورودی سیستم در زمان یک ثانیه تغییر کند.
ساختار مدل در این مرحله به شکل زیر خواهد بود:
🪜 Step
3. اضافه کردن بلوک Transfer Fcn
در مرحله بعد باید مدل ریاضی سیستم را وارد Simulink کنیم.
برای این کار از بلوک Transfer Fcn استفاده میکنیم.
این بلوک را میتوان از مسیر زیر پیدا کرد:
Library Browser → Continuous → Transfer Fcn
پس از قرار دادن بلوک در مدل، باید صورت و مخرج تابع تبدیل را در پارامترهای آن وارد کنیم.
با توجه به اینکه تابع تبدیل مورد نظر ما به صورت G(s)= 1/s+2 است بنابراین:
Numerator:
[1]
Denominator:
[1 2]
در نتیجه، Simulink تابع تبدیل G(s) را در مدل پیادهسازی خواهد کرد.
4. اضافه کردن بلوک Scope
اکنون به یک ابزار برای مشاهده خروجی سیستم نیاز داریم.
برای این کار از بلوک Scope استفاده میکنیم.
بلوک Scope معمولاً در بخش Sinks قرار دارد و برای نمایش سیگنالها در حوزه زمان استفاده میشود.
با اتصال خروجی Transfer Fcn به Scope، میتوانیم پاسخ سیستم را پس از اجرای شبیهسازی مشاهده کنیم.
5. اتصال بلوکها
اکنون سه بلوک اصلی مدل را در اختیار داریم:
- 🪜 Step
- ⚙️ Transfer Fcn
- 📊 Scope
این بلوکها باید به ترتیب زیر به یکدیگر متصل شوند:
🪜 Step
│
▼
⚙️ Transfer Fcn
│
▼
📊 Scope
در Simulink، خطوطی که بین بلوکها قرار میگیرند مسیر انتقال سیگنال را مشخص میکنند.
بنابراین ورودی Step وارد تابع تبدیل شده و خروجی سیستم برای مشاهده به Scope ارسال میشود.
6. تنظیم زمان شبیهسازی
پیش از اجرای مدل، باید مدت زمان شبیهسازی را مشخص کنیم.
برای این مثال میتوان Stop Time را برابر با 10 ثانیه در نظر گرفت.
به این ترتیب، Simulink رفتار سیستم را از زمان شروع شبیهسازی تا زمان 10 ثانیه محاسبه خواهد کرد.
در مثالهای ساده آموزشی، انتخاب زمان شبیهسازی مناسب اهمیت زیادی دارد؛ زیرا اگر زمان شبیهسازی بسیار کوتاه باشد، ممکن است بخش مهمی از پاسخ سیستم مشاهده نشود.
7. اجرای شبیهسازی
پس از اتصال بلوکها و تنظیم پارامترها، میتوان شبیهسازی را اجرا کرد.
برای این کار روی دکمه Run در محیط Simulink کلیک کنید.
پس از اجرای موفق شبیهسازی، خروجی سیستم در Scope قابل مشاهده خواهد بود.
8. مشاهده پاسخ سیستم در Scope
با باز کردن Scope، نمودار خروجی سیستم نمایش داده میشود.
از آنجا که سیستم مورد نظر دارای تابع تبدیل [G(s)=1/s+2] است، پاسخ آن به ورودی پله بهصورت یک پاسخ صعودی و بدون نوسان خواهد بود که بهتدریج به یک مقدار نهایی نزدیک میشود.
این مثال ساده، اولین تجربه ما از تبدیل یک مدل ریاضی به یک مدل شبیهسازیشده در Simulink است.
در واقع، کاری که انجام دادیم این بود که:
مدل ریاضی
↓
G(s) = 1/(s+2)
↓
انتخاب بلوک مناسب
↓
Transfer Fcn
↓
اتصال ورودی و خروجی
↓
اجرای شبیهسازی
↓
مشاهده پاسخ در Scope
نکته مهم: در پروژههای واقعی، مدل سیستم ممکن است بسیار پیچیدهتر از مثال بالا باشد و شامل چندین تابع تبدیل، معادلات دیفرانسیل، تأخیر زمانی، محدودیت عملگر و کنترلکننده باشد. با این حال، منطق اصلی کار در Simulink مشابه همین مثال ساده است.
🔄از مدل ساده تا سیستم کنترل فیدبک
در مثال قبلی، فقط پاسخ یک سیستم را در برابر یک ورودی پله مشاهده کردیم. اما در یک سیستم کنترل واقعی، معمولاً هدف این نیست که فقط رفتار سیستم را مشاهده کنیم؛ بلکه باید بتوانیم خروجی سیستم را کنترل کنیم و آن را به مقدار مطلوب برسانیم.
برای این کار از ساختار کنترل فیدبک استفاده میشود.
در یک سیستم فیدبک، مقدار خروجی اندازهگیری شده با مقدار مرجع مقایسه میشود و اختلاف آنها بهعنوان خطا وارد کنترلکننده میشود.
بهصورت ساده:[e(t)=r(t)-y(t)]
که در آن:
- (r(t)): مقدار مرجع یا Reference
- (y(t)): خروجی سیستم
- (e(t)): خطای سیستم
کنترلکننده با استفاده از این خطا، سیگنال کنترلی مناسب را تولید میکند.
ساختار کلی چنین سیستمی را میتوان به شکل زیر نمایش داد:
┌──────────────────────────────┐ │ │ │ ▼ Reference ──► ➕ Sum ──► Controller ──► Plant ──► Output ▲ │ │ │ └────────────── Feedback ─────────────┘
در این ساختار:
Reference → مقدار مطلوب سیستم
Sum → محاسبه خطا
Controller → تولید فرمان کنترلی
Plant → سیستم یا فرایند مورد کنترل
Feedback → انتقال اطلاعات خروجی به ورودی سیستم کنترل
🔁ایجاد سیستم فیدبک در Simulink
اکنون میخواهیم همین ساختار را در Simulink ایجاد کنیم.
برای این مثال از همان تابع تبدیل ساده قبلی یعنی [G(s)=1/s+2] استفاده میکنیم:
هدف این است که سیستم بتواند خروجی خود را به مقدار مرجع نزدیک کند.
برای ساخت این مدل به بلوکهای زیر نیاز داریم:
- 🪜 Step
- ➕ Sum
- 🎛️ Gain یا یک کنترلکننده ساده
- ⚙️ Transfer Fcn
- 📊 Scope
در این مرحله برای ساده نگه داشتن مدل، میتوانیم بهجای PID از یک Gain استفاده کنیم و در ادامه همین ساختار را با کنترلکننده PID توسعه دهیم.
1. اضافه کردن بلوک Step
ابتدا یک بلوک Step به مدل اضافه کنید.
این بلوک مقدار مرجع سیستم را تولید خواهد کرد.
برای مثال، میتوانیم مقدار اولیه را برابر صفر و مقدار نهایی را برابر یک قرار دهیم:
Initial Value = 0
Final Value = 1
Step Time = 1
در این حالت، مقدار مرجع در زمان یک ثانیه از صفر به یک تغییر خواهد کرد.
بنابراین هدف سیستم این است که خروجی خود را به مقدار یک برساند.
2. اضافه کردن بلوک Sum
در مرحله بعد، یک بلوک Sum به مدل اضافه کنید.
این بلوک برای محاسبه خطای سیستم استفاده خواهد شد.
برای یک سیستم فیدبک منفی، باید ورودی مرجع با علامت مثبت و سیگنال فیدبک با علامت منفی وارد بلوک Sum شوند:
+
Reference ──► Sum ──► Error
▲
│
- │
│
Feedback
بنابراین خروجی Sum برابر خواهد بود با: e(t)=r(t)-y(t)
برای تنظیم علامتهای ورودی Sum میتوان روی بلوک دوبار کلیک کرد و تنظیمات مربوط به List of signs را تغییر داد.
برای یک فیدبک منفی معمولاً ساختار علامتها به شکل زیر است:
+-
در این حالت، ورودی اول با علامت مثبت و ورودی دوم با علامت منفی وارد محاسبه میشود.
3. اضافه کردن بلوک Gain
اکنون باید خطای محاسبهشده وارد یک کنترلکننده ساده شود.
در این مرحله از بلوک Gain استفاده میکنیم.
بلوک Gain را میتوان از بخش Math Operations پیدا کرد.
فرض کنید مقدار بهره کنترلکننده برابرK=2 باشد، در این صورت رابطه کنترل به شکل زیر خواهد بود:
u(t)=K e(t)
یا به عبارت دیگر:
u(t)=2e(t)
بنابراین بلوک Gain نقش یک کنترلکننده تناسبی ساده را ایفا میکند.
ساختار بخش اصلی مدل اکنون به شکل زیر است:
🪜 Step ──► ➕ Sum ──► ✖️ Gain ──► ⚙️ Transfer Fcn
4. اضافه کردن بلوک Transfer Fcn
در مرحله بعد، بلوک Transfer Fcn را به خروجی Gain متصل میکنیم.
تابع تبدیل سیستم همان مثال قبلی است:
G(s)=1/s+2
بنابراین تنظیمات Transfer Fcn بهصورت زیر خواهد بود:
Numerator:
[1]
Denominator:
[1 2]
این بلوک نقش Plant یا فرایندی را دارد که میخواهیم آن را کنترل کنیم.
5. ایجاد مسیر فیدبک
اکنون باید خروجی سیستم را دوباره به ورودی Sum برگردانیم.
برای این کار، یک خط از خروجی Transfer Fcn به ورودی منفی Sum ایجاد کنید.
در این مثال فرض میکنیم سنسور دارای بهره واحد است؛ بنابراین نیازی به اضافه کردن بلوک جداگانه برای سنسور نداریم.
ساختار کامل مدل به شکل زیر خواهد بود:
┌─────────────────────────┐
│ │
│ ▼
🪜 Step ──► ➕ Sum ──► ✖️ Gain ──► ⚙️ Transfer Fcn ──► 📊 Scope
▲ │
│ │
└──────────── Feedback ────────────────┘
این مدل، یک سیستم کنترل فیدبک منفی ساده را تشکیل میدهد.
6. اجرای شبیهسازی
پس از اتصال تمام بلوکها، میتوان زمان شبیهسازی را مثلاً برابر 10 ثانیه قرار داد و روی گزینه Run کلیک کرد.
خروجی سیستم در بلوک Scope قابل مشاهده خواهد بود.
در این مدل، سیستم تلاش میکند خروجی خود را به مقدار مرجع که برابر یک است نزدیک کند.
البته مقدار دقیق خطای ماندگار به پارامترهای سیستم و مقدار بهره کنترلکننده بستگی دارد.
7. تغییر مقدار Gain و بررسی اثر آن
یکی از مزیتهای مهم Simulink این است که میتوانیم پارامترهای سیستم را تغییر داده و اثر آنها را بهسرعت بررسی کنیم.
برای مثال، مقدار Gain را یکبار برابر 1، بار دیگر 2 و سپس 5 قرار دهید.
با تغییر بهره، رفتار سیستم نیز تغییر خواهد کرد.
بهطور کلی، افزایش بهره کنترلکننده میتواند باعث شود سیستم سریعتر به مقدار مطلوب نزدیک شود، اما افزایش بیش از حد بهره ممکن است باعث افزایش نوسانات یا حتی ایجاد مشکلات پایداری شود.
به همین دلیل، انتخاب پارامترهای مناسب کنترلکننده یکی از مهمترین مراحل طراحی سیستم کنترل است.
چرا این مدل اهمیت دارد؟
مدلی که در این قسمت ساختیم، بسیار ساده است؛ اما ساختار آن پایه بسیاری از سیستمهای کنترل صنعتی را تشکیل میدهد.
در یک سیستم واقعی، بلوکهای ساده این مدل میتوانند با اجزای پیچیدهتر جایگزین شوند. برای مثال:
- Gain میتواند با یک کنترلکننده PID جایگزین شود.
- Transfer Fcn میتواند مدل یک موتور، فرایند حرارتی یا سیستم مکانیکی باشد.
- مسیر Feedback میتواند شامل مدل سنسور و فیلتر اندازهگیری باشد.
- یک Saturation میتواند محدودیت واقعی عملگر را مدل کند.
- یک Transport Delay میتواند تأخیر موجود در فرایند را نشان دهد.

بنابراین، مدل سادهای که در این قسمت ایجاد کردیم، نقطه شروع مناسبی برای ساخت مدلهای پیچیدهتر کنترل صنعتی است.
🎛️از کنترل تناسبی تا کنترل PID
در مدل قبلی از یک بلوک Gain برای ایجاد یک کنترلکننده تناسبی ساده استفاده کردیم. این روش برای آشنایی با مفهوم فیدبک مناسب است، اما در بسیاری از کاربردهای صنعتی، کنترلکننده تناسبی بهتنهایی نمیتواند عملکرد مطلوبی ایجاد کند.
در چنین شرایطی میتوان از کنترلکننده PID استفاده کرد.
کنترلکننده PID با در نظر گرفتن مقدار خطا، مجموع خطا در طول زمان و نرخ تغییر خطا، سیگنال کنترلی مناسبتری تولید میکند.
در بخش بعد، کنترلکننده PID Controller را به مدل اضافه میکنیم و بررسی خواهیم کرد که تغییر پارامترهای (Kp)، (Ki) و (Kd) چه تأثیری بر پاسخ سیستم دارد.
📈پیادهسازی کنترلکننده PID در Simulink
در بخش قبل یک سیستم کنترل فیدبک ساده را با استفاده از بلوکهای Step، Sum، Gain و Transfer Fcn ایجاد کردیم.
در آن مدل، بلوک Gain نقش یک کنترلکننده تناسبی ساده را بر عهده داشت. اگرچه کنترل تناسبی در بسیاری از سیستمها مفید است، اما در برخی کاربردها نمیتواند بهتنهایی عملکرد مطلوبی ایجاد کند.
برای بهبود عملکرد سیستم میتوان از کنترلکننده PID استفاده کرد.
کنترلکننده PID یکی از پرکاربردترین روشهای کنترل در سیستمهای صنعتی است و در بسیاری از فرایندهای کنترل دما، فشار، سرعت، سطح و موقعیت مورد استفاده قرار میگیرد.
🧠کنترلکننده PID چیست؟
نام PID از سه بخش اصلی کنترلکننده گرفته شده است:
- P — Proportional: تناسبی
- I — Integral: انتگرالی
- D — Derivative: مشتقی
رابطه کلی کنترلکننده PID بهصورت زیر است:

در این رابطه:
- (e(t)) خطای سیستم است.
- (u(t)) سیگنال کنترلی است.
- (Kp) بهره بخش تناسبی است.
- (Ki) بهره بخش انتگرالی است.
- (Kd) بهره بخش مشتقی است.
هر یک از این سه بخش، رفتار متفاوتی در سیستم ایجاد میکنند.
🎯 بخش تناسبی P
بخش تناسبی بر اساس مقدار فعلی خطا عمل میکند.
رابطه این بخش بهصورت زیر است:

هرچه خطای سیستم بیشتر باشد، مقدار فرمان کنترلی نیز بیشتر خواهد بود.
افزایش (Kp) معمولاً باعث میشود سیستم سریعتر به مقدار مرجع نزدیک شود؛ با این حال، افزایش بیش از حد آن میتواند باعث افزایش نوسانات یا کاهش حاشیه پایداری شود.
∫ بخش انتگرالی I
بخش انتگرالی مقدار خطا را در طول زمان جمع میکند:

یکی از مهمترین کاربردهای این بخش، کاهش یا حذف خطای ماندگار است.
به زبان ساده، اگر سیستم برای مدت طولانی کمی با مقدار مطلوب فاصله داشته باشد، بخش انتگرالی این خطا را جمع کرده و فرمان کنترلی را افزایش میدهد تا خروجی به مقدار مرجع نزدیکتر شود.
البته افزایش بیش از حد بهره انتگرالی میتواند باعث افزایش فراجهش و نوسانات سیستم شود.
📐 بخش مشتقی D
بخش مشتقی به سرعت تغییرات خطا توجه میکند:

بخش مشتقی میتواند به کنترل رفتار گذرای سیستم کمک کند و در شرایط مناسب، نوسانات را کاهش دهد.
با این حال، بخش مشتقی نسبت به نویز اندازهگیری حساس است. به همین دلیل، در کاربردهای عملی معمولاً از ساختارهای فیلترشده برای بخش مشتقی استفاده میشود.
ساختار کلی PID
بنابراین میتوان عملکرد سه بخش PID را بهصورت ساده اینگونه خلاصه کرد:
| بخش | عملکرد اصلی |
|---|---|
| 🎯 P | واکنش به مقدار فعلی خطا |
| ∫ I | توجه به خطای تجمعیافته در طول زمان |
| 📐 D | توجه به سرعت تغییر خطا |
ترکیب مناسب این سه بخش میتواند باعث شود سیستم پاسخ سریع، خطای ماندگار کم و رفتار گذرای مناسبتری داشته باشد.
🧩اضافه کردن PID Controller به مدل Simulink
اکنون میخواهیم کنترلکننده Gain را در مدل قبلی با یک PID Controller جایگزین کنیم.
ساختار کلی مدل به شکل زیر خواهد بود:
🪜 Step
│
▼
➕ Sum
│
▼
🎛️ PID Controller
│
▼
⚙️ Transfer Fcn
│
▼
📊 Scope
│
└────────────── Feedback ──────────────► Sum
در این مدل، سیگنال مرجع ابتدا وارد بلوک Sum میشود. خروجی فیدبک از خروجی سیستم نیز به ورودی منفی Sum بازمیگردد.
در نتیجه، خطای سیستم محاسبه شده و به PID Controller وارد میشود.
1. حذف بلوک Gain
در مدل قبلی، بلوک Gain نقش کنترلکننده تناسبی را داشت.
اکنون میتوانیم این بلوک را حذف کنیم و به جای آن از PID Controller استفاده کنیم.
بلوک PID Controller را میتوان از بخش مربوط به کنترلکنندهها در Library Browser پیدا کرد.
پس از قرار دادن بلوک در مدل، آن را بین بلوک Sum و Transfer Fcn قرار دهید.
2. تنظیم پارامترهای PID
با دوبار کلیک روی بلوک PID Controller، پنجره تنظیمات کنترلکننده باز میشود.
در این بخش میتوان پارامترهای اصلی کنترلکننده یعنی Ki، Kp و Kd را مشخص کرد.
برای یک مثال آموزشی میتوان مقادیر اولیه سادهای در نظر گرفت؛ برای مثال:
Kp = 2
Ki = 1
Kd = 0.1
این مقادیر صرفاً برای شروع شبیهسازی هستند و لزوماً بهترین پارامترهای ممکن برای سیستم مورد نظر نیستند.
در یک پروژه واقعی، پارامترهای PID باید با توجه به دینامیک سیستم و مشخصات عملکردی مورد نظر انتخاب یا تنظیم شوند.
3. اتصال PID به سیستم
پس از تنظیم پارامترها، ساختار مدل به شکل زیر خواهد بود:
Reference
│
▼
➕ Sum
│
▼
🎛️ PID Controller
│
▼
⚙️ Transfer Fcn
│
▼
📊 Scope
│
│
└───────────────┐
│
▼
Feedback
│
└──────► ➕ Sum
در این مدل، PID تلاش میکند با استفاده از خطای ایجادشده، فرمان مناسب را به فرایند اعمال کند.
▶️اجرای شبیهسازی
پس از تکمیل اتصالات، میتوان زمان شبیهسازی را برای مثال روی 10 ثانیه قرار داد و مدل را اجرا کرد.
پس از اجرای شبیهسازی، خروجی سیستم را میتوان در Scope مشاهده کرد.
در این مرحله بهتر است فقط به اجرای موفق مدل اکتفا نکنیم. یکی از مهمترین مزایای Simulink این است که میتوانیم پارامترهای کنترلکننده را تغییر داده و اثر آنها را روی پاسخ سیستم بررسی کنیم.
برای مثال:
Kp ، Ki ، Kd
↓
تغییر رفتار کنترلکننده
↓
تغییر پاسخ سیستم
↓
بررسی در Scope
📊اثر تغییر پارامترهای PID
تغییر هر یک از پارامترهای PID میتواند رفتار سیستم را تغییر دهد.
افزایش (Kp)
افزایش بهره تناسبی معمولاً باعث افزایش سرعت واکنش سیستم به خطا میشود.
اما اگر مقدار (Kp) بیش از حد افزایش پیدا کند، ممکن است فراجهش و نوسانات افزایش یابد.
افزایش (Ki)
افزایش بهره انتگرالی معمولاً باعث میشود سیستم سریعتر خطای ماندگار را کاهش دهد.
با این حال، مقدار زیاد (Ki) میتواند باعث افزایش فراجهش و نوسانات شود و حتی زمان رسیدن سیستم به حالت پایدار را افزایش دهد.
افزایش (Kd)
افزایش مناسب بهره مشتقی میتواند به بهبود رفتار گذرای سیستم و کاهش نوسانات کمک کند.
اما افزایش بیش از حد آن، بهخصوص در حضور نویز اندازهگیری، میتواند عملکرد سیستم را نامطلوب کند.
بنابراین نمیتوان گفت یک مقدار مشخص از (Kp)، (Ki) و (Kd) برای همه سیستمها مناسب است. این پارامترها باید متناسب با دینامیک و مشخصات سیستم تنظیم شوند.
⚖️مقایسه کنترل P، PI و PID
برای درک بهتر عملکرد کنترلکنندهها، میتوان یک سیستم مشخص را با سه ساختار مختلف شبیهسازی کرد:
کنترل P
Sum → Gain → Plant
کنترل PI
Sum → PI Controller → Plant
کنترل PID
Sum → PID Controller → Plant
سپس میتوان پاسخ هر سه مدل را در Scope مشاهده و با یکدیگر مقایسه کرد.
این مقایسه به مهندس کنترل کمک میکند تأثیر اضافه شدن بخشهای انتگرالی و مشتقی را بهتر درک کند.
🎚️تنظیم پارامترهای PID در Simulink
یکی از قابلیتهای مهم Simulink این است که در برخی نسخهها و پیکربندیها میتوان از ابزارهای تنظیم کنترلکننده برای پیدا کردن پارامترهای مناسب PID استفاده کرد.
با این حال، در آموزش مقدماتی بهتر است ابتدا مفهوم (Kp)، (Ki) و (Kd) و تأثیر هر یک بر پاسخ سیستم بهخوبی درک شود و سپس سراغ روشهای پیشرفتهتر تنظیم کنترلکننده برویم.
در پروژههای واقعی، علاوه بر سرعت پاسخ، مواردی مانند فراجهش، زمان نشست، خطای ماندگار، پایداری و محدودیت عملگر نیز باید در نظر گرفته شوند.
🔍یک نکته مهم درباره مدلسازی PID
در یک مدل واقعی، تنها قرار دادن بلوک PID Controller کافی نیست.
باید مشخص شود که:
- سیستم چه دینامیکی دارد؟
- ورودی مرجع چگونه تعریف شده است؟
- سنسور چه مشخصاتی دارد؟
- عملگر چه محدودیتهایی دارد؟
- آیا سیستم دارای تأخیر زمانی است؟
- آیا اندازهگیریها دارای نویز هستند؟
- خروجی مطلوب چه ویژگیهایی دارد؟
بنابراین طراحی کنترلکننده PID یک فرایند وابسته به سیستم است و نمیتوان یک مجموعه پارامتر ثابت را برای تمام فرایندهای صنعتی استفاده کرد.
در ادامه، همین مفاهیم را روی یک مثال کاربردیتر بررسی میکنیم و به سراغ کنترل سرعت موتور DC در Simulink خواهیم رفت. در این مثال، یک سیستم دینامیکی واقعیتر را مدل کرده و عملکرد کنترلکننده را در برابر تغییر مقدار مرجع بررسی خواهیم کرد.
⚙️کنترل سرعت موتور DC در Simulink
تا اینجا با ساختار کلی سیستمهای کنترل فیدبک، بلوکهای پرکاربرد Simulink و نحوه پیادهسازی کنترلکننده PID آشنا شدیم. اکنون میتوانیم همین مفاهیم را روی یک مثال کاربردیتر بررسی کنیم.
یکی از مثالهای کلاسیک و بسیار مهم در مهندسی کنترل، کنترل سرعت موتور DC است. موتورهای DC در بسیاری از سیستمهای صنعتی، رباتیک، تجهیزات آزمایشگاهی و سامانههای محرکه مورد استفاده قرار میگیرند و کنترل دقیق سرعت آنها یکی از مسائل پایه در سیستمهای کنترل است.
در این مثال، ابتدا مدل ریاضی سادهای از موتور DC در نظر میگیریم، سپس آن را در Simulink پیادهسازی کرده و یک کنترلکننده PID برای تنظیم سرعت موتور طراحی میکنیم.
1. مدل ساده موتور DC
برای یک مدل آموزشی، میتوان دینامیک موتور DC را با یک تابع تبدیل ساده نمایش داد. در این مثال فرض میکنیم تابع تبدیل بین ورودی و سرعت موتور به صورت زیر باشد:
(G(s)=1/(0.5s+1
در این رابطه:
- ورودی سیستم، سیگنال کنترلی اعمالشده به موتور است.
- خروجی سیستم، سرعت موتور است.
- پارامتر 0.5 نشاندهنده ثابت زمانی سیستم است.
- G(s) رفتار دینامیکی موتور را در یک مدل سادهشده نشان میدهد.
هدف ما این است که سرعت موتور، مقدار مرجع تعیینشده را با کمترین خطا دنبال کند.
برای مثال، اگر سرعت مطلوب برابر 100 واحد باشد، سیستم کنترل باید ولتاژ یا سیگنال کنترلی مناسب را به موتور اعمال کند تا سرعت موتور به مقدار 100 برسد.
2. ساختار سیستم کنترل سرعت
ساختار کلی سیستم به صورت زیر خواهد بود:
┌──────────────────────────────────────────┐
│ │
│ ▼
Reference ──► Sum ──► PID Controller ──► DC Motor ──► Speed
▲ │
│ │
└──────────── Feedback ────────────┘
در این ساختار:
Reference مقدار سرعت مطلوب است.
Sum اختلاف بین سرعت مطلوب و سرعت واقعی موتور را محاسبه میکند.
PID Controller بر اساس خطای ایجادشده، سیگنال کنترلی مناسب را تولید میکند.
DC Motor فرایند مورد کنترل است.
Feedback سرعت واقعی موتور را به ورودی مقایسهکننده بازمیگرداند.
هدف کنترلکننده PID کاهش خطا و رساندن سرعت موتور به مقدار مرجع است.
3. مراحل دقیق ساخت مدل موتور DC در Simulink
در ادامه مدل را مرحلهبهمرحله ایجاد میکنیم.
مرحله اول: ایجاد مدل جدید
ابتدا MATLAB را اجرا کرده و در Command Window عبارت زیر را وارد کنید:
simulink
سپس یک Blank Model ایجاد کنید.
مرحله دوم: اضافه کردن بلوک Step
برای تعیین سرعت مرجع، از بلوک Step استفاده میکنیم.
از Library Browser بلوک Step را پیدا کرده یا نام آن را در جستوجوی Simulink وارد کنید.
پارامترهای آن را به صورت زیر تنظیم کنید:
| پارامتر | مقدار |
|---|---|
| Step Time | 1 |
| Initial Value | 0 |
| Final Value | 100 |
در این حالت، سرعت مرجع در زمانt=1 از صفر به 100 تغییر میکند.
بنابراین سیستم باید تلاش کند سرعت موتور را از حالت اولیه به مقدار 100 برساند.
مرحله سوم: اضافه کردن بلوک Sum
بلوک Sum وظیفه محاسبه خطای بین سرعت مرجع و سرعت واقعی موتور را بر عهده دارد.
بلوک Sum را به مدل اضافه کنید و علامت ورودیها را به صورت زیر تنظیم کنید:
+-
به این معنا که ورودی مثبت Sum از Step دریافت میشود و ورودی منفی آن از مسیر فیدبک خواهد آمد.
مرحله چهارم: اضافه کردن PID Controller
اکنون بلوک PID Controller را به مدل اضافه کنید.
این بلوک وظیفه تولید سیگنال کنترلی برای موتور را بر اساس خطای سرعت بر عهده دارد.
در مرحله اول میتوانیم از مقادیر آموزشی زیر استفاده کنیم:
| پارامتر | مقدار اولیه |
|---|---|
| Kp | 2 |
| Ki | 1 |
| Kd | 0.1 |
این مقادیر صرفاً برای شروع شبیهسازی هستند و لزوماً بهترین ضرایب برای موتور مورد نظر محسوب نمیشوند.
کنترلکننده PID رابطه زیر را پیادهسازی میکند:
u(t)=Kpe(t)+Ki∫e(t)dt+Kdde(t)dt
مرحله پنجم: مدلسازی موتور DC
برای مدل ساده موتور، از بلوک Transfer Fcn استفاده میکنیم.
بلوک Transfer Fcn را به مدل اضافه کرده و پارامترهای آن را به صورت زیر تنظیم کنید:
Numerator:
[1]
Denominator:
[0.5 1]
در نتیجه تابع تبدیل بلوک برابر خواهد بود با:
G(s)=1/0.5s+1
این بلوک در مدل ما نقش موتور DC را ایفا میکند.
مرحله ششم: اضافه کردن Scope
برای مشاهده سرعت موتور، یک بلوک Scope به خروجی موتور متصل کنید.
Scope به ما اجازه میدهد پاسخ سرعت موتور را در طول زمان مشاهده کنیم.
ساختار اصلی مسیر مستقیم اکنون به صورت زیر است:
Step → Sum → PID Controller → Transfer Fcn → Scope
مرحله هفتم: ایجاد مسیر فیدبک
اکنون باید خروجی موتور را به ورودی منفی بلوک Sum برگردانیم.
برای این کار:
- خروجی Transfer Fcn را مشخص کنید.
- از همان نقطه یک خط سیگنال ایجاد کنید.
- خط را به ورودی منفی Sum متصل کنید.
در این مثال فرض میکنیم سنسور سرعت دارای بهره واحد است؛ بنابراین نیازی به قرار دادن بلوک اضافی در مسیر فیدبک نداریم.
ساختار نهایی مدل به صورت زیر خواهد بود:
┌──────────────────────────────┐
│ │
│ ▼
🪜 Step ──► ➕ Sum ──► 🎛️ PID ──► ⚙️ DC Motor ──► 📊 Scope
▲ │
│ │
└────────── Feedback ──────────┘
مرحله هشتم: تنظیم زمان شبیهسازی
در قسمت Stop Time مقدار زیر را وارد کنید:
10
بنابراین شبیهسازی ازt=0 تا t=10 ثانیه انجام خواهد شد.
مرحله نهم: اجرای شبیهسازی
اکنون روی دکمه Run کلیک کنید.
پس از پایان شبیهسازی، Scope را باز کنید.
در نمودار Scope، پاسخ سرعت موتور را مشاهده خواهید کرد.
از آنجا که مقدار مرجع در زمان t=1 به 100 تغییر کرده است، انتظار داریم سرعت موتور نیز پس از یک رفتار گذرا به سمت مقدار مرجع حرکت کند.
4. در نمودار Scope به چه چیزهایی توجه کنیم؟
صرفاً مشاهده نمودار کافی نیست. یک مهندس کنترل باید بتواند رفتار سیستم را از روی نمودار تحلیل کند.
در پاسخ موتور به تغییر مرجع، پارامترهای زیر اهمیت زیادی دارند:
⏱️ زمان صعود (Rise Time)
مدت زمانی که طول میکشد خروجی از مقدار اولیه به محدوده نزدیک به مقدار مرجع برسد.
هرچه زمان صعود کمتر باشد، پاسخ سیستم سریعتر است.
📈 فراجهش (Overshoot)
ممکن است سرعت موتور از مقدار مطلوب 100 عبور کرده و برای مدت کوتاهی به مقدار بیشتری برسد.
به این پدیده فراجهش گفته میشود.
⏳ زمان نشست (Settling Time)
مدتی که طول میکشد خروجی پس از نوسانات اولیه، در محدوده مشخصی از مقدار نهایی قرار بگیرد.
🎯 خطای ماندگار
در حالت ایدهآل، سرعت موتور باید در نهایت به مقدار مرجع نزدیک شود.
خطای ماندگار به صورت زیر تعریف میشود:
ess=limt→∞[r(t)−y(t)]
وجود بخش انتگرالی در کنترلکننده PID معمولاً به کاهش یا حذف خطای ماندگار در دنبالکردن مرجع پلهای کمک میکند؛ البته به شرط آنکه سیستم پایدار باشد و محدودیتهای عملی مانند اشباع عملگر باعث ایجاد مشکلاتی مانند Windup نشوند.
5. بررسی اثر تغییر مقدار مرجع
یکی از مزیتهای مهم Simulink این است که میتوانیم رفتار سیستم را در برابر تغییرات مختلف بررسی کنیم.
برای مثال، مقدار Final Value بلوک Step را از 100 به 150 تغییر دهید.
سپس دوباره شبیهسازی را اجرا کنید.
اکنون هدف کنترلکننده این است که سرعت موتور را به مقدار جدید 150 برساند.
این آزمایش به ما نشان میدهد که آیا کنترلکننده میتواند تغییر مقدار مرجع را بهدرستی دنبال کند یا خیر.
میتوان این آزمایش را برای مقادیر مختلف مانند:
50
100
150
200
انجام داد و پاسخ سیستم را مقایسه کرد.
6. چرا این مثال برای کنترل صنعتی مهم است؟
مثال موتور DC اگرچه سادهشده است، اما ساختار آن شباهت زیادی به بسیاری از سیستمهای واقعی دارد.
در یک سیستم صنعتی واقعی نیز معمولاً با ساختاری مشابه مواجه هستیم:
مقدار مرجع → کنترلکننده → عملگر → فرایند → سنسور → فیدبک
برای مثال:
- کنترل سرعت موتور
- کنترل دمای کوره
- کنترل فشار
- کنترل سطح مخزن
- کنترل موقعیت ربات
- کنترل سرعت نوار نقاله
- کنترل توان تجهیزات الکتریکی
بنابراین هدف از این مثال فقط شبیهسازی یک موتور نیست؛ بلکه آشنایی با یک الگوی عمومی برای مدلسازی سیستمهای کنترل در Simulink است.
7. یک آزمایش مهم: تغییر ضرایب PID
اکنون که مدل ساخته شده است، میتوانیم یک آزمایش بسیار مهم انجام دهیم.
هر بار فقط یکی از ضرایب PID را تغییر دهید و پاسخ سیستم را مشاهده کنید.
برای مثال:
آزمایش اول:
Kp=1,Ki=1,Kd=0.1
آزمایش دوم:
Kp=5,Ki=1,Kd=0.1
آزمایش سوم:
Kp=2,Ki=0.2,Kd=0.1
آزمایش چهارم:
Kp=2,Ki=1,Kd=0.5
در هر آزمایش، پاسخ Scope را بررسی کرده و موارد زیر را با یکدیگر مقایسه کنید:
- سرعت پاسخ
- مقدار فراجهش
- نوسانات
- زمان نشست
- خطای ماندگار
- میزان پایداری سیستم
این آزمایش یکی از بهترین روشها برای درک عملی نقش هر یک از پارامترهای PID است.
📝جمعبندی مثال موتور DC
در این مثال یاد گرفتیم چگونه یک مدل ساده از موتور DC را در محیط Simulink ایجاد کرده و یک کنترلکننده PID را در یک ساختار فیدبک بسته قرار دهیم.
ساختار نهایی سیستم به صورت زیر است:
Reference
│
▼
Sum ◄────────────── Feedback
│
▼
PID Controller
│
▼
DC Motor
│
▼
Speed Output
این مدل ساده، پایه مناسبی برای ورود به مباحث پیشرفتهتر است. در ادامه میتوان مدل را واقعیتر کرد؛ برای مثال میتوان اشباع عملگر، نویز سنسور، اغتشاش، تأخیر زمانی و مدل کامل الکتریکی-مکانیکی موتور DC را به آن اضافه کرد.
بررسی اثر پارامترهای PID بر پاسخ سیستم
در بخش قبل، یک مدل ساده از کنترل سرعت موتور DC ایجاد کردیم و کنترلکننده PID را در یک ساختار فیدبک بسته قرار دادیم. اکنون میخواهیم بررسی کنیم که تغییر پارامترهای کنترلکننده PID چگونه رفتار سیستم را تغییر میدهد.
کنترلکننده PID دارای سه پارامتر اصلی است:
Kp,Ki,Kd
هر یک از این پارامترها تأثیر متفاوتی بر پاسخ سیستم دارند. بنابراین تنظیم مناسب آنها نقش مهمی در دستیابی به پاسخ سریع، پایدار و کمخطا دارد.
1. اثر بهره تناسبی Kp
بخش تناسبی کنترلکننده PID متناسب با مقدار خطای سیستم عمل میکند:
up(t)=Kpe(t)
بنابراین هرچه Kp بزرگتر باشد، کنترلکننده در برابر خطا واکنش قویتری نشان میدهد.
به زبان ساده، اگر اختلاف بین سرعت مطلوب و سرعت واقعی موتور زیاد باشد، افزایش Kp باعث میشود کنترلکننده سیگنال کنترلی بزرگتری ایجاد کند.
معمولاً افزایش Kp چه اثری دارد؟
افزایش Kp میتواند باعث:
- افزایش سرعت پاسخ سیستم
- کاهش زمان صعود
- کاهش خطای ماندگار
- افزایش احتمال فراجهش
- افزایش احتمال نوسان در مقادیر بزرگ
- کاهش حاشیه پایداری در برخی سیستمها
شود.
بنابراین نمیتوان Kp را بدون محدودیت افزایش داد.
2. اثر بهره انتگرالی Ki
بخش انتگرالی با مجموع خطا در طول زمان ارتباط دارد:
ui(t)=Ki∫e(t) dt
یکی از مهمترین وظایف بخش انتگرالی، کاهش یا حذف خطای ماندگار است.
برای مثال، ممکن است خروجی سیستم پس از گذشت زمان به مقدار نزدیک به مرجع برسد، اما همچنان اختلاف کوچکی با مقدار مطلوب داشته باشد. بخش انتگرالی با جمعکردن این خطا در طول زمان، سیگنال کنترلی را افزایش میدهد تا خطای ماندگار کاهش یابد.
افزایش Ki چه اثری دارد؟
افزایش Ki معمولاً میتواند:
- خطای ماندگار را کاهش دهد.
- پاسخ سیستم را به مقدار مرجع نزدیکتر کند.
- زمان رسیدن به مقدار نهایی را کاهش دهد.
- در صورت انتخاب بیش از حد، فراجهش و نوسان را افزایش دهد.
- در برخی سیستمها باعث کاهش پایداری شود.
بنابراین مقدار Ki نیز باید با توجه به رفتار سیستم انتخاب شود.
3. اثر بهره مشتقی Kd
بخش مشتقی به سرعت تغییر خطا حساس است:
(ud(t)=Kd(de(t)/dt
بنابراین میتوان آن را تا حدی شبیه یک عامل پیشبینیکننده در نظر گرفت؛ یعنی کنترلکننده فقط به مقدار فعلی خطا توجه نمیکند، بلکه به سرعت تغییر خطا نیز حساس است.
افزایش Kd در بسیاری از سیستمها میتواند باعث:
- کاهش فراجهش
- کاهش نوسانات
- بهبود رفتار گذرا
- افزایش میرایی پاسخ
شود.
اما یک نکته مهم وجود دارد:
بخش مشتقی نسبت به نویز حساس است.
در سیستمهای واقعی، اندازهگیری سنسورها معمولاً کاملاً بدون نویز نیست. بنابراین استفاده از بهره مشتقی زیاد میتواند باعث تقویت اثر نویز در سیگنال کنترلی شود.
به همین دلیل در کنترلکنندههای واقعی معمولاً بخش مشتقی با فیلتر مناسب استفاده میشود.
4. مقایسه نقش سه پارامتر PID
میتوان نقش کلی سه پارامتر را به صورت زیر خلاصه کرد:
| پارامتر | نقش اصلی | اثر افزایش |
|---|---|---|
| Kp | واکنش به خطای فعلی | افزایش سرعت پاسخ، احتمال افزایش فراجهش |
| Ki | کاهش خطای ماندگار | کاهش خطای ماندگار، احتمال افزایش نوسان |
| Kd | واکنش به تغییرات خطا | کاهش فراجهش و نوسان، حساسیت بیشتر به نویز |
البته این جدول یک جمعبندی کلی است و اثر دقیق هر پارامتر به ساختار و دینامیک سیستم بستگی دارد.
5. مقایسه کنترلکنندههای P، PI و PID
یکی از آزمایشهای بسیار مفید در Simulink، مقایسه سه نوع کنترلکننده است:
- کنترلکننده P
- کنترلکننده PI
- کنترلکننده PID
در کنترلکننده P فقط بخش تناسبی فعال است:
u(t)=Kpe(t)
در کنترلکننده PI دو بخش تناسبی و انتگرالی فعال هستند:
u(t)=Kpe(t)+Ki∫e(t)dt
و در کنترلکننده PID هر سه بخش فعال هستند:
u(t)=Kpe(t)+Ki∫e(t)dt+Kdde(t)dt
انجام آزمایش
برای مقایسه، میتوان مدل را در سه حالت اجرا کرد.
حالت اول: کنترل P
در بلوک PID Controller مقدار:
Ki=0,Kd=0
قرار دهید.
حالت دوم: کنترل PI
در این حالت:
Kd=0
قرار دهید و Kp و Ki را فعال نگه دارید.
حالت سوم: کنترل PID
هر سه پارامتر را فعال کنید.
پس از اجرای هر سه حالت، پاسخهای Scope را با یکدیگر مقایسه کنید.
در این مقایسه به موارد زیر توجه کنید:
- سرعت پاسخ
- خطای ماندگار
- فراجهش
- نوسانات
- زمان نشست
این آزمایش بهخوبی نشان میدهد که اضافهشدن هر بخش از کنترلکننده چه تغییری در رفتار سیستم ایجاد میکند.
6. یک نکته مهم درباره تنظیم PID
یکی از اشتباهات رایج در ابتدای یادگیری کنترل این است که تصور کنیم برای همه سیستمها یک مجموعه ثابت از مقادیر Kp، Ki و Kd وجود دارد.
در واقع چنین نیست.
ضرایب PID باید با توجه به دینامیک سیستم مورد کنترل، مشخصات مورد انتظار از پاسخ و محدودیتهای عملی سیستم تعیین شوند.
برای مثال، یک کنترلکننده مناسب برای موتور DC ممکن است برای یک سیستم حرارتی مناسب نباشد.
روشهای مختلفی برای تنظیم PID وجود دارد؛ از جمله:
- تنظیم دستی (Manual Tuning)
- روش Ziegler–Nichols
- روشهای مبتنی بر پاسخ فرکانسی
- روشهای بهینهسازی
- ابزارهای خودکار تنظیم PID در MATLAB و Simulink
در پروژههای صنعتی، علاوه بر کیفیت پاسخ شبیهسازی، محدودیتهایی مانند حداکثر ولتاژ، جریان، سرعت مجاز، اشباع عملگر و نویز سنسورها نیز باید در نظر گرفته شوند.
7. یک آزمایش پیشنهادی برای یادگیری بهتر
برای درک بهتر عملکرد PID، یک آزمایش ساده انجام دهید.
ابتدا مدل را با مقادیر زیر اجرا کنید:
Kp=2,Ki=1,Kd=0.1
سپس هر بار فقط یکی از پارامترها را تغییر دهید.
مثلاً:
آزمایش 1 → Kp را تغییر بده
آزمایش 2 → Ki را تغییر بده
آزمایش 3 → Kd را تغییر بده
در هر آزمایش، پاسخ Scope را ذخیره یا یادداشت کنید.
سپس یک جدول مانند جدول زیر تشکیل دهید:
| آزمایش | Kp | Ki | Kd | Rise Time | Overshoot | Settling Time | خطای ماندگار |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0.1 | — | — | — | — |
| 2 | 2 | 1 | 0.1 | — | — | — | — |
| 3 | 5 | 1 | 0.1 | — | — | — | — |
مقادیر ستونهای آخر را میتوان پس از اجرای شبیهسازی از پاسخ سیستم به دست آورد.
این کار باعث میشود به جای حفظ کردن اثر پارامترهای PID، رفتار واقعی سیستم را به صورت تجربی مشاهده و تحلیل کنید.
📝جمعبندی
در این بخش دیدیم که سه پارامتر کنترلکننده PID نقشهای متفاوتی در رفتار سیستم دارند.
به طور خلاصه:
Kp→واکنش به خطای فعلی، Ki→کاهش خطای ماندگار و Kd→بهبود رفتار گذرا و کاهش نوسان
اما مقدار بیش از حد هر یک از این پارامترها میتواند مشکلاتی مانند فراجهش، نوسان، حساسیت به نویز یا حتی ناپایداری ایجاد کند.
بنابراین هدف از تنظیم PID صرفاً بزرگ یا کوچککردن ضرایب نیست؛ بلکه باید بین سرعت پاسخ، دقت، فراجهش، زمان نشست و پایداری تعادل مناسبی ایجاد شود.
در مقاله بعد، مدل موتور DC را یک مرحله به مدل واقعیتر نزدیک میکنیم و با اضافهکردن اشباع عملگر و اغتشاش بررسی خواهیم کرد که چرا یک مدل شبیهسازیشده صنعتی باید علاوه بر دینامیک اصلی سیستم، محدودیتها و عوامل غیرایدهآل را نیز در نظر بگیرد.

