کنترل مد لغزشی — به زبان ساده
«کنترل مد لغزشی» (Sliding Mode Control) یا SMC یک روش کنترل غیرخطی است که ویژگیهای منحصر به فردی مانند دقت، قوام، و تنظیم و پیادهسازی آسان دارد.
به طور خلاصه میتوان گفت که در کنترل مد لغزشی حالتهای سیستم به یک سطح، به نام «سطح لغزش» (Sliding Surface)، در فضای حالت برده میشوند. وقتی حالتها به سطح لغزش رسیدند، کنترل مد لغزشی حالتها را در نزدیکی و همسایگی سطح لغزش نگه میدارد. بنابراین، این رویکرد، یک روش کنترلی با دو بخش است. در بخش اول یک سطح لغزش طراحی میشود که حرکت لغزشی مشخصات طراحی را برآورده کند. در بخش دوم، قانون کنترلی انتخاب میشود که با آن، سطح سوئیچنگ حالت سیستم را جذب کند.
کنترل مد لغزشی دو مزیت اصلی دارد. اولین مزیت این است که میتوان با انتخاب تابع لغزشی مناسب، به رفتار دینامیکی مطلوب سیستم دست یافت. مزیت دوم این است که پاسخ حلقهبسته سیستم هیچ حساسیتی نسبت به نامعینیها (پارامترهای مدل، اغتشاشها و غیرخطی بودن) ندارد. در نتیجه، از دیدگاه عملی، با استفاده از کنترل مد لغزشی میتوانیم فرایندهای غیرخطی را در حضور اغتشاشات و نامعینیهای مدل کنترل کنیم.
کنترل مد لغزشی
سیستم تکورودی-تکخروجی (SISO) زیر را در نظر بگیرید:
$$ \large \dot {x} = f ( x , t ) + g ( x , t )u \;\;\;\;\; (1) $$
$$ \large y = h ( x , t ) \;\;\;\;\; ( 2 ) $$
که در آن، $$y$$ و $$u$$، به ترتیب، متغیر خروجی و متغیر ورودی و $$ x \in R ^ n $$ بردار حالت را نشان میدهند.
هدف کنترل، ردیابی سیگنال خروجی مطلوب $$ y _ d$$ است. به عبارت دیگر، بعد از مدت کوتاهی باید خطای $$ e = y - y _ {d}$$ به مجاورت بسیار نزدیک صفر میل کند.
همانطور که گفتیم، کنترل مد لغزشی دو بخش دارد و طراحی آن در دو گام زیر انجام میشود:
- مرحله اول: طراحی سطح لغزش
- مرحله دوم: طراحی ورودی کنترل
مرحله اول معادل با تعریف یک تابع اسکالر (نردهای) برحسب حالت سیستم است:
$$ \large \sigma ( X ) = \mathbb{R} ^ n \rightarrow \mathbb {R} $$
اغلب، سطح لغزش به خطای ردیابی $$ e _ y $$ و تعداد مشخصی از مشتقهای آن بستگی دارد:
$$ \large \sigma = \sigma ( e , \dot { e } , \cdots , e ^ {(k)} ) \;\;\;\;\; (3) $$
تابع $$ \sigma$$ را باید به گونهای انتخاب کرد که صفر شدن آن ($$\sigma = 0 $$) به یک معادله دیفرانسیل «پایدار» منجر شود که در این صورت، هر جواب $$ e _ y (t)$$ در نهایت به صفر میل خواهد کرد.
رایجترین انتخاب برای انتخاب «خمینه» (Manifold) لغزش یک ترکیب خطی به صورت زیر است:
$$ \large \sigma = \dot { e } + c _ 0 e \;\;\;\;\; (4) $$
$$ \large \sigma = \ddot {e } + c_1 \dot { e } + c _ 0 e \;\;\;\;\; (5) $$
$$ \large \sigma = e ^ {(k)} + \sum _ {i = 0} ^ {k-1} c _ i e ^ {(i)} \;\;\;\;\; (6) $$
تعداد مشتقهای موجود (تعداد $$k$$ ضریب در (۶))، باید برابر با $$k = r - 1 $$ باشد، که در آن، $$r$$ درجه نسبی ورودی-خروجی (۱) و (۲) است.
با انتخاب صحیح ضرایب $$ c _ i $$، اگر متغیر $$ \sigma$$ به صفر میل کند، خطا و مشتقهای آن به صورت نمایی به صفر میل خواهند کرد. اگر چنین شرایطی برقرار باشد، آنگاه وظیفه کنترل صفر کردن $$\sigma$$ در زمان محدود - بدون توجه به هر جنبه دیگری است.
از دیدگاه هندسی، معادله $$ \sigma = 0 $$ سطحی را در فضای خطا تعریف میکند که «سطح لغزش» نامیده میشود. مسیرهای سیستم تحت کنترل باید به سطح لغزش بروند که در آن، مشخصات طراحی لحاظ شده است.
یک فرم سطح لغزش به صورت زیر است که تنها به پارامتر نردهای $$p$$ بستگی دارد:
$$ \large \sigma = \left ( \frac { d } { d t } + p \right ) ^ k e \;\;\;\;\; (7)$$
$$ \large k = 1 \;\;\; \rightarrow \;\;\; \sigma = \dot {e} + p e \;\;\;\;\; (8)$$
$$ \large k = 2 \;\;\; \rightarrow \;\;\; \sigma = \ddot {e} + 2 p \dot { e } + p ^ 2 e \;\;\;\;\; (9)$$
انتخاب پارامتر مثبت $$p$$ اغلب دلخواه است و قطب یکتای «دینامیک کاهش یافته» سیستم در حال لغزش را بیان میکند. در طرف مقابل، پارامتر صحیح $$k$$ باید برابر با $$r-1$$ باشد، که $$r$$ درجه نسبی بین $$y$$ و $$u$$ است. این بدین معنی است که درجه نسبی متغیر $$\sigma$$ برابر با یک است.
گام بعدی (گام دوم) یافتن یک عمل کنترلی است که مسیرهای سیستم را به خمینه لغزش ببرد؛ به عبارت دیگر، کنترل قادر است متغیر $$\sigma $$ را در زمان محدود به صفر میل دهد.
به طور کلی، دو رویکرد بر اساس کنترل مد لغزشی وجود دارد: کنترل مد لغزشی استاندارد (یا مرتبه اول) و کنترل مد لغزشی مرتبه بالا. البته، در برخی منابع، به جای کنترل مد لغزشی مرتبه بالا، کنترل مد لغزشی مرتبه دوم را بیان میکنند. ویژگی مشترک همه روشهای کنترل مد لغزشی این است که در آنها نیازی به اطلاعات دقیق در مورد دینامیک سیستم نیست. به عبارت دیگر، سیستم تحت کنترل به عنوان یک «جعبه سیاه» کاملاً نامعین در نظر گرفته میشود.
کنترل مد لغزشی مرتبه اول
کنترل در خمینه $$\sigma = 0 $$ ناپیوسته است:
$$ \large u = - U \text{sgn}(\sigma ) \;\;\;\;\;(10)$$
تابع علامت $$\text{sgn}$$ به گونهای است که:
$$ \large u = \begin {cases}
- U & \sigma > 0 \\
U & \sigma < 0
\end {cases} \;\;\;\;\; (11)$$
پارامتر $$U$$ یک ثابت به اندازه کافی بزرگ است.
در حالات مانا، متغیر کنترل $$u$$ با فرکانس بسیار بالایی (از نظر تئوری، بینهایت) بین مقادیر $$ u = U $$ و $$ u = - U $$ نوسان میکند (شکل ۲).
کنترل سوئیچینگ فرکانس بالای ناپیوسته (شکل ۲) در کاربردهای الکتریکی (که سیگنالهای کنترل PWM به کار میرود) مناسب هستند، اما مثلاً در سیستمهای دینامیکی نوسانات بالا ممکن است منجر به مسائل مختلفی شود.
برای حل مشکل مزبور، که به پدیده چترینگ (Chattering Phenomenon) معروف است، از تکنیکهایی، مانند جایگزینی تابع $$\text{sgn}$$ با یک تقریب نَرم پیوسته استفاده میشود. برای مثال، به ترتیب، توابع اشباع (Sat) و تانژانت هیپربولیک (tanh) زیر به کار میروند:
$$ \large u = - U \text{sat} ( \sigma , \varepsilon ) \equiv - U \frac { \sigma } { |\sigma | + \varepsilon } \;\;\;\;\; \varepsilon > 0 ,\;\;\; \varepsilon \approx0 \;\;\;\;\; (12) $$
$$ \large u = - U \text{tanh} ( \sigma /\varepsilon ) \;\;\;\;\; \varepsilon > 0 ,\;\;\; \varepsilon \approx0 \;\;\;\;\; (13) $$
البته این روش در حالتهای خاصی مؤثر عمل میکند. یکی از این موارد وقتی است که نامعینیهای سخت (Hard) وجود نداشته باشند.
کنترل مد لغزشی مرتبه دوم
با استفاده از تقریبهای نرم مرتبه بالا، برخی مسائل به قیمت از دست دادن قوام مرتفع خواهند شد. الگوریتمهای کنترل مد لغزشی مرتبه دوم جایگزینی قوی هستند که پدیده چترینگ را بدون ایجاد مشکل در قوام سیستم حل خواهند کرد.
یکی از الگوریتمهای محبوب کنترل مد لغزشی مرتبه دوم، الگوریتم «اَبَرچرخش» (Super Twisting Algorithm) است که در آن، قانون کنترل به صورت زیر در نظر گرفته میشود:
$$ \large u = - \lambda \sqrt { | \sigma | } \text {sgn} (\sigma ) + w \;\;\;\;\; (14)$$
$$ \large \dot {w } = - W \text{sgn} (\sigma) \;\;\;\;\; (15)$$
یک راه مناسب برای تنظیم پارامترهای این قانون کنترل، جفت رابطه زیر است:
$$ \large \lambda = \sqrt { U } , \; \;\;\;\;\; W = 1.1 U \;\;\;\;\; (16)$$
که در آن، $$U$$ یک ثابت مثبت است که میتوان آن را به اندازه کافی بزرگ انتخاب کرد. در عمل، میتوان $$U$$ را تدریجاً افزایش داد تا عملکرد مناسب سیستم حلقه بسته حاصل شود. این روشِ تکپارامتره «سعی و خطا» در پیادهسازی عملی مفید است و مورد استفاده قرار میگیرد. الگوریتم ابر پیچش را میتوان به عنوان یک نسخه غیرخطی از کنترلکننده PI کلاسیک در نظر گرفت. شکل زیر این موضوع را به خوبی نشان میدهد.
کنترل مد لغزشی مرتبه دوم موضوع چترینگ را حل میکند، زیرا قانون کنترل اکنون یک تابع پیوسته در زمان است. در مثالی که در ادامه ارائه خواهیم کرد، برتری کنترل مد لغزشی مرتبه دوم را در برابر کنترل مد لغزشی استاندارد نشان خواهیم داد.
در حضور دینامیک کنترل نشده، مقداری چترینگ باقی خواهد ماند، اما رویکردهای طراحی خاصی وجود دارند که به مدهای لغزشی مرتبه دوم این قابلیت را میدهند که چنین پدیده نامطلوبی را محدود کند.
مثال طراحی و شبیهسازی
برای بررسی مهمترین جنبه های SMC، مثال کنترل موقعیت یک جرم-فنر-دمپر نامعین را در حضور اغتشاش نامعین متغیر با زمان $$d ( t ) $$ در نظر میگیریم:
$$ \large M \ddot { x } + B \dot { x} + K x = F + d ( t) \;\;\;\;\; (17)$$
از آنجا که ساختار اغتشاش $$ d ( t)$$ ناشناخته است، نمیتوان از یک کنترلکننده خطی برای حذف کامل آن استفاده کرد (برخلاف موارد بسیار مشخصی مانند $$d ( t) = \cos t $$).
خروجی را به صورت $$ y = x $$ در نظر میگیریم. موقعیت مطلوب برابر است با:
$$ \large y _ d = 5 \sin ( 2 t ) \;\;\;\;\; (18) $$
خطای ردیابی را به صورت زیر تعریف میکنیم:
$$ \large e = y - y _ d \;\;\;\;\; (19) $$
گام اول: طراحی سطح لغزش
درجه نسبی بین خروجی $$ y ( t) $$ و ورودی $$ F ( t) $$ برابر با $$ r = 2 $$ است. بنابراین، بر اساس (۸) (در این مورد $$ k = r-1 = 1 $$)، سطح لغزش $$\sigma$$ را به صورت زیر تعریف میکنیم:
$$ \large \sigma = \dot {e } + p e = \dot {y } - \dot {y} _ d + p (y - y _ d ) \;\;\;\;\; (20)$$
$$p=1$$ را انتخاب میکنیم و داریم:
$$ \large \sigma = \dot { e } + e \;\;\;\;\; (21)$$
گام دوم: طراحی ورودی کنترل
در این مرحله، سه قانون کنترل را پیشنهاد میدهیم:
- کنترل مد لغزشی مرتبه اول:
$$ \large F = - F ^ * \text{sgn} ( \sigma ) \;\;\;\;\; (22)$$
- کنترل مد لغزشی مرتبه اول نرم شده:
$$ \large F = - F ^ * \text{sat} ( \sigma , \varepsilon) \;\;\;\;\; (23)$$
- کنترل مد لغزشی مرتبه دوم ابر پیچشی (Supertwisting 2-SMC):
$$ \large F = F _ 1 + F _ 2 \;\;\;\;\; (24 ) $$
$$ \large F _ 1 = - \sqrt {F ^ * } \sqrt {|\sigma |}\text{sgn} (\sigma) \;\;\;\;\; (25 ) $$
$$ \large \dot { F } _ 2 = -1.1 F ^ * \text{sgn} ( \sigma ) \;\;\;\;\; (26) $$
مقادیر پارامترها $$M = 2 \, \text{kg}$$، $$ B = 5 \, \mathrm{N/ms^2}$$ و $$ K = 2 \, \text{N/m}$$ هستند.
اغتشاش را نیز به صورت زیر در نظر میگیریم:
$$ \large d ( t) = 2 + 2 \sin ( 3 t ) + \sin ( 5 t ) \;\;\;\;\; (27)$$
نتیجه شبیهسازی SMC مرتبه اول به صورت زیر است.
در نمودار سمت چپ شکل قدرت کنترل (یعنی پارامتر $$F ^ * $$) بسیار کم است و در نتیجه، متغیر لغزش $$ \sigma$$ از صفر فاصله میگیرد. در نمودار سمت راست، این پارامتر به اندازه کافی افزایش داده شده تا $$\sigma$$ با دقت خوبی در نزدیکی صفر نگه داشته شود.
ورودی کنترل در شکل زیر نشان داده شده است. ماهیت فرکانس بالای ناپیوسته ورودی کنترل در این شکل مشخص است. این رفتار برای یک سیگنال فیزیکی مانند یک نیروی مکانیکی قابل قبول نیست.
کنترل مد لغزشی مرتبه اول هموار شده به صورت زیر است:
$$ \large F = - F ^ * \text{sat} ( \sigma , \varepsilon) \;\;\;\;\; (28)$$
قانون کنترل بالا ناپیوستگی را از بین میبرد. شکل زیر، نتایج شبیه سازی حاصل از اعمال این قانون کنترل را نشان میدهد.
دو شبیهسازی بالا برای $$\varepsilon$$ کوچک ($$\varepsilon = 0.001$$) اثر هموارسازی ورودی کنترل را نشان میدهند، در حالی که دقت کنترل حفظ شده است. برای $$ \varphi $$ بزرگتر ($$ \varphi = 0.01$$)، اثر هموارسازی قابل توجه است، اما دقت کاهش یافته است. بنابراین، باید بین این دو مصالحهای برقرار کنیم.
رویکرد کنترل مد لغزشی مرتبه دوم مشکل چترینگ را حل میکند و در عین حال دقت را بهبود خواهد داد.
$$ \large F = F _ 1 + F _ 2 \;\;\;\;\; (29) $$
$$ \large F _ 1 - \sqrt { F ^ * } \sqrt {|\sigma | } \text{sgn} (\sigma) \;\;\;\;\; (30)$$
$$ \large \dot {F} _ 2 = - 1.1 F ^ * \text {sgn} (\sigma) \;\;\;\;\; (31) $$
شکل زیر، نتیجه شبیهسازی این روش را نشان میدهد. پارامتر تنظیم $$ F ^ * = 50 $$ در نظر گرفته شده است.
میتوان گفت که دقت بالا و سادگی پیادهسازی این تکنیکها که عملاً بر پایه اطلاعات دینامیک سیستم نیستند به کنترل بسیار دقیق خواهد انجامید.
کاربردهای کنترل مد لغزشی
تاکنون، کنترل مد لغزشی روی سیستمهای مختلفی پیادهسازی شده است. یکی از این کاربردها در مدارهای الکترونیک قدرت و درایوهای الکتریکی است. در این موارد، کنترل مد لغزشی استاندارد با استقبال بسیاری مواجه شده است که از دلایل آن میتوان به ماهیت سوئیچینگ سیگنال کنترل در این سیستمها اشاره کرد که با این نوع کنترلکننده سازگار است. کنترل مد لغزشی مرتبه دوم نیز در موتورهای الکتریکی DC مورد استفاده قرار گرفته است. کنترل سیستمهای قدرت نیز یکی از زمینههای پرکاربرد SMC بوده است. کنترل مد لغزشی مرتبه دوم نیز تاکنون در بسیاری سیستمهای مکانیکی از قبیل جرثقیلها، بازوهای رباتیک و قطارهای مسافربری به کار رفته است.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای دروس مهندسی کنترل
- آموزش طراحی سیستم های کنترل غیرخطی
- مجموعه آموزشهای مهندسی برق
- آموزش سیستم های کنترل غیرخطی با رویکرد حل مساله
- کنترل فازی - از صفر تا صد
- کنترل تطبیقی - از صفر تا صد
- تقلب نامه (Cheat Sheet) کنترل خطی
^^
سلام مرسی. کمتر منبعی داخل نت هست که به این شیوایی توضیح داده باشه. فقط کاش فایل شبیه سازی رو هم قرار میدادین. اگر راجع به شکل 4 هم بیشتر توضیح بدین ممنون میشم.
سلام وقت بخیر ممنون از آموزش خوبتون فقط یک نکته رو میخواستم بگم که در فرمول (1)
g(x,t).u میباشد که به اشتباه g(x,t) نوشته شده.
سلام.
معادله تصحیح شد.
سپاس از همراهی و بازخوردتان.
سلام وقتتون بخیر،از آموزش های خوب و مفیدتون ممنونم.یک سوال درحین آموزش برای من پیش اومد و اون اینکه چرا برای صفر شدن مشتق سطح لغزش در کنترل مد لغزشی به سراغ اثبات پایداری سطح لغزش میرویم؟