Endüstriyel IoT

BACnet vs Modbus: Binalar ve Tesisler İçin Protokol Karşılaştırması

Veri modelleri, taşıma katmanları, keşif, güvenlik ve tipik kullanım alanlarını kapsayan pratik bir BACnet vs Modbus karşılaştırması; her iki protokolü bir bulut broker için MQTT topic'lerine dönüştürmenin net bir modeliyle birlikte.

BACnet vs Modbus karşılaştırması için tek bir gateway'e bağlı bir bina otomasyon kontrolörü ve bir fabrika PLC'sini gösteren bölünmüş illüstrasyon
Bunu kendi MQTT broker’ınızda çalıştırınFree planla özel, yönetilen bir MQTT broker alın ve hazır kod örnekleriyle başlayın.
Ücretsiz deneyin Kod örnekleri Kart gerekmez

BACnet vs Modbus, her tesis mühendisinin, sistem entegratörünün ve fabrika otomasyon ekibinin er ya da geç karşılaştığı bir sorudur; genellikle bir soğutma grubu bir protokolü, enerji sayaçları da diğerini konuştuğunda. Bu rehber iki protokolü veri modeli, taşıma, keşif, güvenlik ve günlük iş yükü açısından karşılaştırıyor, ardından bir gateway'in verinin tek bir yerde toplanması için her ikisini MQTT'ye nasıl çevirdiğini gösteriyor. Sonunda hangi protokolün hangi işe uygun olduğunu ve her ikisini modern bir telemetri hattına nasıl dahil edeceğinizi bileceksiniz.

İki Protokol, İki Farklı Dünya

Modbus, 1970'lerin sonunda programlanabilir kontrolörler için oluşturuldu. Bilinçli olarak minimaldir: bir client, bir sunucudan 16 bitlik register'lar veya tekil bitlerden oluşan bir blok ister ve sunucu yanıt verir. Hatta ad, birim veya açıklama yoktur. Sayılara anlam kazandıran her şey, genellikle cihaz üreticisinden gelen bir PDF olan register haritasında yaşar.

BACnet (Building Automation and Control networks), ASHRAE tarafından HVAC, aydınlatma, erişim kontrolü ve yangın sistemleri için geliştirildi ve ASHRAE 135 ile ISO 16484-5 olarak standartlaştırıldı. En başından büyük binalarda üreticiler arası birlikte çalışabilirlik için tasarlandı. Anonim register'lar yerine bir BACnet cihazı, adlandırılmış özelliklere sahip tipli nesneler sunar ve cihazlar ağda birbirini keşfedebilir.

Bu felsefe farkı, karşılaştırmadaki diğer her şeyi neredeyse tamamen açıklar. Modbus'u uygulamak basittir ve sayaçlarda, sürücülerde ve PLC'lerde neredeyse evrenseldir. BACnet daha zengindir, kendini tanımlar ve bina yönetim sistemlerinde baskındır.

Bir Bakışta BACnet vs Modbus

Özellik Modbus BACnet
Köken ve alan Endüstriyel kontrolörler, sayaçlar, sürücüler Bina otomasyonu: HVAC, aydınlatma, erişim, yangın
Veri modeli Coil'ler, discrete input'lar, holding ve input register'lar (16 bit) Özelliklere sahip nesneler (Analog Input, Binary Output, Schedule, Trend Log...)
Kendini tanımlama Yok, register haritası gerekir Nesne adları, birimler ve açıklamalar cihazdan okunabilir
Keşif Yok, adresleri bilmeniz gerekir Who-Is / I-Am ve Who-Has / I-Have yayınları
Seri taşıma RS-485 üzerinden Modbus RTU RS-485 üzerinden MS/TP
IP taşıma Modbus TCP, port 502 UDP üzerinden BACnet/IP, port 47808 (0xBAC0)
Değişiklik bildirimi Yok, yalnızca sorgulama Change of Value (COV) abonelikleri
Alarmlar ve zaman programları Protokolün parçası değil Alarmlar, olaylar, zaman programları ve trendler için yerel nesneler ve servisler
Güvenlik Klasik Modbus'ta yok; Modbus/TCP Security 802 portunda TLS ekler Klasik BACnet/IP'de yok; BACnet Secure Connect (BACnet/SC) WebSocket üzerinden TLS ekler
Uygulama eforu Çok düşük Daha yüksek, özellikle tam cihaz profilleri için

Veri Modelleri: Register'lar ve Nesneler

BACnet vs Modbus kararı genellikle veri modelinde verilir; çünkü her yeni cihazın ne kadar entegrasyon işi gerektireceğini o belirler.

Modbus: adreslerdeki sayılar

