ALGO TEAM / CAN & J1939 REHBERİ
J1939 DM1 mesajı nasıl çözülür? SPN, FMI ve OC rehberi
10 dakika · Güncelleme: 8 Eylül 2026J1939 DM1 (PGN 65226) mesajında lamba durumlarını, SPN, FMI, OC ve CM alanlarını ham CAN verisinden adım adım çözümleyin.
J1939 DTC Decoder'ı aç →DM1 nedir?
DM1, J1939 ağındaki kontrol ünitelerinin o anda aktif olan teşhis arıza kodlarını ve ikaz lambası durumlarını yayımladığı mesajdır. PGN değeri 65226, hexadecimal karşılığı 0xFECA'dır. Bir DM1 kaydını doğru yorumlamak için yalnız SPN ve FMI'ye değil; mesajı gönderen source address'e, lamba durumlarına, occurrence count değerine ve zaman içindeki tekrarına birlikte bakın.
DM1 aktif arızaları taşır. Geçmişte oluşmuş fakat artık aktif olmayan arızalar için farklı teşhis mesajları kullanılabilir. Bu nedenle kayıtta bir DM1 görememek, ECU'da hiçbir geçmiş arıza olmadığı anlamına gelmez.
29-bit CAN kimliğinden PGN ve kaynak adresi
J1939, 29-bit Extended CAN kimliği içinde priority, data page, PDU format, PDU specific ve source address alanlarını taşır. Örneğin 0x18FECA00 kimliğinde 0xFECA, DM1 PGN'sini; son byte olan 0x00 ise mesajı gönderen ECU'nun source address değerini gösterir.
Aynı PGN farklı ECU'lardan gelebilir. Motor ECU'su ve başka bir kontrol ünitesi aynı teşhis PGN'sini yayımlıyorsa yalnız PGN'ye göre filtre uygulamak kayıtları birbirine karıştırır. CAN ID ile birlikte source address'i de saklayın.
DM1 payload yapısı
DM1 payload'ının ilk iki byte'ı dört ikaz lambasının komut ve yanıp sönme durumlarını taşır: MIL, kırmızı stop, sarı ikaz ve koruma lambası. Sonraki alanlar dörder byte'lık DTC kayıtlarıdır. Tek bir klasik CAN çerçevesine sığmayan DM1 mesajları J1939 Transport Protocol üzerinden BAM ve TP.DT paketleriyle taşınabilir.
Bir DTC kaydında ilk 19 bit SPN'yi, sonraki 5 bit FMI'yi taşır. Dördüncü byte'ın alt 7 biti OC değeridir; en yüksek bit ise SPN dönüşüm yöntemini belirten CM alanıdır. 0x7F OC değeri kullanılamıyor veya bilinmiyor anlamına gelebilir.
SPN, FMI, OC ve CM ne anlatır?
- SPN (Suspect Parameter Number), arızayla ilişkili parametreyi veya fonksiyonu tanımlar.
- FMI (Failure Mode Identifier), değerin yüksek, düşük, düzensiz, devre açık veya kısa devre gibi hangi arıza biçiminde olduğunu belirtir.
- OC (Occurrence Count), ECU'nun ilgili arızanın oluşum sayısı için bildirdiği değerdir; tek başına arıza süresini göstermez.
- CM (Conversion Method), SPN bitlerinin güncel veya eski yerleşim yöntemine göre yorumlanacağını belirtir.
- Source address, arızayı hangi ECU'nun raporladığını ayırır; aynı SPN/FMI farklı kaynaklardan gelebilir.
Ham DM1 mesajını adım adım çözme
Örnek mesaj 0x18FECA00 kimliği ve 04 FF 5B 00 03 02 FF FF payload'ı ile gelsin. Kimlikteki PGN 0xFECA olduğu için mesaj DM1'dir; source address 0x00'dır. İlk iki byte lamba alanıdır. 0x04 komut byte'ı sarı ikaz lambasının aktif olduğunu, 0xFF ise yanıp sönme alanlarında mevcut olmayan veya desteklenmeyen durumları gösterebilir.
DTC alanı 5B 00 03 02 olarak okunur. Güncel CM=0 yerleşiminde SPN değeri 91, FMI değeri 3 ve OC değeri 2 olur. Bu sonuç, ilgili parametrede gerilim yüksek veya üst hatta kısa devre türünde bir durum raporlandığını söyler; arızalı parçayı tek başına kanıtlamaz.
Tek paket ve BAM / TP.DT farkı
İki lamba byte'ı ve bir DTC kaydı klasik sekiz byte'lık çerçeveye sığabilir. Birden fazla DTC olduğunda veri büyür ve ECU, TP.CM içindeki BAM duyurusunu ardından sıralı TP.DT paketlerini kullanabilir. Analiz sırasında paket sıra numarası, toplam byte sayısı, beklenen paket adedi, source address ve taşınan PGN birlikte doğrulanmalıdır.
Eksik bir TP.DT paketi veya başka ECU'ya ait paketin yanlış oturuma eklenmesi sahte SPN/FMI sonuçları üretir. Çok paketli mesaj önce eksiksiz birleştirilmeli, DM1 çözümlemesi bundan sonra yapılmalıdır.
Koddan kök nedene geçiş
- CAN ID, source address, SPN, FMI, OC ve lamba durumunu aynı kayıt içinde saklayın.
- Arızanın ilk ve son görülme zamanını, tekrar sayısını ve aktif kalma süresini çıkarın.
- Aynı anda motor devri, sıcaklık, basınç, besleme gerilimi ve operatör komutu gibi bağlam sinyallerini karşılaştırın.
- SPN açıklamasını ve teşhis adımlarını ilgili üreticinin güncel servis dokümanından doğrulayın.
- Sensör, tesisat, konnektör ve besleme ölçümlerini tamamlamadan yalnız koda bakarak parça değiştirmeyin.
Sık yapılan hatalar
29-bit kimliği Standard CAN gibi yorumlamak, PGN ile source address'i ayırmamak, FMI'yi parça adı sanmak ve OC değerini arızanın süresi gibi okumak en sık görülen hatalardır. Bir başka hata, çok paketli DM1 tamamlanmadan DTC byte'larını çözmeye çalışmaktır.
SPN adları ve üreticiye özgü servis açıklamaları her zaman kamuya açık değildir. J1939 DTC Decoder ham DM1 yapısını DBC olmadan çözebilir; fakat arıza anındaki motor değerleri ve üreticiye özgü açıklamalar için doğru sürümde lisanslı DBC veya servis dokümanı kullanın.
