ShIoTiny: نوڈس، لنکس، اور واقعات یا ڈرائنگ پروگرام کی خصوصیات

ShIoTiny: نوڈس، لنکس، اور واقعات یا ڈرائنگ پروگرام کی خصوصیات

اہم نکات یا یہ مضمون کس بارے میں ہے۔

مضمون کا موضوع بصری PLC پروگرامنگ ہے۔ shIoTiny یہاں بیان کردہ سمارٹ ہوم کے لیے: ShIoTiny: چھوٹی آٹومیشن، چیزوں کا انٹرنیٹ یا "چھ ماہ قبل چھٹی".

بہت مختصر طور پر تصورات جیسے گرہیں, مواصلات, رفت، نیز بصری پروگرام کو لوڈ کرنے اور اس پر عمل درآمد کی خصوصیات ESP8266جو کہ PLC کی بنیاد ہے۔ shIoTiny.

تعارف یا کچھ تنظیمی سوالات

اپنی ترقی کے بارے میں پچھلے مضمون میں، میں نے کنٹرولر کی صلاحیتوں کا ایک مختصر جائزہ دیا تھا۔ shIoTiny.

عجیب بات یہ ہے کہ عوام نے کافی دلچسپی دکھائی اور مجھ سے کافی سوالات پوچھے۔ یہاں تک کہ کچھ دوستوں نے فوری طور پر مجھ سے ایک کنٹرولر خریدنے کی پیشکش کی۔ نہیں، میں تھوڑا سا پیسہ کمانے کے خلاف نہیں ہوں، لیکن میرا ضمیر مجھے ایسی چیز فروخت کرنے کی اجازت نہیں دیتا جو سافٹ ویئر کے لحاظ سے اب بھی بہت خام ہے۔

لہذا، میں نے GitHub پر فرم ویئر بائنریز اور ڈیوائس ڈایاگرام پوسٹ کیا: فرم ویئر + مختصر ترین ہدایات + ڈایاگرام + مثالیں۔.

اب ہر کوئی ESP-07 کو فلیش کر سکتا ہے اور خود فرم ویئر کے ساتھ کھیل سکتا ہے۔ اگر کوئی واقعی میں وہی بورڈ چاہتا ہے جیسا کہ تصویر میں ہے، تو میرے پاس ان میں سے کئی ہیں۔ ای میل کے ذریعے لکھیں۔ [ای میل محفوظ]. لیکن، جیسا کہ ناقابل فراموش Ogurtsov کہا کرتا تھا: "میں کسی چیز کے لیے ذمہ دار نہیں ہوں!"

تو آئیے بات کی طرف آتے ہیں: کیا ہے؟گرہ۔"(نوڈ) اور"تقریب" پروگرام کو کیسے چلایا جاتا ہے؟

ہمیشہ کی طرح، آئیے ترتیب سے شروع کریں: پروگرام ڈاؤن لوڈ کرکے۔

پروگرام کو کیسے لوڈ کیا جاتا ہے۔

آئیے شروع کرتے ہیں کہ جب ہم ایک بٹن دباتے ہیں تو کیا ہوتا ہے۔ اپ لوڈ کریں ایڈیٹر میں ایل ڈرا اور ہمارا سرکٹ پروگرام، جو خوبصورت چوکوں پر مشتمل ہے، ڈیوائس میں اڑتا ہے۔

سب سے پہلے، ہم نے جو خاکہ تیار کیا ہے، اس کی بنیاد پر متن کی شکل میں اس کی تفصیل بنائی گئی ہے۔
دوم، یہ چیک کرتا ہے کہ آیا تمام نوڈ ان پٹ آؤٹ پٹ سے جڑے ہوئے ہیں۔ کوئی "لٹکا ہوا" داخلہ نہیں ہونا چاہئے۔ اگر اس طرح کے ان پٹ کا پتہ چل جاتا ہے، تو سرکٹ کو ShIoTiny میں لوڈ نہیں کیا جائے گا، اور ایڈیٹر متعلقہ وارننگ دکھائے گا۔