Bir Modbus enerji sayacı, gerilimi holding register 3000'de iki register'a yayılmış 32 bitlik bir float olarak sunabilir. Bunu kullanmak için adresi, fonksiyon kodunu, veri tipini, word sırasını ve varsa ölçek çarpanını bilmeniz gerekir. Word sırasını yanlış alırsanız 230 V anlamsız bir değer olarak okunur. Her yeni cihaz modeli, yeni bir register haritası okumak ve onu gateway yapılandırmanıza işlemek demektir.

Avantajı ise öngörülebilirliktir: her PLC, SCADA paketi ve gateway bu protokolü konuşur.

BACnet: özelliklere sahip tipli nesneler

Bir BACnet kontrolörü analog-input,3 gibi bir nesneyi object-name ("AHU-1 Supply Air Temp"), present-value (13.4), units (degrees-Celsius), status-flags ve reliability gibi özelliklerle sunar. Bir client, cihazın object-list özelliğini listeleyip harici bir belgeye ihtiyaç duymadan adları ve birimleri okuyabilir. Yazmalar 16 seviyeli bir öncelik dizisinden geçer; böylece öncelik 1'deki bir can güvenliği müdahalesi, öncelik 16'daki zamanlanmış bir ayar noktasına üstün gelir ve bir önceliği bırakmak (relinquish) bir sonraki seviyenin devralmasını sağlar.

Bu zenginliğin bedeli karmaşıklıktır: yığınlar (stack) daha büyüktür, cihaz profilleri hangi servislerin bulunması gerektiğini tanımlar ve büyük tesislerde cihaz instance ve ağ numaralarının dikkatle yönetilmesi gerekir.

Taşıma Katmanları ve Ağ

Her iki protokolün de bir seri ve bir IP varyantı vardır ve bu çiftler kağıt üzerinde birbirine benzer.

  • Modbus RTU vs BACnet MS/TP. Her ikisi de RS-485 papatya zincirleri üzerinde çalışır. Modbus RTU, slave'leri sırayla sorgulayan tek bir master kullanır. MS/TP ise master'lar arasında token geçişidir; böylece birden fazla kontrolör trafik başlatabilir, slave'ler de pasif düğüm olarak yer alabilir. MS/TP hatları VAV kutuları ve fan coil'lerdeki saha kontrolörleri için yaygındır.
  • Modbus TCP vs BACnet/IP. Modbus TCP, 502 portuna düz bir TCP bağlantısıdır ve router'ları ve güvenlik duvarlarını kolayca geçer. BACnet/IP, 47808 portunda UDP kullanır ve keşif için yayınlara (broadcast) dayanır. Yayınlar alt ağları geçmez; BACnet tesislerinin alt ağları birleştirmek için BACnet Broadcast Management Device'lar (BBMD) veya Foreign Device Registration kullanmasının nedeni budur.

Uzaktan erişim açısından her iki klasik protokol de internete pek uygun değildir. Hiçbirinde yerleşik kimlik doğrulama veya şifreleme yoktur ve 502 ya da 47808 portunu dışarıya açmak, bir binanın veya tesisin taranıp yoklanmasının bilinen bir yoludur. Modern çözüm, bunları yerel ağda tutmak ve veriyi şifreli, kimlik doğrulamalı bir protokolle dışarı taşımaktır; MQTT tam da burada devreye girer.

Sorgulama ve Change of Value

Modbus'ta olay kavramı yoktur. Bir sıcaklığın ne zaman değiştiğini bilmek istiyorsanız, onu birkaç saniyede bir sorgular ve karşılaştırırsınız. Bu, birkaç sayaç için sorun değildir, ancak binlerce nokta için israftır.

BACnet COV abonelikleri sunar: bir client bir nesneye abone olur ve değer COV artışının ötesine geçtiğinde veya durum bayrakları değiştiğinde cihaz bir bildirim gönderir. Aboneliklerin ömrü vardır ve yenilenmeleri gerekir; ayrıca her cihaz her nesne tipinde COV'u desteklemez. Bu yüzden üretimdeki gateway'ler genellikle mümkün olduğunda COV'u, yedek olarak da sorgulamayı birlikte kullanır.

Bu, olay güdümlü olan MQTT için önemlidir: COV bildirimlerini veya ölü bantla filtrelenmiş sorgulamaları yayınlara dönüştürmek bant genişliğini düşük tutar. Ölü bant ayarı için report-by-exception rehberine bakın.

Hangisini Ne Zaman Seçmeli?

