Sayaç Adresleme: Birincil ve İkincil Adres Ne Demek?
M-Bus standardı her sayaca iki ayrı adres verir: birincil (1-250) ve ikincil (üretici + seri numarası). Hangi adres ne zaman kullanılır, çakışma sorunları nasıl çözülür ve mReader otomatik taramayı nasıl yapar.
M-Bus hattında sayaç bulmanın iki yolu vardır: birincil adres ve ikincil adres. Bu yazıda her ikisinin farkını, kurulum sırasında nasıl atandığını ve saha sorunlarını nasıl çözeceğinizi anlatıyoruz.
Adres tipleri
| Birincil adres | İkincil adres | |
|---|---|---|
| Boyut | 1 byte (1-250) | 8 byte |
| Yapı | Tek sayı | Üretici (3 byte) + Seri (4 byte) + Versiyon (1 byte) + Tip (1 byte) |
| Atama | Saha sırasında atanır | Fabrika çıkışında basılı |
| Hız | Hızlı tarama | Yavaş tarama |
| Çakışma | Mümkün (manuel hata) | İmkansız (üretim seri unique) |
Birincil adres nasıl çalışır?
Birincil adres 0-255 aralığında bir sayıdır. Ama:
- 0: yeni sayaç (henüz adres atanmamış)
- 1-250: kullanılabilir adresler
- 251-253: rezerve
- 254: test adresi (broadcast değil, test query)
- 255: broadcast (tüm sayaçlara aynı anda)
Bir M-Bus segmentinde maksimum 250 sayaç olabilir, çünkü birincil adres 1 byte. Daha fazlası gerekiyorsa segment ayrılır (multiple converters / gateways).
Saha pratiği
Yeni binada konvertörü bağlarken tüm sayaçların birincil adresi 0 (henüz atanmamış). M-Bus master:
- İkincil adres üzerinden tarar (yavaş ama unique)
- Bulduğu her sayaca sırayla
1, 2, 3, ...birincil adres atar - Sonraki okumalarda hızlı birincil adres ile sorar
mReader bunu otomatik yapar — kullanıcının el ile adres atama derdi yoktur. Saha kurulumunda “tara” komutu verilir, dakikalar içinde tüm sayaçlar bulunup birincil adres atanır.
Çakışma — yaygın bir saha sorunu
İki sayaç aynı birincil adresi taşıyorsa, master birinden cevap istediğinde ikisi de cevap verir. Veriler karışır, M-Bus collision olur.
Ne zaman olur?
- Üretici fabrikadan default birincil adresle gönderdi (genelde
1), ama yöneticiler aynı modelden 5 sayaç birden bağladı - Eski sayaç çıkarılıp yeni eklendi, ama birincil adres atama yapılmadı
- Hat genişletildi ama yeni segmentin birincil adresleri sıfırlanmadı
Belirti: M-Bus tarama “broken telegram”, “CRC error”, “no response” hatası verir. mReader bunu arıza listesinde “addressing collision” olarak işaretler.
Çözüm: çakışan sayaçları teker teker hattan ayırın, birincil adresleri ikincil adres üzerinden yeniden atayın. mReader’ın “Tek sayaç adres ata” komutu bu durumda kullanılır.
İkincil adres nasıl çalışır?
İkincil adres 8 byte:
Byte 0-3: BCD-encoded seri numarası (8 hane)
Byte 4-5: Üretici kodu (FLAG)
Byte 6: Versiyon
Byte 7: Sayaç tipi (kalorimetre, su, gaz, elektrik...)
Örnek: 87410001-0F-23-04
- Seri: 87.410.001
- Üretici:
0F(FLAG kodu, üretici tarafında lookup) - Versiyon: 23 (firmware)
- Tip: 04 (kalorimetre)
İkincil adres üretim sırasında basılır, asla değişmez. Bu yüzden:
- İki sayacın aynı ikincil adresi olamaz (üretici garanti ediyor)
- Bir sayaç fiziksel olarak hangi hatta bağlı olursa olsun ikincil adresle bulunur
- Yedek parça olarak bir sayaç değiştirilirse yeni cihazın ikincil adresi farklıdır → mReader bunu kayıt olarak yeni bir sayaç olarak görür ve eski kayıtlar arşive geçer (soft delete + audit izi)
Wildcard taraması
İkincil adres taramasında wildcard kullanılabilir. Master “tüm sayaçları getir” demek için:
Üretici: FFFFFF
Seri: FFFFFFFF
Versiyon: FF
Tip: FF
gönderir. Hattaki tüm sayaçlar cevaplar. Bu yavaştır (özellikle çakışma durumlarında binary tree algoritmasıyla daraltma yapılır) ama ikincil adres bilinmediğinde tek seçenek.
mReader yeni kurulumda bu wildcard taramayı otomatik kullanır.
Hangi adres ne zaman kullanılır?
| Senaryo | Adres tipi |
|---|---|
| Yeni kurulum (sayaç adresleri bilinmiyor) | İkincil (wildcard tarama) |
| Günlük otomatik okuma (her gece 23:59) | Birincil (hızlı) |
| Tek sayaç test okuma (saha debug) | İkincil veya birincil |
| Sayaç değişimi sonrası yeni cihaz tanıma | İkincil (yeni cihazın seri numarası ile) |
| Hat çakışması debug | İkincil (birincilin başka cihazda olduğu durumu izole et) |
mReader bu seçimi otomatik yapar; kullanıcı için saydamdır. “Test okuma” ekranında hem birincil hem ikincil adres seçenekleri sunulur.
Saha hata mesajları ve çözümleri
”Hat üzerinde 0 sayaç bulundu”
Olası sebepler:
- Konvertör bağlı değil veya bağlantı tipi yanlış (RS-485 yerine TCP seçildi)
- Hat besleme yok (M-Bus master’ın gerilim modülasyonu kapalı)
- Polarite ters (sadece RS-485 için; M-Bus polaritesizdir)
Çözüm: konvertör test komutuyla doğrula → loop-back testi yap → fiziksel kabloyu kontrol et.
”Sayaç X timeout”
Olası sebepler:
- Sayaç pili bitmiş (özellikle 10+ yıllık)
- Sayaç fiziksel olarak çıkarıldı, kayıt elimizde kaldı
- Hat çok uzun, sinyal zayıf
- Aynı segmentte çok sayaç (> 250)
Çözüm: tek başına o sayacı test okumaya al → cevap yoksa sahaya bakılır → aksi halde retry parametrelerini artır (3 deneme yetmiyorsa 5’e çıkar).
”CRC hatası art arda”
Olası sebepler:
- Hat üzerinde elektriksel parazit (kazan, frekans inverteri yakın)
- Bitiş direnci yok veya yanlış değerde
- Topraklama sorunu
Çözüm: hat segmentini kısalt → terminating resistor ekle → topraklama planını gözden geçir.
Sorun giderme yazılarımızdan bağlantı hata debug detayları ve durağanlık tespiti üzerine ayrı yazılar var.
mReader otomatik adres yönetimi
mReader kurulum sırasında sırasıyla:
- Hat tarama: ikincil adres wildcard ile tüm sayaçları bul
- Birincil adres atama: her bulunan sayaca artan sıralı (1, 2, 3…) birincil adres ata
- Veri toplama: birincil adres ile hızlı sorgu, gece okumalarına geçiş
- Çakışma izleme: tarama sırasında collision tespit edilirse uyarı, manuel ata seçeneği
Bu süreç Nasıl Çalışır → Stage 2 (Konvertör) bölümünde ayrıntılı.
Sonuç
M-Bus adresleme görünüşte teknik bir konu ama saha kurulumlarının çoğu sorunu burada başlar. İki adres tipini ayırt edebilmek, çakışmayı tespit edip çözmek, ve mReader gibi yazılımların bu süreci otomatikleştirmesini bilmek bina yöneticisi ve kurulum ekibinin işini hızlandırır.
Sahanızda adresleme sorunu yaşıyorsanız demo görüşmesinde gerçek vakanız üzerinden konuşalım — telegram dump’ı veya saha logu ile birlikte hızlı debug yapılabilir.