kreml Posted September 7, 2013 Author Posted September 7, 2013 сигнал от РГСН ракет детектим? НЕТ ВОБЛЕ!
F74 Posted September 7, 2013 Posted September 7, 2013 (edited) сигнал от РГСН ракет детектим? AIM-120 да, Р-77, скорее всего, тоже да. Станции наведения ракет С-300 (не обзорные РЛС), Тор, Бук- да, скорее всего, ИМХО. "Пэтриот" - ЕМНИП, нет. Тут спецы по радиолокации нужны. ПС У ракет сигнал относительно слабый, так что обнаружение должно быть на меньшей дальности. TWS у истребудет рассмативаться, как обзорный режим. Edited September 7, 2013 by F74
kreml Posted September 7, 2013 Author Posted September 7, 2013 во вложении: индикация с учетом типа источника облучения индикация от всех источников облучения на синтаксис непроверял, могут быть ошибки. spo14.lua без наземных рлс, только рлс истребителей и ракет НЕТ ВОБЛЕ!
F74 Posted September 7, 2013 Posted September 7, 2013 (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 September 7, 2013 by F74
kreml Posted September 7, 2013 Author Posted September 7, 2013 да конечно, первые 2 условия через ИЛИ надо было делать. spo14_cor.lua ну и через условия все же нагляднее получается, хоть и не так красиво. (ну и давняя нелюбовь к тригонометрическим функциям, в микроконтроллерах они много ресурсов забирают) НЕТ ВОБЛЕ!
F74 Posted September 7, 2013 Posted September 7, 2013 (edited) да конечно, первые 2 условия через ИЛИ надо было делать. [ATTACH]87323[/ATTACH] ну и через условия все же нагляднее получается, хоть и не так красиво. (ну и давняя нелюбовь к тригонометрическим функциям, в микроконтроллерах они много ресурсов забирают) Ну это уж как кто привык. В решении навигационных задач они гораздо удобнее, особенно в приполярных районах, да и думать про всякие четверти не надо :). А синусы/косинусы легко заменяются разложениями в ряд до первых 3-4 членов, если уж на то пошло. Тут ради прикола прикинул- вычисление синуса в пределах от 0 до 90 градусов с точностью 0.0034 занимает 5 умножений, одно вычитание и одно сложение (если аргумент в радианах). Тут еще ньюансик- ты проверяешь только на превышение режима на 1 лампе, т.е. предположим, на 1 лампе-0, на 2 - 2, на 3 -1, то у нас получается на 1 лампе пусто, на 2 - захват, на 3 - сопровождение. А еще, ради реалистичности стоит учитывать дальность до источника излучения, ИМХО. Edited September 7, 2013 by F74
kreml Posted September 7, 2013 Author Posted September 7, 2013 (edited) да, про дальность тоже думал, но нужно как то это выразить в условие. ps про разложение в ряд конечно знаю, но всеже примитивный if отработает на порядок быстрее чем небольшая итерация с умножениями и прочей математикой :) Edited September 7, 2013 by kreml НЕТ ВОБЛЕ!
F74 Posted September 7, 2013 Posted September 7, 2013 (edited) да, про дальность тоже думал, но нужно как то это выразить в условие. Мощность передатчика/(Д*Д) - стандарт, это же, кстати и при определении главной цели на СПО-15 учитывается. Edited September 7, 2013 by F74
kreml Posted September 7, 2013 Author Posted September 7, 2013 понятно, но нужно условие для срабатывания спо, числовое значение. вообще в параметрах угроз уже есть посчитаная мощность сигнала, но она условная насколько я помню, нормализовано к 1. можно просто порог срабатывания определить и добавить доп. условие. НЕТ ВОБЛЕ!
RA3DCS Posted September 8, 2013 Posted September 8, 2013 (edited) Станислав переменные local lamp1 = 0 -- перед лево local lamp2 = 0 -- перед право local lamp3 = 0 -- зад право local lamp4 = 0-- зад лево Это локалные переменные функции. А как вывести их наружу? Edited September 9, 2013 by RA3DCS
RA3DCS Posted September 10, 2013 Posted September 10, 2013 Это из описания, почему не будут гореть две лампы при облучении сбоку, непонятно, то ли так логика заложена, то ли просто не задумывались про это. . Почему не будут? Будут! Станция представляет собой четырехканальное приемное устройство. Каждый канал работает автономно и обслуживает один из четырех секторов, но которое условно разделено пространство вокруг самолета. При облучении самолета РЛС перехвата под ракурсами ¼ или ¾ со средних или близких дистанций сигнал будет приниматься одновременно антеннами двух соседних каналов и соответственно загораются лампы двух смежных каналов. Если при этом учитывать очередность зажигания сигнальных ламп при сближении с РЛС то направление на РЛС находится ближе к сектору где лампа загорелась раньше.
kreml Posted September 10, 2013 Author Posted September 10, 2013 Станислав переменные local lamp1 = 0 -- перед лево local lamp2 = 0 -- перед право local lamp3 = 0 -- зад право local lamp4 = 0-- зад лево Это локалные переменные функции. А как вывести их наружу? функция заканчивается вот этим return lamp1, lamp2, lamp3, lamp4 соответственно забирать значения из нее так val1,val2,val3,val4 = spo14() НЕТ ВОБЛЕ!
RA3DCS Posted September 10, 2013 Posted September 10, 2013 (edited) функция заканчивается вот этим соответственно забирать значения из нее так Переменные val1....val4 должны быть local? Ошибок не выдает, но и не работает! Edited September 11, 2013 by RA3DCS
RA3DCS Posted September 11, 2013 Posted September 11, 2013 Станислав, растолкуйте назначение этой функции. Что то видимо с типами облучаемых РЛС? 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
kreml Posted September 11, 2013 Author Posted September 11, 2013 Я протестирую алгоритм в ближайшее время, еще не все ПО установил на комп после ремонта. По поводу функции GetEmitType она была сделана для работы "березы", разделяет угрозы по группам, нам в данном случае нужно выделить всего одну: 1- истребители, ракеты ВВ НЕТ ВОБЛЕ!
kreml Posted September 11, 2013 Author Posted September 11, 2013 да еще нашел ошибку в логике 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... НЕТ ВОБЛЕ!
RA3DCS Posted September 13, 2013 Posted September 13, 2013 она была сделана для работы "березы", разделяет угрозы по группам, нам в данном случае нужно выделить всего одну: Функция возвращает только одну переменную result которая в версии СПО-3 больше нигде не используется?
RA3DCS Posted September 13, 2013 Posted September 13, 2013 да еще нашел ошибку в логике ... Сейчас проверим!
kreml Posted September 13, 2013 Author Posted September 13, 2013 Функция возвращает только одну переменную result которая в версии СПО-3 больше нигде не используется? Да, только тип угрозы для спо считает. НЕТ ВОБЛЕ!
RA3DCS Posted September 13, 2013 Posted September 13, 2013 (edited) Сейчас проверим! Все равно читаются нули. Станислав а правилно, что функция чтения угроз local threats = LoGetTWSInfo() -- получаем список угроз для СПО-3 находится внутри функции СПО-14 ???? Ведь вроде в ЛУА если в функции нет return она ничего не возвращает наружу ? Edited September 13, 2013 by RA3DCS
kreml Posted September 14, 2013 Author Posted September 14, 2013 (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 September 14, 2013 by kreml НЕТ ВОБЛЕ!
RA3DCS Posted September 14, 2013 Posted September 14, 2013 Вот, результаты отладки: 2 исправления Как не печально, но не работает. Пробовал и в DCS и в LockOn-2 Вот мой Экспорт файл посмотрите может что не так?export.lua
kreml Posted September 14, 2013 Author Posted September 14, 2013 ужас какойто))) зачем функции были размещены в теле другой функции?)) вот поменял: export.lua НЕТ ВОБЛЕ!
RA3DCS Posted September 14, 2013 Posted September 14, 2013 ужас какойто))) зачем функции были размещены в теле другой функции?)) вот поменял: Я уже даже боюсь это слово говорить. Но не работает! Судя по всему не работает процедура получения угроз. читается: result - 8 lamp1..lap4 - 0 azimut - 0 mode - 0
kreml Posted September 14, 2013 Author Posted September 14, 2013 Я свой файлик проверял, работает. Сейчас проверю который вы выложили. НЕТ ВОБЛЕ!
Recommended Posts