Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГрищенкоДЮ_КСС_226.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

3.4. Розробка програмних модулів комплексу керування радіолокаційною обстановкою

Програмний комплекс розробляється з застосовуванням RAD, що використовують подійно-орієнтоване програмування. У якості такої системи було обрано середовище IDE C++ Builder. Програмний продукт має всі переваги RAD системи, дозволяє використовувати переваги мови програмування C++ і створювати додатки для роботи в операційній системі Windows. Програмний продукт C++ Builder дозволяє створювати додатки, основним інтерфейсним елементом яких є форма – стандартний елемент керування Windows «вікно» із уже певним стилем. Розроблювальний додаток проектує сукупність таких форм, на яких розташовуються інші елементи керування.

При ініціалізації додатка відображається форма (рис. 3.12), де зосереджені основні елементи керування. Через цю форму можна одержати доступ до всіх функцій розроблювального програмного комплексу.

Рис. 3.12. Головна форма програмного додатка

На головній формі додатка можна реалізовувати наступні основні функції:

  • створення нового файлу, після активізації елемента керування очищаються всі внутрішні структури зберігання даних, уся, не збережена інформація, стирається;

  • відкриття файлу, після активізації елемента керування з'являється діалог відкриття файлу, де користувач може вибрати ім'я файлу з раніше збереженими параметрами. Дані з обраного файлу завантажуються у внутрішні структури й відображаються в елементах;

  • збереження у файл, після активізації елемента керування з'являється діалог збереження файлу, де користувач може вибрати ім'я вже існуючого файлу або задати ім'я нового файлу. Уведені дані будуть збережені в обраний файл;

  • завдання параметрів зондувальних сигналів, після активізації елемента керування відображається форма, на якій користувач зможе задати параметри зондувальних сигналів. Список параметрів відповідає розробленим моделям. Після завдання параметрів сигналу стає можливим перегляд загального виду сигналу і його спектра. Зображення зовнішнього вигляду сигналу і його спектра можуть бути збережені у файл.

Рис. 3.12. Форма для завдання параметрів зондувального сигналу

Окрім перелічених функцій, реалізується керування наступними параметрами:

  • розміщення зондувальних сигналів, після активізації елемента керування з'являється форма, на якій користувач може задати порядок запуску зондувальних сигналів і інтервали між запусками;

  • параметри РЛС, після активізації елемента керування з'являється форма, де користувач задає параметри конкретної РЛС. Для зручності користувача параметри об'єднані в групи, що характеризують який-небудь модуль РЛС;

  • активізація процесу моделювання, після активізації елемента керування з'являється форма, де користувач задає параметри моделювання – час моделювання або число відліків по азимуту, ім'я вихідного файлу. Після підтвердження введення параметрів починається процес моделювання, хід якого відображається у вигляді індикатору, що показує відсоток виконання. Процес моделювання можна перервати, скориставшись кнопкою «Скасування». Після закінчення моделювання видається повідомлення про нормальне закінчення процесу або повідомлення із вказівкою помилки й способом її усунення;

  • перегляд отриманого файлу за допомогою програми Viewer, отриманий у процесі моделювання файл може бути переглянутий за допомогою даної програми. Програма буде викликана і у неї буде завантажений шуканий файл автоматично;

  • завантаження файл в обладнання обробки радіолокаційної інформації;

  • виклик майстра, який дозволяє автоматизувати послідовність уведення параметрів і одержання вихідного файлу. Вікно майстра містить текст, що пояснює, що відбудеться при виконанні конкретної дії, виконання якого може бути запущене як за допомогою відповідного елемента керування на формі майстра, так і на головній формі додатка (рис. 3.13). Є можливість пропуску поточного дії й повернення до попередньої дії. Після виконання операції майстер автоматично переходить до наступного пункту. При активізації відповідної опції на формі майстра, останній буде завантажуватися щораз при активізації додатка. Дані про настроювання користувача зберігаються в ini-файлі.

Рис. 3.13. Використання майстра при роботі із програмним комплексом

Для підвищення якостей інтерактивності в програмному комплексі повинні бути реалізовані наступні функції взаємодії з користувачем:

  • виклик вбудованої довідки по програмі. Довідка також може бути викликана в будь-який момент і для будь-якої форми, шляхом натискання клавіші «F1» на клавіатурі;

  • короткі відомості про програму, відображаються відомості про параметри комп'ютера й коротка інформація про програму;

  • інформаційна панель, містить відомості про те, які параметри введені, а які немає. Після завдання відповідних параметрів червоний напис «Не задані» змінюється на напис «Готове»;

  • список усіх заданих радіолокаційних об'єктів, вказується номер об'єкта або його ім'я і його тип. Уведені об'єкти відображаються на моделі екрана радара;

  • елементи керування списком радіолокаційних об'єктів, що полегшують навігацію за списком і керування самим списком радіолокаційних об'єктів. Після натискання на кнопку додавання нового об'єкта буде активізована форма, аналогічна представленої на рис. 3.9. На даній формі зібрані всі параметри, необхідні для моделювання радіолокаційного об'єкта, є можливість завдання «рельєфу» для групи чинників і програми руху в графічній формі. Усі елементи керування постачені підказками, які відображаються на формі завдання параметрів;

  • модель екрана радара, після введення нового радіолокаційного об'єкта він відображається на моделі відповідно до введених координат. Колірна гама відображення (цвіт ліній і т.д.) може бути настроєна користувачем за допомогою відповідної команди в головному меню.

