Jump to content

Recommended Posts

Posted (edited)
сигнал от РГСН ракет детектим?

 

AIM-120 да, Р-77, скорее всего, тоже да. Станции наведения ракет С-300 (не обзорные РЛС), Тор, Бук- да, скорее всего, ИМХО. "Пэтриот" - ЕМНИП, нет.

Тут спецы по радиолокации нужны.

 

ПС У ракет сигнал относительно слабый, так что обнаружение должно быть на меньшей дальности.

 

TWS у истребудет рассмативаться, как обзорный режим.

Edited by F74
Posted

во вложении:

индикация с учетом типа источника облучения

индикация от всех источников облучения

 

на синтаксис непроверял, могут быть ошибки.

 

spo14.lua

 

без наземных рлс, только рлс истребителей и ракет

НЕТ ВОБЛЕ!

Posted (edited)

Работать неправильно будет. Например, для 1 сектора - азимут не может быть одновременно меньше 6 и больше 274 градусов :(

 

Я обычно, когда работаю с курсами, использую направляющие косинусы.

 

//функция на С, проверяет угол между углами fi1 и fi2, если он меньше dfi, возвращаем 1, иначе 0

//все углы- в радианах, dfi желательно задавать от 0 до pi, иначе работать будет кривовато ;)

 

#include <math.h>

 

int isDelta(double fi1, double fi2, double dfi)

{

double x1,x2,y1,y2;

//формируем направляющие косинусы первого вектора

x1 = cos(fi1);

y1 = sin(fi1);

//формируем направляющие косинусы второго вектора

x2 = cos(fi2);

y2 = sin(fi2);

 

//рассчитываем скалярное произведение векторов и проверяем угол между ними

if((x1*x2+y1*y2) > cos(dfi))

return 1;

else

return 0;

}

 

Понимаю, что можно было бы все в одну строчку написать :), не пинайте уж.

Edited by F74
Posted

да конечно, первые 2 условия через ИЛИ надо было делать.

spo14_cor.lua

ну и через условия все же нагляднее получается, хоть и не так красиво. (ну и давняя нелюбовь к тригонометрическим функциям, в микроконтроллерах они много ресурсов забирают)

НЕТ ВОБЛЕ!

Posted (edited)
да конечно, первые 2 условия через ИЛИ надо было делать.

[ATTACH]87323[/ATTACH]

ну и через условия все же нагляднее получается, хоть и не так красиво. (ну и давняя нелюбовь к тригонометрическим функциям, в микроконтроллерах они много ресурсов забирают)

 

Ну это уж как кто привык. В решении навигационных задач они гораздо удобнее, особенно в приполярных районах, да и думать про всякие четверти не надо :).

 

А синусы/косинусы легко заменяются разложениями в ряд до первых 3-4 членов, если уж на то пошло.

Тут ради прикола прикинул- вычисление синуса в пределах от 0 до 90 градусов с точностью 0.0034 занимает 5 умножений, одно вычитание и одно сложение (если аргумент в радианах).

 

Тут еще ньюансик- ты проверяешь только на превышение режима на 1 лампе, т.е. предположим, на 1 лампе-0, на 2 - 2, на 3 -1, то у нас получается на 1 лампе пусто, на 2 - захват, на 3 - сопровождение.

 

А еще, ради реалистичности стоит учитывать дальность до источника излучения, ИМХО.

Edited by F74
Posted (edited)

да, про дальность тоже думал, но нужно как то это выразить в условие.

 

ps

про разложение в ряд конечно знаю,

но всеже примитивный if отработает на порядок быстрее чем небольшая итерация с умножениями и прочей математикой :)

Edited by kreml

НЕТ ВОБЛЕ!

Posted (edited)
да, про дальность тоже думал, но нужно как то это выразить в условие.

 

Мощность передатчика/(Д*Д) - стандарт, это же, кстати и при определении главной цели на СПО-15 учитывается.

Edited by F74
Posted

понятно, но нужно условие для срабатывания спо, числовое значение.

вообще в параметрах угроз уже есть посчитаная мощность сигнала, но она условная насколько я помню, нормализовано к 1.

можно просто порог срабатывания определить и добавить доп. условие.

НЕТ ВОБЛЕ!

Posted (edited)

Станислав переменные

local lamp1 = 0 -- перед лево

local lamp2 = 0 -- перед право

local lamp3 = 0 -- зад право

local lamp4 = 0-- зад лево

Это локалные переменные функции. А как вывести их наружу?

Edited by RA3DCS
Posted

Это из описания, почему не будут гореть две лампы при облучении сбоку, непонятно, то ли так логика заложена, то ли просто не задумывались про это.

.

Почему не будут? Будут!

Станция представляет собой четырехканальное приемное устройство. Каждый канал работает автономно и обслуживает один из четырех секторов, но которое условно разделено пространство вокруг самолета. При облучении самолета РЛС перехвата под ракурсами ¼ или ¾ со средних или близких дистанций сигнал будет приниматься одновременно антеннами двух соседних каналов и соответственно загораются лампы двух смежных каналов. Если при этом учитывать очередность зажигания сигнальных ламп при сближении с РЛС то направление на РЛС находится ближе к сектору где лампа загорелась раньше.

Posted
Станислав переменные

