آموزش مقدماتی Stateflow؛ مدلسازی ماشین حالت
مقدمهای بر ماشین حالت در Stateflow و Simulink؛ مثال دوحالته گرمکن، شرط انتقال و آزمون رفتار در مرز شرطها.
از شرطهای پراکنده تا حالتهای مشخص
یک برنامه ساده ممکن است فقط چند شرط داشته باشد. اما وقتی رفتار به وضعیت فعلی وابسته میشود، همان ورودی میتواند در دو وضعیت نتیجه متفاوت بدهد. در این نقطه، نوشتن نام حالتها، شرط جابهجایی و خروجی هر حالت کمک میکند منطق را بهجای دنبالکردن تعداد زیادی if بهصورت منظم بررسی کنی.
Stateflow ابزاری برای مدلکردن منطق و ماشینهای حالت است. نمودار حالت، گذار و دادهها اجزای مهم شروع کار هستند. این راهنما یک مدل آموزشی کوچک را توضیح میدهد تا پیش از کار با پروژههای پیچیده، تعریف حالت و شرط انتقال را تمرین کنی.
مثال آموزشی: روشن و خاموش شدن گرمکن
دو حالت HeaterOff و HeaterOn در نظر بگیر. در شروع، حالت خاموش فعال باشد. اگر دما کمتر از ۱۸ شد، گرمکن روشن شود؛ اگر دما بیشتر از ۲۲ شد، خاموش شود. بین دو آستانه، وضعیت قبلی حفظ میشود. این فاصله دو آستانه، از جابهجایی بیدلیل در اطراف یک مقدار واحد جلوگیری میکند. مثال فقط برای فهم منطق است و طراحی یک کنترلکننده آماده استفاده نیست.
| حالت فعلی | شرط انتقال | حالت بعد | خروجی |
|---|---|---|---|
| HeaterOff | temp < 18 | HeaterOn | heater = 1 |
| HeaterOn | temp > 22 | HeaterOff | heater = 0 |
| هر حالت | هیچ شرطی برقرار نیست | همان حالت | مطابق حالت فعلی |
مدل را مرحلهبهمرحله بساز
- در محیط Simulink یک Chart اضافه کن و آن را باز کن.
- دو حالت با نامهای مشخص بساز و برای حالت شروع یک گذار پیشفرض قرار بده.
- داده ورودی temp و خروجی heater را با نوع و دامنه مناسب تعریف کن.
- خروجی هر حالت را در رفتار ورود به آن مشخص کن.
- گذارها را با شرطهای مشخص بین حالتها رسم کن.
- یک ورودی آزمایشی شامل عبور از هر دو آستانه بساز و روند حالت فعال را بررسی کن.
روی مرز شرطها هم آزمون بنویس
در این مثال، temp=۱۸ شرط temp<۱۸ را فعال نمیکند و temp=۲۲ هم شرط temp>۲۲ را فعال نمیکند. این انتخاب ممکن است همان چیزی باشد که میخواهی، یا لازم باشد <= و >= تعریف کنی. مرزها را از روی نیاز مسئله مشخص کن؛ شکل زیبای نمودار، ابهام تعریف شرط را حل نمیکند.
دنباله آزمایشی ۲۰، ۱۷، ۱۹، ۲۳، ۲۰ را روی کاغذ دنبال کن. اگر حالت شروع خاموش باشد، خروجیهای مورد انتظار صفر، یک، یک، صفر، صفر هستند. سپس همین انتظار را با اجرای مدل مقایسه کن.
Stateflow چه تفاوتی با Simulink دارد؟
Simulink برای مدلسازی بلوکی و شبیهسازی سیستمها به کار میرود. Stateflow میتواند بخش منطق حالتها و تصمیمهای وابسته به وضعیت را در چنین مدلی بیان کند. در عمل ممکن است یک مدل شامل محاسبات پیوسته یا گسسته و یک Chart برای انتخاب حالت باشد؛ این دو ابزار میتوانند مکمل هم باشند.
اگر هنوز با اتصال بلوک و سیگنال آشنا نیستی، اولین مدل سیمولینک را ابتدا بساز. در ادامه، تعریف ورودی، زمان اجرا و رفتار شروع Chart را دقیقتر بخوان.
ارتباط Stateflow با مدلسازی در متلب
طبق توضیح مدرس، Stateflow یکی از موضوعات دوره متلب اوست. این صفحه یک راهنمای مستقل برای فهم اولیه است؛ برای ترتیب جلسات و سطح پوشش، سرفصل بهروز دوره جامع را در مکتبخونه بررسی کن.
دوره مرتبط: آموزش متلب از مقدماتی تا پیشرفته