یک کارآموز یک بار پرسید چرا برنامه ماشین پرکن او گاهی یک مرحله را رد میکند و بطری را قبل از اینکه در موقعیت قرار گیرد پر میکند. پاسخ این نبود که یک تایمر گم شده است — بلکه حالت گم شده بود. برنامه او یک توده از شرایط مستقل بود؛ ماشینهای واقعی ترتیبی یک ماشین حالت هستند و تفاوت بین برنامهای که روی کاغذ کار میکند و برنامهای که در روز دوشنبه کار میکند، همین تفاوت است.
کنترل ترتیبی در اتوماسیون همهجا وجود دارد: یک خط پرکن، یک گردانک، یک پرس ضربهای، یک اتاق رنگ. اشتباه کلاسیک این است که هر خروجی را به عنوان یک شرط آزاد بنویسید — "زمانی که سنسور A و تایمر B، شیر C را باز کن" — و سپس در ساعت 2 صبح ترکیبهای غیرممکن را اشکالزدایی کنید. راهحل این است که از فکر کردن به خروجیها دست بردارید و شروع به فکر کردن به حالتها کنید.
یک ماشین حالت واقعاً چیست
یک ماشین حالت مجموعهای از مراحل نامگذاری شده و قوانین حرکت بین آنها است. ماشین همیشه در دقیقاً یک مرحله است: WAIT، POSITION، FILL، SEAL، EJECT. هر مرحله دارای اقدامات ورودی، شرایط خروج و نگهبانها است. بطری فقط در مرحله FILL پر میشود و مرحله FILL تنها زمانی از POSITION قابل دسترسی است که سنسور بطری تأیید کند که در موقعیت است. به نظر میرسد مانند بوروکراسی است؛ اما مانند مهندسی رفتار میکند.
در FBD xLogicSoft، یک ماشین حالت بهخوبی بر روی الگوی کلاسیک ثبتکننده شیفت یا بر روی پرچمهای F که به عنوان بیتهای مرحلهای استفاده میشوند، نقشهبرداری میشود. الگو: یک پرچم F برای هر مرحله، مجموعهای از شرایط انتقال و یک بلوک انتقال یکبار مصرف تا ماشین دقیقاً یک مرحله به جلو برود. زیرا مرحله فعلی همیشه قابل مشاهده است — LCD نشان میدهد که کدام پرچم F فعال است — اپراتور و تعمیرکار میتوانند به سرعت ببینند که ماشین فکر میکند کجاست. آن ویژگی واحد زمان اشکالزدایی را بیشتر از هر راهنمای تشخیصی کاهش میدهد.
ساخت آن: سه ایستگاه پرکن
یک مثال ساده سه ایستگاهی را در نظر بگیرید: یک بطری میرسد، پر میشود، درپوش گذاشته میشود. مراحل:
- مرحله ۰ بیکار: همه خروجیها خاموش هستند. انتقال: حسگر بطری موجود، دکمه شروع.
- مرحله ۱ موقعیت: نوار نقاله تا زمانی که بطری در سر پرکن متوقف شود، کار میکند. انتقال: حسگر موقعیت.
- مرحله ۲ پر کردن: شیر پرکن برای مدت زمان معین یا تا زمانی که حسگر سطح فعال شود، باز میشود. انتقال: تایمر تمام شده.
- مرحله ۳ درپوش زدن: درپوشزن پایین میآید و فشار میدهد. انتقال: فشار تأیید شده، تایمر تمام شده.
- مرحله ۴ خروج: نوار نقاله برای جابجایی بطری به بیرون کار میکند. انتقال: حسگر خروج پاک میشود.
هر انتقال از یک بلوک On-Delay یا یک رله Wiping (یکبار مصرف) استفاده میکند تا پیشرفت دقیقاً یک بار انجام شود. نگهبان در هر انتقال خود مرحله است — مرحله 2 نمیتواند شروع شود مگر اینکه ماشین در مرحله 1 باشد، همین. بطری نمیتواند زودتر پر شود زیرا "زودتر" به عنوان یک شرط وجود ندارد؛ در جدول مراحل نیست و بطری تا زمانی که ماشین از POSITION خارج نشده باشد، در موقعیت قرار نمیگیرد.
قبل از اینکه به اپراتور هر چیز دیگری بدهید، یک حالت مرحله دستی به او بدهید. یک ورودی انتخابگر به ماشین اجازه میدهد تا یک مرحله در یک زمان از طریق توالی پیش برود، بنابراین یک تکنسین تنظیم میتواند خط را به صورت جداگانه از POSITION، FILL و CAPPING حرکت دهد در حالی که عملگرها را تماشا میکند. ماشین حالت این را ساده میکند — پیشرفت یک مرحله فقط به معنای مجبور کردن انتقال بعدی است — و راهاندازی را از یک معما به یک چکلیست تبدیل میکند. ماشینهایی که نمیتوانند به صورت دستی از طریق مراحل پیش بروند، ماشینهایی هستند که با پیچگوشتی اشکالزدایی میشوند.
آزمون حالت شکست
این تمرین نشان میدهد که آیا شما یک ماشین حالت ساختهاید یا یک توده شرط: موارد اضطراری را لیست کنید. بطری زیر سر پرکن گیر کرده است؟ ماشین باید در FILL بماند، پمپ را متوقف کند و زنگ خطر را به صدا درآورد — نه اینکه به EJECT برود و محصول را روی زمین بریزد. سنسور خراب میشود و برای همیشه "بطری موجود" را گزارش میدهد؟ ماشین باید مرحله POSITION را زمانگذاری کند و زنگ خطر را به صدا درآورد، نه اینکه همان بطری نامرئی را تمام شب پر کند. سنسور به شکل دیگری خراب میشود، "هرگز موجود"؟ ماشین با صبر منتظر میماند — این خوب است، این همان چیزی است که ماشینها باید انجام دهند.
یک watchdog به برنامه اضافه کنید: اگر ماشین در هر مرحله غیر IDLE برای مدت زمان بیشتری از حداکثر زمان مرحله بنشیند، به حالت FAULT بروید، خروجیها را قطع کنید و زنگ خطر را روشن کنید. حداکثر زمان عددی است که شما قبلاً از زمان چرخه میدانید — شما حدس نمیزنید، شما فیزیک را تحمیل میکنید.
قبل از اینکه خطا رخ دهد، تصمیم بگیرید که چه اتفاقی میافتد. انتخاب رایج: ماشین در جایی که هست متوقف میشود، اپراتور علت را برطرف میکند، دکمه بازنشانی را فشار میدهد و توالی به IDLE برمیگردد — یا به ابتدای مرحله قطع شده اگر محصول هنوز ایمن باشد. بازگشت به IDLE برای ماشینهای کوچک سادهتر و ایمنتر است؛ از سرگیری در میانه چرخه سریعتر است اما نیاز دارد که هر حالت خروجی شناخته شده و اثبات شده باشد. برای یک ماشین پرکن، IDLE پاسخ صادقانه است — یک بطری نیمه پر به هر حال دورریز است.
چرا FBD در این مورد بهتر از نردبان است
یک عادت اشکالزدایی به سرعت خود را پرداخت میکند: مرحله فعلی را به عنوان یک عدد ساده در LCD جلویی قابل مشاهده کنید. اولین گزارش اپراتور میشود "در مرحله 4 گیر کرده است،" نه "چیزی عجیب انجام میدهد،" و مرحله 4 به وضوح به شرایط انتقال خود اشاره میکند. در xLogicSoft بیتهای پرچم دقیقاً در پنجره مانیتور وجود دارند، بنابراین یک جلسه لپتاپ همان تصویری را نشان میدهد که LCD نشان میدهد. مطابقت دادن کلمات اپراتور با وضعیت برنامه، یک جستجوی دو ساعته را هر بار به بیست دقیقه کاهش میدهد.
منطق نردبانی میتواند یک ماشین حالت را بیان کند، اما به صدها پله و یک نمودار نیاز دارد که هیچکس آن را نمیخواند. در FBD، ساختار مرحله در مقابل شما قرار دارد: ثبتکننده شیفت یا بلوک پرچم مرحله فعلی را نشان میدهد، بلوکهای انتقال قابل مشاهده هستند و توالی از بالا به پایین خوانده میشود. محیط xLogicSoft شامل حدود هفتاد بلوک عملکردی است و یک ماشین پنج مرحلهای با قفلها به راحتی در یک صفحه برنامه جا میشود. وقتی ماشین تغییر میکند — ایستگاه جدید، سنسور جدید — شما یک مرحله و دو انتقال اضافه میکنید به جای اینکه منطق را دوباره سیمکشی کنید.
با جدول مرحله روی کاغذ شروع کنید، سپس پرچمها، سپس انتقالها. برنامه به طرز خستهکنندهای درست خواهد بود و درست بودن خستهکننده بالاترین تحسین است که یک برنامه اتوماسیون میتواند به دست آورد. ماشینها به هوش نیاز ندارند؛ آنها به پیشبینیپذیری نیاز دارند.