اگر سب کچھ ٹھیک رہا تو، ایڈیٹر ایک وقت میں سرکٹ ون نوڈ کی ٹیکسٹ تفصیل ShIoTiny کو بھیجتا ہے۔ بلاشبہ، ShIoTiny سے موجودہ سرکٹ کو پہلے ہٹا دیا گیا ہے۔ نتیجے میں متن کی تفصیل FLASH میموری میں محفوظ ہے۔

ویسے، اگر آپ کسی ڈیوائس سے سرکٹ کو ہٹانا چاہتے ہیں، تو اس میں صرف ایک خالی سرکٹ لوڈ کریں (جس میں ایک نوڈ عنصر نہ ہو)۔

ایک بار جب پورا سرکٹ پروگرام ShIoTiny PLC میں لوڈ ہو جاتا ہے، تو یہ "عمل درآمد" کرنا شروع کر دیتا ہے۔ اس کا کیا مطلب ہے؟

نوٹ کریں کہ فلیش میموری سے سرکٹ لوڈ کرنے کے عمل جب پاور آن ہوتے ہیں اور ایڈیٹر سے سرکٹ وصول کرتے ہیں تو ایک جیسے ہوتے ہیں۔

سب سے پہلے، نوڈ آبجیکٹ ان کی تفصیل کی بنیاد پر بنائے جاتے ہیں۔
پھر نوڈس کے درمیان کنکشن بنائے جاتے ہیں. یعنی آؤٹ پٹ سے ان پٹ کے لنکس اور آؤٹ پٹ کے ان پٹ کے لنکس تیار ہوتے ہیں۔

اور اس سب کے بعد ہی مرکزی پروگرام پر عمل درآمد کا سلسلہ شروع ہوتا ہے۔

میں نے کافی دیر تک لکھا، لیکن پورا عمل - فلیش میموری سے سرکٹ کو "لوڈ کرنے" سے لے کر مین سائیکل شروع کرنے تک - 60-80 نوڈس کے سرکٹ کے لیے ایک سیکنڈ کا ایک حصہ لیتا ہے۔

مین لوپ کیسے کام کرتا ہے؟ بہت آسان. پہلے وہ ظہور کا انتظار کرتا ہے۔ رفت کچھ نوڈ پر، پھر اس واقعہ پر کارروائی کرتا ہے۔ اور اسی طرح لامتناہی۔ ٹھیک ہے، یا جب تک وہ shIoTiny پر کوئی نئی اسکیم اپ لوڈ نہیں کرتے۔

میں نے پہلے ہی کئی بار ایسی چیزوں کا ذکر کیا ہے۔ رفت, گرہیں и مواصلات. لیکن سافٹ ویئر کے نقطہ نظر سے یہ کیا ہے؟ ہم آج اس کے بارے میں بات کریں گے۔

نوڈس، کنکشن اور واقعات

صرف سرکٹ پروگراموں کی مثالیں دیکھیں shIoTinyیہ سمجھنے کے لیے کہ خاکہ صرف دو اداروں پر مشتمل ہے - نوڈس (یا عناصر) اور ان کے درمیان کنکشن۔

گرہ۔, لیکن ہاں یا سرکٹ عنصر کچھ کی مجازی نمائندگی ہے۔ اعمال اعداد و شمار کے اوپر. یہ ریاضی کا آپریشن، منطقی آپریشن، یا کوئی بھی آپریشن ہو سکتا ہے جو ہمارے ذہن میں آتا ہے۔ اہم بات یہ ہے کہ نوڈ میں داخلی اور خارجی راستہ ہے۔

ان پٹ - یہ وہ جگہ ہے جہاں نوڈ ڈیٹا وصول کرتا ہے۔ ان پٹ امیجز وہ پوائنٹس ہیں جو ہمیشہ نوڈ کے بائیں جانب ہوتے ہیں۔