У випадку виникнення яких-небудь утруднень рекомендується викликати вбудовану довідкову систему або майстра, які містять коментарі й пояснення до всіх дій і етапам одержання вихідного файлу.

Відповідно до наведених вище алгоритмів у дипломній роботі були розроблені програмні модулі автоматизації контролю радіолокаційної обстановки. Основний програмний модуль наведений на лістингу нижче.

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

x++; y++; count++;

if(count < 100)

{ x++; y++;}

else

{ x = x + 3; y++;}

Image1->Canvas->Ellipse(x, y, x + 10, y +10);

sg->RowCount = count + 2;

sg->Cells[0][count - 1] = "координаты";

sg->Cells[1][count - 1] = x;

sg->Cells[2][count - 1] = y;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)

{

Image1->Canvas->Pen->Color = clWhite;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

x = 0;

y = 0;

count = 0;

Timer1->Enabled = true;

}

//---------------------------------------------------------------------------

Основними операціями при автоматизації визначення координат, що рухаються об'єктів є розрахункові методи обчислення координат. Крім того, потрібна реалізація операцій перетворення просторових параметрів положення об'єктів з однієї системи координат в іншу. Приклад однієї з таких функцій наведений нижче.

void ShowBestPoint(TPaintBox *Palitra, int XC, int YC)

{

//нарисовать окружность

Palitra->Canvas->Arc(XC - 4, YC - 4,

XC + 4, YC + 4,

XC + 4, YC,

XC + 4, YC);

Palitra->Canvas->MoveTo(XC, 0);

Palitra->Canvas->LineTo(XC, Palitra->Height);

Palitra->Canvas->MoveTo(0, YC);

Palitra->Canvas->LineTo(Palitra->Width, YC);

}

//входные параметры - X, Y, Alpha, где Alpha = 0 - 90 градусов

//выходные параметры - X1, Y1 (новые кординаты повернутой точки)

void __fastcall TurnPoint(double X, double Y, double AlphaPoint, double &X1, double &Y1)

{

long double r, f, f1;

long double sinus, cosinus;

AnsiString s;

sinus = 0.0;

cosinus = 0.0;

r = Hypot(X, Y); //вычислить вектор-радиус

SinCos(AlphaPoint / radian_value, sinus, cosinus);

//1й случай: если AlphaPoint = 0, то есть, поворот отсутствует

if(AlphaPoint == 0)

{

X1 = X;

Y1 = Y;

return;

}

if(X == 0 && Y == 0)

{

X1 = X;

Y1 = Y;

return;

}

if((X > 0) && (Y == 0))

{

X1 = r * cosinus;

Y1 = r * sinus;

return;

}

if((X == 0) && (Y > 0))

{

X1 = - r * sinus;

Y1 = r * cosinus;

return;

}

if((X < 0) && (Y == 0))

{

X1 = - r * cosinus;

Y1 = - r * sinus;

return;

}

if((X == 0) && (Y < 0))

{

X1 = r * sinus;

Y1 = - r * cosinus;

return;

}

if((X > 0) && (Y > 0))

{

f = ArcTan2(Y, X) * radian_value

f1 = f + AlphaPoint;

if(f1 <= 90)

{

SinCos(f1 / radian_value, sinus, cosinus);

X1 = r * cosinus;

Y1 = r * sinus;

}

else

{

SinCos((f1 - 90) / radian_value, sinus, cosinus);

X1 = - r * sinus;

Y1 = r * cosinus;

}

return;

}

if((X < 0) && (Y > 0))

{

X = - X; //делаем X положительным

f = ArcTan2(Y, X) * radian_value

f1 = f - AlphaPoint;

if(AlphaPoint <= f)

{

SinCos(f1 / radian_value, sinus, cosinus);

X1 = - r * cosinus;

Y1 = r * sinus;

}

else

{

f1 = AlphaPoint - f;

SinCos(f1 / radian_value, sinus, cosinus);

X1 = - r * cosinus;

Y1 = - r * sinus;

}

return;

}

//9й случай: поворот от точки в третьем квадранте

if((X < 0) && (Y < 0))

{

X = - X; //делаем X положительным

Y = - Y; //делаем Y положительным

f = ArcTan2(Y, X) * radian_value

f1 = f + AlphaPoint;

if(f1 <= 90)

{

SinCos(f1 / radian_value, sinus, cosinus);

X1 = - r * cosinus;

Y1 = - r * sinus;

}

else

{

SinCos((f1 - 90) / radian_value, sinus, cosinus);

X1 = r * sinus;

Y1 = - r * cosinus;

}

return;

}

if((X > 0) && (Y < 0))

{

Y = - Y; //делаем Y положительным

f = ArcTan2(Y, X) * radian_value

f1 = f - AlphaPoint;

if(f1 >= 0)

{

SinCos(f1 / radian_value, sinus, cosinus);

X1 = r * cosinus;

Y1 = - r * sinus;

}

else

{

f1 = - f1; //делаем угол f1 положительным

SinCos(f1 / radian_value, sinus, cosinus);

X1 = r * cosinus;

Y1 = r * sinus;

}

return;

}

}

//------------------------------------------------------------------------------

Повний текст програмних модулів системи автоматизації контролю параметрів радіолокаційної обстановки наведений у Додатку А.