انتخاب میان مادباس، OPC UA و MQTT
اینها رقیب هم نیستند: یک پروتکل رجیستری، یک مدل اطلاعاتی و یک الگوی انتقال. هرکدام واقعا در چه چیزی خوباند، دو حالت خرابی تکرارشونده، و چرا انتخاب برای هر پیوند است نه برای هر شرکت.

مادباس، OPC UA و MQTT چنان با هم مقایسه میشوند که انگار یک کارخانه باید یکی را انتخاب کند، و همین سرچشمه بخش بزرگی از معماریهای آشفته است. اینها به پرسشهای متفاوتی پاسخ میدهند. مادباس پروتکل دستگاهی در سطح رجیستر است، OPC UA یک مدل اطلاعاتی است که پروتکلی به آن چسبیده، و MQTT یک الگوی انتقال است که اصلا مدل داده ندارد. سامانهای که خوب ساخته شده باشد اغلب هر سه را به کار میگیرد، هرکدام روی پیوندی که به آن میخورد.
مادباس متصدی بلامنازع است چون پیشپاافتاده است. دستگاهی رجیسترهای شمارهدار را عرضه میکند، یک مستر آنها را میخواند و مینویسد، و تمام مشخصات همین است. پیادهسازیاش یک بعدازظهر وقت میبرد، هر دستگاهی پشتیبانیاش میکند و چهار دهه است کارخانهها را میگرداند. ضعفهایش هم به همان اندازه ساختاریاند. خودتوصیفی وجود ندارد: رجیستر ۴۰۰۱۲ هر معنایی دارد که دفترچه میگوید، و اگر دفترچه غلط یا گم باشد، مقدار بازیافتنی نیست. جز کلمههای شانزدهبیتی نوع دادهای در کار نیست، پس دما عددی صحیح است که طبق قرارداد بر ده مقیاس شده و یک ممیز شناور دو رجیستر است با ترتیب بایتی که میان سازندهها فرق میکند — سرچشمه یک ژانر کامل از اشکالات راهاندازی. کشف خودکار وجود ندارد، برچسب زمانی نیست، پرچم کیفیت نیست و هیچ امنیتی هم نیست. مادباس وقتی درست است که دستگاه فقط مادباس بلد باشد، مجموعه مقادیر کوچک و پایدار باشد و چیز دیگری در معماری معنا و حفاظت را فراهم کند.
پروتکل OPC UA برای حل مسئله معنا وجود دارد. یک کارساز فضای آدرسی از گرههای نوعدار و قابل مرور عرضه میکند، پس یک کلاینت میتواند کشف کند چه چیزی هست و چه معنایی دارد به جای اینکه بیرون از باند به او گفته شود. مقادیر در کنار خود عدد، برچسب زمانی و کیفیت حمل میکنند که از آنچه به نظر میرسد مهمتر است: در مادباس مقدار بیات و مقدار زنده یکسان به نظر میرسند. مشخصات همراه، مدل را برای کلاسهای خاص تجهیزات استاندارد میکنند، پس دو ماشین منطبق خودشان را یکسان توصیف میکنند. امنیت جزئی از مشخصات است نه فکری بعدی — احراز هویت مبتنی بر گواهی، رمزنگاری و مجوزدهی کاربر. هزینهها واقعیاند: پشتهای سنگینتر از آنچه یک دستگاه کوچک جا دارد، مدیریت گواهی که باید برنامهریزی شود چون گواهیها منقضی میشوند، و کار پیکربندیای که تنها وقتی جبران میشود که بعدا چیزی این معناها را مصرف کند.
پروتکل MQTT مسئله دیگری را حل میکند و آن رساندن داده از جاهای بسیار به مصرفکنندگان بسیار روی شبکهای است که در کنترل شما نیست. کلاینتها روی موضوعهایی در یک کارگزار منتشر میکنند و کلاینتهای دیگر مشترک میشوند؛ منتشرکننده و مشترک هرگز از هم خبر ندارند، پس افزودن یک مصرفکننده هیچ تغییری در مبدا نمیخواهد. ویژگیهایی که از نظر صنعتی اهمیت دارند همانهای بیزرقوبرقاند: سطوح کیفیت سرویس، پیامهای نگهداشتهشده تا مشترک تازه بیدرنگ مقدار جاری را بگیرد، و پیام وصیت تا کارگزار اعلام کند دستگاهی از دست رفته است. آنچه MQTT فراهم نمیکند هیچ قراردادی درباره محتوای بار داده است — و به همین دلیل Sparkplug B وجود دارد که گواهی تولد و مرگ، معیارهای تعریفشده و مدیریت وضعیت را روی آن میافزاید. MQTT بدون قرارداد بار داده، راهی مرتب برای فرستادن JSONای است که دو سال بعد کسی نمیتواند تفسیرش کند.
تصمیم برای هر پیوند گرفته میشود نه برای هر شرکت. صحبت با دستگاهی روی یک تابلو: هر چه دستگاه بلد است، معمولا مادباس و گاهی OPC UA. یکپارچه کردن تجهیزات ناهمگن در سامانهای در سطح کارخانه که معنا باید در آن زنده بماند: OPC UA. بردن داده از سایتهای بسیار به سکویی مرکزی روی شبکه سلولی یا شبکه گسترده مشترک: MQTT با Sparkplug، معمولا با پل زدن از OPC UA در لبه. همین الگوی آخر — OPC UA درون کارخانه برای معنا و MQTT رو به بالا برای انتقال — معماریای است که بیشتر پروژههای نوساز به آن همگرا میشوند و مصالحه نیست. هر پروتکل کاری را میکند که برایش طراحی شده است.
دو حالت خرابی ارزش نام بردن صریح دارند. نخست، پویش همه چیز. یک مستر مادباس که طوری پیکربندی شده تا هر ثانیه پنج هزار رجیستر بخواند چون ذخیرهسازی ارزان است، یک بخش سریال را اشباع میکند، به مقادیری که واقعا مهماند تاخیر میافزاید و دادهای میسازد که کسی نمیخواند. آنچه سریع تغییر میکند را سریع بپویید، آنچه نمیکند را آهسته، و هرجا پروتکل اجازه میدهد از گزارش بر پایه استثنا استفاده کنید. دوم، این فرض که تونل یعنی امنیت. مادباس درون یک ویپیان همچنان بدون احراز هویت است به محض آنکه چیزی به سر دیگر برسد، و راهنمای مرکز ملی امنیت سایبری بریتانیا هفته گذشته مسیر مهاجرت را صریح نام برد — مادباس به Modbus Security، DNP3 به DNP3-SAv5، OPC DA به OPC UA — و یادآور شد هر چه گونه امن ندارد به بخشی ایزوله تعلق دارد.
جمعبندی صادقانه این است که بحثهای پروتکلی معمولا جانشین پرسشی معمارانهاند که کسی ننوشته است: معنا کجا زندگی میکند، چه کسی اجازه دارد با چه چیزی حرف بزند، و وقتی پیوند قطع شد چه چیزی باید کار کند. به این سه پاسخ دهید و انتخاب پروتکل برای هر پیوند عمدتا خودش انجام میشود.