آؤٹ پٹ - یہ وہ جگہ ہے جہاں نوڈ کے آپریشن کا نتیجہ بازیافت کیا جاتا ہے۔ آؤٹ پٹ امیجز وہ پوائنٹس ہیں جو ہمیشہ نوڈ کے دائیں جانب واقع ہوتے ہیں۔

کچھ نوڈس میں ان پٹ نہیں ہوتے ہیں۔ اس طرح کے نوڈس اندرونی طور پر نتیجہ پیدا کرتے ہیں۔ مثال کے طور پر، ایک مستقل نوڈ یا ایک سینسر نوڈ: انہیں نتیجہ کی اطلاع دینے کے لیے دوسرے نوڈس سے ڈیٹا کی ضرورت نہیں ہوتی ہے۔

دیگر نوڈس، اس کے برعکس، کوئی آؤٹ پٹ نہیں ہے. یہ ایسے نوڈس ہیں جو ظاہر کرتے ہیں، مثال کے طور پر، ایکچیوٹرز (ریلے یا کچھ ایسا ہی)۔ وہ ڈیٹا کو قبول کرتے ہیں لیکن ایسا کمپیوٹیشنل نتیجہ پیدا نہیں کرتے جو دوسرے نوڈس کے لیے دستیاب ہو۔

اس کے علاوہ، ایک منفرد تبصرہ نوڈ بھی ہے. یہ کچھ نہیں کرتا، اس میں کوئی ان پٹ یا آؤٹ پٹ نہیں ہے۔ اس کا مقصد خاکہ پر وضاحت کرنا ہے۔

کیا "تقریبواقعہ کسی بھی نوڈ میں نئے ڈیٹا کا ابھرنا ہے۔ مثال کے طور پر، واقعات میں شامل ہیں: ان پٹ حالت میں تبدیلی (node ان پٹ)، دوسرے آلے سے ڈیٹا وصول کرنا (نوڈس ایم کیوٹی ٹی۔ и UDP)، وقت کی ایک مخصوص مدت کی میعاد ختم ہونا (نوڈس ٹائمر и تاخیر) اور اسی طرح.

واقعات کس لیے ہیں؟ ہاں، اس بات کا تعین کرنے کے لیے کہ کون سے نوڈ میں نیا ڈیٹا پیدا ہوا ہے اور نئے ڈیٹا کی وصولی کے سلسلے میں کن نوڈس کی ریاستوں کو تبدیل کرنے کی ضرورت ہے۔ واقعہ، جیسا کہ یہ تھا، نوڈس کی زنجیر کے ساتھ "پاس" ہوتا ہے یہاں تک کہ یہ ان تمام نوڈس کو نظرانداز کر دیتا ہے جن کی حالت کو چیک کرنے اور تبدیل کرنے کی ضرورت ہوتی ہے۔

تمام نوڈس کو دو قسموں میں تقسیم کیا جا سکتا ہے۔
آئیے نوڈس کو کال کریں جو واقعات پیدا کر سکتے ہیں "فعال نوڈس'.
ہم نوڈس کو کال کریں گے جو واقعات پیدا نہیں کرسکتے ہیں "غیر فعال نوڈس'.

جب کوئی نوڈ کوئی واقعہ پیدا کرتا ہے (یعنی اس کے آؤٹ پٹ پر نیا ڈیٹا ظاہر ہوتا ہے) تو عام صورت میں ایونٹ جنریٹر نوڈ کے آؤٹ پٹ سے منسلک نوڈس کی پوری چین کی حالت بدل جاتی ہے۔

اسے واضح کرنے کے لیے، تصویر میں دی گئی مثال پر غور کریں۔

ShIoTiny: نوڈس، لنکس، اور واقعات یا ڈرائنگ پروگرام کی خصوصیات

