Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Математические и программные модели движения кораблей

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.11.2024

Оглавление

Цель работы и исходные данные

. Математическая модель движения кораблей

2. Программная модель движения кораблей в среде Matlab

. Графический интерфейс программы (GUI)

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

Выводы


Цель работы и исходные данные

Цель курсовой работы: разработка математической модели движения кораблей, написание программной модели и исследование с ее помощью динамических свойств моделируемых объектов на ПК.

Исходные данные

Основные ТТД надводных кораблей

Исходные данные и ограничения, наложенные на систему, представлены в таблице 1.

движение корабль программный

Таблица 1

Основные ТТД надводного корабля

№ варианта

Тип корабля

W, т

N, л.с.

V, узлы/Vк,V1max,V2max, узлы

4

Легкий крейсер "Красный кавказ

9030

5500

29

Основные ТТД катера

4

Катер "Тритон"

2.3

150

29

Основные ТТД корабля на подводных крыльях

4

-КПК

9.4

400

11

13

32

Необходимо учесть:

1 узел = 1 миля/час = 1852 м / 3600 с = 0.51 м/с

л.с. = 735.5 Вт; 1 Вт = 1 НЧм/с

Ограничения разрабатываемой модели:

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

. Не учитывается волнение моря, гидродинамические особенности корпуса, переменное воздействие ветра и т.п.


1. Математическая модель движения кораблей

Математическая модель движения надводного водоизмещающего корабля:

где xi+1 - значение координаты на следующем шаге; xi - значение координаты на текущем шаге; Δxi - приращение координаты на прошлом шаге; Pi - относительное значение силы тяги в процентах от максимальной; Fmax - максимальное значение силы тяги; Δt - шаг приращения времени; A - коэффициент пропорциональности; Δxi+1 - приращение координаты на текущем шаге; V2max - максимальное значение скорости корабля.

Математическая модель движения надводного корабля "Красный Кавказ"

. Шаг приращения времени (принимается) Δt = 1 с.

. Относительное (в процентах от максимальной) допустимое изменение силы тяги за время Δt = 1 с:

Fmax = Nmax / Vmax=(55000*735.5)/(29*0.51)=2735100 H

ΔFmax =0.1Fmax (т.к. корабль имеет водоизмещение более 10000т)

ΔPiЈ ΔtЧFmax/Fmax) Ч100 Ј50%.

. Коэффициент пропорциональности силы сопротивления движению:


=12504

. Координата пройденного расстояния:

xi+1 = xi + (xi-xi-1) + (PiЧ 2735100Ч12/100 - 12504Ч(xi - xi-1) Ч кxi - xi-1к) /9030000.

. Величина текущей скорости:

Vi+1 = Δxi+1 / Δt = (xi+1 -xi) / 1

Математическая модель движения катера "Тритон"

. Шаг приращения времени (принимается) Δt = 1 с.

. Относительное (в процентах от максимальной) допустимое изменение силы тяги за время Δt = 1 с:

Fmax = Nmax / Vmax=(150*735.5)/(29*0.51)=7459 Н

ΔFmax =0,2Fmax (т.к. корабль имеет водоизмещение менее 10000т)

ΔPiЈ ΔtЧFmax/Fmax) Ч100 Ј10%.

. Коэффициент пропорциональности силы сопротивления движению:

=34.1

. Координата пройденного расстояния:

xi+1 = xi + (xi-xi-1)+(PiЧ 7459Ч1/100-34.1Ч(xi - xi-1) Ч кxi - xi-1к) /2300.


5. Величина текущей скорости:

Vi+1 = Δxi+1 / Δt = (xi+1 -xi) / 1

Математическая модель движения корабля на подводных крыльях

где xi+1 - значение координаты на следующем шаге; xi - значение координаты на текущем шаге; Δxi - приращение координаты на прошлом шаге; Pi - относительное значение силы тяги в процентах от максимальной; Fmax - максимальное значение силы тяги; Δt - шаг приращения времени; A - коэффициент пропорциональности; Δxi+1 - приращение координаты на текущем шаге; V21max - максимальное значение скорости корабля при водоизмещающем режиме; V22max - максимальное значение скорости корабля при режиме глиссирования и движения на крыльях.

Математическая модель движения корабля на подводных крыльях

. Шаг приращения времени (принимается) Δt = 0.2с.

. Относительное (в процентах от максимальной) допустимое изменение силы тяги за время Δt = 0.2с:

