tracking-loop (вид сценария)
Вид сценария движка v0.40.0, семейство Подавление, спуфинг и спектр. Носит консультативный характер: результат анализа исследовательского и инженерного инструмента; это не навигационное оборудование с утверждённым типом и не служба обеспечения безопасности жизни. Все обозначения здесь принадлежат движку или матрице верификации; вид относится к уровню MODELLED, если матрица не указывает иное (как заслуживается обозначение: раздел Evidence в README).
Что делает#
Срыв слежения в петле слежения: C/N0 -> захват/потеря захвата С ГИСТЕРЕЗИСОМ, время до потери захвата и втягивание спуфера как функция СКОРОСТИ смещения кода и несущей. Существующие в движке критерии подавления и захвата — это отношения по принимаемой мощности (глушитель подавляет при J/S = 30 dB, спуфер захватывает при 3 dB); реальный срыв слежения — это не отношение мощностей, а то место, где джиттер петли плюс динамическое напряжение выходят за бюджет её порога слежения. Выводятся: (1) 1-сигма тепловой джиттер несущей (Костас) и кода (некогерентный «раньше/позже») в зависимости от C/N0, с учётом потерь на возведение в квадрат, относительно заданных правил 3sigma_PLL + theta_e <= 45 deg (правило 15 градусов в форме трёх сигм) и 3sigma_DLL + запаздывание по скорости изменения <= d/2 чипа; (2) пороги C/N0 срыва и повторного захвата с названной определяющей петлёй, причём порог повторного захвата ВЫВЕДЕН из более широкой полосы, в которой приёмник повторно втягивается, а не задан произвольно, так что ширина гистерезиса должна лежать между 5log10(ratio) и 10log10(ratio) dB; (3) объявленное время до потери захвата от двухпорогового детектора захвата с подтверждающими выдержками при проходе по рампе C/N0, выводимое отдельно от физического времени ухода фазы (среднее время Витерби между проскальзываниями циклов, в log10 s, поскольку оно охватывает сотни порядков); (4) пределы втягивания спуфера — наибольшая скорость смещения кода и доплеровская скорость несущей, за которыми могут следовать петли жертвы, с картой по обеим осям, потому что спуфер, смещающий быстрее этих пределов, не захватывает петлю, а опережает её; и (5) РАДИУС ПОДАВЛЕНИЯ, следующий из динамики петли, выводимый РЯДОМ с существующим радиусом по отношению мощностей, а не вместо него, с их знаковой разностью в отдельном именованном поле (denial_radius_delta_km) и определением рядом. Каждое выводимое числовое поле несёт единицу и класс происхождения. VALIDATED замкнутые формы: выражения джиттера несущей и кода, редукция фильтра петли sqrt(2B_nT) и запаздывание по скорости изменения первого порядка перекрёстно проверены по собственному коррелятору sdr движка, пошагово запущенному на засеянной синтетической ПЧ, — другим путём к тем же числам — до 0,6 %, 3,7 % и 0,17 % соответственно, а модифицированная функция Бесселя I0, лежащая в основе времени проскальзывания цикла, — по стандартным табличным значениям до 1e-7. Нижний предел применимости утверждён, а не только заявлен: ниже ~32 dB-Hz при 1 ms реальный дискриминатор atan насыщается относительно своего диапазона +-pi/2 и измеряет меньший джиттер, чем любая линейная теория. MODELLED: полосы петель, время интегрирования, разнос коррелятора, отношение полос втягивания, подтверждающие выдержки, мощность глушителя и усиления антенн — это репрезентативные значения диапазона, а не техпаспорт. НЕ моделируются: джиттер генератора (девиация Аллана) и вибрации, ограничение полосы входного тракта, многолучевость, динамика AGC, потери на переходах битов данных, внешнее сопровождение и любая поправка на полцикла к формуле проскальзывания циклов Костаса. При динамике петли у захвата спуфера радиуса нет вовсе — определяющее ограничение — скорость смещения, а не мощность, — поэтому это поле равно null с указанием причины, а не выдуманным числом. Это не сертифицированный продукт для оценки характеристик приёмника.
Один прогон scenarios/tracking-loop.toml сводится к следующему: tracking-loop: B_pll 10,0 Hz / B_dll 1,0 Hz, T 1 ms, d 0,50 чипа -> срыв 25,4744 dB-Hz (определяет несущая), повторный захват 27,4413 dB-Hz, гистерезис 1,9669 dB | потеря захвата объявлена через 39,101 s после начала рампы | радиус подавления по порогу (J/S 30 dB) 127,413 km против динамики петли 53,1694 km, разность -74.2438 km | предел втягивания спуфера <= 0,966 чип/s по коду и 41,45 Hz/s по несущей (MODELLED петля, VALIDATED замкнутые формы)
Входные параметры#
Из схемы (kshana kinds --json):
- Обязательные поля: нет
- Необязательные поля:
pll_bandwidth_hz,dll_bandwidth_hz,predetection_integration_s,correlator_spacing_chips,carrier_allowance_deg,code_allowance_chips,pullin_bandwidth_ratio,drop_confirm_epochs,relock_confirm_epochs,doppler_rate_hz_per_s,code_slew_chips_per_s,cn0_high_dbhz,cn0_low_dbhz,ramp_duration_s,jitter_table_cn0_dbhz,jammer_power_dbw,jammer_gain_dbi,rx_gain_toward_jammer_db,rx_gain_toward_sat_db,signal_power_dbw,temp_k,freq_hz,chip_rate_hz,jammer_type,q_override,denial_js_threshold_db,capture_js_threshold_db,spoof_code_slew_chips_per_s,spoof_doppler_rate_hz_per_s
В примере scenarios/tracking-loop.toml среди прочего задано:
| Поле | Значение | Единица |
|---|---|---|
capture_js_threshold_db |
3 | dB |
carrier_allowance_deg |
45 | deg |
chip_rate_hz |
1023000 | Hz |
cn0_high_dbhz |
45 | dB-Hz |
cn0_low_dbhz |
15 | dB-Hz |
code_slew_chips_per_s |
0 | chip/s |
correlator_spacing_chips |
0.5 | chip |
denial_js_threshold_db |
30 | dB |
dll_bandwidth_hz |
1 | Hz |
doppler_rate_hz_per_s |
0 | Hz/s |
drop_confirm_epochs |
50 | число |
freq_hz |
1575420000 | Hz |
Запустите#
kshana scenarios/tracking-loop.toml
Что он даёт#
Скалярные результаты этого прогона с единицами, которые указывает движок:
| Результат | Значение | Единица |
|---|---|---|
denial.capture_js_threshold_db |
3 | dB |
denial.capture_radius_loop_dynamics_km |
нет значения | km |
denial.capture_radius_threshold_km |
2852.426643 | km |
denial.capture_radius_threshold_status |
bracketed | текст |
denial.denial_cn0_at_threshold_radius_dbhz |
32.864222 | dB-Hz |
denial.denial_js_delta_db |
7.591059 | dB |
denial.denial_js_loop_db |
37.591059 | dB |
denial.denial_js_threshold_db |
30 | dB |
denial.denial_radius_delta_km |
-74.243845 | km |
denial.denial_radius_loop_dynamics_km |
53.169373 | km |
Метка результата (от движка): MIXED — VALIDATED замкнутые формы петли, MODELLED конфигурация петли. Выражения теплового джиттера несущей и кода, редукция фильтра петли sqrt(2B_nT) и запаздывание по скорости изменения первого порядка перекрёстно проверены по собственному коррелятору sdr движка, пошагово запущенному на засеянной синтетической ПЧ (другой путь
Доказательства#
MODELLED: строки матрицы верификации, называющие этот вид.
- MODELLED Отчёт
lunar-jammingбольше не опирается в своём контуре отказа на один скаляр. - MODELLED Срыв слежения, вычисленный по динамике петли, а не по отношению мощностей: 1σ тепловой джиттер несущей (Костас) и кода (некогерентный «раньше/позже») относительно C/N₀ с учётом потерь на возведение в квадрат, относительно заданных правил 3σ_PLL + θ_e ≤ 45° и 3σ_DLL + запаздывание по скорости изменения
Строки, которые задействовал сам прогон, с оракулом, который указывает им матрица (публичные источники названы там):
- MODELLED Детерминированные, хешируемые по сценарию, SBOM и кроссплатформенные эталонные проверки (golden). Оракул (ExternalDataset): соответствие SBOM официальной схеме JSON CycloneDX 1,5 (плюс допустимые идентификаторы SPDX) — внешний опубликованный стандарт, ноль ошибок валидации на всём графе зависимостей; часть о детерминизме FoM и побайтной воспроизводимости остаётся закреплённой проверкой внутренней согласованности, поэтому строка остаётся MODELLED
- PARTNER Не обеспечивается — Kshana моделирует характеристики сигнала, а не аппаратуру полезной нагрузки или антенн. Оракул (NoneKind): нет: дисциплина, принадлежащая партнёру, по замыслу без модуля и без теста
- MODELLED Срыв слежения, вычисленный по динамике петли, а не по отношению мощностей: 1σ тепловой джиттер несущей (Костас) и кода (некогерентный «раньше/позже») относительно C/N₀ с s. Оракул (ReferenceImpl): собственный коррелятор sdr движка (sdr::correlate / synth_if / CaCode), пошагово запущенный на засеянной синтетической ПЧ при калиброванном C/N₀ — отдельный путь кода, приходящий к тем же числам численной корреляцией дискретизированных IQ, а не алгебраическим выражением джиттера, поэтому это другой путь, а не пересказ, — плюс стандартные табличные значения модифицированной функции Бесселя I₀ для члена проскальзывания циклов. Теория петель по Kaplan & Hegar
Ограничения#
Что отчёт самого прогона называет не смоделированным или не проверенным:
- MIXED — VALIDATED замкнутые формы петли, MODELLED конфигурация петли. Выражения теплового джиттера несущей и кода, редукция фильтра петли sqrt(2B_nT) и запаздывание по скорости изменения первого порядка перекрёстно проверены по собственному коррелятору sdr движка, пошагово запущенному на засеянной синтетической ПЧ (другой путь к тем же числам), а модифицированная функция Бесселя I0 — по стандартным табличным значениям. MODELLED: полосы петель, integ (результат
label) - MODELLED: полосы петель, время интегрирования, разнос коррелятора, отношение полос втягивания, подтверждающие выдержки, мощность глушителя и усиления антенн — это репрезентативные значения диапазона, а не техпаспорт. (каталог видов (
kshana kinds --json)) - НЕ моделируются: джиттер генератора (девиация Аллана) и вибрации, ограничение полосы входного тракта, многолучевость, динамика AGC, потери на переходах битов данных, внешнее сопровождение и любая поправка на полцикла к формуле проскальзывания циклов Костаса. (каталог видов (
kshana kinds --json)) - Каждый приведённый ниже параметр петли — это MODELLED репрезентативное значение диапазона, а не техпаспорт. (комментарий в файле сценария, строка 22)
- --- геометрия петли ----------------------------------------------------------------- Петля несущей Костаса 10 Hz и петля кода 1 Hz с подстройкой по несущей, когерентное интегрирование 1 ms (один период кода C/A, поэтому синхронизация с битами данных не предполагается), узкий коррелятор 0,5 чипа. (комментарий в файле сценария, строки 25–28)
- Воспроизводимость и гарантии качества ПО — MODELLED, а не validated: одно из частных утверждений проверено извне, но вся возможность составлена из смоделированных частей, поэтому возможность остаётся Modelled. (матрица верификации (docs/MODELLED-RATIONALE.md))
- Срыв слежения в петле слежения и втягивание спуфера при помехах относятся к уровню MODELLED, и не проверены по внешнему эталону: они проверены по отдельной реализации в этой же кодовой базе — независимой от проверяемого модуля, но не имеющей внешнего авторитета. (матрица верификации (docs/MODELLED-RATIONALE.md))
См. также#
- Страница семейства: Подавление, спуфинг и спектр
- Все виды: KINDS.md