یہاں فعال نوڈس Input1، Input2 اور Input3 ہیں۔ باقی نوڈس غیر فعال ہیں۔ آئیے غور کریں کہ جب ایک یا دوسرا ان پٹ بند ہوجاتا ہے تو کیا ہوتا ہے۔ سہولت کے لیے، نتائج کا خلاصہ ایک جدول میں کیا گیا ہے۔

ShIoTiny: نوڈس، لنکس، اور واقعات یا ڈرائنگ پروگرام کی خصوصیات

جیسا کہ آپ دیکھ سکتے ہیں، جب کوئی واقعہ پیش آتا ہے، واقعہ کے سورس نوڈ سے لے کر اختتامی نوڈ تک ایک سلسلہ بنتا ہے۔ ان نوڈس جو زنجیر میں نہیں آتے ان کی حالت نہیں بدلتی۔

ایک جائز سوال یہ پیدا ہوتا ہے کہ اگر بیک وقت دو یا کئی واقعات رونما ہوں تو کیا ہوگا؟

Gleb Anfilov کے کام کے عاشق کے طور پر، میں ایک متجسس سائل کو ان کی کتاب "Escape from Surprise" پر بھیجنے کا لالچ میں ہوں۔ یہ "چھوٹے بچوں کے لیے نظریہ اضافیت" ہے، جو اچھی طرح بتاتا ہے کہ "ایک ساتھ" کا کیا مطلب ہے اور اس کے ساتھ کیسے رہنا ہے۔

لیکن عملی طور پر سب کچھ بہت آسان ہے: جب دو یا کئی واقعات رونما ہوتے ہیں، تو ہر واقعہ کے ماخذ سے تمام زنجیریں ترتیب وار بنائی جاتی ہیں اور باری باری اس پر کارروائی کی جاتی ہے، اور کوئی معجزہ رونما نہیں ہوتا ہے۔

ایک متجسس قاری کا اگلا مکمل طور پر جائز سوال یہ ہے کہ اگر نوڈس ایک انگوٹھی میں جڑے ہوں تو کیا ہوگا؟ یا، جیسا کہ وہ آپ کے ان ذہین لڑکوں میں سے کہتے ہیں، تاثرات پیش کریں۔ یعنی کسی ایک نوڈ کے آؤٹ پٹ کو پچھلے نوڈ کے ان پٹ سے جوڑیں تاکہ اس نوڈ کی آؤٹ پٹ سٹیٹ اس کے ان پٹ کی حالت کو متاثر کرے۔ ایڈیٹر آپ کو نوڈ کے آؤٹ پٹ کو اس کے ان پٹ سے براہ راست جوڑنے کی اجازت نہیں دے گا۔ ایل ڈرا. لیکن بالواسطہ طور پر، جیسا کہ نیچے دی گئی تصویر میں ہے، یہ کیا جا سکتا ہے۔

تو اس معاملے میں کیا ہوگا؟ جواب بہت "یقینی" ہوگا: کن نوڈس پر منحصر ہے۔ آئیے تصویر میں دی گئی مثال کو دیکھتے ہیں۔

ShIoTiny: نوڈس، لنکس، اور واقعات یا ڈرائنگ پروگرام کی خصوصیات

جب Input1 کے ان پٹ رابطے کھلے ہوتے ہیں، نوڈ A کا اوپری ان پٹ 0 ہوتا ہے۔ نوڈ A کا آؤٹ پٹ بھی 0 ہوتا ہے۔ نوڈ B کا آؤٹ پٹ 1 ہوتا ہے۔ اور آخر میں، نوڈ A کا نچلا ان پٹ 1 ہوتا ہے۔ سب کچھ ہے صاف اور ان لوگوں کے لیے جو واضح نہیں ہیں، ذیل میں اس کی وضاحت کے لیے دیکھیں کہ "AND" اور "NOT" نوڈس کیسے کام کرتے ہیں۔