Fmax = Nmax / Vmax=(150*735,5)/(32*0,51)=18027 H

ΔFmax =0,2Fmax (т.к. корабль имеет водоизмещение менее 10000т)

ΔPi Ј ΔtЧ(ΔFmax/Fmax)Ч100 Ј4%.

. Коэффициент пропорциональности силы сопротивления движению:

при V<Vк:

при VіVк: .

. Координата пройденного расстояния:

При V<Vк:

xi+1 = xi + (xi - xi-1) + (PiЧЧ18027 - 410Ч(xi - xi-1)Ч зxi - xi-1з) /9400.

При VіVк:

xi+1 = xi + (xi - xi-1) + (PiЧЧ18027 - 68Ч(xi - xi-1)Ч зxi - xi-1з) /9400.

. Величина текущей скорости:

Vi+1 = Δxi+1 / Δ t = (xi+1 -xi) / 1.

2. Программная модель движения кораблей в среде Matlab

function varargout = Kurs_gui(varargin)

% KURS_GUI M-file for Kurs_gui.fig

% KURS_GUI, by itself, creates a new KURS_GUI or raises the existing

% singleton*.

%

% H = KURS_GUI returns the handle to a new KURS_GUI or the handle to

% the existing singleton*.

%

% KURS_GUI('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in KURS_GUI.M with the given input arguments.

%

% KURS_GUI('Property','Value',...) creates a new KURS_GUI or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before Kurs_gui_OpeningFunction gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to Kurs_gui_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Kurs_gui

% Last Modified by GUIDE v2.5 12-Dec-2011 16:21:28

% Begin initialization code - DO NOT EDIT_Singleton = 1;_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @Kurs_gui_OpeningFcn, ...

'gui_OutputFcn', @Kurs_gui_OutputFcn, ...

'gui_LayoutFcn', [], ...

'gui_Callback', []);nargin & isstr(varargin{1})_State.gui_Callback = str2func(varargin{1});nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});_mainfcn(gui_State, varargin{:});

% End initialization code - DO NOT EDIT

% --- Executes just before Kurs_gui is made visible.Kurs_gui_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to Kurs_gui (see VARARGIN)

% Choose default command line output for Kurs_gui.output = hObject;

% Update handles structure(hObject, handles);

% UIWAIT makes Kurs_gui wait for user response (see UIRESUME)

% uiwait(handles.figure1);(handles.W,'String',0);(handles.N,'String',0);(handles.V1,'String',0);(handles.V1max,'String',0);(handles.V2max,'String',0);

% --- Outputs from this function are returned to the command line.varargout = Kurs_gui_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure{1} = handles.output;

% --- Executes on button press in ship1.ship1_Callback(hObject, eventdata, handles)

% hObject handle to ship1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)get(hObject,'Value')==1(handles.text1,'Visible','On');(handles.text2,'Visible','On');(handles.text3,'Visible','On');(handles.ship2,'Value', 0);(handles.ship3,'Value', 0);(handles.W,'Visible','On');(handles.N,'Visible','On');(handles.V1,'Visible','On');(handles.text6,'Visible','Off');(handles.text7,'Visible','Off');(handles.V1max,'Visible','Off');(handles.V2max,'Visible','Off');(handles.W,'String',9030);(handles.N,'String',55000);(handles.V1,'String',29);(handles.text1,'Visible','Off');(handles.text2,'Visible','Off');(handles.text3,'Visible','Off');(handles.W,'Visible','Off');(handles.N,'Visible','Off');(handles.V1,'Visible','Off');

% Hint: get(hObject,'Value') returns toggle state of ship1

% --- Executes on button press in ship2.ship2_Callback(hObject, eventdata, handles)

% hObject handle to ship2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)get(hObject,'Value')==1(handles.text1,'Visible','On');(handles.text2,'Visible','On');(handles.text3,'Visible','On');(handles.ship1,'Value', 0);(handles.ship3,'Value', 0);(handles.W,'Visible','On');(handles.N,'Visible','On');(handles.V1,'Visible','On');(handles.text6,'Visible','Off');(handles.text7,'Visible','Off');(handles.V1max,'Visible','Off');(handles.V2max,'Visible','Off');(handles.W,'String',2.3);(handles.N,'String',150);(handles.V1,'String',29);(handles.text1,'Visible','Off');(handles.text2,'Visible','Off');(handles.text3,'Visible','Off');(handles.W,'Visible','Off');(handles.N,'Visible','Off');(handles.V1,'Visible','Off');

