ایف بی ڈی تسلسل کنٹرول: ریاست مشین پروگرامنگ ٹیوٹوریل

ایک ٹرینی نے ایک بار پوچھا کہ اس کی بھرنے والی مشین کا پروگرام کبھی کبھار ایک مرحلہ چھوڑ دیتا ہے اور بوتل کو بھر دیتا ہے اس سے پہلے کہ بوتل کو جگہ دی جائے۔ جواب یہ نہیں تھا کہ کوئی ٹائمر غائب ہے — یہ ایک ریاست غائب تھی۔ اس کا پروگرام آزاد حالات کا ایک ڈھیر تھا؛ حقیقی تسلسل مشینیں ایک ریاست مشین ہیں، اور فرق یہ ہے کہ ایک ایسا پروگرام جو کاغذ پر کام کرتا ہے اور ایک ایسا پروگرام جو پیر کو کام کرتا ہے۔

تسلسل کنٹرول خودکاریت میں ہر جگہ ہے: ایک بھرنے کی لائن، ایک ٹرن ٹیبل، ایک اسٹیمپنگ پریس، ایک پینٹ بوتھ۔ کلاسیکی غلطی یہ ہے کہ ہر آؤٹ پٹ کو ایک آزاد حالت کے طور پر لکھنا — "جب سینسر A اور ٹائمر B، والو C کھولیں" — اور پھر 2 بجے صبح ناممکن مجموعوں کی غلطی تلاش کرنا۔ حل یہ ہے کہ آؤٹ پٹس کے بارے میں سوچنا بند کریں اور ریاستوں کے بارے میں سوچنا شروع کریں۔

ایک ریاست مشین اصل میں کیا ہے

ایک ریاست مشین نامزد مراحل کا ایک مجموعہ ہے اور ان کے درمیان منتقل ہونے کے قواعد۔ مشین ہمیشہ بالکل ایک مرحلے میں ہوتی ہے: WAIT، POSITION، FILL، SEAL، EJECT۔ ہر مرحلے میں داخلے کی کارروائیاں، باہر نکلنے کی شرائط، اور گارڈز ہوتے ہیں۔ بوتل صرف FILL مرحلے میں بھری جاتی ہے، اور FILL مرحلہ صرف POSITION سے قابل رسائی ہے جب بوتل کا سینسر مقام کی تصدیق کرتا ہے۔ یہ بیوروکریسی کی طرح لگتا ہے؛ یہ انجینئرنگ کی طرح برتاؤ کرتا ہے۔

xLogicSoft کے ایف بی ڈی میں، ایک ریاست مشین صاف طور پر کلاسک شفٹ رجسٹر پیٹرن یا مرحلہ بٹس کے طور پر استعمال ہونے والے F پرچموں پر نقشہ بناتی ہے۔ پیٹرن: ہر مرحلے کے لیے ایک F پرچم، منتقلی کی شرائط کا ایک سیٹ، اور ایک ایک بار کی منتقلی بلاک تاکہ مشین ہر واقعے پر بالکل ایک مرحلے میں آگے بڑھے۔ کیونکہ موجودہ مرحلہ ہمیشہ نظر آتا ہے — LCD دکھاتا ہے کہ کون سا F پرچم فعال ہے — آپریٹر اور دیکھ بھال کرنے والا شخص ایک نظر میں دیکھ سکتے ہیں کہ مشین کہاں ہے۔ یہ واحد خصوصیت کسی بھی تشخیصی دستی سے زیادہ خرابی کا وقت کم کرتی ہے۔

اسے بنانا: تین بھرنے کے اسٹیشن

