---
# System prepended metadata

title: TODO ОКСАД ТМС. Получение дальности путем учета особенностей траекторий полета БР и БРО и сигнальной информации БП ТМС"
tags: [oksadtms]

---

---
title: 'TODO ОКСАД ТМС. Получение дальности путем учета особенностей траекторий полета БР и БРО и сигнальной информации БП ТМС"'
disqus: recetu
tags: oksadtms
---
# ОКСАД ТМС. Получение дальности путем учета особенностей траекторий полета БР и БРО и сигнальной информации БП ТМС

```mermaid
sequenceDiagram
autonumber

participant Fd as frontDistance
participant Bd as backDistance
participant P as dataService

Note over Fd, Bd : Начало задачи получения дальности
Fd ->>  Bd: запрос радиальной скорости (getVrad)
Bd -->> Fd: вектор радиальной скорости 

Fd ->>  Bd: запрос азимута и угла места (getAzimuthAndElevation) 
Bd -->> Fd: вектор азимута и угла места

Fd ->> Fd: Отображение Vrad/Az/Um

loop

alt
Note over Fd, Bd: Загрузка априорных данных (автономный режим)
Fd ->> Fd: выбор файла с траекторией
Fd ->> Bd: запрос загрузки траектории из файла (loadTrajectory(filePath))
Bd -->> Fd: мультивектор типовой траектории (XYZ) или сообщение об ошибке

Fd ->> Fd: выбор файла с циклограммой
Fd ->> Bd: запрос загрузки циклограммы из файла (loadTrajectory(filePath))
Bd -->> Fd: циклограмма или сообщение об ошибке
Fd ->> Fd: события циклограммы типового пуска готовы к отображению 

else
Note over Fd, Bd: Загрузка априорных данных (сетевой режим)
Fd ->> Bd: запрос пусков (getLaunchInfo)
Bd ->> P: запрос пусков (getLaunchInfo)
P -->> Bd: список пусков (list<LaunchInfo>)
Bd -->> Fd: список пусков (list<LaunchInfo>)
Fd ->> Fd: отображение списка пусков 

Fd ->> Bd: запрос траектории по выбранному пуску (getLaunchTrajectory(LaunchIdent))
Bd ->> P: запрос типовой траектории  (getLaunchTrajectory(LaunchIdent))
P -->> Bd: мультивектор типовой траектории (XYZ)
Bd -->> Fd: мультивектор типовой траектории (XYZ)

Fd ->> Bd: запрос циклограммы по выбранному пуску (getEvents(LaunchIdent))
Bd ->> P: запрос циклограммы по выбранному пуску (getEvents(LaunchIdent))
P --> Bd: события циклограммы типового пуска (list<events>)
Bd --> Fd: события циклограммы типового пуска (list<events>)
Fd ->> Fd: события циклограммы типового пуска готовы к отображению 

end


Fd ->> Bd: запрос на расчёт радиальной скорости по априорным данным (calcVrad(LaunchTraectory))
Bd ->> Bd: увязка векторов Vrad типового и текущего пуска по начальному значению (matchScale)
Bd -->> Fd: вектор радиальной скорости (типового пуска)

Fd ->> Bd: запрос на расчёт азимута и угла места (calcAzUm(LaunchTraectory))
Bd ->> Bd: увязка векторов азимута и угла места типового и текущего пуска по начальному значению (matchScale)
Bd -->> Fd: вектора азимута и угла места (типового пуска)

Fd ->> Fd: отображение расчитанных Vrad, Az, Um типового пуска


opt
Note over Fd, Bd: Получение событий циклограммы априорного пуска (отдельная диаграмма)
end


Note over Fd, Bd: Продолжение задачи получения дальности
Fd ->> Bd: запрос событий циклограммы текущего и априорного пусков (getEvents)
Bd --> Fd: события циклограммы текущего и априорного пусков (list<events>)
Fd ->> Fd: отображение событий циклограммы

Fd ->> Fd: определение временой поправки априорных и текущих данных (offset)
Fd ->> Bd: запрос на смещение векторов радиальной скорости, азимута и угла места типового пуска на временную поправку (moveScale(offset))
Bd -->> Fd: вектора радиальной скорости, азимута и угла места типового пуска
Fd ->> Fd: отображение векторов радиальной скорости, азимута и угла места типового пуска
Fd ->> Fd: оценка расхождения графиков азимута и угла места типового и текущего пуска
end


Fd ->> Fd: оценка расхождения графиков радиальной скорости типового и текущего пуска

alt расхождения радиальной скорости > 10%
Fd ->> Bd: запрос на пересчёт центральной частоты (getF0)
Bd --> Fd: уточнённое значение центральной частоты 
Fd ->> Bd: сохранение новой центральной частоты (setF0)
Note over Fd, Bd: переход к задачам определения частоты, допреровского смещения, радиальной скорости
else расхождения радиальной скорости < 10%
Note over Fd, Bd: ничего
end



Fd ->> Bd: запрос на расчёт дальности по априорным данным (calcApriorDistance)
Bd -->> Fd: вектор априорной дальности
Fd ->> Fd: отображение априорной дальности

Fd ->> Bd: запрос списка дальностей текущего пуска (getDistanceList)
Bd -->> Fd: список дальностей (list<distance>) 
Fd ->> Fd: выбор дальности
Fd ->> Bd: запрос дальности (getDistance)
Bd --> Fd: вектор дальности
Fd ->> Fd: отображение дальности

Fd -> Bd: запрос среднего значения вариации дальностей текущего и априорного пусков (getAverageDiff)
Bd -->> Fd: среднее значение вариации дальностей текущего и априорного пусков
Fd ->> Fd: отображение среднего значения вариации дальностей текущего и априорного пусков

loop
alt вариация > 10000
Fd ->> Fd: предупреждение о выходе вариации за пределы нормы

Note over Fd, Bd: уточнение анизотропной мощности (отдельная диаграмма)

Fd ->> Fd: отображение уточнённой дальности
else вариация < 10000 (выход из цикла)
Note over Fd, Bd: конец задачи, сохранение дальности
end
end
```

