برای دستیابی به این تعاملپذیری در طیف وسیعی از تجهیزات، مشخصات BACnet را در سه بخش اصلی اولیه، ثانویه و نهایی بررسی می کنیم. بخش اولیه، روشی معرفی می شود که هر نوع دستگاه اتوماسیون را به شکل استاندارد نمای دهد . بخش ثانویه پیامهایی را معرفی میکند که از طریق شبکه کامپیوتری برای نظارت و کنترل تجهیزات ارسال می شوند. بخش نهایی نیز مجموعهای از شبکههای محلی (LAN) مناسب برای انتقال پیامهای BACnet را مشخص میکند. در این معماری، ارتباطات بر پایه مدل کلاینت-سرور شکل میگیرد، بهطوری که دستگاه کلاینت یک Service Request ارسال کرده و دستگاه سرور با یک Service Response به آن جواب میدهد.

کاربردهای پروتکل BACnet
در شبکههای توزیعشده، جابهجا کردن اطلاعات و یکپارچه کردن سیستمهای مختلف، همیشه یکی از دردسرهای اصلی طراحی سختافزار بوده است. پروتکل BACnet فقط برای خاموش و روشن کردن سادهی رلهها ساخته نشده.
این پروتکل طوری طراحی شده که هم در لایهی کنترلرهای میدانی (همان تجهیزاتی که نزدیک موتور و سنسور نصب میشوند) و هم در لایهی نظارتی (اتاق کنترل و سرورها) قابل استفاده باشد.
BACnet در انواع سیستمهای اتوماسیون ساختمان کاربرد دارد. محصولاتی که با این پروتکل ساخته میشوند را میشود در بخشهای امنیتی، اعلام حریق، روشنایی، آسانسور و سیستمهای گرمایش و سرمایش (HVAC) پیدا کرد.
BACnet یک زبان مشترک بین دستگاههای مختلف ایجاد میکند. اینطوری سیستمهایی که سازندههایشان فرق دارد، میتوانند به هم وصل شوند و داده رد و بدل کنند. این استانداردسازی به ایجاد سیستم مدیریت ساختمان یکپارچه (BMS) کمک میکند. در این سیستم، اپراتور میتواند همهی تجهیزات ساختمان را در یک نرمافزار واحد مشاهده و کنترل کند.
در لایه کنترلرهای محلی، کار BACnet فقط فرستادن اطلاعات به یک سرور مرکزی نیست؛ دستگاهها میتوانند بصورت مستقیم به همدیگر (Peer to Peer) متصل شوند. برای مثال مسئول تأسیسات میتواند با استفاده از یک نرمافزار واسط مشترک، هم سیستم کنترل روشنایی مبتنی بر BACnet و هم سیستمهای دیگر مثل HVAC ها را مدیریت کند.
در سطح خود دستگاهها، مثلاً یک کنترلر حجم هوای متغیر (VAV Box) میتواند از طریق شبکه BACnet، وضعیت سنسورهای حضوری را که روی سیستم روشنایی نصباند بخواند. این قابلیت به VAV Box اجازه میدهد وقتی اتاق خالی است، جریان هوا را کم کند و در مصرف انرژی صرفهجویی شود. نکتهی کلیدی این است که دیگر نیازی به نصب سنسورهای حضور جداگانه برای سیستم HVAC نیست، چون اطلاعات سنسور روشنایی از طریق BACnet به اشتراک گذاشته میشود.
اگر به سال ۱۹۸۷ برگردیم، وضعیت صنعت طوری بود که هر تولیدکننده، سیستم کنترل دیجیتال مستقیم (DDC) مختص خودش را طراحی کرده بود. این دستگاهها کارهای مختلفی انجام میدادند، اما مشکل اصلی این بود که سیستمهای ساخته شده توسط شرکتهای مختلف، به هیچ وجه نمیتوانستند با همدیگر هماهنگ کار کنند یا داده ای را با هم رد و بدل کنند.
برای حل این ناهماهنگی و مشکل ارتباطی، انجمن مهندسان گرمایش، برودت و تهویه مطبوع آمریکا (ASHRAE) در همان سال ۱۹۸۷ یک کمیته راه انداخت. هدف اصلی این کمیته (که اول اسمش SPC 135P بود) ساختن پروتکلی بود که تجهیزات تولید کنندگان مختلف بتوانند با آن با هم ارتباط برقرار کنند. اسم این پروژه در سال ۱۹۹۰ رسماً به «BACnet» تغییر کرد و اولین بازبینی عمومی استاندارد در سال ۱۹۹۱ شروع شد.
بعد از یک فرآیند مهندسی طولانی که سه مرحله بازبینی عمومی و نظرخواهی از ۷۱ کشور را شامل میشد، BACnet در سال ۱۹۹۵ به عنوان استاندارد ۱۳۵-۱۹۹۵ ASHRAE تأیید و منتشر شد. این پروتکل یک استاندارد باز است و بر مبنای مشارکت آزاد، دائماً بهروز میشود تا بتواند خودش را با نیازهای فنی جدید وفق دهد. ساختار آن طوری است که هر شخص یا شرکتی میتواند بدون پرداخت هزینه در توسعه آن شرکت کند.
معماری BACnet یک معماری خلاصهشده است که فقط از ۴ لایه مدل OSI استفاده میکند. این چهار لایه عبارتند از: لایه کاربردی (Application)، لایه شبکه (Network)، لایه پیوند داده (Data Link) و لایه فیزیکی (Physical). در این طراحی، لایههای Session و Transport حذف شدهاند و وظایف آنها مستقیماً به لایه کاربردی سپرده شده است.