ایک سادہ تین اسٹیشن مثال لیں: ایک بوتل آتی ہے، بھری جاتی ہے، ڈھکن لگایا جاتا ہے۔ مراحل:

  • مرحلہ 0 آئیڈل: تمام آؤٹ پٹس بند ہیں۔ منتقلی: بوتل موجود سینسر، شروع کرنے کا بٹن۔
  • مرحلہ 1 پوزیشن: کنویئر چلتا ہے جب تک کہ بوتل بھرنے کے سر پر رک نہ جائے۔ منتقلی: پوزیشن سینسر۔
  • مرحلہ 2 بھرنا: بھرنے کا والو ایک وقت کی مدت کے لیے کھلتا ہے یا جب تک سطح کا سینسر ٹرپ نہ ہو جائے۔ منتقلی: ٹائمر مکمل۔
  • مرحلہ 3 کیپنگ: کیپر نیچے آتا ہے اور دباتا ہے۔ منتقلی: دباؤ کی تصدیق، ٹائمر مکمل۔
  • مرحلہ 4 ایجیکٹ: کنویئر بوتل کو باہر نکالنے کے لیے چلتا ہے۔ منتقلی: باہر نکلنے کا سینسر صاف ہوتا ہے۔

ہر منتقلی ایک آن-ڈیلے یا وائپنگ ریلی (ایک بار) بلاک کا استعمال کرتی ہے تاکہ آگے بڑھنا بالکل ایک بار ہو۔ ہر منتقلی پر گارڈ خود مرحلہ ہے — مرحلہ 2 شروع نہیں ہو سکتا جب تک کہ مشین مرحلہ 1 میں نہ ہو، بس۔ بوتل کو پہلے نہیں بھرا جا سکتا کیونکہ "پہلے" ایک حالت کے طور پر موجود نہیں ہے؛ یہ مرحلے کی میز میں نہیں ہے، اور بوتل کو اس وقت تک جگہ نہیں دی گئی جب تک کہ مشین نے POSITION چھوڑ نہ دیا ہو۔

آپریٹر کو دستی مرحلے کا موڈ دیں اس سے پہلے کہ آپ انہیں کچھ اور دیں۔ ایک سلیکٹر ان پٹ مشین کو ایک وقت میں ایک مرحلے کے ذریعے آگے بڑھنے دیتا ہے، تاکہ ایک سیٹ اپ ٹیکنیشن لائن کو POSITION، FILL اور CAPPING کے ذریعے انفرادی طور پر چلائے جبکہ ایکچوئٹرز کو دیکھتا ہے۔ ریاست مشین یہ آسان بنا دیتی ہے — ایک مرحلے میں آگے بڑھنا صرف اگلی منتقلی کو مجبور کرنا ہے — اور یہ کمیشننگ کو ایک معمہ سے ایک چیک لسٹ میں تبدیل کر دیتی ہے۔ ایسی مشینیں جو دستی طور پر مرحلہ وار نہیں کی جا سکتیں وہ مشینیں ہیں جن کی خرابی ایک پیچ کے ساتھ کی جاتی ہے۔

ناکامی کا طریقہ ٹیسٹ

یہاں ایک مشق ہے جو ظاہر کرتی ہے کہ آیا آپ نے ایک ریاست مشین یا ایک حالت کا ڈھیر بنایا ہے: ہنگامی حالات کی فہرست بنائیں۔ بوتل بھرنے کے سر کے نیچے پھنس گئی؟ مشین کو FILL میں رہنا چاہیے، پمپ کو روکنا چاہیے، اور الارم دینا چاہیے — نہ کہ EJECT میں گھومنا اور فرش پر مصنوعات ڈالنا۔ سینسر ناکام ہو جاتا ہے اور ہمیشہ "بوتل موجود ہے" کی رپورٹ کرتا ہے؟ مشین کو POSITION مرحلے کا وقت ختم کرنا چاہیے اور الارم دینا چاہیے، نہ کہ ساری رات اسی نامعلوم بوتل کو بھرنا۔ سینسر دوسری طرف ناکام ہو جاتا ہے، "کبھی موجود نہیں"؟ مشین صبر سے انتظار کرتی ہے — یہ ٹھیک ہے، یہی مشینوں کو کرنا چاہیے۔

