Читайте также: |
|
Опис параметра моделі | Величина / од. виміри |
Аеродинамічні довідкові параметри | |
Середня аеродинамічна хорда крила, ba | 0.189941, м |
Розмах крила, l | 2.8956, м |
Площа крила, S | 0.55, м2 |
Точка прикладення аеродинамічної сили, rAC | [0.1425; 0; 0], м |
Аеродинамічні коефіцієнти | |
Коефіцієнт лобового опору | |
Мінімальний лобовий опір | 0.0434 |
Похідна по управлінню креном(елерони) | 0.0302 |
Похідна по управлінню тангажем(кермо висоти) | 0.0135 |
Похідна по управлінню підйомом(закрилки) | 0.1467 |
Похідна по управлінню рисканням(кермо напряму) | 0.0303 |
Похідна по числу Маха | |
Коефіцієнт Освальда, e | 0.75 |
Коефіцієнт підйому | |
Коефіцієнт підйому при нульовому куті тангажа | -0.23 |
Похідна першого порядку по куту атаки | -5.6106 |
Похідна по управлінню підйомом(закрилки) | -0.74 |
Похідна по управлінню тангажем(кермо висоти) | -0.13 |
Похідна другого порядку по куту атаки | -1.9724 |
Похідна по кутовій швидкості тангажа | -7.9543 |
Похідна по числу Маха | |
Коефіцієнт бічної сили | |
Похідна по куту ковзання | -0.83 |
Опис параметра моделі | Величина/од. виміру |
Похідна по управлінню креном(елерони) | -0.075 |
Похідна по управлінню рисканням(кермо напряму) | 0.1914 |
Похідна по кутовій швидкості крену | |
Похідна по кутовій швидкості рискання | |
Похідна по числу Маха |
Коефіцієнт моменту крену | |
Похідна першого порядку по куту ковзання | -0.13 |
Похідна по управлінню креном(елерони) | -0.1695 |
Похідна по управлінню рисканням(кермо напряму) | 0.0024 |
Похідна по кутовій швидкості крену | -0.5051 |
Похідна по кутовій швидкості рискання | 0.2519 |
Похідна по числу Маха | |
Коефіцієнт моменту рискання | |
Похідна першого порядку по куту ковзання | -0.0726 |
Похідна по управлінню креном(елерони) | -0.0108 |
Похідна по управлінню рисканням(кермо напряму) | 0.0693 |
Похідна по кутовій швидкості крену | 0.069 |
Похідна по кутовій швидкості рискання | 0.0946 |
Похідна по числу Маха | |
Коефіцієнт моменту тангажа | |
Коефіцієнт підйому при нульовому вугіллі тангажа | 0.135 |
Похідна першого порядку по куту атаки | -2.7397 |
Похідна по управлінню підйомом(закрилки) | 0.0467 |
Похідна по управлінню тангажем(кермо висоти) | -0.9918 |
Похідна другого порядку по куту атаки | -10.3796 |
Похідна по кутовій швидкості тангажа | -38.2067 |
Похідна по числу Маха | |
Інерція | |
Маса літака при порожніх баках, mempty | 8.5, кг |
Маса літака при повних баках, mgross | 13.5, кг |
Положення центру мас при порожніх баках, CGempy | [0.156; -0.079;0], м |
Опис параметра моделі | Величина,од. виміру |
Положення центру мас при повних баках, Cggross | [0.159; -0.090;0], м |
Моменти інерції при порожніх баках, Jempy | [0.7795; 1.752; 1.122; 0.1211], кг м2 |
Моменти інерції при повних баках, Jgross | [0.8244; 1.759; 1.135; 0.1204], кг м2 |
Параметри двигуна
Двигун | |
Точка прикладення сили тяги двигуна, rPC | [0; 0; 0], м |
Радіус пропелера, Rprop | 0.254, м |
Момент інерції пропелера, Jprop | 0.002, кг м2 |
Момент інерції валу двигуна, Jeng | 0.001, кг м2 |
Запалення, ign | |
Інші параметри | |
Число пі | 3.14 |
Радіус екватора | 6378137, м |
Перша ексцентричність | 0.081819191 |
Прискорення вільного падіння на екваторі | 9.780327 м/c2 |
Гравітаційна постійна | 0.00193185 |
Тиск на рівні моря | 102300, Па |
Температура на рівні моря | 291.15, К |
Початкові значення | |
Початкове положення в просторі по OXg | 0, м |
Початкове положення в просторі по OYg | 1000, м |
Початкове положення в просторі по OZg | 0, м |
Початкова швидкість по OX | 25, м/c |
Початкова швидкість по OY | 0, м/c |
Початкова швидкість по OZ | 0, м/c |
Початкове завантаження палива, fl | 2, кг |
Додаток Б
Опис змінних
Опис змінної | Одиниці виміру | Позначення у VisSim | Призначення | |
[радіан] | alpha | Кут атаки | ||
[радіан /c] | dotalpha | Похідна по куту атаки | ||
[радіан] | beta | Кут ковзання | ||
[радіан /c] | dotbeta | Похідна по куту ковзання | ||
[радіан] | gamma | Кут крену | ||
[радіан] | da | Відхилення елеронів | ||
[радіан] | de | Відхилення керма висоти | ||
[радіан] | df | Відхилення закрилок | ||
[радіан] | dr | Відхилення керма напряму | ||
- | dthr | Нормований показник відхилення ручки управління тягою двигуна | ||
- | e | Перша ексцентричність | ||
- | pi | Число пі | ||
[кг/м3] | rho | Щільність повітря | ||
[радіан] | psi | Кут рискання | ||
[радіан] | - | Кут нахилу траєкторії | ||
[радіан] | theta | Кут тангажа | ||
[з] | - | Постійна часу приводу | ||
[радіан /c] | - | Вектор кутових швидкостей | ||
[радіан /c] | wx | Кутова швидкість крену | ||
[радіан /c] | wy | Кутова швидкість рискання | ||
[радіан /c] | wz | Кутова швидкість тангажа | ||
Опис змінної | Одиниці виміру | Позначення у VisSim | Призначення | |
[радіан /c] | wy _ wind | Кутова швидкість БПЛА обумовлена турбулентністю | ||
[радіан/c] | wz _ wind | Кутова швидкість БПЛА обумовлена турбулентністю | ||
- | - | Випадковий сигнал з нормальним розподілом | ||
- | - | Вектор інтенсивності фільтрів турбулентності | ||
[радіан/c] | Omega | Кутова швидкість обертання пропелера | ||
[об/c] | - | Кутова швидкість обертання пропелера | ||
[радіан/c2] | - | Кутове прискорення обертання пропелера | ||
A | [м/c2] | - | Вектор прискорень в пов'язаній СК | |
[м/c2] | aturb | Вектор вітрових турбулентних прискорень в пов'язаній СК | ||
[м/c2] | - | Вектор вітрових прискорень в пов'язаній СК | ||
[м/c2] | - | Вектор вітрових фонових прискорень в пов'язаній СК | ||
ba | [м] | ba | Середня аеродинамічна хорда крила | |
- | Cx0 | Мінімальний лобовий опір | ||
- | cxda | Похідна по управлінню креном(елерони) | ||
- | cxde | Похідна по управлінню тангажем(кермо висоти) | ||
- | cxdf | Похідна по управлінню підйомом(закрилки) | ||
- | cxdr | Похідна по управлінню рисканням(кермо напряму) | ||
- | cxM | Похідна по числу Маха | ||
- | cy0 | Коефіцієнт підйому при нульовому куті Тангажа | ||
- | cyalpha | Похідна першого порядку по куту атаки | ||
Опис змінної | Одиниці виміру | Позначення у VisSim | Призначення | |
- | cyDalpha | Похідна другого порядку по куту атаки | ||
- | cyde | Похідна по управлінню тангажем(кермо висоти) | ||
- | cydf | Похідна по управлінню підйомом(закрилки) | ||
- | cywz | Похідна по кутовій швидкості тангажа | ||
- | cyM | Похідна по числу Маха | ||
- | czbeta | Похідна по куту ковзання | ||
- | czda | Похідна по управлінню креном(елерони) | ||
- | czdr | Похідна по управлінню рисканням(кермо напряму) | ||
- | czwx | Похідна по кутовій швидкості крену | ||
- | czwy | Похідна по кутовій швидкості рискання | ||
- | czM | Похідна по числу Маха | ||
E | - | osw | Коефіцієнт Освальда | |
Fl | [кг] | FuelLoad | Початкове завантаження палива | |
G | [м/с2] | g | Прискорення вільного падіння | |
[м/с2] | gWGS0 | Прискорення вільного падіння на екваторі | ||
- | gWGS1 | Гравітаційна постійна | ||
ign | - | ignition | Запалення | |
m | [кг] | m | Маса БПЛА | |
mempty | [кг] | mempty | Маса БПЛА при порожніх баках | |
mempty | [кг] | mgross | Маса БПЛА при повних баках | |
- | mxbeta | Похідна першого порядку по куту ковзання | ||
- | mxda | Похідна по управлінню креном(елерони) | ||
- | mxdr | Похідна по управлінню рисканням(кермо напряму) | ||
- | mxwx | Похідна по кутовій швидкості крену | ||
- | mxwy | Похідна по кутовій швидкості рискання | ||
Опис змінної | Одиниці виміру | Позначення у VisSim | Призначення | |
- | mxM | Похідна по числу Маха | ||
- | mybeta | Похідна першого порядку по куту ковзання | ||
- | myda | Похідна по управлінню креном(елерони) | ||
- | mydr | Похідна по управлінню рисканням(кермо напряму) | ||
- | mywx | Похідна по кутовій швидкості крену | ||
- | mywy | Похідна по кутовій швидкості рискання | ||
- | myM | Похідна по числу Маха | ||
- | mz0 | Коефіцієнт підйому при нульовому куті Тангажа | ||
- | mzalpha | Похідна першого порядку по куту атаки | ||
- | mzDalpha | Похідна другого порядку по куту атаки | ||
- | mzdf | Похідна по управлінню підйомом(закрилки) | ||
- | mzde | Похідна по управлінню тангажем(кермо висоти) | ||
- | mzwz | Похідна по кутовій швидкості тангажа | ||
- | mzM | Похідна по числу Маха | ||
L | [м] | l | Розмах крила | |
P | [Па] | p | Тиск на поточній висоті | |
[Па] | psl | Тиск на рівні моря | ||
Pd | [грам/годину] | FuelFlow | Витрата палива на рівні моря | |
power | [Вт] | - | Потужність двигуна на рівні моря | |
Q | [кг/м с2] | q | Швидкісний натиск | |
rAC | [м] | rAC | Точка прикладення аеродинамічної сили | |
rCG | [м] | rCG | Центр тяжіння БПЛА | |
rPC | [м] | rHub | Точка прикладення сили тяги двигуна | |
xg | [м] | x | Поточне положення ЛА в нормальній СК по Oxg | |
Опис змінної | Одиниці виміру | Позначення у VisSim | Призначення | |
zg | [м] | z | Поточне положення ЛА в нормальній СК по Ozg | |
CP | - | Cp | Коефіцієнт тяги | |
CT | - | Ct | Коефіцієнт потужності | |
CGempy | [м] | CGempty | Положення центру мас при порожніх баках | |
CGgross | [м] | CGgross | Положення центру мас при повних баках | |
- | - | Матриця переходу від нормальної до пов'язаної СК | ||
- | Dcb | Матриця переходу від пов'язаної до нормальної СК | ||
- | Dck | Матриця переходу від нормальної до швидкісної СК | ||
- | - | Матриця переходу від нормальної до траєкторної СК | ||
[Н] | F | Рівнодійний вектор сил в пов'язаній СК | ||
[Н] | - | Вектор сили тяжіння в пов'язаній СК | ||
[Н] | G | Вектор сили тяжіння в нормальній СК | ||
Hg | [м] | y | Поточне положення ЛА в нормальній СК по Oyg | |
[кг м2] | J | Матриця моментів інерції | ||
- | - | Коефіцієнт, що характеризує режим роботи гвинта | ||
Jempy | [кг м2] | Jempty | Моменти інерції при порожніх баках | |
Jeng | [кг м2] | Jeng | Момент інерції двигуна | |
Jgross | [кг м2] | Jgross | Моменти інерції при порожніх баках | |
Jprop | [кг м2] | Jprop | Момент інерції пропелера | |
Jx | [кг м2] | Jx | Момент інерції по OX | |
Jxy | [кг м2] | Jxy | Момент інерції по OXY | |
Jy | [кг м2] | Jy | Момент інерції по OY | |
Jz | [кг м2] | Jz | Момент інерції по OZ | |
Опис змінної | Одиниці виміру | Позначення у VisSim | Призначення | |
[м] | Lf | Вектор опорної відстані до фільтру | ||
Lat | [град] | Lat | Поточна широта | |
Lon | [град] | Lon | Поточна довгота | |
M | [Н м] | - | Рівнодійний вектор моментів в пов'язаній СК | |
M | - | M | Число маху | |
Maero | [Н м] | Maero | Вектор аеродинамічних моментів | |
Mprop | [Н м] | Mprop | Вектор гіроскопічних моментів двигуна | |
P | [Н] | P | Вектор сили тяги двигуна | |
[грам/годину] | - | Всмоктування палива | ||
[грам/годину] | FuelFlow | Витрата палива | ||
R | [Н] | - | Вектор аеродинамічних сил | |
[м] | Requiv | Еквівалентний радіус Землі | ||
[м] | - | Радіус меридіана; | ||
[м] | - | Нормальний радіус Землі | ||
S | [м2] | S | Площа крила | |
T | [До] | T | Температура на поточній висоті | |
TSL | [До] | Tsl | Температура на рівні моря висоті | |
V | [м/c] | V | Вектор швидкостей в пов'язаній СК | |
V | [м/c] | absV | Модуль вектору швидкостей в швидкісній СК | |
VLat | [м/c] | - | Швидкість по широті | |
VLon | [м/c] | - | Швидкість по довготі | |
Vsnd | [м/c] | Vsnd | Швидкість звуку на поточній висоті | |
[м/c] | Vturb | Швидкість турбулентності | ||
[м/c] | Vwind | Швидкість вітру | ||
[м/c] | Vwind0 | Швидкість постійного фонового вітру | ||
Vx | [м/c] | Vx | Швидкість по осі OX в пов'язаній СК | |
Vy | [м/c] | Vy | Швидкість по осі OY в пов'язаній СК | |
Vz | [м/c] | Vz | Швидкість по осі OZ в пов'язаній СК |
Додаток В
Файл підтримки зв’язку
<input>
<line_separator>newline</line_separator>
<var_separator>;</var_separator>
<chunk>
<name>z-offset-m</name>
<type>float</type>
<node>/sim/current-view/z-offset-m</node>
</chunk>
<chunk>
<name>y-offset-m</name>
<type>float</type>
<node>/sim/current-view/y-offset-m</node>
</chunk>
<chunk>
<name>x-offset-m</name>
<type>float</type>
<node>/sim/current-view/x-offset-m</node>
</chunk>
<chunk>
<name>goal-heading-offset-deg</name>
<type>float</type>
<node>/sim/current-view/goal-heading-offset-deg</node>
</chunk>
<chunk>
<name>goal-pitch-offset-deg</name>
<type>float</type>
<node>/sim/current-view/goal-pitch-offset-deg</node>
</chunk>
<chunk>
<name>goal-roll-offset-deg</name>
<type>float</type>
<node>/sim/current-view/goal-roll-offset-deg</node>
</chunk>
</input>
Додаток Г
Програмна реалізація системи управління
import javax.swing.*; | ||
import javax.swing.event.TableModelListener; | ||
import javax.swing.table.AbstractTableModel; | ||
import javax.swing.table.DefaultTableCellRenderer; | ||
import java.awt.*; | ||
import java.awt.event.ActionEvent; | ||
import java.awt.event.ActionListener; | ||
import java.text.SimpleDateFormat; | ||
import java.util.ArrayList; | ||
public class DronePanel extends WindowPanel { | ||
private Drone drone; | ||
private JLabel title; | ||
private JTable stateTable; | ||
private DroneStatesModel stateModel; | ||
private JScrollPane scrollPane; | ||
private JScrollBar vertical; | ||
private JPanel mainPanel; | ||
private JPanel sendPanel; | ||
private MainWindow mainWindow; | ||
public DronePanel(final Manager manager, JFrame frame, final Drone drone, final MainWindow mainWindow) { | ||
super(manager, frame); | ||
this.drone = drone; | ||
this.mainWindow = mainWindow; | ||
setLayout(new BorderLayout()); | ||
JButton back = new JButton("Назад"); | ||
back.addActionListener(new ActionListener() { | ||
@Override | ||
public void actionPerformed(ActionEvent e) { | ||
mainWindow.setDronesTablePanel(); | ||
} | ||
}); | ||
title = new JLabel("Мониторинг БПЛА#" + drone.getId(), SwingConstants.CENTER); | ||
title.setFont(new Font("Arial", Font.BOLD, 14)); | ||
add(BorderLayout.NORTH, title); | ||
add(BorderLayout.SOUTH, back); | ||
stateModel = new DroneStatesModel(this.drone.getDroneStates()); | ||
stateTable = new JTable(stateModel); | ||
stateTable.setRowHeight(25); | ||
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer(); | ||
centerRenderer.setHorizontalAlignment(SwingConstants.CENTER); | ||
stateTable.getColumnModel().getColumn(0).setCellRenderer(centerRenderer); | ||
stateTable.getColumnModel().getColumn(1).setCellRenderer(centerRenderer); | ||
stateTable.getColumnModel().getColumn(2).setCellRenderer(centerRenderer); | ||
stateTable.getColumnModel().getColumn(3).setCellRenderer(centerRenderer); | ||
stateTable.getColumnModel().getColumn(4).setCellRenderer(centerRenderer); | ||
scrollPane = new JScrollPane(stateTable); | ||
vertical = scrollPane.getVerticalScrollBar(); | ||
vertical.setValue(vertical.getMaximum()); | ||
mainPanel = new JPanel(new BorderLayout()); | ||
mainPanel.add(BorderLayout.CENTER, scrollPane); | ||
sendPanel = new JPanel(); | ||
JLabel sendCmdLabel = new JLabel("CMD: "); | ||
final JTextField sendCmdField = new JTextField(10); | ||
JLabel sendValueLabel = new JLabel("VAL: "); | ||
final JTextField sendValueField = new JTextField(10); | ||
JButton sendButton = new JButton("Отправить"); | ||
sendButton.addActionListener(new ActionListener() { | ||
@Override | ||
public void actionPerformed(ActionEvent e) { | ||
// DID=1;CMD=1;VAL=0 | ||
String sendStr = "DID=" + drone.getId() + ";CMD=" + sendCmdField.getText() + ";VAL=" + sendValueField.getText(); | ||
sendCmdField.setText(""); | ||
sendValueField.setText(""); | ||
try { | ||
manager.getBs().getPort().write(sendStr); | ||
System.out.println(sendStr); | ||
} catch (NullPointerException ex) { | ||
} | ||
} | ||
}); | ||
sendPanel.add(sendCmdLabel); | ||
sendPanel.add(sendCmdField); | ||
sendPanel.add(sendValueLabel); | ||
sendPanel.add(sendValueField); | ||
sendPanel.add(sendButton); | ||
add(BorderLayout.CENTER, mainPanel); | ||
mainPanel.add(BorderLayout.SOUTH, sendPanel); | ||
} | ||
@Override | ||
public void redraw() { | ||
stateTable.repaint(); | ||
scrollPane.getViewport().revalidate(); | ||
vertical.setValue(vertical.getMaximum()); | ||
} | ||
private class DroneStatesModel extends AbstractTableModel { | ||
private ArrayList<DroneState> droneStates; | ||
public DroneStatesModel(ArrayList<DroneState> droneStates) { | ||
this.droneStates = droneStates; | ||
} | ||
@Override | ||
public int getRowCount() { | ||
return droneStates.size(); | ||
} | ||
@Override | ||
public int getColumnCount() { | ||
return 5; | ||
} | ||
@Override | ||
public String getColumnName(int columnIndex) { | ||
switch (columnIndex) { | ||
case 0: | ||
return "Time"; | ||
case 1: | ||
return "Latitude"; | ||
case 2: | ||
return "Longitude"; | ||
case 3: | ||
return "Состояние"; | ||
case 4: | ||
return "Задание"; | ||
} | ||
return null; | ||
} | ||
@Override | ||
public Class<?> getColumnClass(int columnIndex) { | ||
return String.class; | ||
} | ||
@Override | ||
public boolean isCellEditable(int rowIndex, int columnIndex) { | ||
return false; | ||
} | ||
@Override | ||
public Object getValueAt(int rowIndex, int columnIndex) { | ||
DroneState droneState = droneStates.get(rowIndex); | ||
switch (columnIndex) { | ||
case 0: | ||
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM HH:mm:ss"); | ||
return dateFormat.format(droneState.getDate()); | ||
case 1: | ||
return droneState.getLatitude(); | ||
case 2: | ||
return droneState.getLongitude(); | ||
case 3: | ||
return droneState.getState(); | ||
case 4: | ||
return droneState.getJob(); | ||
} | ||
return null; | ||
} | ||
@Override | ||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) { | ||
} | ||
@Override | ||
public void addTableModelListener(TableModelListener l) { | ||
} | ||
@Override | ||
public void removeTableModelListener(TableModelListener l) { | ||
} | ||
} | ||
} | ||
public class ManagerGUI extends JFrame implements DronesUpdateObserver { | ||
private Manager manager; | ||
private MainWindow mainWindow; | ||
private JLabel statusLabel; | ||
public final static String TITLE = "Manager"; | ||
public final static int WIDTH = 930; | ||
public final static int HEIGHT = 600; | ||
public ManagerGUI() { | ||
manager = new Manager(); | ||
manager.getBs().addDronesUpdateListener(this); | ||
statusLabel = new JLabel(" Последнее обновление:"); | ||
Font font = new Font("Arial", Font.BOLD, 14); | ||
statusLabel.setFont(font); | ||
setMenu(); | ||
setTitle(TITLE); | ||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||
setMinimumSize(new Dimension(WIDTH, HEIGHT)); | ||
setBounds(300, 300, WIDTH, HEIGHT); | ||
setVisible(true); | ||
mainWindow = new MainWindow(manager, this); | ||
add(BorderLayout.CENTER, mainWindow); | ||
add(BorderLayout.SOUTH, statusLabel); | ||
} | ||
private void setMenu() { | ||
JMenuBar menuBar = new JMenuBar(); | ||
JMenu menuSettings = new JMenu("Настройка"); | ||
JMenu menuCom = new JMenu("COM порт"); | ||
JMenuItem menuComClose = new JMenuItem("Закрыть порт"); | ||
menuSettings.add(menuCom); | ||
menuSettings.add(menuComClose); | ||
menuBar.add(menuSettings); | ||
menuComClose.addActionListener(new ActionListener() { | ||
@Override | ||
public void actionPerformed(ActionEvent e) { | ||
try { | ||
manager.getBs().closeComPort(); | ||
System.out.println("Close connection."); | ||
} catch (NullPointerException ex) { | ||
// TODO диалоговое окно | ||
System.out.println("Сначала откройте соединение"); | ||
} | ||
} | ||
}); | ||
final String[] allPorts = SerialPortList.getPortNames(); | ||
for (int i = 0; i < allPorts.length; i++) { | ||
JMenuItem menuPort = new JMenuItem(allPorts[i]); | ||
menuCom.add(menuPort); | ||
menuPort.addActionListener(new ActionListener() { | ||
@Override | ||
public void actionPerformed(ActionEvent e) { | ||
manager.getBs().setComPort(e.getActionCommand()); | ||
manager.getBs().getPort().addComListener(mainWindow.getTerminalPanel()); | ||
} | ||
}); | ||
} | ||
this.setJMenuBar(menuBar); | ||
} | ||
@Override | ||
public void onDronesUpdate() { | ||
mainWindow.redraw(); | ||
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss.ms"); | ||
statusLabel.setText(" Последнее обновление: " + dateFormat.format(new Date())); | ||
} | ||
} | ||
Дата добавления: 2015-12-07; просмотров: 82 | Нарушение авторских прав