Jeśli budujesz oprogramowanie, które styka się z Link 16, prędzej czy później przestajesz mówić o przebiegach fal, a zaczynasz mówić o komunikatach. Przebieg fali zapewnia Ci szczelinę czasową; seria J to to, co w niej umieszczasz. Katalog komunikatów J to ta część Link 16, którą zespół inżynieryjny faktycznie wdraża, testuje i debuguje o trzeciej nad ranem, gdy trasa nie pojawia się na obrazie sytuacyjnym. Oto praktyczny przewodnik po tym katalogu: struktura słowa J, serie, które mają znaczenie, oraz wzorce kodeków, które chronią protokół przed zatruwaniem Twojego modelu domenowego.

1. czym jest seria J

Seria J to katalog komunikatów binarnych o stałym formacie w Link 16, zdefiniowany w MIL-STD-6016 i odzwierciedlony w NATO przez STANAG 5516. „TADIL-J" to starsze amerykańskie oznaczenie tego samego — Tactical Digital Information Link, seria J — i nadal można je spotkać w starszych specyfikacjach interfejsów i dokumentacji programów. Gdy ludzie mówią, że platforma jest „J-capable", mają na myśli, że potrafi kodować i dekodować ten katalog.

Katalog jest podzielony na serie numerowane od J2 do J31, z których każda grupuje komunikaty według funkcji: lokalizacja, obserwacja, zarządzanie informacją, uzbrojenie, kontrola, status oraz tekst dowolny. Każdy komunikat ma stały układ bitów — bez prefiksów długości, bez znaczników pól, bez samoopisu. Zarówno koder, jak i dekoder przechowują mapę pól MIL-STD-6016 w kodzie, a bity na łączu nic nie znaczą bez niej. Ta sztywność jest celem: usuwa narzut na komunikat, co ma znaczenie, gdy budżet transportowy stanowi ułamek szczeliny TDMA. Jeśli nie znasz jeszcze nośnika leżącego u podstaw katalogu, nasz materiał o taktycznych łączach danych Link 16 omawia przebieg fali, taktowanie TDMA i architekturę sieci, na której opiera się seria J.

2. struktura słowa

Atomową jednostką serii J jest 70-bitowe słowo. Każde słowo przenosi 70 bitów treści komunikatu plus parzystość i bity, które terminal dodaje na potrzeby szczeliny — ale na warstwie komunikatu rozumujesz w kategoriach słów 70-bitowych. Komunikat J to sekwencja tych słów w ustalonej kolejności: słowo początkowe, zero lub więcej słów rozszerzających oraz zero lub więcej słów kontynuacji.

Słowo początkowe przenosi etykietę komunikatu — parę pól identyfikujących komunikat jako, powiedzmy, J3.2 — plus pierwszy blok ładunku. Pierwszych pięć bitów słowa początkowego to format słowa i struktura etykiety; etykieta (5-bitowy Label i 3-bitowy Sub-Label) mówi dekoderowi, którą serię i komunikat czyta, a zatem jak interpretować każdy następujący bit. Słowa rozszerzające przenoszą obowiązkowe dodatkowe pola, które nie zmieściły się w słowie początkowym. Słowa kontynuacji przenoszą pola opcjonalne, każde oznaczone numerem Continuation Word Format Number, dzięki czemu dekoder wie, który opcjonalny blok analizuje.

Słowa są upakowane w szczeliny TDMA zgodnie ze stosowaną strukturą pakowania — Standard Double Pulse, Packed-2 lub Packed-4 — które wymieniają odporność na zagłuszanie na pojemność, mieszcząc odpowiednio 3, 6 lub 12 słów na szczelinę. Bity zapasowe są częste: tam, gdzie MIL-STD-6016 rezerwuje pole do przyszłego użytku, musi ono być transmitowane jako zero i ignorowane przy odbiorze. Niewłaściwa obsługa wartości zapasowych i „no statement" to jedno z najczęstszych źródeł błędnych dekodowań.

3. seria J2

Seria J2 to PPLI — Precise Participant Location and Identification — i jest biciem serca sieci Link 16. Każdy aktywny uczestnik rozgłasza własne PPLI w sposób cykliczny, aby wszyscy inni wiedzieli, gdzie się znajduje, kim jest i co potrafi. PPLI to sposób, w jaki sieć sama się organizuje: nawigacja względna, identyfikacja i zarządzanie siecią — wszystko opiera się na PPLI.