لایه های معماری پروتکل BACnet
وظایف این چهار لایه بر اساس استانداردهای شبکه به زبان ساده به این شرح است:
۱. لایه کاربرد یا Application:
این لایه مثل مغز متفکر پروتکل است. مدیریت اشیاء و سرویسها با این لایه است و پیامهای رفت و برگشتی بین کلاینت و سرور را مدیریت میکند. از آنجایی که BACnet لایه انتقال (Transport) ندارد، وظیفهی حساس اطمینان از رسیدن صحیح پیامها هم روی دوش همین لایه است. نکته جالب دیگر این است که قطعهقطعه کردن پیامهای بزرگ (Segmentation) در این لایه انجام میشود، برخلاف پروتکل IP که این کار را در لایه شبکه انجام میدهد. در کل، این لایه هیچ درکی از نوع شبکههای فیزیکی زیرین خود ندارد.
۲. لایه شبکه:
۳. لایه پیوند داده:
۴. لایه فیزیکی:
پایه و اساس نگاشت دادهها در BACnet، مفهوم شیگرایی است. یعنی همه چیز در این پروتکل به شکل یک «شیء» یا Object دیده میشود. هر شیء یک بخش فیزیکی یا مفهومی از دستگاه را نشان میدهد. وقتی چند تا از این اشیاء کنار هم جمع شوند و یک کار خاص را انجام دهند، به آن مجموعه یک «دستگاه BACnet» میگوییم. هر شیء باید مشخصات زیر را داشته باشد:
از طرف دیگر، برای اینکه پیامها بتوانند در شبکه مسیریابی شوند، باید آدرسها جایی در حافظه نگهداری شوند. ساختار آدرسدهی یک دستگاه BACnet چند فیلد دارد: آدرس MAC دستگاه، آدرس IP (اگر از UDP/IP استفاده شود) و شماره شبکه BACnet.
یک مثال برای فهم بهتر:
فرض کنید میخواهید برای یک کنترلر STM32 با زبان C یا ++C پروتکل BACnet را پیادهسازی کنید:
از آنجا که BACnet لایه TCP ندارد و مستقیم روی UDP یا باسهای سریال (مثل RS-485) سوار میشود، شما نمیتوانید به سختافزار شبکه اعتماد کنید که رسیدن بستهها را تأیید کند. پس در کد خودتان، لایه Application باید تایمر و بافر داشته باشد تا اگر پاسخی دریافت نشد، خودش دوباره بسته را بفرستد.
در بخش دادههای فریمور هم باید ساختارهایی تعریف کنید که آدرس فیزیکی شبکه را ذخیره کنند. موقع پردازش پیام، کد شما یک پرچم (Flag) را بررسی میکند:
پروتکل BACnet برای لایه پیوند داده، یک شبکه به اسم MS/TP (خلاصهشده Master-Slave/Token-Passing) طراحی کرده که روی کابلهای زوج به هم تابیده EIA-485 اجرا میشود. این شبکه یکی از محبوبترین گزینهها برای شبکههای محلی BACnet است و برای کنترلرهای با کاربرد مشخص استفاده میشود. هزینه راهاندازی آن پایین است و از نظر سختافزاری، باس RS-485 در این پروتکل میتواند تا ۳۲ گره را پشتیبانی کند، مسافت ۱۲۰۰ متر را پوشش دهد و سرعت ۷۶ کیلوبیت بر ثانیه داشته باشد.
در دنیای BACnet، کسانی که فریمور یا سختافزار طراحی میکنند، باید از یک سری ساختار استاندارد پیروی کنند تا دستگاهها بتوانند بدون مشکل با هم کار کنند. به این قابلیت هماهنگی، Interoperability میگویند. استاندارد برای همین منظور، مجموعهای از بلوکهای آماده تعریف کرده به اسم BIBB (مخفف BACnet Interoperability Building Blocks). هر BIBB در واقع یک یا چند سرویس شبکه است و دقیقاً معلوم میکند که دستگاه در یک ارتباط، نقش شروعکننده (Initiator) را دارد یا اجراکننده (Executor). این بلوکهای BIBB در قالب الگوهای استانداردی به اسم پروفایل دستگاه یا Device Profile دستهبندی میشوند که در پیوست L استاندارد ASHRAE 135 آمدهاند. تا الان هشت پروفایل رسمی تعریف شده که از یک سنسور هوشمند ساده (B-SS) شروع میشود و تا یک کنترلر پیشرفته ساختمان (B-BC) ادامه پیدا میکند. مزیت کار این است که طراح سختافزار با انتخاب یک پروفایل، دقیقاً میفهمد کدام سرویسها را حتماً باید در فریمور خودش پیادهسازی کند.
برای اینکه مطمئن شوند سختافزاری که ساخته شده واقعاً طبق این پروفایلها کار میکند، در سال ۲۰۰۰ آزمایشگاهی به اسم BTL (آزمایشگاه تست BACnet) راهاندازی شد. کار این آزمایشگاه این است که تجهیزات را تست کند. محصولاتی که تستها را با موفقیت پشت سر بگذارند، در وبسایت رسمی BACnet به عنوان محصولات تأییدشده یا BTL Listed معرفی میشوند. طراحان سیستم با نگاه کردن به این لیست و تطبیق دادن پروفایل دستگاهها، میتوانند با خیال راحت قطعاتی از سازندههای مختلف انتخاب کنند و مطمئن باشند بدون دردسر با هم کار خواهند کرد.

