একটি PLC বিক্রেতার কাছে MQTT সম্পর্কে জিজ্ঞাসা করুন এবং আপনি একটি রোডম্যাপ পাবেন: "পরের বছর, হয়তো, প্রিমিয়াম মডেলে।" তারপর আপনি ছোট লেখায় তাকান এবং একটি গেটওয়ে, একটি কনভার্টার, অথবা একটি ক্লাউড সাবস্ক্রিপশন খুঁজে পান যা বৈশিষ্ট্যের পিছনে লুকিয়ে আছে। xLogic ইথারনেট CPU-তে MQTT সমর্থন এর কিছুই নেই — এটি 1.04 সংস্করণ থেকে ফার্মওয়্যারে রয়েছে, এবং এটি নিয়ন্ত্রক থেকে সরাসরি প্রকাশ করে।
এটি একটি বাজেট মেশিনের কার্যকারিতা পরিবর্তন করে, এবং বেশিরভাগ ইন্টিগ্রেটররা এটি লক্ষ্য করেনি।
কেন MQTT একটিMicro PLC
MQTT ঠিক এই পরিস্থিতির জন্য তৈরি: একটি অস্থির নেটওয়ার্কে একটি ডিভাইস, একটি ব্রোকারে ছোট বার্তা প্রকাশ করছে, সাবস্ক্রাইবাররা আসছে এবং যাচ্ছে। একটি কারখানার মেশিন, একটি মাঠে পাম্প স্টেশন, অফিস থেকে দুই ঘণ্টার দূরে একটি গ্রীনহাউস — প্রতিটি তার স্থিতি প্রকাশ করে; ক্লাউড ড্যাশবোর্ড, ফোন অ্যাপ এবং প্রকৌশলীর ল্যাপটপ সব একই বিষয়ের জন্য সাবস্ক্রাইব করে। কোন পোলিং নেই, প্ল্যান্টে কোন ওপেন পোর্ট নেই, কোন SCADA সার্ভার সংযোগের তত্ত্বাবধান করছে না।
ব্রোকার বিশৃঙ্খলাকে পরিচালনা করে। PLC শুধু প্রকাশ করে।
আপনি আসলে কি কনফিগার করেন
সংযোগ ব্লকগুলি প্রোগ্রামে থাকে: ব্রোকারের ঠিকানা সেট করুন, বিষয়বস্তু, প্রকাশের সময়সীমা, এবং কোন মানগুলি পে-লোডে যাবে তা ম্যাপ করুন। CPU সংযোগের জীবনচক্র পরিচালনা করে — একটি ড্রপের পরে পুনরায় সংযোগ করুন, একটি ফাঁক পরে পুনরায় প্রকাশ করুন — যা হাত-রোল করা বাস্তবায়নগুলিকে হত্যা করে।
এটি ওয়েব সার্ভারের সাথে যুক্ত করুন এবং অ্যালার্ম SMS এবং আপনার কাছে একটি নিয়ন্ত্রকের উপর তিনটি স্বাধীন দূরবর্তী চ্যানেল থাকবে। অফিসের জন্য ক্লাউড ড্যাশবোর্ড, অপারেটরের জন্য ব্রাউজার পৃষ্ঠা, ডিউটি প্রকৌশলীর জন্য SMS। আপনার শ্রোতার জন্য চ্যানেলটি বেছে নিন।
বাস্তব কেস: দূরবর্তী গ্রীনহাউস পর্যবেক্ষণ
চারটি বে সহ একটি নার্সারি ক্লাউড দৃশ্যমানতা চেয়েছিল নেটওয়ার্ক পুনর্নির্মাণ না করেই। প্রতিটি বে নিয়ন্ত্রক একটি ভাড়া করা VPS-এ একটি ব্রোকারে তাপমাত্রা, আর্দ্রতা এবং ভালভের স্থিতি প্রকাশ করেছিল; একটি সহজ ড্যাশবোর্ড সাবস্ক্রাইব করেছিল এবং এক স্ক্রীনে সব চারটি বে দেখিয়েছিল। যখন ইন্টারনেট একটি বিকেলে বন্ধ হয়ে যায়, নিয়ন্ত্রকগুলি একটি স্থানীয় কিউতে প্রকাশ করতে থাকে এবং পুনরায় সংযোগ করার সময় মানগুলি ধরা পড়ে।
চাষীর সারসংক্ষেপ, উত্সাহী থেকে অনুবাদিত: "আমি ছুটিতে থাকাকালীন আমার ফোন থেকে তাপমাত্রার প্লট দেখছিলাম। এটি সেখানে থাকার চেয়ে ভালো ছিল।"
যেখানে MQTT ভুল উত্তর
সীমা সম্পর্কে সৎ হন। MQTT ইভেন্ট এবং টেলিমেট্রি কেন্দ্রিক — এটি একটি নির্ধারিত নিয়ন্ত্রণ লুপ নয়। যদি আপনাকে গ্যারান্টিযুক্ত ডেলিভারি এবং মিলিসেকেন্ড প্রতিক্রিয়া প্রয়োজন হয়, তবে স্থানীয়ভাবে Modbus TCP ব্যবহার করুন। MQTT তত্ত্বাবধান এবং রিপোর্টিংয়ের জন্য, নিরাপত্তা ইন্টারলকিংয়ের জন্য নয়। এটি সেইভাবে ডিজাইন করুন এবং এটি আপনাকে বছরের পর বছর সেবা দেবে।
এবং ব্রোকারের শংসাপত্রগুলি সঠিক রাখুন। একটি PLC যা একটি পাবলিক বিষয়ে প্রকাশ করে তা একটি PLC যা তার ব্যবসা সম্প্রচার করছে। ব্যক্তিগত বিষয়, একটি স্থানীয় ব্রোকার, অথবা সর্বনিম্ন TLS ব্রোকারে — সেটআপের খরচ মিনিট, এবং এড়ানো লজ্জা বাস্তব।
চুরি করার জন্য প্যাটার্ন
বিষয় ডিজাইন যা স্কেল করে
MQTT আপনার বিষয়ের কাঠামোর মতোই পরিষ্কার, এবং বিষয়ের কাঠামো যেখানে ছোট প্রকল্পগুলি নীরবে অmanageable হয়ে যায়। সরল পদ্ধতি — প্রতি ডিভাইসে একটি বিষয়, একটি পে-লোডে সবকিছু — একটি মেশিনের জন্য কাজ করে এবং দশে ভেঙে পড়ে। প্রতিটি সাবস্ক্রাইবার প্রতিটি পে-লোড পুনরায় বিশ্লেষণ করে, পে-লোডে প্রতিটি পরিবর্তন প্রতিটি ড্যাশবোর্ড ভেঙে দেয়, এবং ডিবাগিং একটি বিষয়-দ্বারা-বিষয়ে শিকার হয়ে যায়।
প্রথম প্রকাশের আগে হায়ারার্কি ডিজাইন করুন। একটি প্যাটার্ন যা আমার জন্য ভাল কাজ করেছে:সাইট/ডিভাইস/শ্রেণী/মান. তাইplant1/pump1/status/run, plant1/pump1/sensor/level, plant1/pump2/alarm/high-level. ওয়াইল্ডকার্ড সাবস্ক্রাইবার — plant1 এর জন্য একটি ড্যাশবোর্ড, pump1 এর জন্য একটি পৃষ্ঠা, সবকিছুর জন্য একটি অ্যালার্ম শ্রোতা — প্রত্যেকে তাদের প্রয়োজনীয় স্লাইসে সাবস্ক্রাইব করে। নতুন ডিভাইসগুলি পুরানো বিষয়গুলিতে স্পর্শ না করেই স্লট করে, এবং পে-লোডগুলি ছোট এবং টাইপ করা থাকে।
পে-লোডগুলি সহজ রাখুন: একটি মান এবং একটি টাইমস্ট্যাম্প। যদি আপনি সত্যিই তাদের প্রয়োজন না হয় তবে এগারোটি ক্ষেত্র ধারণকারী নেস্টেড JSON ব্লব নেই। সহজ পে-লোডগুলি ডিবাগযোগ্য — আপনি ব্রোকার কনসোলে একটি পড়তে পারেন এবং তা সঠিক কিনা তা অবিলম্বে জানতে পারেন। এবং স্থিতি বিষয়গুলিতে রিটেইন ফ্ল্যাগ সেট করুন যাতে একটি নতুন সাবস্ক্রাইবার অবিলম্বে শেষ পরিচিত অবস্থাটি দেখতে পায় পরবর্তী প্রকাশের জন্য অপেক্ষা করার পরিবর্তে। রিটেইন করা অবস্থান হল একটি ড্যাশবোর্ডের মধ্যে পার্থক্য যা প্রস্তুত হয়ে খুলে যায় এবং একটি যা মিনিটের পর মিনিটে ফাঁকা তাকিয়ে থাকে।
শেষ নিয়মটি হল যা মানুষ প্রতিরোধ করে: যখন পে-লোডের ফরম্যাট পরিবর্তিত হয় তখন বিষয়টি সংস্করণ করুন।plant1/pump1/status/v2. এটি কুৎসিত। এটি আপনাকে একটি পরিবর্তনের সাথে উৎপাদনে পাঁচটি সাবস্ক্রাইবার ভাঙার থেকে রক্ষা করে। কাজ করা কুৎসিত বিষয়গুলি পরিষ্কার বিষয়গুলির চেয়ে ভালো।
প্রকাশের জন্য মূল্যবান ডেটা
সবকিছু প্রকাশ করা কিছুই প্রকাশ করার মতো খারাপ — এটি ব্রোকারকে প্লাবিত করে, লগকে ফুলিয়ে তোলে, এবং গুরুত্বপূর্ণ মানগুলিকে চাপা দেয়। সাবস্ক্রাইবার যে প্রশ্নটি করবে তা থেকে শুরু করুন, নিবন্ধের তালিকা থেকে নয়। একটি অপারেটর স্থিতি, অ্যালার্ম এবং চলমান মোট চায়। একটি প্রকৌশলী প্রবণতা চায়: তাপমাত্রা, চাপ, চলার ঘন্টা। একটি ব্যবস্থাপক আপটাইম এবং গণনা চায়। সেগুলি প্রকাশ করুন, এবং শুধুমাত্র সেগুলি।
হারও গুরুত্বপূর্ণ। অ্যালার্ম পরিবর্তন: অবিলম্বে প্রকাশ করুন, সর্বদা। স্থিতি: পরিবর্তনের উপর এবং একটি হার্টবিট। অ্যানালগ মান: সেই সময়সীমায় যা প্রকৃতপক্ষে প্রক্রিয়াটি প্রদর্শন করে — একটি ধীর গ্রীনহাউস তাপমাত্রার জন্য দশ সেকেন্ড, একটি মেশিন টুলের জন্য এক সেকেন্ড। আপনি যে দ্রুত বিষয়গুলি প্রয়োজন নেই তা ব্রোকারের লোড এবং বেতার মডেলে অপচয়।
এবং গুরুত্বপূর্ণ বিষয়গুলি স্থানীয়ভাবে লগ করুন। CPU এর ডেটালগিং এবং ব্রোকারের রিটেইন করা বার্তাগুলি আপনাকে критিক্যাল ইতিহাসের দুটি কপি দেয়। যখন ব্রোকারের একটি খারাপ দিন হয় — তারা সকলেই হয় — মেশিন-সাইড লগ হল সত্যের উৎস, এবং পুনরুদ্ধারের আলোচনা সংক্ষিপ্ত।
CPU-তে স্থানীয় নিয়ন্ত্রণ, MQTT-এর মাধ্যমে ক্লাউড দৃশ্যমানতা, এবং দুটি কখনও হস্তক্ষেপ করে না। এই বিভাজন আধুনিক ছোট অটোমেশনের স্থাপত্য, এবং এটি একটি DIN রেল উপর ফিট করে। বিক্রেতার রোডম্যাপ আসেনি। ফার্মওয়্যার ইতিমধ্যেই পাঠানো হয়েছে।