Bir seçim şansınız olduğunda, örneğin yeni bir kurulumu tanımlarken, bu kontrol listesini kullanın:

  1. Sistem öncelikle HVAC, aydınlatma veya bina hizmetleri mi? BACnet'i tercih edin. Bina yönetim sisteminiz, grafikleri ve alarm yönetimi BACnet nesneleri bekleyecektir.
  2. Bir sayaç, sürücü, invertör veya basit bir sensör mü? Modbus genellikle tek seçenektir ve tamamen yeterlidir. Çoğu bina yönetim sistemi Modbus cihazlarını bir gateway veya sürücü aracılığıyla entegre eder.
  3. Saha cihazlarının içinde zaman programlarına, trendlere ve alarmlara mı ihtiyacınız var? BACnet'te bunlar için yerel nesneler vardır; Modbus'ta bunları PLC'de veya SCADA'da uygularsınız.
  4. Farklı üreticilerin kontrolörlerinin doğrudan birlikte çalışması gerekecek mi? BTL listesinde yer alan cihazlarla BACnet.
  5. Cihaz başına entegrasyon bütçesi sınırlı ve nokta listesi küçük mü? Modbus'un kablolanması ve yapılandırılması daha hızlıdır.
  6. Yerel ağda güvenli taşımaya mı ihtiyacınız var? BACnet/SC veya Modbus/TCP Security desteği arayın ve her durumda ağ segmentasyonunu planlayın.

Pratikte çoğu tesis her ikisini de çalıştırır. Asıl soru BACnet vs Modbus değil, her ikisini tek ve iyi adlandırılmış bir veri katmanına nasıl taşıyacağınızdır.

BACnet ve Modbus'u MQTT'ye Köprülemek

Bir protokol gateway'i yerel ağda durur, aşağıya doğru BACnet ve Modbus konuşur ve yukarıya doğru bir broker'a MQTT yayınlar. Bu, ticari bir bina gateway'i, Node-RED çalıştıran bir endüstriyel PC veya küçük bir Python servisi olabilir. Model aynıdır:

  1. Modbus register'larını bir zaman planına göre sorgulayın, mühendislik değerlerine çözün ve bir ölü bant uygulayın.
  2. Desteklendiği yerlerde BACnet COV'a abone olun, geri kalanını sorgulayın.
  3. Her ikisini değer, birim, kalite ve zaman damgası içeren tek bir payload biçiminde normalleştirin.
  4. Protokolü değil varlığı tanımlayan topic'lere yayınlayın.

Önemli olan son maddedir. Tüketiciler, besleme havası sıcaklığının analog-input,3'ten mi yoksa holding register 3000'den mi geldiğini önemsememelidir. ISA-95 MQTT topic'leri anlayışıyla konum ve ekipmana dayalı bir topic ağacı, protokolü tamamen gizler:

connectmq/demo/a7f3k2/campus1/building-b/floor3/ahu1/supply-air-temp
connectmq/demo/a7f3k2/campus1/building-b/floor3/ahu1/fan-status
connectmq/demo/a7f3k2/campus1/building-b/plantroom/meter1/active-power
connectmq/demo/a7f3k2/campus1/building-b/plantroom/meter1/voltage-l1

Her iki taraftan gelen normalleştirilmiş bir payload şöyle görünür:

{
  "value": 13.4,
  "unit": "degC",
  "quality": "good",
  "ts": "2026-10-16T09:41:07Z",
  "source": "bacnet:device-120001/analog-input:3"
}

Topic düzenini bir test broker'ında deneyin

Gerçek ekipmanı bağlamadan önce topic tasarımını broker.connectmq.com adresindeki herkese açık MQTT test broker'ında doğrulayabilirsiniz. Herkese açık alan herkes tarafından okunabildiği için rastgele bir önek kullanın:

# Terminal 1: test önekinizin altındaki her şeyi izleyin
mosquitto_sub -h broker.connectmq.com -p 1883 -i bms-watch-a7f3k2 \
  -t 'connectmq/demo/a7f3k2/#' -v

# Terminal 2: bir BACnet noktasını ve bir Modbus noktasını simüle edin
mosquitto_pub -h broker.connectmq.com -p 1883 -i bms-sim-a7f3k2 \
  -t 'connectmq/demo/a7f3k2/campus1/building-b/floor3/ahu1/supply-air-temp' \
  -m '{"value":13.4,"unit":"degC","quality":"good"}'
mosquitto_pub -h broker.connectmq.com -p 1883 -i bms-sim2-a7f3k2 \
  -t 'connectmq/demo/a7f3k2/campus1/building-b/plantroom/meter1/active-power' \
  -m '{"value":42.7,"unit":"kW","quality":"good"}'

Tasarlarken topic seviyelerinizi sayın: herkese açık broker en fazla 8 seviyeye izin verir, bu yüzden uzun bina hiyerarşilerinin test için düzleştirilmesi gerekebilir. Kendi planınızdaki üretim broker'ları bu test limitini paylaşmaz.