پروگرام میں ایک واچ ڈاگ لکھیں: اگر مشین کسی غیر-IDLE مرحلے میں مرحلے کے زیادہ سے زیادہ وقت سے زیادہ بیٹھتی ہے، تو FAULT ریاست میں گر جائے، آؤٹ پٹس کو کاٹ دے، اور الارم کو چمکائے۔ زیادہ سے زیادہ وقت ایک عدد ہے جو آپ پہلے ہی سائیکل کے وقت سے جانتے ہیں — آپ اندازہ نہیں لگا رہے ہیں، آپ طبیعیات کو نافذ کر رہے ہیں۔

ایک خرابی کے بعد کیا ہوتا ہے یہ طے کریں اس سے پہلے کہ خرابی ہو۔ عام انتخاب: مشین جہاں ہے وہیں رک جاتی ہے، آپریٹر وجہ کو صاف کرتا ہے، ری سیٹ دباتا ہے، اور ترتیب IDLE میں واپس آ جاتی ہے — یا اگر مصنوعات ابھی بھی محفوظ ہے تو مداخلت شدہ مرحلے کے آغاز پر۔ IDLE میں واپس آنا چھوٹی مشینوں کے لیے آسان اور محفوظ ہے؛ وسط سائیکل میں دوبارہ شروع کرنا تیز ہے لیکن اس کا مطالبہ ہے کہ ہر آؤٹ پٹ ریاست معلوم اور ثابت ہو۔ ایک بھرنے والی مشین کے لیے، IDLE ایماندار جواب ہے — آدھی بھری ہوئی بوتل دونوں صورتوں میں کچرا ہے۔

کیوں ایف بی ڈی اس کے لیے سیڑھی کو شکست دیتا ہے

ایک خرابی کی عادت خود کو فوراً ادا کرتی ہے: موجودہ مرحلے کو سامنے کے LCD پر ایک سادہ نمبر کے طور پر نظر آنے دیں۔ آپریٹر کی پہلی رپورٹ بن جاتی ہے "یہ مرحلہ 4 پر پھنس گیا ہے،" نہ کہ "یہ کچھ عجیب کرتا ہے،" اور مرحلہ 4 براہ راست اس کی منتقلی کی حالت کی طرف اشارہ کرتا ہے۔ xLogicSoft میں پرچم کے بٹس وہاں مانیٹر ونڈو میں ہیں، لہذا ایک لیپ ٹاپ سیشن وہی تصویر دکھاتا ہے جو LCD دکھاتا ہے۔ آپریٹر کے الفاظ کو پروگرام کی ریاست سے ملانا ہر بار دو گھنٹے کی تلاش کو بیس منٹ تک کم کر دیتا ہے۔

لیڈر منطق ایک ریاست مشین کا اظہار کر سکتی ہے، لیکن اس میں ایک سو رنگز اور ایک ڈایاگرام ہوتا ہے جسے کوئی نہیں پڑھتا۔ ایف بی ڈی میں، مرحلے کی ساخت آپ کے سامنے ہوتی ہے: شفٹ رجسٹر یا پرچم بلاک موجودہ مرحلے کو دکھاتا ہے، منتقلی کے بلاکس نظر آتے ہیں، اور ترتیب اوپر سے نیچے پڑھتی ہے۔ xLogicSoft کا ماحول تقریباً ستر فنکشن بلاکس پر مشتمل ہے، اور ایک پانچ مرحلے کی مشین جس میں انٹرلاک ہوتے ہیں ایک پروگرام کے صفحے میں آرام سے فٹ بیٹھتی ہے۔ جب مشین تبدیل ہوتی ہے — نیا اسٹیشن، نیا سینسر — تو آپ منطق کو دوبارہ وائر کرنے کے بجائے ایک مرحلہ اور دو منتقلی شامل کرتے ہیں۔

پہلے کاغذ پر مرحلے کی میز سے شروع کریں، پھر پرچم، پھر منتقلی۔ پروگرام بورنگلی درست ہوگا، اور بورنگلی درست ہونا خودکار پروگرام کے لیے سب سے بڑا تعریف ہے۔ مشینوں کو ہوشیار ہونے کی ضرورت نہیں؛ انہیں پیش گوئی کرنے کی ضرورت ہے۔