Komunikaty J2 są podzielone według domeny platformy. J2.0 to PPLI interfejsu pośredniego, używane przez jednostki przekazywane do sieci; J2.2 to PPLI lotnicze; J2.3 to PPLI nawodne (morskie); J2.5 to PPLI lądowe. Każde przenosi pozycję, prędkość, tożsamość i pola możliwości uczestnika odpowiednie dla jego domeny. Powód, dla którego każda jednostka rozgłasza własne PPLI, zamiast być śledzona przez innych, to integralność: uczestnik jest autorytatywnym źródłem własnej pozycji i tożsamości, co usuwa całą klasę niejednoznaczności korelacji. Gdy jednostka znika z obrazu, pierwszą rzeczą, którą sprawdza operator, jest to, czy jej PPLI nadal napływa.

4. seria J3

Seria J3 przenosi obserwację — trasy składające się na taktyczny obraz obiektów, które nie raportują własnego PPLI. Tam, gdzie J2 mówi „oto jestem", J3 mówi „oto coś, co widzę". Seria jest podzielona według domeny trasy: J3.2 to trasy powietrzne, J3.3 to trasy nawodne (morskie), J3.5 to punkt lądowy i trasa lądowa. Są też J3.0 (punkt odniesienia), J3.1 (punkt awaryjny), J3.4 (podpowierzchniowa), J3.6 (trasa kosmiczna) oraz J3.7 (produkt walki elektronicznej).

Każdy komunikat obserwacyjny przenosi numer trasy, pozycję, kurs i prędkość oraz pola tożsamości i jakości trasy, które kierują decyzjami operatora. Track Quality to mała liczba całkowita podsumowująca pewność pozycyjną; pola tożsamości kodują standardową taksonomię — Pending, Unknown, Assumed Friend, Friend, Neutral, Suspect, Hostile — wraz z kodami platformy i aktywności. Subtelność dekodowania dotyczy tu odpowiedzialności za raportowanie: dwie jednostki mogą raportować ten sam obiekt fizyczny z różnymi numerami tras, a logika korelacji i dekonfliktacji sieci, a nie sam komunikat J3, decyduje, który raport wygrywa.

Kluczowy wniosek: Seria J nie zna pojęcia „braku wartości" poza jawnymi kodami „no statement" wbudowanymi w każde pole. Pole szerokości geograficznej nie jest nullowalne — to zawsze 25 bitów czegoś. Jeśli Twój kodek odwzorowuje kurs „no statement" lub pole zapasowe z samymi zerami na rzeczywiste 0.0 w Twoim modelu domenowym, namalujesz trasę siedzącą na równiku robiącą zero węzłów. Traktuj kodowanie „no statement" każdego pola jako przypadek pierwszej klasy, a nie jako dodatek po fakcie.

5. serie J7/J9

Gdy masz już pozycję (J2) i obserwację (J3), sieć musi zarządzać tą informacją: to seria J7. J7.0 to komunikat wskaźnika / korelacji — pozwala jednej jednostce skierować inną jednostkę na konkretną trasę lub stwierdzić, że dwa numery tras odnoszą się do tego samego obiektu. J7.1 to zarządzanie IFF/SIF, J7.2 to przekazanie zarządzania trasą, a J7.3 to dyrektywa korelacji/dekorelacji. Seria J7 to to, co zamienia stos niezależnych raportów w spójny, zdekonfliktowany wspólny obraz.

Seria J9 to dowodzenie i koordynacja uzbrojenia. J9.0 to komunikat dowodzenia — formalny mechanizm, za pomocą którego jednostka kontrolująca wydaje dyrektywę jednostce kontrolowanej. To tutaj Link 16 przestaje być pasywną magistralą rozgłoszeniową i staje się kanałem dowodzenia: przydział, kierowanie zaangażowaniem i wspierająca koordynacja przepływają przez J9 w połączeniu z serią kontrolną J12. Zespoły inżynieryjne, które traktują Link 16 jako telemetrię tylko do odczytu, są zawsze zaskoczone za pierwszym razem, gdy muszą zainicjować J9.0.

6. J10/J12/J13