در شبکههای سنتی اتوماسیون ساختمان، بعضی ویژگیهای BACnet با روشهای رایج در دنیای فناوری اطلاعات (IT) جور در نمیآمد. سیستمهای قدیمی معمولاً به IP ثابت (Static IP)، ارسال پیامهای Broadcast در شبکه و دستگاههای مدیریت پخش (BBMD) وابسته بودند. این نیازمندیهای غیراستاندارد، کار اضافی و تنظیمات پیچیدهای را روی دوش تیمهای IT میگذاشت و یکپارچه کردن سیستمهای کنترل با شبکههای سازمانی را سخت میکرد.
برای حل اساسی این مشکلات و تأمین امنیت در سطح استانداردهای جهانی، یک لایه پیوند داده جدید به اسم BACnet/SC ساخته شد. این معماری جدید، به جای روشهای اختصاصی، از بهترین راهکارهای پذیرفتهشده در دنیای IT استفاده میکند. در این لایه، انتقال پیامها با پروتکل Secure WebSockets (که روی HTTPS سوار است) انجام میشود. برای امنیت بیشتر هم از استاندارد TLS 1.3 با رمزنگاری ۱۲۸ یا ۲۵۶ بیتی استفاده میشود. این روش، نیاز به IP ثابت، شبکه VPN و دستگاههای BBMD را کاملاً حذف میکند و رد شدن از فایروالهای پیچیده را آسان میسازد.
از نظر ساختار شبکه، BACnet/SC از توپولوژی Hub-and-Spoke استفاده میکند. در این مدل، یک واحد مرکزی به اسم هاب (Hub) کار هدایت ترافیک بین گرههای متصل را انجام میدهد و تشخیص میدهد هر بسته باید فقط به یک گره خاص برود یا به همه گرهها فرستاده شود. اما از آنجا که هاب میتواند نقطه شکست اصلی (SPOF) باشد، گرههای BACnet/SC یک مکانیزم پشتیبان دارند؛ یعنی اگر ارتباط با هاب اصلی قطع شد، همه گرهها موظفند به یک هاب پشتیبان (Failover Hub) وصل شوند. ضمناً این معماری یک روش امن هم دارد که هر دستگاه قبل از استفاده از شبکه، باید احراز هویت شود و تأیید دسترسی بگیرد.
|
ویژگی |
شبکههای سنتی BACnet (مانند IP یا MS/TP) |
معماری مدرن BACnet/SC |
|
امنیت انتقال داده |
ارسال متنباز و فاقد رمزنگاری |
رمزنگاری پیشرفته با استاندارد TLS 1.3 |
|
بستر ارتباطی |
مبتنی بر شبکههای اختصاصی و تجهیزات BBMD |
مبتنی بر پروتکل |
|
آدرسدهی شبکه |
وابستگی به تخصیص آدرسهای IP استاتیک |
حذف کامل نیاز به آدرس IP استاتیک |
|
عبور از فایروال IT |
چالشبرانگیز، نیازمند تنظیمات پیچیده یا VPN |
عبور یکپارچه و بدون تداخل با فایروالهای موجود |
|
معماری و مسیریابی |
متکی بر ارسال همگانی پیامها (Broadcast) |
توپولوژی متمرکز (Hub-and-Spoke) با هاب پشتیبان |
پروتکل BACnet یک سری مزایای ساختاری و همچنین چالشهای مشخص در پیادهسازی دارد که در ادامه به زبان ساده توضیح داده میشود:
مهمترین نقطه قوت این پروتکل، ایجاد یک زبان مشترک بین کنترلرهای سازندههای مختلف است. این قابلیت جلوی انحصارگرایی را میگیرد و به تجهیزات برندهای متفاوت اجازه میدهد یکپارچه و هماهنگ با هم حرف بزنند و کار کنند.
BACnet محدود به یک نوع سیمکشی یا شبکه نیست. معماری آن طوری طراحی شده که هم روی شبکههای ارزانقیمت سریال (مثل RS-485) و هم روی زیرساختهای پرسرعت مثل Ethernet و IP قابل اجراست.
با معرفی لایه BACnet/SC، این پروتکل توانسته چالش های قدیمی خودش را با واحد فناوری اطلاعات حل کند. حالا با استفاده از استانداردهای ثابتشدهای مثل TLS 1.3 و WebSockets، ارتباط امن و رد شدن راحت از فایروالها فراهم شده، بدون اینکه نیازی به تنظیمات پیچیده VPN باشد.
شبکههای قدیمی BACnet مثل MS/TP یا ارتباط معمولی روی IP، رمزنگاری درونساخت ندارند و پیامها را به صورت ساده و خوانا رد و بدل میکنند. اگر از لایه BACnet/SC استفاده نشود، تنها راه تأمین امنیت این است که تجهیزات را کاملاً از سایر شبکهها جدا و ایزوله کنید.
به خاطر معماری پیچیده و شیگرایی که BACnet در لایه کاربرد دارد، این پروتکل نمیتواند مستقیم با پروتکلهای ساده و رجیستر-محوری مثل Modbus تبادل داده کند. برای یکپارچه کردن این دو پروتکل، باید سختافزارهای واسط (مبدل BACnet به Modbus) تهیه کرد که هزینه کلی را بالا میبرد. پروتکل BACnet فقط یک راهکار ساده برای سیستمهای تهویه نیست. امروز با آمدن لایه امن BACnet/SC، تبدیل به استانداردی قدرتمند برای ساختمانهای هوشمند شده است. درست است که پیادهسازی این پروتکل به خاطر ساختار نسبتاً پیچیده و الزامات امنیتیاش از پروتکلهای سنتی سختتر است، اما پایداری و تعاملپذیری بالای آن، این زحمت مهندسی را به یک سرمایهگذاری ارزشمند تبدیل میکند.
شما توی پروژههاتون تجربهای در راهاندازی شبکه BACnet دارید یا با چالش خاصی موقع پیادهسازیش برخورد کردهاید؟ خوشحال میشویم نظرات و تجربیات خود را برایمان بنویسید.
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.