اب ہم ان پٹ 1 ان پٹ کے کانٹیکٹس کو بند کرتے ہیں، یعنی ہم ایک کو نوڈ A کے اوپری ان پٹ پر لگاتے ہیں۔ جو لوگ الیکٹرانکس سے واقف ہیں وہ جانتے ہیں کہ درحقیقت ہمیں منطقی عناصر کا استعمال کرتے ہوئے ایک کلاسک جنریٹر سرکٹ ملے گا۔ اور نظریہ میں، اس طرح کے سرکٹ کو عناصر A اور B کے آؤٹ پٹ پر لامتناہی طور پر 1-0-1-0-1-0… ترتیب دینا چاہئے۔ اور 0-1-0-1-0-1-…. سب کے بعد، ایونٹ کو 2-3-2-3- دائرے میں چلتے ہوئے نوڈس A اور B کی حالت کو مسلسل تبدیل کرنا چاہیے...!

لیکن حقیقت میں ایسا نہیں ہوتا۔ سرکٹ بے ترتیب حالت میں آجائے گا - یا ریلے آن یا آف رہے گا، یا ہوسکتا ہے کہ لگاتار کئی بار ہلکا سا آن اور آف ہوگا۔ یہ سب مریخ کے جنوبی قطب کے موسم پر منحصر ہے۔ اور اسی لیے ایسا ہوتا ہے۔

نوڈ ان پٹ 1 سے ایک واقعہ نوڈ A، پھر نوڈ B، اور اسی طرح ایک دائرے میں کئی بار تبدیل کرتا ہے۔ پروگرام ایونٹ کے "لوپنگ" کا پتہ لگاتا ہے اور زبردستی اس کارنیول کو روک دیتا ہے۔ اس کے بعد، نوڈس A اور B کی حالت میں تبدیلیوں کو اس وقت تک روک دیا جاتا ہے جب تک کہ کوئی نیا واقعہ رونما نہ ہو۔ وہ لمحہ جس پر پروگرام فیصلہ کرتا ہے "حلقوں میں گھومنا بند کرو!" - عام طور پر، یہ بہت سے عوامل پر منحصر ہے اور بے ترتیب سمجھا جا سکتا ہے.

گرہوں کو انگوٹھی میں جوڑتے وقت محتاط رہیں - اثرات ہمیشہ واضح نہیں ہوں گے! آپ کیا اور کیوں کر رہے ہیں اس کا ایک اچھا خیال ہے!

کیا اب بھی ہمارے لیے دستیاب نوڈس پر جنریٹر بنانا ممکن ہے؟ ہاں تم کر سکتے ہو! لیکن اس کے لیے ایک نوڈ کی ضرورت ہوتی ہے جو خود واقعات پیدا کر سکے۔ اور اس طرح کا ایک نوڈ ہے - یہ "تاخیر لائن" ہے۔ آئیے دیکھتے ہیں کہ 6 سیکنڈ کی مدت والا جنریٹر نیچے دی گئی تصویر میں کیسے کام کرتا ہے۔

ShIoTiny: نوڈس، لنکس، اور واقعات یا ڈرائنگ پروگرام کی خصوصیات

جنریٹر کا کلیدی عنصر نوڈ A ہے - تاخیر کی لکیر۔ اگر آپ تاخیر کی لائن کی ان پٹ حالت کو 0 سے 1 تک تبدیل کرتے ہیں، تو 1 فوری طور پر آؤٹ پٹ پر ظاہر نہیں ہوگا، لیکن صرف ایک مخصوص وقت کے بعد۔ ہمارے معاملے میں یہ 3 سیکنڈ ہے۔ اسی طرح، اگر آپ تاخیر لائن کی ان پٹ حالت کو 1 سے 0 تک تبدیل کرتے ہیں، تو آؤٹ پٹ پر 0 اسی 3 سیکنڈ کے بعد ظاہر ہوگا۔ تاخیر کا وقت سیکنڈ کے دسویں حصے میں مقرر کیا جاتا ہے۔ یعنی قدر 30 کا مطلب ہے 3 سیکنڈ۔