Seria J10 to koordynacja i zarządzanie uzbrojeniem. Przenosi status zaangażowania, sparowanie uzbrojenia z celami, przekazanie zaangażowania między jednostkami oraz raportowanie w locie, którego sieć obrony powietrznej potrzebuje do dekonfliktacji strzelców. J10.2 (status zaangażowania) i J10.5 (dyrektywa uzbrojenia) to konie robocze; pomyłka w nich nie oznacza brakującej ikony, lecz dwie jednostki angażujące to samo zagrożenie albo żadną je angażującą.

Seria J12 to kontrola: naprowadzanie, przydział misji i sortowanie celów. J12.0 to komunikat przydziału misji, który przekazuje kontrolowanemu statkowi powietrznemu jego zadanie; J12.6 to komunikat sortowania celów. J12 to seria, która czyni z Link 16 medium kontroli myśliwców, a nie kanał świadomości sytuacyjnej. Seria J13 to status platformy i systemu — J13.2 platforma powietrzna, J13.3 platforma nawodna, J13.4 podpowierzchniowa, J13.5 platforma lądowa — raportując paliwo, zapas uzbrojenia i gotowość systemu, aby kontroler wiedział nie tylko, gdzie jednostka się znajduje, ale i co jeszcze potrafi zrobić.

7. tekst dowolny i najtrudniejszy element

Seria J28 to tekst dowolny i komunikaty pokrewne — J28.0 to komunikat tekstowy przenoszący czytelne dla człowieka ciągi znaków, gdy żaden komunikat strukturalny nie pasuje. To wyjście awaryjne, a jak każde wyjście awaryjne, bywa nadużywane; sieć, która opiera się na tekście dowolnym J28 w sprawach, które powinny być strukturalnymi komunikatami J, to sieć, której automatyzacja się poddała. J31 to seria zarządzania — J31.0 obejmuje rekluczowanie drogą radiową i porządkowanie realokacji szczelin czasowych, które utrzymują sieć kryptograficzną w dobrej kondycji.

Najtrudniejszym elementem każdej implementacji serii J nie są popularne komunikaty — J2 i J3 są dobrze przetarte. To pułapki. Endianowość bitów wewnątrz słowa potyka niemal każdą pierwszą implementację: MIL-STD-6016 numeruje bity w określonej kolejności, a odczyt pola od najbardziej znaczącego bitu, gdy standard upakowuje je od najmniej znaczącego, daje wiarygodnie wyglądające śmieci. Wycofane i zarezerwowane pola to druga pułapka: standardy ewoluują, pola są wycofywane, a stary emiter może ustawiać bity, które rygorystyczny nowy dekoder odrzuca. Buduj tolerancję dla bitów zarezerwowanych i rygor dla zapasowych.

8. budowa kodeka serii J

Architekturą, która przetrwa kontakt, jest wzorzec adaptera dwustosowego (dual-stack). Twój system walki lub aplikacja C2 utrzymuje swój taktyczny obraz we wewnętrznym modelu domenowym — trasy, uczestnicy, zaangażowania — który nic nie wie o Link 16. Warstwa adaptera protokołu znajduje się między tym modelem a terminalem, tłumacząc model domenowy na słowa serii J na łączu i z powrotem. Zasada kardynalna: nigdy nie pozwól, by protokół przeciekł do modelu domenowego. Trasa w Twoim rdzeniu nie powinna nosić pola „J3.2 słowo 2 bit 14"; powinna nosić pozycję i tożsamość, a adapter jest właścicielem mapowania. Ta sama dyscyplina dotyczy każdego protokołu, który mostkujesz, co jest sednem praktycznej interoperacyjności NATO — VMF, Link 22, seria J tunelowana przez JREAP — wszystkie stają się adapterami wobec jednego kanonicznego modelu.

Testuj kodek względem wektorów, a nie względem żywej sieci. MIL-STD-6016 i jego zestawy testowe dostarczają wzorcowych wzorów bitów dla każdego komunikatu; zakoduj znany obiekt domenowy, porównaj bajty z wektorem, następnie zdekoduj wektor z powrotem i porównaj obiekt. Wykonuj pełną pętlę (round-trip) dla każdego obsługiwanego komunikatu i sprawdzaj, czy pola „no statement" przetrwają podróż jako „no statement", a nie zapadną się do zera. Gdy dodajesz obsługę nowego komunikatu J, dodajesz adapter i jego wektory — nie ruszasz modelu domenowego ani reszty stosu. Ta izolacja pozwala wchłonąć aktualizację bloku Link 16 przez wymianę jednego adaptera zamiast testów regresji całego systemu walki.