Seri Protokoller
TEKNİK REHBER SERİ PROTOKOLLER MIL-STD-1553B 2026

MIL-STD-1553B
savunma avionik bus'ı.

F-16'dan F-35'e, M1 Abrams'tan Patriot sistemine — 50 yıldır havacılık ve savunma elektroniğinin omurgası. 1 Mbps, dual redundant, deterministik ve savaş alanı kanıtlı.

00 MIL-STD-1553 nedir?

MIL-STD-1553, ABD Savunma Bakanlığı (DoD) tarafından 1973'te yayımlanan askeri avionik seri veri bus standardıdır. Bugün F-35, Eurofighter ve Patriot füze sistemlerinde kritik görev verisi bu protokol üzerinden taşınır.

1973'te MIL-STD-1553A olarak yayımlanan standart, 1978'de kapsamlı biçimde güncellenerek MIL-STD-1553B adını aldı. Bu revizyon hâlâ geçerliliğini korumakta ve dünya genelinde askeri platform avioniklerinin fiili standardı konumundadır. NATO Notice 1 ve Notice 2 ekleriyle genişletilmiştir.

PlatformKullanım alanıBus sayısı
F-16 Fighting FalconUçuş kontrol bilgisayarı, radar, silah yönetimi2 (dual redundant)
F-35 Lightning IIEski avionik arayüzleri, silah ara yüzleri (ARINC 664 ile birlikte)4+
M1 Abrams MBTIVIS (Inter-Vehicular Information System), ateş kontrol1–2
Patriot PAC-3Radar ve füze fırlatıcı arası iletişim2
AH-64 ApacheAvionik arka düzlemi, TADS/PNVS entegrasyonu2
Hubble Uzay TeleskopuYük verisi, güç sistemi telemetrisi1 (uzayda redundancy farklı)
GPS IIR UydularıKomuta/telemetri alt sistemi1

MIL-STD-1553A ile 1553B farkları

İki revizyon arasındaki temel farklılıklar pratik uygulamayı doğrudan etkiler:

Transformer coupling1553B transformer coupling'i zorunlu kılarak DC izolasyonu ve EMI direncini artırdı. 1553A'da direct stub seçeneği de vardı.
Dual redundant bus1553B Bus A / Bus B çift hatlı yapıyı formalize etti. Birinde arıza olunca otomatik geçiş yapılır.
Mode code genişletme1553B ek mode code'lar tanımladı: Dynamic Bus Control, Synchronize, Transmit Vector Word vb.
Broadcast mesajlar1553B RT adresi 31 (11111b) ile broadcast mesajlaşmayı standartlaştırdı.
Sinyal gereksinimleri1553B sinyal seviyelerini ve zamanlama toleranslarını daha sıkı tanımladı (Manchester II biphasic encoding).
TARİHSEL NOT

MIL-STD-1553, 1970'lerin başında Rockwell ve McDonnell Douglas mühendislerinin F-15 Eagle için geliştirdiği avionik bus konseptinden doğmuştur. Dönemin teknoloji kısıtlamaları göz önünde bulundurulduğunda, 1 Mbps ve dual-redundant yapısıyla son derece ilerici bir tasarımdı. F-35 gibi modern platformlarda hâlâ kullanılması, standardın ne kadar sağlam tasarlandığının kanıtıdır.

01 Fiziksel katman

MIL-STD-1553B'nin fiziksel katmanı ağır EMI ortamlarında güvenilir iletişimi garanti edecek şekilde tasarlanmıştır. Diferansiyel şielded twisted pair, transformer izolasyonu ve Manchester II kodlama bu garantinin temelini oluşturur.

Kablo ve sinyal özellikleri

  Bus Controller ─────────────────────────────────────────────
                  │    Shielded Twisted Pair (78Ω nominal)    │
                  └──┬─────────┬──────────┬──────────┬────── ┘
                Stub │    Stub │     Stub │     Stub │
               (RT1) │   (RT2) │    (RT3) │    (BM)  │
             [T-Coup] │[T-Coup] │[T-Coup]  │[T-Coup]  │
                     │         │           │           │
               [RT1 LRU]  [RT2 LRU]  [RT3 LRU]  [Monitor]
    