% Hint: get(hObject,'Value') returns toggle state of ship2

% --- Executes on button press in ship3.ship3_Callback(hObject, eventdata, handles)

% hObject handle to ship3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)get(hObject,'Value')==1(handles.text1,'Visible','On');(handles.text2,'Visible','On');(handles.text3,'Visible','On');(handles.text6,'Visible','On');(handles.text7,'Visible','On');(handles.ship1,'Value', 0);(handles.ship2,'Value', 0);(handles.W,'Visible','On');(handles.N,'Visible','On');(handles.V1,'Visible','On');(handles.V1max,'Visible','On');(handles.V2max,'Visible','On');(handles.W,'String',9.4);(handles.N,'String',400);(handles.V1,'String',11);(handles.V1max,'String',13);(handles.V2max,'String',32);(handles.text1,'Visible','Off');(handles.text2,'Visible','Off');(handles.text3,'Visible','Off');(handles.text6,'Visible','Off');(handles.text7,'Visible','Off');(handles.W,'Visible','Off');(handles.N,'Visible','Off');(handles.V1,'Visible','Off');(handles.V1max,'Visible','Off');(handles.V2max,'Visible','Off');

% Hint: get(hObject,'Value') returns toggle state of ship3

% --- Executes on button press in close.close_Callback(hObject, eventdata, handles)