local lamp1 = 0 -- перед лево

local lamp2 = 0 -- перед право

local lamp3 = 0 -- зад право

local lamp4 = 0-- зад лево

Это локалные переменные функции. А как вывести их наружу?

 

функция заканчивается вот этим

return lamp1, lamp2, lamp3, lamp4

 

соответственно забирать значения из нее так

val1,val2,val3,val4 = spo14()

НЕТ ВОБЛЕ!

Posted (edited)
функция заканчивается вот этим

 

соответственно забирать значения из нее так

 

Переменные val1....val4 должны быть local?

 

Ошибок не выдает, но и не работает!

Edited by RA3DCS
Posted

Станислав, растолкуйте назначение этой функции.

Что то видимо с типами облучаемых РЛС?

 

function GetEmitType(level1,level2,level3,level4)

local result = 8

if level1 == 1 then --Air

if level2 == 1 then -- plane

if level3 == 5 then -- AWACS

result = 32

else -- fighter

result = 1

end

end

elseif level1 == 4 then --Weapon

if level2 == 4 then -- Missile

if level3 == 7 then -- AA Missile

result = 1

end

end

elseif level1 == 2 then -- ground

result = ThreadTypeG[level4] or 8

elseif level1 == 3 then -- ships

result = ThreadTypeS[level4] or 8

end

return result

end

Posted

Я протестирую алгоритм в ближайшее время, еще не все ПО установил на комп после ремонта.

По поводу функции GetEmitType

она была сделана для работы "березы", разделяет угрозы по группам, нам в данном случае нужно выделить всего одну:

1- истребители, ракеты ВВ

НЕТ ВОБЛЕ!

Posted

да еще нашел ошибку в логике

 

if signalType == "track_while_scan" then -- если конечно СПО должна детектить данный режим

mode = 1

end

if ((azimut < 6) or (azimut > 274)) and (mode > lamp1) then

lamp1 = mode

end

if ((azimut < 86) or (azimut > 354)) and (mode > lamp1) then

lamp2 = mode

end

if (azimut < 186) and (azimut > 94) and (mode > lamp1) then

lamp3 = mode

end

if (azimut < 266) and (azimut > 174) and (mode > lamp1) then

lamp4 = mode

end

 

выделеное должно быть не все lamp1, а последовательно возрастать -

...lamp1...

...lamp2...

...lamp3...

...lamp4...

НЕТ ВОБЛЕ!

Posted

она была сделана для работы "березы", разделяет угрозы по группам, нам в данном случае нужно выделить всего одну:

 

Функция возвращает только одну переменную result которая в версии СПО-3 больше нигде не используется?

Posted
Функция возвращает только одну переменную result которая в версии СПО-3 больше нигде не используется?

 

Да, только тип угрозы для спо считает.

НЕТ ВОБЛЕ!

Posted (edited)
Сейчас проверим!

 

Все равно читаются нули.

Станислав а правилно, что функция чтения угроз

local threats = LoGetTWSInfo() -- получаем список угроз для СПО-3

находится внутри функции СПО-14 ????

Ведь вроде в ЛУА если в функции нет return она ничего не возвращает наружу ?

Edited by RA3DCS
Posted (edited)

Вот, результаты отладки:

2 исправления

 

1. в строке:

for mode,emit in pairs (threats.Emitters) do -- обходим в цикле все угрозы

 

меняем название переменной mode, чтоб не было дальнейшего дублирования, вот так например:

for emit_mode,emit in pairs (threats.Emitters) do -- обходим в цикле все угрозы

 

2. переделываем условия с учетом того что угол выдается в пределах от -179 до 180, а не от 0 до 359:

if (azimut < 6) and (azimut > -86) and (mode > lamp1) then

lamp1 = mode

end

if (azimut < 86) and (azimut > -6) and (mode > lamp2) then

lamp2 = mode

end

if ((azimut < -174) or (azimut > 94)) and (mode > lamp3) then

lamp3 = mode

end

if ((azimut < -94) or (azimut > 174)) and (mode > lamp4) then

lamp4 = mode

end

 

При необходимости меняем рабочие сектора для каждой из ламп. Сейчас сектора заданы так что 1 и 2 лампа имеют общий участок, и могут гореть одновременно. Сектора ламп 2 и 3 сделаны с наличием мертвых зон, и сот-но горят только по отдельности.

 

spo14_cor.lua

Edited by kreml

НЕТ ВОБЛЕ!

Posted
Вот, результаты отладки:

2 исправления

 

Как не печально, но не работает.

Пробовал и в DCS и в LockOn-2

Вот мой Экспорт файл посмотрите может что не так?

export.lua

Posted

ужас какойто)))

зачем функции были размещены в теле другой функции?))

 

вот поменял:

export.lua

НЕТ ВОБЛЕ!

Posted
ужас какойто)))

зачем функции были размещены в теле другой функции?))

 

вот поменял:

 

Я уже даже боюсь это слово говорить. Но не работает!

Судя по всему не работает процедура получения угроз.

читается:

result - 8

lamp1..lap4 - 0

azimut - 0

mode - 0

Posted

Я свой файлик проверял, работает. Сейчас проверю который вы выложили.

НЕТ ВОБЛЕ!

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...