Modbus tarafının ayrıntıları için Modbus TCP'den MQTT'ye ve Modbus RTU'dan MQTT'ye yazılarına bakın.

Üretim: özel bir broker

Gerçek binalar ve tesisler için gateway'i, kimlik bilgileri ve 8883 portunda TLS bulunan özel bir broker'a yönlendirin. ConnectMQ ile portalda bir broker oluşturur, üretilen kullanıcı adı, parola ve client ID'yi gateway'e kopyalar ve gelen topic'leri hemen canlı topic gezgininde görürsünüz. Portaldaki eşik tabanlı alarm kuralları bir limiti aşan besleme havası sıcaklığını veya güç değerini işaretleyebilirken historian'lar, panolar ve analitik araçları sıradan MQTT client'ları olarak abone olur. Önce barındırma ödünleşimlerini anlamak istiyorsanız, tam yönetilen bir MQTT servisinin avantajlarını okuyun.

Her İkisini Entegre Ederken Sık Yapılan Hatalar

  • Modbus word sırası ve ölçekleme. Her 32 bitlik değere güvenmeden önce onu cihaz ekranıyla karşılaştırarak doğrulayın.
  • Yinelenen BACnet cihaz instance'ları. Aynı instance numarasına sahip iki kontrolör aralıklı ve kafa karıştırıcı davranışlara yol açar. Entegrasyondan önce denetleyin.
  • Yanlış BACnet önceliğine yazmak. Yüksek bir öncelikte yazıp önceliği hiç bırakmayan bir gateway, bina zaman programını devre dışı bırakabilir.
  • Çok hızlı sorgulamak. Paylaşılan bir RS-485 hattı, agresif bir gateway yüzünden tıkanabilir.
  • Düz topic adları. modbus/40001 gibi topic'leri ölçekte tüketmek imkansızdır. Varlığa göre adlandırın.

Bu parçaların bir tesiste nasıl bir araya geldiğine dair geniş resim için MQTT ile endüstriyel IoT rehberi mimariyi, edge gateway'leri ve veri modellemeyi uçtan uca anlatıyor.

ConnectMQ ile Başlayın

Gateway'iniz BACnet ve Modbus'u temiz MQTT topic'lerine dönüştürdüğünde, yayın yapacağı güvenilir bir bulut MQTT broker gerekir. app.connectmq.com adresinde kredi kartı gerektirmeden ücretsiz bir Serverless broker oluşturun ve gateway'inizi dakikalar içinde TLS ile bağlayın. ConnectMQ, her nokta devreye girerken doğrulamanız için canlı topic gezgini ve eşik tabanlı alarmlar sunar.

Sık Sorulan Sorular

BACnet, Modbus'tan daha mı iyi?

Genel olarak hiçbiri daha iyi değildir. BACnet daha zengindir ve kendini tanımlar; bu da bina otomasyonuna uygundur. Modbus ise daha basittir ve sayaçlarda, sürücülerde ve PLC'lerde neredeyse evrenseldir.

BACnet ve Modbus cihazları birbirleriyle doğrudan konuşabilir mi?

Hayır, bunlar farklı protokollerdir. Her ikisini de konuşan bir gateway'e veya kontrolöre ihtiyacınız vardır; ya da her ikisini MQTT'ye taşıyıp tüketicilerin tek, normalleştirilmiş bir veri katmanıyla çalışmasını sağlayabilirsiniz.

BACnet/IP ve Modbus TCP hangi portu kullanır?

BACnet/IP UDP 47808 portunu, Modbus TCP ise TCP 502 portunu kullanır. Hiçbiri internete açılmamalıdır; bunun yerine veriyi TLS ile MQTT üzerinden dışarı gönderin.

BACnet olay güdümlü güncellemeleri destekliyor mu?

Evet, Change of Value (COV) abonelikleri aracılığıyla; ancak destek cihaza ve nesne tipine göre değişir. Modbus'ta bunun bir karşılığı yoktur ve her zaman sorgulamaya dayanır.

İlgili yazılar

CODESYS MQTT Client: PLC Değişkenlerini Bir Broker'a Yayınlama

CODESYS IIoT MQTT Client kütüphanesini PLC değişkenlerini JSON olarak yayınlayacak şekilde yapılandırın, broker.connectmq.com üzerinde doğrulayın, ardından kimlik bilgileri ve TLS içeren özel bir broker'a geçin.

6 dk okuma

Tüm yazılar →

Özel MQTT broker’ınız birkaç tık uzağınızda

Hesabınızı oluşturun, broker kimlik bilgilerinizi alın ve ilk cihazınızı bağlayın — kurulacak, yamalanacak ya da ölçeklendirilecek sunucu yok.