### Получение событий циклограммы

```mermaid
sequenceDiagram
autonumber

participant Fd as frontDistance
participant Bd as backDistance
participant Fc as frontCycle
participant Bc as backCycle

Note over Fd, Bd: Получение событий циклограммы априорного пуска
Note over Fd, Bd: Полный вариант реализации
Fd ->> Fc: вызов фронта задачи получения событий циклограммы априорного пуска

Fc ->> Bc: запрос радиальной скорости (getVrad)
Bc -->> Fc: вектор радиальной скорости
Fc ->> Fc: отображение радиальной скорости

Fc ->> Bc: запрос азимута и угла места (getAzimuthAndElevation) 
Bc -->> Fc: вектор азимута и угла места
Fc ->> Fc: отображение азимута и угла места

loop
Fc ->> Fc: выбор параметра, по которому рассчитываются события циклограммы
loop
Fc ->> Bc: настройка фильтра (setFilter) 
loop
Fc ->> Bc: установка гауссовской кривой (setGauss(params))
Bc -->> Fc: график гауссовской кривой 
Fc ->> Fc: отображение гауссовской кривой 
Fc ->> Bc: установка базисной функции (setBasis(params))
Bc -->> Fc: график базисной функции
Fc ->> Fc: отображение базисной функции
Fc ->> Bc: запрос на расчёт событий циклограммы(calcCyclogram(vector))
Bc -->> Fc: события циклограммы (list<events>)
Fc ->> Fc: отображение событий циклограммы в графическом и табличной виде
end
end
end

Fc ->> Fc: добавление/редактирование событий циклограммы
Fc ->> Bc: запрос на сохранение событий циклограммы (save(list<events>))

Bc ->> Bd: события циклограммы (list<events>)
Fc ->> Fd: вызов фронт задачи получение дальности
```



### Уточнение анизотропной мощности

```mermaid
sequenceDiagram
autonumber

participant Fd as frontDistance
participant Bd as backDistance
participant Fp as frontPower
participant Bp as backPower

Fd ->> Fp: фронт анизотропной мощности и дальности
Note over Fp, Bp: уточнение анизотропной мощности
Fp ->> Fp: ввод коэффициента усиления приёмной антенны 
Fp -> Bp: запрос на расчёт анизотропной мощности (getAnisotropicPower)
Bp -->> Fp: график анизотропной мощности
Fp ->> Fp: уточнение границ допустимых значений анизотропной мощности
Fp ->> Bp: запрос на сохранение допустимых значений анизотропной мощности
loop
Fp ->> Fp: выделение интервала для расчёта среднего значение анизотропной мощности (interval)
Fp -> Bp: запрос на расчёт среднего значения анизотропной мощности (getAverageAnisotropicPower(interval))
Bp -->> Fp: среднее значение анизотропной мощности и результат проверки попадания значения в интервал допустимых значений
Fp ->> Fp: отображение среднего значения анизотропной мощности
end
Fp ->> Fd: фронт получения дальности

Fd ->> Bd: запрос на пересчёт дальности с учётом средней анизотропной мощности (calcDistance(AverageAnisotropicPower))
Bd ->> Bp: запрос средней анизотропной мощности (getAverageAnisotropicPower)
Bp ->> Bd: средняя анизотропная мощность (AverageAnisotropicPower)
Bd -->> Fd: вектор уточнённой дальности
Fd ->> Fd: отображение уточнённой дальности
```