% hObject handle to close (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in change.change_Callback(hObject, eventdata, handles)

% hObject handle to change (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)get(hObject,'Value')==1(handles.W,'Style','edit');(handles.N,'Style','edit');(handles.V1,'Style','edit');(handles.V1max,'Style','edit');(handles.V2max,'Style','edit');

% --- Executes on button press in ok.ok_Callback(hObject, eventdata, handles)

% hObject handle to ok (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)(get(handles.ship1,'Value')==1 || get(handles.ship2,'Value')==1)get(handles.ship3,'Value')==1(handles.text15,'Visible','On');(handles.text16,'Visible','On');(handles.text17,'Visible','On');tab_Callback(hObject, eventdata, handles)

% hObject handle to tab (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)(get(handles.ship1,'Value')==1 || get(handles.ship2,'Value')==1)get(handles.ship3,'Value')==1=[]; j=1;get(handles.ship1,'Value')==1i=1:5:length(tt),(j,:)=[tt(i), XX(i), vv(i), pp(i)];=j+1;(get(handles.ship2,'Value')==1 || get(handles.ship3,'Value')==1)i=1:1:length(tt),(j,:)=[tt(i), XX(i), vv(i), pp(i)];=j+1;('%s',' Время Путь Скорость Тяга')(B)

Текст скрипта KursoviK.m

W_h = handles.W; % выбор объекта а1 из родительского объекта

W = str2double(get(W_h,'String')); % извлечение численного значения из объекта а1

N_h = handles.N;= str2double(get(N_h,'String'));_h = handles.V1;= str2double(get(V_h,'String'));

% W=9030; N=55000; V=29;

% 1 шаг приращения

dt=1;

% перевод в сист Си

W1=W*1000; N1=N*735.5; V1=V*0.51;

Fmax=N1/V1;get(handles.ship1,'Value')==1=0.1*Fmax;get(handles.ship2,'Value')==1=0.2*Fmax;

% 2=dt*(dFmax/Fmax)*100;

% 3

A=Fmax/(V1^2);

% Пройденное расстояние

xi=0; x_pre=0; P=0; t=0;

global tt; global XX; global vv; global pp;=[]; tt=[]; vv=[]; pp=[];

while P<100 % разгон + выход на макс значение силы тяги

X=xi+(xi-x_pre)+(P*Fmax*(dt^2)/100-A*(xi-x_pre)*abs(xi-x_pre))/W1;=(X-xi)/dt;=[vv,v];=[pp,P];_pre=xi; xi=X;=P+dP;=[tt,t];=[XX,X];=t+dt;

end;

while v<0.98*V1, % разгон на макс тяге до макс скорости

X=xi+(xi-x_pre)+(P*Fmax*(dt^2)/100-A*(xi-x_pre)*abs(xi-x_pre))/W1;=(X-xi)/dt;=[vv,v];=[pp,P];_pre=xi; xi=X;=[tt,t];=[XX,X];=t+dt;

end;

while P>-100, % торможение, выход на обратную силу тяги

X=xi+(xi-x_pre)+(P*Fmax*(dt^2)/100-A*(xi-x_pre)*abs(xi-x_pre))/W1;=(X-xi)/dt;=[vv,v];_pre=xi; xi=X;=[pp,P];=P-dP;=[tt,t];=[XX,X];=t+dt;

end;

while v>0.02, % торможение, до нуля

X=xi+(xi-x_pre)+(P*Fmax*(dt^2)/100-A*(xi-x_pre)*abs(xi-x_pre))/W1;=(X-xi)/dt;=[vv,v];=[pp,P];_pre=xi; xi=X;=[tt,t];=[XX,X];=t+dt;;get(handles.ok,'Value')==1(handles.XX_plot,'Visible','On');(handles.XX_plot);;(tt,XX), grid;(handles.vv_plot,'Visible','On');(handles.vv_plot);;(tt,vv), grid(handles.pp_plot,'Visible','On');(handles.pp_plot);;(tt,pp), grid

Текст скрипта KursoviKPK.m

% W=9.4; N=400; V_k=11; V_1max=13; V_2max=32;_h = handles.W; % выбор объекта а1 из родительского объекта

W = str2double(get(W_h,'String')); % извлечение численного значения из объекта а1

N_h = handles.N;= str2double(get(N_h,'String'));_h = handles.V1;_k = str2double(get(Vk_h,'String'));max_h = handles.V1max;_1max = str2double(get(V1max_h,'String'));max_h = handles.V2max;_2max= str2double(get(V2max_h,'String'));

% 1 шаг приращения

dt=1;

% перевод в сист Си

W1=W*1000; N1=N*735.5; Vk=V_k*0.51; V1max=V_1max*0.51; V2max=V_2max*0.51;=N1/V2max; dFmax=0.2*Fmax;

% 2=dt*(dFmax/Fmax)*100;

% 3=Fmax/(V1max^2); A2=Fmax/(V2max^2);

% Пройденное расстояние

xi=0; x_pre=0; P=0; t=0; v=0;

global tt; global XX; global vv; global pp;=[]; tt=[]; vv=[]; pp=[]; AA=[]; P<100 % разгон + выход на макс значение силы тяги

if(v<Vk)=A1;(v>=V1max)=A2;(Vk<=v & v<V1max)=A1-(v-Vk)*(A1-A2)/(V1max-Vk);=[AA,A];=xi+(xi-x_pre)+(P*Fmax*(dt^2)/100-A*(xi-x_pre)*abs(xi-x_pre))/W1;=(X-xi)/dt;=[vv,v];=[pp,P];_pre=xi; xi=X;=P+dP;=[tt,t];=[XX,X];=t+dt;

end;

while v<0.98*V2max, % разгон на макс тяге до макс скорости

if(v<Vk)=A1;(v>=V1max)=A2;(Vk<=v & v<V1max)=A1-(v-Vk)*(A1-A2)/(V1max-Vk);=[AA,A];=xi+(xi-x_pre)+(P*Fmax*(dt^2)/100-A*(xi-x_pre)*abs(xi-x_pre))/W1;=(X-xi)/dt;=[vv,v];=[pp,P];_pre=xi; xi=X;=[tt,t];=[XX,X];=t+dt;;P>-100,(v<Vk)=A1;(v>=V1max)=A2;(Vk<=v & v<V1max)=A1-(v-Vk)*(A1-A2)/(V1max-Vk);=[AA,A];=xi+(xi-x_pre)+(P*Fmax*(dt^2)/100-A*(xi-x_pre)*abs(xi-x_pre))/W1;=(X-xi)/dt;=[vv,v];_pre=xi; xi=X;=[pp,P];=P-dP;=[tt,t];=[XX,X];=t+dt;;v>0.02,(v<Vk)=A1;(v>=V1max)=A2;(Vk<=v & v<V1max)=A1-(v-Vk)*(A1-A2)/(V1max-Vk);=xi+(xi-x_pre)+(P*Fmax*(dt^2)/100-A*(xi-x_pre)*abs(xi-x_pre))/W1;=(X-xi)/dt;=[vv,v];=[pp,P];_pre=xi; xi=X;=[tt,t];=[XX,X];=t+dt;;get(handles.ok,'Value')==1(handles.XX_plot,'Visible','On');(handles.XX_plot);;(tt,XX), grid;(handles.vv_plot,'Visible','On');(handles.vv_plot);;(tt,vv), grid(handles.pp_plot,'Visible','On');(handles.pp_plot);;(tt,pp), grid

end


3. Графический интерфейс программы (GUI)

Для удобного вывода рассчитанной информации в среде MATLAB был разработан графический интерфейс, представленный на рис. 1.

Рис.1 Графический интерфейс программы

Для создания интерфейса были использованы следующие компоненты:

1. Radio Button - переключатель кораблей.

2. Axes- поля для построения графиков пройденного пути, скорости и силы тяги.

3. Push Button - кнопки. Change parameters - возможность изменять значения основных ТТД кораблей. ОК - кнопка, при нажатии на которую происходят основные расчеты и вывод графиков. Close - кнопка закрытия окна.

4. Static Text - статический текст. В данной работе была реализована возможность изменения видимости тех или иных частей теста.

5. Edit Text -изменяемый пользователем текст. Возможность редактирования текста появляется при нажатии кнопки Change parameters.

6. Menu - меню, к котором была реализована возможность вывести в командное окно таблицы с результатами работы программы.


4. Результаты исследования программной модели

С помощью созданного интерфейса были получены динамические характеристики трёх типов судов.

Рис.2 Результат работы программы, графики для легкого крейсера "Красный Кавказ"


Таблица 2

Таблица значений основных показателей движения:

С помощью представленных результатов работы программы было определено:

время набора максимальной скорости 14,5м/с - 115 с; при этом корабль проходит расстояние 1009,5 м;

время торможения - 50 с, на расстояние - 402 м;

общее время движения катера составило - 165 с;

общая пройденная кораблем дистанция - 1555.8 м.

Рис.3 Результат работы программы, графики для катера "Тритон"

Таблица 3

Таблица значений основных показателей движения:


С помощью представленных результатов работы программы было определено:

время набора максимальной скорости 14,6м/с - 12 с; при этом корабль проходит расстояние 115.7 м;

время торможения - 9 с, на расстояние - 72.8 м;

общее время движения катера составило - 21 с;

общая пройденная кораблем дистанция - 118.48 м.

Рис.4 Результат работы программы, графики для корабля на подводных крыльях


Таблица 4

Таблица значений основных показателей движения:

С помощью представленных результатов работы программы было определено:

время набора максимальной скорости 16.09м/с - 23 с; при этом корабль проходит расстояние 243.5 м;

время торможения - 12 с, на расстояние - 102.8 м;

общее время движения катера составило - 35 с;

общая пройденная кораблем дистанция - 346 м.


Выводы

При выполнении данной курсовой работы были разработаны математические и программные модели описания движения трёх видов судов. В соответствии с исходными данными при помощи разработанного программного интерфейса в MATLAB были исследованы динамические свойства моделируемых кораблей и получены их динамические характеристики.




1.  Фактори регіональної економіки та розміщення продуктивних сил
2. Дородницын Анатолий Алексеевич.html
3.  Финансы хозяйствующих субъектов представляют собой экономические отношения возникающие в процессе форм
4. Методические рекомендации для студентов по написанию и оформлению выпускной квалификационной дипломной
5. консультант должен отправлять корректные отчеты вовремя Смсотчет
6. На тему- Объекты гражданских прав
7. Вдоль пути движения нефти уменьшаются температура и давление выделяется газ поток охлаждается снижаетс
8. тема ИС это средство организации информационного обеспечения процесса управления способствующее своевр.
9. практическая конференция ИННОВАЦИОННОЕ РАЗВИТИЕ СОВРЕМЕННОЙ НАУКИ 31 ЯНВАРЯ 2014Г
10. вариантов распятий
11. ПРОИСХОЖДЕНИЕ ГОСУДАРСТВА И ПРАВА
12. На тему- СТАНОВЛЕННЯ АДВОКАТУРИ В УКРАЇНІ 1917 1921 рр
13. вариантом английского слова innovtion
14. тема 2 показники
15. 0616013 Фомичева И
16. укажет мышлению на ужасно важное
17. Сущность и роль коммерческого кредита
18. Избранной рады В январе 1547 года при содействии митрополита Макария Иван IV Грозный был торжественно объ
19. мощная держава с населением более 40 млн
20. Развитие переработки мясной продукции Развитие перер