تاخیر کی لائن کی ایک خاص خصوصیت یہ ہے کہ یہ تاخیر کا وقت ختم ہونے کے بعد ایک واقعہ پیدا کرتا ہے۔

آئیے فرض کریں کہ ابتدائی طور پر تاخیر کی لکیر کا آؤٹ پٹ 0 تھا۔ نوڈ بی کو گزرنے کے بعد - انورٹر - یہ 0 1 میں بدل جاتا ہے اور تاخیر کی لائن کے ان پٹ پر جاتا ہے۔ فوراً کچھ نہیں ہوتا۔ تاخیر کی لائن کے آؤٹ پٹ پر، یہ 0 رہے گا، لیکن تاخیر کے وقت کی الٹی گنتی شروع ہو جائے گی۔ 3 سیکنڈ گزر گئے۔ اور پھر تاخیر کی لکیر ایک واقعہ پیدا کرتی ہے۔ اس کے آؤٹ پٹ پر یہ 1 ظاہر ہوتا ہے۔ یہ یونٹ، نوڈ B سے گزرنے کے بعد - انورٹر - 0 میں بدل جاتا ہے اور تاخیر کی لائن کے ان پٹ پر جاتا ہے۔ مزید 3 سیکنڈ گزر جاتے ہیں... اور عمل دہرایا جاتا ہے۔ یعنی ہر 3 سیکنڈ میں ڈیلے لائن آؤٹ پٹ کی حالت 0 سے 1 اور پھر 1 سے 0 تک بدل جاتی ہے۔ ریلے کلک کرتا ہے۔ جنریٹر کام کر رہا ہے۔ نبض کا دورانیہ 6 سیکنڈ ہے (آؤٹ پٹ صفر پر 3 سیکنڈ اور آؤٹ پٹ ون پر 3 سیکنڈ)۔

لیکن، حقیقی سرکٹس میں، عام طور پر اس مثال کو استعمال کرنے کی ضرورت نہیں ہے۔ خاص ٹائمر نوڈس ہیں جو مکمل طور پر اور بغیر کسی بیرونی مدد کے ایک مقررہ مدت کے ساتھ دالوں کی ترتیب پیدا کرتے ہیں۔ ان دالوں میں "صفر" اور "ایک" کا دورانیہ نصف مدت کے برابر ہے۔

متواتر کارروائیاں سیٹ کرنے کے لیے، ٹائمر نوڈس استعمال کریں۔

میں نوٹ کرتا ہوں کہ ایسے ڈیجیٹل سگنلز، جہاں "صفر" اور "ایک" کا دورانیہ برابر ہوتا ہے، انہیں "مینڈر" کہا جاتا ہے۔

مجھے امید ہے کہ میں نے اس سوال کو تھوڑا سا واضح کیا ہے کہ واقعات کو نوڈس کے درمیان کیسے پھیلایا جاتا ہے اور کیا نہیں کرنا چاہئے؟

نتیجہ اور حوالہ جات

مضمون مختصر نکلا، لیکن یہ مضمون ان سوالات کا جواب ہے جو نوڈس اور واقعات کے حوالے سے اٹھے ہیں۔

جیسے جیسے فرم ویئر تیار ہوتا ہے اور نئی مثالیں ظاہر ہوتی ہیں، میں پروگرام کرنے کے طریقہ کے بارے میں لکھوں گا۔ shIoTiny چھوٹے مضامین جب تک یہ لوگوں کے لیے دلچسپ ہوں گے۔

جیسا کہ پہلے، خاکہ، فرم ویئر، مثالیں، اجزاء کی تفصیل اور ہر چیز باقی یہاں ہے.

سوالات، تجاویز، تنقید - یہاں جائیں: [ای میل محفوظ]

ماخذ: www.habr.com

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