ParametreDeğerAçıklama
Veri hızı1 Mbps sabitManchester II biphasic encoding
Kablo empedansı70–85 Ω (nom. 78 Ω)Shielded twisted pair, MIL-C-17 tip
Ana bus uzunluğuMaks. 100 ft (30,5 m)Stub uzunluklarına bağlı olarak değişir
Stub uzunluğu (direct)Maks. 1 ft (0,3 m)Transformer stub önerilir
Stub uzunluğu (transformer)Maks. 20 ft (6,1 m)Transformer coupling ile
Sinyal seviyesi (ana bus)18–27 V peak-to-peak diferansiyelTransmitter çıkışı
Sinyal seviyesi (stub)6–20 V peak-to-peakTransformer attenuation sonrası
Alıcı eşiğiMin. 1,2 V diferansiyelGeçerli sinyal algılama eşiği
Maks. RT sayısı31 (adres 0–30)Adres 31 broadcast için ayrılmış

Manchester II Biphasic Encoding

1553B, saat gömülü Manchester II kodlamasını kullanır. Her bit, bit süresinin ortasında zorunlu geçiş içerir. Bu sayede ayrı bir saat hattına gerek yoktur:

  Bit-1 (logic 1):  ─────╮╰─────    (high-to-low geçiş = 1)
  Bit-0 (logic 0):  ─────╯╭─────    (low-to-high geçiş = 0)
                        ↑
                    bit süresi ortası (500 ns @ 1 Mbps)

  Sync pattern (Command/Status): 3 µs geçişsiz + 1,5 µs → 1,5 µs
  Sync pattern (Data):           1,5 µs → 1,5 µs + 3 µs geçişsiz
    

Transformer coupling vs. direct stub

Transformer Coupling (önerilen)Stub'ı ana bus'a bir RF transformer üzerinden bağlar. DC izolasyonu, yüksek CMRR, daha uzun stub mesafesi (6 m'ye kadar) ve EMI koruması sağlar. Savaş uçakları ve uzay araçlarında zorunludur.
Direct CouplingStub doğrudan ana bus'a bağlıdır. Daha kısa stub (0,3 m), daha az izolasyon. Düşük maliyetli test ortamları ve simülatörler için kabul edilebilir.
EMİ UYARISI

Askeri platformlarda (özellikle uçak ve füze sistemlerinde) transformer coupling zorunludur. Direct stub, şiddetli EMI ortamlarında veri bozulmasına ve common-mode arıza yayılımına yol açabilir. MIL-STD-461 EMC gereksinimlerini karşılamak için mutlaka transformer izolasyonu kullanın.

02 Word yapıları

MIL-STD-1553B'de üç farklı word tipi bulunur: Command Word, Data Word ve Status Word. Her word 20 bit uzunluğundadır: 3-bit sync + 16-bit bilgi + 1-bit odd parity.

Command Word (CW)

Bus Controller (BC) tarafından Remote Terminal'e (RT) gönderilir. Her mesaj bir Command Word ile başlar.

  ┌──────────┬──────────────┬───┬──────────────────┬──────────────────┬──────┐
  │  SYNC    │  RT ADDRESS  │T/R│   SUBADDRESS /   │   WORD COUNT /   │ PAR  │
  │ (3 bit)  │   (5 bit)    │(1)│   MODE CODE (5b) │   MODE CODE (5b) │ (1b) │
  └──────────┴──────────────┴───┴──────────────────┴──────────────────┴──────┘
   bit 19-17    bit 16-12    11      10-6                 5-1             0
    
RT Address (5 bit)Hedef Remote Terminal'in adresi (0–30). Adres 31 (11111b) broadcast mesajlar için ayrılmıştır — tüm RT'ler bu mesajı alır ama Status Word göndermez.
T/R BitTransmit/Receive: 1 = RT'den BC'ye veri al (Transmit), 0 = BC'den RT'ye veri gönder (Receive). RT'nin bakış açısından tanımlanır.
Subaddress / Mode Code (5 bit)00000 veya 11111 ise Mode Code mesajı. 00001–11110 arası ise Subaddress — RT içindeki mantıksal veri kanalını belirtir (maks. 30 farklı subaddress).
Word Count / Mode Code (5 bit)Subaddress mesajlarında: kaç data word gönderileceği (00000 = 32 word). Mode Code mesajlarında: mode kodu numarası.
Parity (1 bit)Odd parity — 16 bilgi biti + parity toplamı tek sayı olmalıdır.

Data Word (DW)

16 bit veri içerir. BC→RT veya RT→BC yönünde taşınır. Bir mesajda 1–32 data word bulunabilir.

  ┌──────────┬────────────────────────────────────────────────────────┬──────┐
  │  SYNC    │                  DATA (16 bit)                         │ PAR  │
  │ (3 bit)  │   MSB ←──────────────────────────────────→ LSB        │ (1b) │
  └──────────┴────────────────────────────────────────────────────────┴──────┘
   Data sync: 1,5µs-high / 1,5µs-low (Command/Status sync'in tersi)
    

Status Word (SW)

Remote Terminal, kendisine gelen Command Word'e yanıt olarak Status Word gönderir. BC mesajın başarıyla alındığını bu word ile öğrenir.

  ┌──────┬─────────┬──┬──┬──┬────┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
  │SYNC  │RT ADDR  │ME│IN│SR│RES │BC│BY│SF│DB│RE│   RESERVED        │P │
  │(3b)  │(5b)     │  │  │  │(4b)│  │  │  │  │  │                   │  │
  └──────┴─────────┴──┴──┴──┴────┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
    
BitAlanAçıklama
16–12RT AddressYanıt veren RT'nin adresi (Command Word ile eşleşmeli)
11Message Error (ME)Geçersiz mesaj alındı (parity hatası, sync hatası, illegal CW vb.)
10Instrumentation (IN)Status word'ü command word'den ayırt etmek için — 1553B'de her zaman 0
9Service Request (SR)RT, BC'nin dikkatini çekmek istiyor (interrupt benzeri)
8–5ReservedUygulama özel — standart mesajlarda 0 olmalı
4Broadcast Received (BC)RT en son broadcast mesajı aldı
3Busy (BY)RT şu an veri hazır değil, tekrar dene
2Subsystem Flag (SF)RT'ye bağlı alt sistem arızası var
1Dynamic Bus Control (DB)RT, bus kontrolünü almak istiyor
0Terminal Flag (TF)RT'nin kendisi arızalı
NOT

Parity MIL-STD-1553B'de odd parity kullanır: 16 veri biti + 1 parity bitinin toplamı daima tek sayı olmalıdır. Bu, hatalı sinyallerin veya iletim bozulmalarının kolayca tespit edilmesini sağlar. Ancak 2 bit hata (çift sayıda) tespiti bu yöntemle mümkün değildir; bu nedenle dual-redundant bus yapısı ek güvenilirlik katmanı sunar.

03 Bus topolojisi ve aktörler

MIL-STD-1553B bir command/response protokolüdür: Bus Controller merkezi otorite rolünü üstlenir, Remote Terminal'ler yalnızca BC komutu üzerine yanıt verir.

Temel aktörler

Bus Controller (BC)Bus'taki tek aktif yönetici. Tüm mesajları başlatır, zamanlama ve frame yapısını belirler. Bir anda sadece bir BC aktif olabilir (Dynamic Bus Control ile aktarım mümkün). Uçakta bu rol genellikle Mission Computer veya aviyonik ana bilgisayara aittir.
Remote Terminal (RT)Sensörler, aktüatörler, display sistemleri gibi uç noktalar. Maks. 31 RT adresi (0–30). Her RT yalnızca kendisine yöneltilen komutlara yanıt verir. Subaddress yapısı ile RT içinde maks. 30 mantıksal kanal tanımlanabilir.
Bus Monitor (BM)Pasif dinleyici — bus trafiğini kaydeder, hiçbir zaman mesaj başlatmaz veya yanıt vermez. Test, uçuş kayıt ve faultisolation amacıyla kullanılır. F-16 CADC (Central Air Data Computer) sensorleri BM olarak da yapılandırılabilir.

Dual Redundant Bus (Bus A / Bus B)

  ════════════════════ BUS A ══════════════════════
    │          │          │          │          │
  [BC]       [RT1]      [RT2]      [RT3]      [BM]
    │          │          │          │          │
  ════════════════════ BUS B ══════════════════════

  Transformer Coupling:  Her RT her iki bus'a da ayrı transformer ile bağlı.
  Normal operasyon:      BC Bus A'yı kullanır.
  Arıza senaryosu:       Bus A bozulursa BC otomatik Bus B'ye geçer.
  Failover süresi:       Tipik <100 µs (uçuş kontrol uygulamalarında kritik).
    

Dual redundant yapı, F-35 gibi platformlarda "mission-critical" güvenilirlik gereksinimini karşılar. ABD Savunma Bakanlığı MIL-HDBK-1553 belgesi, bus seçim stratejilerini ve arıza işleme prosedürlerini detaylandırır.

TASARIM UYARISI

Bus A ve Bus B kablolarını her zaman fiziksel olarak birbirinden izole yönlendir — farklı kablo kanalları, farklı bölmeler. Her iki kablonun aynı hasar noktasından (serpinti, yangın, mekanik darbe) etkilenmesi dual redundancy'yi anlamsız kılar. Bu gereksinim MIL-STD-1553B Notice 2'de açıkça belirtilmiştir.

Stub bağlantı yöntemleri

YöntemMaks. stub uzunluğuİzolasyonKullanım
Direct Stub0,3 m (1 ft)YokLab/test ortamı
Transformer Stub6,1 m (20 ft)DC izole, yüksek CMRRUçak, füze, uzay araçları
Transformer Couple (bus tap)Gömülü T-couplerTam izolasyonTek-kart avionik entegrasyonu

04 Mesaj formatları

MIL-STD-1553B beş temel mesaj formatı tanımlar. Her format, word'lerin belirli bir sıra ve yönde iletilmesini zorunlu kılar.

BC → RT (Bus Controller'dan Remote Terminal'e)

  BC gönderir →  [CW: RT_addr, T/R=0, SA, WC]
  BC gönderir →  [DW1] [DW2] ... [DWn]        (1–32 data word)
  RT yanıtlar →  [SW: RT_addr, status bits]
  Toplam süre:   ~20 µs (1 CW + 1 SW + 2 DW için)
    

RT → BC (Remote Terminal'den Bus Controller'a)

  BC gönderir →  [CW: RT_addr, T/R=1, SA, WC]
  RT gönderir →  [SW: RT_addr, status bits]
  RT gönderir →  [DW1] [DW2] ... [DWn]
    

RT → RT (Peer Transfer)

  BC gönderir →  [CW: RT_rx, T/R=0, SA, WC]   (alıcı RT'ye receive komutu)
  BC gönderir →  [CW: RT_tx, T/R=1, SA, WC]   (verici RT'ye transmit komutu)
  RT_tx gönderir → [SW: RT_tx_addr, ...]
  RT_tx gönderir → [DW1] ... [DWn]
  RT_rx gönderir → [SW: RT_rx_addr, ...]       (son status)
    

Broadcast

  BC gönderir →  [CW: addr=31 (11111b), T/R=0, SA, WC]
  BC gönderir →  [DW1] [DW2] ... [DWn]
  (RT'ler Status Word GÖNDERMEz — broadcast mesajda yanıt yok)
    

Mode Code mesajları

Subaddress 00000 veya 11111 olduğunda Data Word yerine Mode Code komutu iletilir. Mode Code, RT'nin davranışını kontrol eder:

Mode CodeİsimAçıklama
00000Dynamic Bus ControlBC rolünü RT'ye aktar (aktif uçuş kontrolü için kritik)
00001SynchronizeRT'nin dahili saatini eşitle
00010Transmit Status WordRT'den anlık status al
00011Initiate Self TestRT'de built-in test (BIT) başlat
00100Transmitter ShutdownRT verici devre dışı (arıza izolasyonu)
00101Override Transmitter ShutdownVericiyi yeniden etkinleştir
01000Reset Remote TerminalRT'yi başlangıç durumuna getir
10000Transmit Vector WordRT'nin hata vektörünü oku
10001Synchronize with Data WordEk veri ile senkronizasyon
10010Transmit Last CommandRT'nin son aldığı CW'yi geri gönder
UÇUŞ KONTROL NOTU

F-16 Fly-By-Wire sisteminde Dynamic Bus Control mode code kritik rol oynar: Birincil uçuş bilgisayarı (PFCS) devre dışı kalırsa yedek bilgisayar (DAFCS) Dynamic Bus Control aracılığıyla bus yönetimini devralır. Bu aktarım 4 ms'nin altında tamamlanır — pilot fark etmeden.

05 Linux MIL-STD-1553 sürücüleri

Linux altında MIL-STD-1553 donanımı çoğunlukla PCIe, PMC veya PCI-X kart üzerinden erişilir. Birkaç farklı sürücü ekosistemi mevcuttur.

AIM GmbH Linux sürücüsü

AIM GmbH (Artisan Intelligence for Measurements), militan-grade MIL-STD-1553 kartları için kapsamlı bir Linux API sunar.

bash — AIM sürücü kurulumu
# AIM Linux driver paketi kurulumu (DKMS tabanlı):
tar -xzf aim-mil1553-linux-driver-v4.x.tar.gz
cd aim-mil1553-driver/
sudo make install

# Modül yükleme:
sudo modprobe aim_mil1553

# Kart tespiti:
dmesg | grep aim
# [ 5.123] aim_mil1553: AIM MIL-STD-1553 board detected at PCI 0000:03:00.0
# [ 5.124] aim_mil1553: 2 channels, Bus A + Bus B, RT capability: 31

# Cihaz dosyaları:
ls /dev/aim1553_*
# /dev/aim1553_0  /dev/aim1553_1

DDC (Data Device Corporation) Linux API

DDC, dünya genelinde en yaygın 1553 kart üreticilerinden biridir. BU-65170 ve BU-69090 serisi kartlar için kapsamlı C API sağlar.

c — DDC API ile BC mesaj gönderme
/* DDC acecard / emace API başlıkları */
#include "ddc_api.h"
#include "ace.h"

int main(void) {
    DDC_HANDLE  hDev;
    ACE_BC_MSG  msg;
    DDC_UINT16  data[2] = { 0xDEAD, 0xBEEF };

    /* Kartı aç: ilk kart, kanal 0 */
    hDev = aceOpen(0, 0);
    if (hDev == DDC_INVALID_HANDLE) {
        fprintf(stderr, "Kart açılamadı\n");
        return -1;
    }

    /* BC modunu etkinleştir */
    aceSetMode(hDev, ACE_MODE_BC);

    /* Mesaj yapısını doldur: RT3, Subaddress 5, 2 data word, Bus A */
    memset(&msg, 0, sizeof(msg));
    msg.wBCCtrlWrd   = ACE_BCCTRL_CHL_A;   /* Bus A kullan */
    msg.wCmdWrd1     = aceBuildCmdWrd(3,    /* RT adresi = 3 */
                                       0,    /* T/R = 0 (receive) */
                                       5,    /* Subaddress = 5 */
                                       2);  /* Word count = 2 */
    memcpy(msg.aDataWrds, data, sizeof(data));

    /* Mesajı gönder ve yanıt bekle */
    aceBC_SendMsg(hDev, &msg);
    aceBC_WaitForResponse(hDev, &msg, 100); /* 100 ms timeout */

    /* Status Word'ü kontrol et */
    if (msg.wStsWrd1 & ACE_STSWRD_ME) {
        printf("RT3: Message Error\n");
    } else {
        printf("RT3 başarıyla yanıt verdi\n");
    }

    aceClose(hDev);
    return 0;
}

Açık kaynak: mil1553 kernel modülü

bash — kernel modülü ve /dev arayüzü
# Açık kaynak mil1553 modülü (CERN / BE-CO-HT geliştirmesi):
git clone https://github.com/GSI-CS-CO/mil-std-1553-linux-driver.git
cd mil-std-1553-linux-driver/
make && sudo make install

# Modül yüklendi mi?
lsmod | grep mil1553

# Cihaz arayüzü:
ls -la /dev/mil1553_0

# ioctl ile BC mesaj gönderme (raw C ioctl):
# ioctl(fd, MIL1553_SEND_MSG, &msg_struct);
# ioctl(fd, MIL1553_RECV_MSG, &msg_struct);

06 Yazılım simülasyonu

Gerçek donanım olmadan 1553 protokolünü simüle etmek için Python kütüphaneleri ve Wireshark dissector kullanılabilir. Bu araçlar geliştirme ve protokol öğrenimi için idealdir.

py1553 kütüphanesi

bash — py1553 kurulum
pip install py1553
python — mesaj frame oluşturma
from py1553 import CommandWord, DataWord, StatusWord, MilMessage

# Command Word oluştur: RT5, receive, SA=10, WC=4
cw = CommandWord(rt_address=5, transmit=False,
                 subaddress=10, word_count=4)
print(f"CW raw: 0x{cw.raw:04X}")
print(f"CW bits: {cw.raw:016b}")

# Data Word'ler oluştur
data = [DataWord(0x1234), DataWord(0x5678),
        DataWord(0x9ABC), DataWord(0xDEF0)]

# Status Word (RT5 yanıtı simülasyonu)
sw = StatusWord(rt_address=5)
sw.message_error = False
sw.busy          = False
sw.terminal_flag = False

# Tam BC→RT mesajı paketi
msg = MilMessage()
msg.command_word = cw
msg.data_words   = data
msg.status_word  = sw

print(f"Mesaj geçerli mi: {msg.is_valid()}")
print(f"Toplam word sayısı: {msg.total_words()}")

# Manchester II bit stream simülasyonu
bit_stream = msg.to_manchester_bits()
print(f"Bit stream uzunluğu: {len(bit_stream)} bit")
python — RT simülasyonu
from py1553 import RemoteTerminal, SubaddressBuffer

# RT simülatörü: adres 3
rt = RemoteTerminal(address=3)

# Subaddress 5: uçuş kontrol yüzeyi pozisyon verileri
sa5_buf = SubaddressBuffer(subaddress=5, size=4)
sa5_buf.write([0x0100, 0x0200, 0x0300, 0x0400])  # aileron, elevator...

rt.register_subaddress(sa5_buf)

# BC'den gelen command word'ü işle
incoming_cw = CommandWord(rt_address=3, transmit=True,
                          subaddress=5, word_count=4)
response = rt.process_command(incoming_cw)

print(f"RT3 yanıtı: SW=0x{response.status_word.raw:04X}")
for i, dw in enumerate(response.data_words):
    print(f"  DW{i}: 0x{dw.raw:04X}")

Wireshark 1553 Dissector

Wireshark'ın 1553 dissector eklentisi (dissector-mil1553.lua) ile USB üzerinden bağlanan 1553 analyzer kartlarından yakalanan trafiği decode edebilirsiniz.

bash — Wireshark dissector
# Dissector eklentisini Wireshark plugin dizinine kopyala:
cp dissector-mil1553.lua ~/.config/wireshark/plugins/

# Wireshark ile PCAP dosyası açıp decode et:
wireshark -r flight_test_bus_a.pcap -Y "mil1553.rt_address == 5"

07 Test ve doğrulama

1553 sistemlerinin doğrulanması hem protokol uyumluluğunu hem de güvenilirlik gereksinimlerini kapsar. Militan-grade sistemler için DO-178C yazılım sertifikasyonu da devreye girer.

DDC Test ve Analiz Araçları

bash — DDC 1553 Analyser
# DDC MIL-STD-1553 Analyzer (komut satırı arayüzü):
# Kart 0, kanal 1'de Bus Monitor modunda kayıt al:
./ddc_analyzer --device 0 --channel 1 --mode BM --duration 60 --output capture.bmd

# Kaydı metin formatında dışa aktar:
./ddc_export --input capture.bmd --format csv --output capture.csv

# Hata istatistikleri:
./ddc_analyzer --stats capture.bmd
# Manchester errors: 0
# Parity errors:     3
# RT timeout:        1
# Word count errors: 0

Holt HI-6130 Chip ile donanım testi

Holt Integrated Circuits'ın HI-6130 çipi, BC/RT/BM işlevlerini tek çipta birleştiren bir 1553 transceiver/protokol çipidir. Geliştirme kartlarıyla hızlı prototipleme imkânı sunar.

c — HI-6130 loopback testi
/* HI-6130 SPI üzerinden kontrol edilir */
#include "hi6130.h"

void loopback_test(void) {
    /* Dahili loopback modunu etkinleştir */
    hi6130_write_reg(HI6130_CONFIG, HI6130_LOOPBACK_EN);

    /* BC tarafında test mesajı gönder */
    hi6130_bc_transmit(rt_addr=1, sa=1, wc=1, data=0xA5A5);

    /* RT tarafından yanıtı kontrol et */
    uint16_t rcv = hi6130_rt_receive(rt_addr=1, sa=1);
    assert(rcv == 0xA5A5);
    printf("Loopback geçti: 0x%04X\n", rcv);
}

Bit Error Rate (BER) ölçümü

bash — BER testi
# Astronics AltaView ile BER testi:
# 10.000 mesaj gönder, hata sayısını raporla:
altaview_ber_test --count 10000 --rt 5 --sa 1 --wc 32

# Dual redundant failover testi:
# Bus A kablosunu fiziksel olarak kesmeden önce:
altaview_monitor --bus A &

# Bus A'yı simüle et (attenüatör ile sinyal seviyesini düşür):
# Kart Bus B'ye otomatik geçmeli ve mesaj kaybı 0 olmalı
altaview_inject_fault --bus A --type signal_loss
altaview_monitor --verify bus_switch --timeout 100ms
DO-178C NOTU

Uçuş yazılımı için DO-178C sertifikasyonu gereklidir. 1553 BC/RT yazılım katmanı tipik olarak DAL-A veya DAL-B seviyesinde sertifikalandırılır. Bu, %100 MC/DC kapsam testi, izlenebilirlik matrisleri ve bağımsız doğrulama gerektirir. DDC ve AIM gibi üreticiler COTS (Commercial Off-The-Shelf) DO-178C uyumlu 1553 yazılım kütüphaneleri satmaktadır.

08 Zaman kritikliği ve determinizm

MIL-STD-1553B'nin en kritik özelliği, deterministik zamanlama garantisidir. Uçuş kontrol sistemleri için bu garanti, güvenli operasyonun temel koşuludur.

Mesaj süresi analizi

Mesaj bileşeniSüre (µs)Açıklama
Command Word (1 CW)20 µsSync(3b) + 16b + parity(1b) = 20 bit @ 1 Mbps
Data Word (1 DW)20 µsAynı yapı
Status Word (1 SW)20 µsAynı yapı
Response time (RT→BC)4–12 µsCW alımından SW iletimi başlangıcına
Inter-message gapMin. 4 µsMesajlar arası minimum süre

BC→RT + 2 DW mesajı için toplam süre: 1 CW + 2 DW + 1 SW + response time = 20 + 40 + 20 + 8 ≈ 88 µs. Bu kesin ve tahmin edilebilir süre, gerçek zamanlı sistemlerde frame zamanlama hesaplarının temelini oluşturur.

TDMA benzeri frame yapısı

  Minor Frame (tipik 10 ms):
  ┌───────┬───────┬───────┬───────┬───────┬───────┬─ ... ─┬───────┐
  │RT1 SA1│RT2 SA3│RT5 SA2│RT8 SA1│RT1 SA2│RT3 SA1│       │  GAP  │
  │(ctrl) │(navi) │(radar)│(motor)│(nav2) │(fuel) │       │       │
  └───────┴───────┴───────┴───────┴───────┴───────┴─ ... ─┴───────┘
  ←──────────────────── 10 ms ────────────────────→

  Major Frame (tipik 100 ms):  10 × minor frame
    

MIL-STD-1553 vs. diğer protokoller

ÖzellikMIL-STD-1553BARINC 429CANEthernet
Hız1 Mbps100 kbps1 Mbps1 Gbps+
TopolojiBus (dual redundant)Point-to-pointBusStar/Mesh
DeterminizmTam (TDMA)Tam (unidirectional)Kısmi (CSMA)Yok (standart)
RT sayısı3120 (receiver)Teorik sınırsızTeorik sınırsız
UygulamaAskeri avionikSivil havacılıkOtomotivGenel amaçlı
SertifikasyonMIL-SPEC, DO-178CDO-254, DO-178CISO 26262ARINC 664 (AFDX)

09 Pratik: PCIe kartla BC/RT uygulaması

DDC BU-65170 PCIe kartı ve Linux sürücüsü kullanarak gerçek bir BC/RT senaryosu: F-16 avionik veri bus'ını simüle eden bir uçuş bilgisayarı entegrasyonu.

Donanım kurulumu

bash — kart tespiti ve yapılandırma
# PCIe 1553 kartını tespit et:
lspci | grep "DDC"
# 03:00.0 Signal processing controller: Data Device Corp BU-65170 MIL-STD-1553

# DDC Linux sürücüsünü yükle:
sudo modprobe ddc_ace

# Sürücü yüklendi ve kart algılandı mı?
dmesg | tail -20 | grep ddc
# [  8.441] ddc_ace: DDC BU-65170 found at 0000:03:00.0
# [  8.442] ddc_ace: Device /dev/ddc_ace0 created

# İzinleri ayarla:
sudo chmod 666 /dev/ddc_ace0

F-16 Avionik Bus Simülasyonu (Python)

Bu örnek, bir F-16 avionik sisteminin basitleştirilmiş 1553 bus yapısını simüle eder. Gerçek F-16'da Mission Computer, Fire Control Radar, Inertial Navigation System ve Stores Management System bu bus üzerinden haberleşir.

python — F-16 bus simülasyonu
import time
from ddc_api import MIL1553Device, BCMessage, BCFrame

# Kart ve kanalı aç
dev = MIL1553Device(card=0, channel=0)
dev.set_mode("BC")

# F-16 RT tanımlamaları (basitleştirilmiş)
RT_MISSION_COMPUTER  = 1
RT_FIRE_CTRL_RADAR   = 5
RT_INS               = 9   # Inertial Navigation System
RT_SMS               = 12  # Stores Management System
RT_CADC              = 15  # Central Air Data Computer

# Subaddress tanımlamaları
SA_RADAR_TARGET_DATA = 1
SA_INS_ATTITUDE      = 2  # pitch/roll/yaw
SA_CADC_AIRSPEED     = 3

def minor_frame_10ms(dev):
    """10 ms minor frame: kritik avionik verilerini topla"""
    frame = BCFrame()

    # 1. INS'ten tutum verisi al (RT→BC, 4 data word)
    frame.add(BCMessage.rt_to_bc(
        rt=RT_INS, sa=SA_INS_ATTITUDE, wc=4
    ))

    # 2. CADC'den hava hızı al (RT→BC, 2 data word)
    frame.add(BCMessage.rt_to_bc(
        rt=RT_CADC, sa=SA_CADC_AIRSPEED, wc=2
    ))

    # 3. Radar'a hedef veri gönder (BC→RT, 8 data word)
    target_data = [0x3E80, 0x0001, 0x1234, 0x5678,
                   0x0000, 0x0000, 0x0000, 0x0000]
    frame.add(BCMessage.bc_to_rt(
        rt=RT_FIRE_CTRL_RADAR, sa=SA_RADAR_TARGET_DATA,
        data=target_data
    ))

    # Frame'i çalıştır ve yanıtları oku
    results = dev.execute_frame(frame)

    for msg_id, result in results.items():
        if result.status_word.message_error:
            print(f"HATA: RT{result.rt_addr} yanıt vermedi!")
        elif result.status_word.busy:
            print(f"RT{result.rt_addr} meşgul, tekrar denenecek")

# Ana döngü: 100 Hz (10 ms minor frame)
print("F-16 avionik bus simülasyonu başladı...")
try:
    while True:
        t0 = time.perf_counter()
        minor_frame_10ms(dev)
        elapsed = time.perf_counter() - t0
        if elapsed > 0.010:
            print(f"Frame süresi aşıldı: {elapsed*1000:.2f} ms")
        time.sleep(max(0, 0.010 - elapsed))
except KeyboardInterrupt:
    dev.close()
    print("Durduruldu.")
DO-178C ENTEGRASYON NOTU

Gerçek bir F-16/F-35 avionik yazılımı için bu Python kodu yalnızca prototip amaçlıdır. Üretim yazılımı DO-178C DAL-A seviyesinde sertifikalandırılmış C/Ada kodu ile yazılır. Bu süreç: gereksinim izlenebilirlik matrisi, low-level test, MC/DC kapsam analizi, bağımsız kod incelemesi ve DER (Designated Engineering Representative) onayını kapsar. Süreç tipik olarak 3–5 yıl sürer ve proje maliyetinin önemli bir kısmını oluşturur.