Design and Implementation of a Quadrotor HelicopterHicham Berkouk
This is a project on building a quadrotor from scratch. From the history; physics and modeling to system hardware and software. The control algorithm is built arround a PID loop. For more details, please feel free to comment or send me an email to: hicham.berkouk@outlook.com
Fighter Aircraft Performance, Part I of two, describes the parameters that affect aircraft performance.
For comments please contact me at solo.hermelin@gmail.com.
For more presentations on different subjects visit my website at http://www.solohermelin.com.
This course is to help mechanics understand English better so as to be able to read manuals and communicate regarding problems with the aircraft.
The course focuses on specific vocabulary related to the life of a mechanic and included topics such as system failures, tools etc
Design and Implementation of a Quadrotor HelicopterHicham Berkouk
This is a project on building a quadrotor from scratch. From the history; physics and modeling to system hardware and software. The control algorithm is built arround a PID loop. For more details, please feel free to comment or send me an email to: hicham.berkouk@outlook.com
Fighter Aircraft Performance, Part I of two, describes the parameters that affect aircraft performance.
For comments please contact me at solo.hermelin@gmail.com.
For more presentations on different subjects visit my website at http://www.solohermelin.com.
This course is to help mechanics understand English better so as to be able to read manuals and communicate regarding problems with the aircraft.
The course focuses on specific vocabulary related to the life of a mechanic and included topics such as system failures, tools etc
The objective of this analysis is to quantify the factors that impact the landing distance of a commercial flight and built a linear regression model to predict the risk of landing overrun.
Research Inventy : International Journal of Engineering and Science is published by the group of young academic and industrial researchers with 12 Issues per year. It is an online as well as print version open access journal that provides rapid publication (monthly) of articles in all areas of the subject such as: civil, mechanical, chemical, electronic and computer engineering as well as production and information technology. The Journal welcomes the submission of manuscripts that meet the general criteria of significance and scientific excellence. Papers will be published by rapid process within 20 days after acceptance and peer review process takes only 7 days. All articles published in Research Inventy will be peer-reviewed.
AIRCRAFT PITCH EECE 682 Computer Control Of Dynamic.docxgalerussel59292
AIRCRAFT PITCH
EECE 682
Computer Control Of Dynamic System
Project Report
Boeing Aircraft- Pitch Controller
Example: Dynamics, Modeling, Simulation, Analysis
Instructor:
Dr. Adel Ghandakly
Dept. Electrical and Computer Engineering
California State University, Chico
Submitted By:
Nasser Al Ahbabi
AIRCRAFT PITCH
BOEING AIRCRAFT- PITCH CONTROLLER
Example: Dynamics, Modeling, Simulation, Analysis
by
Nasser Al Ahbabi
California State University, Chico.
NOVEMBER 2014
Abstract
Though airplane has a number of important factors, its stability and control is a key design parameter that must be met. In an airplane
the stability is defined in three angles i.e. pitch, yaw, and roll. In this paper I have focused on the pitch. The system transfer was
AIRCRAFT PITCH
obtained through analyzing the various parameter involved in the pitch control. In all the designs, I considered the design parameter
requirements i.e. the percentage overshoot, steady state error, settling time, and rise time of Boeing aircraft. The designs of pitch
controller using various techniques have been implemented on the system transfer function. I have provided an extension of to these
techniques by using MATLAB/Simulink models that plays an important role in monitoring the results of designed controllers. In
addition, I have also provided a descriptive analysis of the system response to the designed controllers and their conclusions.
Keywords: Aircraft, Pitch, Ackerman, Digitized PID, Diophantine, Optimal Control, Controller , Simulink and MATLAB design.
CONTENTS:
INTRODUCTION
� INTRODUCTION
MATHEMATICAL MODEL
� BOEING AIRCRAFT: PHYSICAL SETUP AND SYSTEM EQUATIONS
� TRANSFER FUNCTION AND STATE-SPACE MODEL
� DESIGN REQUIREMENTS:
CONTROLLER DESIGN
AIRCRAFT PITCH
� DESIGN 1 : DIGITIZED PID
� DESIGN 2 : DIRECT METHOD ( CLOSED FORM)
� DESIGN 3 : DIRECT METHOD ( DIOPHANTINE)
� DESIGN 4 : POLE PLACEMENT (ACKERMAN’S FORMULA)
� DESIGN 5 : OPTIMAL CONTROL
CONCLUSION
REFERENCES
1. INTRODUCTION
Aircrafts are perfect and good examples of a Controller system. They possess unique characteristics that make their controller design a
more challenging problem. On linearization of the model we can attain results with simplified controller designs.
Major parameter in the design of aircrafts entails the horizontal speed, pitch control and the throttle. The throttle controls the main
motor revolutions per minute; the pitch controls the magnitude of the motor thrust. There are two inputs that are independent; the
longitudinal input and the lateral cyclic input. These controls
An aircraft in flight is free to rotate in three dimensions: pitch, nose up or down about an axis running from wing to wing, yaw, nose
left or right about an axis running up and down; and roll, rotation about an axis running from nose to tail. In this .
ENHANCED DATA DRIVEN MODE-FREE ADAPTIVE YAW CONTROL OF UAV HELICOPTERijics
An enhanced data driven model-free adaptive yaw control tracking control scheme is proposed for the yaw
channel of an unmanned-aerial-vehicle (UAV) helicopter which is non-affine in the control input in this paper. Through dynamic linearization and observer techniques, the proposed control algorithm is only based on the pseudo-partial derivative (PPD) parameter estimation derived online from the I/O data of the yaw channel of an UAV helicopter, and Lyapunov-based stability analysis is utilized to prove all signals of
close-loop control system are bounded. Compared with the traditional model free adaptive control
(MFAC), the proposed enhanced MFAC algorithm can make the close-loop control system with stronger robustness and better anti-jamming ability. Finally, simulation results of the UAV yaw channel are offered to demonstrate the effectiveness of the proposed novel control technique.
ENHANCED DATA DRIVEN MODE-FREE ADAPTIVE YAW CONTROL OF UAV HELICOPTERijcisjournal
An enhanced data driven model-free adaptive yaw control tracking control scheme is proposed for the yaw channel of an unmanned-aerial-vehicle (UAV) helicopter which is non-affine in the control input in this paper. Through dynamic linearization and observer techniques, the proposed control algorithm is only based on the pseudo-partial derivative (PPD) parameter estimation derived online from the I/O data of the yaw channel of an UAV helicopter, and Lyapunov-based stability analysis is utilized to prove all signals of close-loop control system are bounded. Compared with the traditional model free adaptive control (MFAC), the proposed enhanced MFAC algorithm can make the close-loop control system with stronger robustness and better anti-jamming ability. Finally, simulation results of the UAV yaw channel are offered to demonstrate the effectiveness of the proposed novel control technique.
#define ENABLE_COMMANDER
#define ENABLE_REPORTER
#include <cctype> // for toupper()
#include <cstdlib> // for EXIT_SUCCESS and EXIT_FAILURE
#include <cstring> // for strerror()
#include <cerrno> // for errno
#include <deque> // for deque (used for ready and blocked queues)
#include <fstream> // for ifstream (used for reading simulated process programs)
#include <iostream> // for cout, endl, and cin
#include <sstream> // for stringstream (for parsing simulated process programs)
#include <sys/wait.h> // for wait()
#include <unistd.h> // for pipe(), read(), write(), close(), fork(), and _exit()
#include <vector> // for vector (used for PCB table)
using namespace std;
class Instruction {
public:
char operation;
int intArg;
string stringArg;
};
class Cpu {
public:
vector<Instruction> *pProgram;
int programCounter;
int value;
int timeSlice;
int timeSliceUsed;
};
enum State {
STATE_READY,
STATE_RUNNING,
STATE_BLOCKED,
STATE_END
};
class PcbEntry {
public:
int processId;
int parentProcessId;
vector<Instruction> program;
unsigned int programCounter;
int value;
unsigned int priority;
State state;
unsigned int startTime;
unsigned int timeUsed;
};
// The number of valid priorities.
#define NUM_PRIORITIES 4
// An array that maps priorities to their allotted time slices.
static const unsigned int PRIORITY_TIME_SLICES[NUM_PRIORITIES] = {
1,
2,
4,
8
};
unsigned int timestamp = 0;
Cpu cpu;
// For the states below, -1 indicates empty (since it is an invalid index).
int runningState = -1; // The index of the running process in the PCB table.
// readyStates is an array of queues. Each queue holds PCB indices for ready processes
// of a particular priority.
deque<int> readyStates[NUM_PRIORITIES];
deque<int> blockedState; // A queue fo PCB indices for blocked processes.
deque<int> deadState;
// In this implementation, we'll never explicitly clear PCB entries and the
// index in the table will always be the process ID. These choices waste memory,
// but since this program is just a simulation it the easiest approach.
// Additionally, debugging is simpler since table slots and process IDs are
// never re-used.
vector<PcbEntry *> pcbTable;
double cumulativeTimeDiff = 0;
int numTerminatedProcesses = 0;
// Sadly, C++ has no built-in way to trim strings:
string &trim(string &argument)
{
string whitespace(" \t\n\v\f\r");
size_t found = argument.find_last_not_of(whitespace);
if (found != string::npos) {
argument.erase(found + 1);
argument.erase(0, argument.find_first_not_of(whitespace));
} else {
argument.clear(); // all whitespace
}
return argument;
}
bool createProgram(const string &filename, vector<Instruction> &program)
{
ifstream file;
int lineNum = 0;
program.clear();
file.open(filename.c_str());
if (!file.is_open()) {
cout << "Error opening file " << filename << ...
Experimental Investigation of Multi Aerofoil Configurations Using Propeller T...ijceronline
This paper briefs about the performance test on multi aero foil configuration on propeller test rig. The airfoils used are a conventional airfoil , a airfoil with stepped configuration and a Clark y airfoil .They were tested for various speed and blade angles using propeller test rig. The result are compared and studied with the conventional airfoil configurations. In future Such Aerofoils can be used for wind Mills for producing the high Voltage Power.
Similar to 3DoF Helicopter Trim , Deceleration manouver simulation, Stability (20)
Final project report on grocery store management system..pdfKamal Acharya
In today’s fast-changing business environment, it’s extremely important to be able to respond to client needs in the most effective and timely manner. If your customers wish to see your business online and have instant access to your products or services.
Online Grocery Store is an e-commerce website, which retails various grocery products. This project allows viewing various products available enables registered users to purchase desired products instantly using Paytm, UPI payment processor (Instant Pay) and also can place order by using Cash on Delivery (Pay Later) option. This project provides an easy access to Administrators and Managers to view orders placed using Pay Later and Instant Pay options.
In order to develop an e-commerce website, a number of Technologies must be studied and understood. These include multi-tiered architecture, server and client-side scripting techniques, implementation technologies, programming language (such as PHP, HTML, CSS, JavaScript) and MySQL relational databases. This is a project with the objective to develop a basic website where a consumer is provided with a shopping cart website and also to know about the technologies used to develop such a website.
This document will discuss each of the underlying technologies to create and implement an e- commerce website.
Event Management System Vb Net Project Report.pdfKamal Acharya
In present era, the scopes of information technology growing with a very fast .We do not see any are untouched from this industry. The scope of information technology has become wider includes: Business and industry. Household Business, Communication, Education, Entertainment, Science, Medicine, Engineering, Distance Learning, Weather Forecasting. Carrier Searching and so on.
My project named “Event Management System” is software that store and maintained all events coordinated in college. It also helpful to print related reports. My project will help to record the events coordinated by faculties with their Name, Event subject, date & details in an efficient & effective ways.
In my system we have to make a system by which a user can record all events coordinated by a particular faculty. In our proposed system some more featured are added which differs it from the existing system such as security.
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Dr.Costas Sachpazis
Terzaghi's soil bearing capacity theory, developed by Karl Terzaghi, is a fundamental principle in geotechnical engineering used to determine the bearing capacity of shallow foundations. This theory provides a method to calculate the ultimate bearing capacity of soil, which is the maximum load per unit area that the soil can support without undergoing shear failure. The Calculation HTML Code included.
Forklift Classes Overview by Intella PartsIntella Parts
Discover the different forklift classes and their specific applications. Learn how to choose the right forklift for your needs to ensure safety, efficiency, and compliance in your operations.
For more technical information, visit our website https://intellaparts.com
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdffxintegritypublishin
Advancements in technology unveil a myriad of electrical and electronic breakthroughs geared towards efficiently harnessing limited resources to meet human energy demands. The optimization of hybrid solar PV panels and pumped hydro energy supply systems plays a pivotal role in utilizing natural resources effectively. This initiative not only benefits humanity but also fosters environmental sustainability. The study investigated the design optimization of these hybrid systems, focusing on understanding solar radiation patterns, identifying geographical influences on solar radiation, formulating a mathematical model for system optimization, and determining the optimal configuration of PV panels and pumped hydro storage. Through a comparative analysis approach and eight weeks of data collection, the study addressed key research questions related to solar radiation patterns and optimal system design. The findings highlighted regions with heightened solar radiation levels, showcasing substantial potential for power generation and emphasizing the system's efficiency. Optimizing system design significantly boosted power generation, promoted renewable energy utilization, and enhanced energy storage capacity. The study underscored the benefits of optimizing hybrid solar PV panels and pumped hydro energy supply systems for sustainable energy usage. Optimizing the design of solar PV panels and pumped hydro energy supply systems as examined across diverse climatic conditions in a developing country, not only enhances power generation but also improves the integration of renewable energy sources and boosts energy storage capacities, particularly beneficial for less economically prosperous regions. Additionally, the study provides valuable insights for advancing energy research in economically viable areas. Recommendations included conducting site-specific assessments, utilizing advanced modeling tools, implementing regular maintenance protocols, and enhancing communication among system components.
Welcome to WIPAC Monthly the magazine brought to you by the LinkedIn Group Water Industry Process Automation & Control.
In this month's edition, along with this month's industry news to celebrate the 13 years since the group was created we have articles including
A case study of the used of Advanced Process Control at the Wastewater Treatment works at Lleida in Spain
A look back on an article on smart wastewater networks in order to see how the industry has measured up in the interim around the adoption of Digital Transformation in the Water Industry.
About
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
• Remote control: Parallel or serial interface.
• Compatible with MAFI CCR system.
• Compatible with IDM8000 CCR.
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
• Easy in configuration using DIP switches.
Technical Specifications
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
Key Features
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
• Remote control: Parallel or serial interface
• Compatible with MAFI CCR system
• Copatiable with IDM8000 CCR
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
Application
• Remote control: Parallel or serial interface.
• Compatible with MAFI CCR system.
• Compatible with IDM8000 CCR.
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
• Easy in configuration using DIP switches.
Vaccine management system project report documentation..pdfKamal Acharya
The Division of Vaccine and Immunization is facing increasing difficulty monitoring vaccines and other commodities distribution once they have been distributed from the national stores. With the introduction of new vaccines, more challenges have been anticipated with this additions posing serious threat to the already over strained vaccine supply chain system in Kenya.
Courier management system project report.pdfKamal Acharya
It is now-a-days very important for the people to send or receive articles like imported furniture, electronic items, gifts, business goods and the like. People depend vastly on different transport systems which mostly use the manual way of receiving and delivering the articles. There is no way to track the articles till they are received and there is no way to let the customer know what happened in transit, once he booked some articles. In such a situation, we need a system which completely computerizes the cargo activities including time to time tracking of the articles sent. This need is fulfilled by Courier Management System software which is online software for the cargo management people that enables them to receive the goods from a source and send them to a required destination and track their status from time to time.
3DoF Helicopter Trim , Deceleration manouver simulation, Stability
1. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
Question 1. Trim calculation in forward flight of a helicopter 3DoF longitudinal model for flight speeds
varying from hover to maximum forward speed.
Trim calculations have been performed using two methods:
1. TU Delft method
2. Bramwell’s method
TU Delft method:
Algorithm to compute main rotor collective 𝜃0 , and longitudinal cyclic 𝜃𝑐 :
𝜈𝑖0 = √
𝑊
2𝜌𝐴
hover induced inflow
𝜆𝑖 =
𝜈 𝑖0
𝑉 𝑡𝑖𝑝
initial starting value for λ
Iteration through fwd. velocity V starting from 0.0 m/s to 100.00 m/s in increments of 0.01 m/s
𝐷𝑓𝑢𝑠 =
1
2
∑ 𝐶𝐷𝑆 𝜌 𝑉2
fuselage drag
𝑇 = √𝑊2 + 𝐷𝑓𝑢𝑠
2
main rotor thrust
𝐶 𝑇 =
𝑇
𝜌𝐴𝑉 𝑡𝑖𝑝
2 thrust coefficient
𝛼 𝐷 =
𝐷 𝑓𝑢𝑠
𝑊
disc angle of attack
𝜇 =
𝑉
𝑉 𝑡𝑖𝑝
tip speed ratio
Now thrust coefficient is recalculated using Glauerts’ theory and iteration is performed using
improved value of 𝜆𝑖 till the difference between 𝐶 𝑇 and 𝐶 𝑇 𝑡𝑒𝑚𝑝
becomes less than 0.0001
do{
𝐶 𝑇 𝑡𝑒𝑚𝑝
= 2 𝜆𝑖√(𝜇 𝑐𝑜𝑠𝛼 𝐷)2 + (𝜇 𝑠𝑖𝑛𝛼 𝐷 + 𝜆𝑖)2
𝜆𝑖 = 𝜆𝑖 − 0.000001
} while(( 𝐶 𝑇 − 𝐶 𝑇 𝑡𝑒𝑚𝑝
)<= 0.0001)
Determinant computation using crammer’s rule
𝐷𝑒𝑡 = [
1 +
3
2
𝜇2
−
8
3
𝜇
−𝜇
2
3
+ 𝜇2
] eq. (121) AE4-314 reading
Det = 0.67-0.67*𝜇2
+1.5*𝜇4
𝑎1 =
(−2𝜇2
𝐷 𝑓𝑢𝑠
𝑊
)−(2𝜇𝜆𝑖)
𝐷𝑒𝑡
𝑎1 = 𝜃𝑐
𝜃0 =
4𝐶 𝑇
𝜎 𝑐 𝑙𝛼
+(𝜇
𝐷 𝑓𝑢𝑠
𝑊
)+(𝜆𝑖)
𝐷𝑒𝑡
The above algorithm was implemented using C++ in a source code named ‘trim.cpp’. It was compiled using
Dev-C++ V 7.4.2. It creates a .csv file named ‘trim.csv’ in the directory were trim.exe is located.
trim.csv data was analysed and plotted using MS EXCEL and is shown below in Fig 01.
2. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
Source code listing of trim.cpp
/**************************************************************************
Trim of the helicopter using 3DoF longitudinal model for forward speeds
ranging from hover to maximum speed.
-Deepak Paul Tirkey
References:1. Memo M-756 by MD Pavel
2. Helicopter Performance stability and control
AE4-213 reading by T Van Holten
3. Lecture slides AE4-213 TU Delft by MD Pavel
4. Helicopter Flight Dynamics by G Padfield
for Bo105 data
**************************************************************************/
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
//Bo105 Helicopter data declaration and initialization
double M=2200; //mass of the helicopter (kg)
double R=4.91; //radius
double V=0.0; //velocity (m/s)
double Dfus=0.0; //Fuselage drag force
double CDS=1.673; //Drag coeffi * Equivalent flat plate area
double W=0.0; //weight of the helicopter
double T=0.0; //rotor thrust
double CT=0.0; //thrust coeffi
double rho=1.225; //density ISA in kg/m^2
double Vtip=218; //Omega*R (m/sec)
double A=0.0; //rotor disc area Pi*R^2 (m^2)
double nui0=0.0; //nui for hovering case
double mu=0.0; //advance ratio
double lambdai=0.0; //induced inflow ratio
double sigma=0.07; //solidity
double cla=5.73; //lift curve slope
double a1=0.0; //longitudinal disc tilt angle
double thetac=0.0; //longitudinal cyclic
double theta0=0.0; //collective
double alfaD = 0.0; //Disc angle of attack
double CTtemp=0.0; //temporary storage of CT
double Det=0.0; //for calculation of a1 and theta0
//creates a csv file named trim.csv in the working directory
ofstream myfile;
myfile.open ("trim.csv");
int MSE=5;
int percent=25;
3. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
W = M*9.81;
A = 3.14159*R*R;
//inserts heading into the trim.csv file
myfile <<"V (m/s)"<<","<<"thetaC (deg)"<<","<<"theta0 (deg)"<<endl;
nui0 = sqrt(W/(2*rho*A)); //Hover induced inflow
lambdai = nui0/Vtip; //initial starting value for lambda
for(V=0.0;V<100.0;) //iterate through helicopter velocity
{
Dfus = 0.5*CDS*rho*V*V; //fuselage drag
T = sqrt(W*W+Dfus*Dfus); //rotor thrust
CT = T/(rho*Vtip*Vtip*A);//thrust coeffi
alfaD = Dfus/W; //disc AoA
mu = V/Vtip; //tip speed ratio
do{
CTtemp =2*lambdai*sqrt((mu*cos(alfaD))*(mu*cos(alfaD))+
((mu*sin(alfaD))+lambdai)*((mu*sin(alfaD))+lambdai));
lambdai-=0.000001; //decrement of lambdai
}while((CT-CTtemp)<= 0.0001); //convergence criteria
Det = 0.67-0.67*mu*mu+1.5*mu*mu*mu*mu; //crammer rule eq. 121 (ref.2)
a1 = ((-2*mu*mu*Dfus/W)-(2*mu*lambdai))/Det;
theta0 = ((4*CT)/(sigma*cla)+mu*Dfus/W+lambdai)/Det;
myfile <<V<<","<<a1*-57.2958<<","<<theta0*57.2958<<endl;
printf("n V = %f",V);
V = V+0.01; //fwd velocity increment
}
myfile.close(); //close trim.csv file
printf("n Trim calculation complete");
printf("n trim.csv file created in the working directory");
printf("n press any key to continue");
getch();
return 0;
}
/*************************************************************************/
4. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
Fig.01 Trim values of 𝜃0 and 𝜃𝑐 as a function of forward velocity
Bramwell’s method:
Algorithm to compute main rotor collective 𝜃0 , and longitudinal cyclic 𝜃𝑐(𝐵1) using Bramwell’s Helicopter
Dynamics:
𝑤𝑐 =
𝑊
𝜌𝑠𝐴Ω2 𝑅2 weight coefficient
s solidity
𝐴 = 𝜋𝑅2
area of main rotor disc
𝑡 𝑐 𝐷
= 𝑤𝑐 thrust coefficient in Disc plane
ℎ 𝑐 𝐷
=
1
4
𝜇𝛿 H force coefficient, where δ=0.013 blade profile drag coefficient
𝛼 𝐷 = −
(
1
2
𝑉̂2 𝑑0+ℎ 𝑐 𝐷
)
𝑡 𝑐 𝐷
angle of attack of Disc plane, where 𝑉̂ =
𝑉
Ω𝑅
and 𝑑0 =
𝑆 𝐹𝑃
𝑠𝐴
where 𝑆 𝐹𝑃 is equivalent flat plate area
𝜆 𝐷 = 𝑉̂ 𝑠𝑖𝑛𝛼 𝐷 − 𝜆𝑖
𝜆𝑖 = 𝜈𝑖0
̅̅̅̅
𝜈0
Ω𝑅
𝜈0 = √
𝑊
2𝜌𝐴
hover induced velocity
𝑉̅ = 𝑉̂ Ω𝑅
𝜈0
5. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
𝜈𝑖0
̅̅̅̅ = √−
𝑉̅2
2
+ √
𝑉̅4
4
+ 1
With 𝜆 𝐷 value obtained, calculate collective pitch from
𝑡 𝑐 𝐷
=
𝑎
4
[
2
3
𝜃0
1−𝜇2+
9
4
𝜇4
1+
3
2
𝜇2
+ 𝜆 𝐷
1−
𝜇2
2
1+
3
2
𝜇2
]
or 𝜃0 =
3
2
[𝑡 𝑐 𝐷
(
4
𝑎
) − 𝜆 𝐷
1−
𝜇2
2
1+
3
2
𝜇2
] [
1+
3
2
𝜇2
1−𝜇2+
9
4
𝜇4
]
With 𝜃0 obtained previously, calculate 𝑎1
𝑎1 =
2𝜇(
4
3
𝜃0+𝜆 𝐷)
1+
3
2
𝜇2
Longitudinal cyclic pitch 𝐵1
𝐵1 = 𝑎1 +
ℎ 𝑐 𝐷
𝑤 𝑐
Where 𝜇 =
𝑉𝑐𝑜𝑠𝛼 𝑛𝑓
Ω𝑅
and 𝜇 𝐷 =
𝑉𝑐𝑜𝑠𝛼 𝐷
Ω𝑅
The above algorithm was implemented using C++ in a source code named ‘bramwelltrim.cpp’. It was compiled
using Dev-C++ V 7.4.2. It creates a .csv file named ‘bramwelltrim.csv’ in the directory were bramwelltrim.exe
is located.
bramwelltrim.csv data was analysed and plotted using MS EXCEL and is shown below in Fig 02.
Source code listing of bramwelltrim.cpp
/**************************************************************************
Trim of the helicopter using 3DoF longitudinal model for forward flight
speeds ranging from zero (hover) to maximum speed.
-Deepak Paul Tirkey
References:1. Bramwell's Helicopter Dynmaics
**************************************************************************/
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
//Bo105 Helicopter data declaration and initialization
float W=21582; //weight of the helicopter (N)
float R=4.91; //radius
float s=0.07; //solidity sigma
float tcD=0.0; //thrust coefficient
float wC=0.0; //weight coefficient
6. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
float hcD=0.0; //H force coefficient
float d=0.013; //blade profile drag coefficient
float SFP=2.3; //equivalent flat plate area
float A=0.0; //rotor area
float d0=0.0; //ratio of SFP/sA
float mu=0.0;
float V=0.0; //helicopter velocity
float Vcap=0.0; //Vcap
float Vtip=218; //tip speed Omega*R (m/s)
float Vbar=0.0;
float nu0=0.0;
float rho=1.225;
float nui0bar=0.0;
float lambdai=0.0;
float alfaD=0.0;
float lambdaD=0.0;
float theta0=0.0; //collective
float a=5.73; //lift curve slope
float a1=0.0; //longitudinal disk tilt
float B1=0.0; //longitudinal cyclic
//creates a csv file named bramwelltrim.csv in the working directory
ofstream myfile;
myfile.open ("bramwelltrim.csv");
int MSE=5;
int percent=25;
//inserts heading into the bramwelltrim.csv file
Myfile <<"velo. (m/s)"<<","<<"theta0(deg)"<<","<<"thetaC(deg)"<<endl;
A = 3.14159*R*R;
d0=SFP/(s*A);
nu0 = sqrt(W/(2*rho*A)); //Hover induced inflow
for(V=0.0;V<100.0;) //iteration through helicopter velocity
{
Vcap = V/Vtip;
Vbar=V/nu0;
wC=W/(rho*s*A*Vtip*Vtip);
tcD=wC;
mu=V/Vtip; //first approximation
hcD=0.25*mu*d;
nui0bar=sqrt(-0.5*Vbar*Vbar+sqrt(0.25*Vbar*Vbar*Vbar*Vbar+1));
lambdai = nui0bar*nu0/Vtip;
alfaD=(-0.5*Vcap*Vcap*d0+hcD)/tcD;
lambdaD=Vcap*sin(alfaD)-lambdai;
mu=Vcap*cos(alfaD);
theta0=((4*tcD/a)-lambdaD*(1-0.5*mu*mu)
/(1+1.5*mu*mu))*1.5*(1+1.5*mu*mu)/(1-mu*mu+2.25*mu*mu*mu*mu);
7. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
a1=2*mu*(1.33*theta0+lambdaD)/(1+1.5*mu*mu);
hcD=0.25*mu*d; //recalculation of hcD with improved mu
B1=a1+hcD/wC;
myfile <<V<<","<<theta0*57.2958<<","<<B1*57.2958<<endl;
V=V+0.2; //velocity increment by 0.2 m/s
}
myfile.close(); //close bramwelltrim.csv file
printf("n Trim calculation complete");
printf("n bramwelltrim.csv file created in the working directory");
printf("n press any key to continue");
getch();
return 0;
}
/*************************************************************************/
Fig.02 Trim values of 𝜃0 and 𝜃𝑐 as a function of forward velocity
8. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
Question 2. Manoeuvre simulation: perform a numerical simulation and fly a DECELERATION
MANOEUVRE as part of Acceleration Deceleration manoeuver given by ADS-33.
Develop a P, PI or PID Pilot model to fly the manoeuvre.
DECELERATION MANOUVER SIMULATION USING 3DOF LONGITUDINAL MODEL
The simulation has been implemented in C++ programming language and has the following major
components:
1. 3DoF longitudinal helicopter model
2. PID pilot model
3. Output data logging in .csv file format which can be analysed later using MS Excel
Two separate simulations have been carried out:
A. 3dofsim01.cpp From 0 sec to 150 sec the helicopter attains fwd speed of 50 m/s . At 150 sec
deceleration manoeuvre is initiated.
B. 3dofsim02.cpp From 0 sec itself deceleration manoeuvre is initiated.
3DOF LONGITUDINAL HELICOPTER MODEL
3DoF helicopter model as described in reading AE4-314 by Theo Van Holten has been adapted with
the exception of 𝜈𝑖. Quasi dynamic inflow with a time constant of 𝜏 = 0.1 𝑠𝑒𝑐 has been
implemented.
PID PILOT MODEL
LONGITUDINAL CYCLIC CONTROL:
𝜃𝑐 = 𝑘1(𝜃𝑓 − 𝜃𝑓𝑑𝑒𝑠𝑖) + 𝑘2 𝑞 + 𝑘3 ∫ (𝜃𝑓 − 𝜃𝑓𝑑𝑒𝑠𝑖)𝑑𝜏
𝑡
0
eq. 01
𝜃𝑓𝑑𝑒𝑠𝑖 = 𝑘4(𝑥 𝑑𝑒𝑠𝑖 − 𝑥) + 𝑘5 𝑢 + 𝑘6 ∫ (𝑥 𝑑𝑒𝑠𝑖 − 𝑥)𝑑𝜏
𝑡
0
eq. 02
COLLECTIVE CONTROL:
𝜃0 = 𝜃0 𝑔𝑒𝑛
+ 𝑘7(𝑐 𝑑𝑒𝑠𝑖 − 𝑐) + 𝑘8 ∫ (𝑐 𝑑𝑒𝑠𝑖 − 𝑐)𝑑𝜏
𝑡
0
eq. 03
𝑐 𝑑𝑒𝑠𝑖 = 𝑘9(ℎ 𝑑𝑒𝑠𝑖 − ℎ) + 𝑘10 𝑐 eq. 04
GAINS:
GAIN k1 k2 k3 k4 k5 k6 k7 k8 k9 k10
VALUE 0.890 0.60 0.07 -0.000569 0.0168 0.00 0.06 0.050 0.0386 0.890
C++ PROGRAM VARIABLES:
LONGITUDINAL CYCLIC CONTROL:
dxdot 𝑥 𝑑𝑒𝑠𝑖 − 𝑥
dx ∫ (𝑥 𝑑𝑒𝑠𝑖 − 𝑥)𝑑𝜏
𝑡
0
thetafdesi 𝜃𝑓𝑑𝑒𝑠𝑖
9. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
eq. 02 in terms of program variables:
thetafdesi=k4*dxdot+k5*u+k6*dx
dtfdot 𝜃𝑓 − 𝜃𝑓𝑑𝑒𝑠𝑖
dtf ∫ (𝜃𝑓 − 𝜃𝑓𝑑𝑒𝑠𝑖)𝑑𝜏
𝑡
0
eq. 01 in terms of program variables:
thetac=k1*(dtfdot*180/3.14)+k2*q*180/3.14+k3*dtf*180/3.14
thetac=thetac*3.14/180
COLLECTIVE CONTROL:
dcdot 𝑐 𝑑𝑒𝑠𝑖 − 𝑐
dc ∫ (𝑐 𝑑𝑒𝑠𝑖 − 𝑐)𝑑𝜏
𝑡
0
eq. 04 in terms of program variables:
cdesi=k9*(htdesi-ht)+k10*c
eq. 03 in terms of program variables:
theta0=(5.00*3.14/180)+k7*dcdot+k8*dc
OUTPUT DATA LOGGING
At the end of the program run a file named helisim.csv is generated in the directory where the
executable 3dofsim01.exe or 3dofsim02.exe is located.
PID TUNING
The gains of the PID were determined by trial and error.
A. 3dofsim01.cpp PROGRAM SOURCE CODE
/**************************************************************************
3DoF longitudinal Helicopter simulator for MBB Bo105 helicopter for
deceleration manoeuvre with PID pilot model.
Deepak Paul Tirkey
References:1. Memo M-756 by MD Pavel
2. Helicopter Performance stability and control AE4-213 reading
3. Lecture slides AE4-213 TU Delft by MD Pavel
**************************************************************************/
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
10. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
double m=2200.00; //mass of the helicopter (kg)
double Iy=4973.00; //pitch moment of inertia kg-m^2
double CDS=1.673; //equivalent flat plate area NASA CR 3579
double omega=44.4012; //rotor rad/sec
double R=4.91; //rotor radius
double gamma=5.07; //Locks inertia number
double a=5.7; //lift curve slope
double sigma=0.075; //solidity ratio
double rho=1.225; //density at ISA
double g=9.81;
double h=0.945; //height of the rotor above cg
double step=0.01; //for looping
double number=0;
//control variables
double theta0=8.7*3.14/180; //collective
double thetac=0.00*3.14/180; //longitudinal cyclic
//state variables
double u=00.001; //initial velo
double udot=0.0;
double w=0.0;
double wdot=0.0;
double q=0.0;
double qdot=0.0;
double thetaf=0.00*3.14/180; //fuselage pitch attitude (-ve nose down)
double thetafdot=0.0*3.14/180;
double V=0.0; //velocity of the helicopter (m/s)
double c=0.0; // vertical velo
double ht=0.00; //height above ground
double z=0.0;
double zdot=0.0;
double alfac=0.0*3.14/180; //AoA of CP
double mu=0.0; //advance ratio
double lambdac=0.0; //total inflow ratio w.r.t. control plane
double lambdai=sqrt(m*g/(3.14*R*R*2*rho))/(omega*R);//induced inflow
ratio
double lambdaidot=0.0;
double tau=0.1; //time lag
double a1=0.0*3.14/180; //longitudinal disk tilt
double CTbem=0.0; //thrust coeffi through BEM theory
double CTglau=0.0; //thrust coeffi through Glauert
double A=0.0,B=0.0; //for CTglau calculation
double T=0.0; //thrust
double D=0.0; //drag
double phi=0.0*3.14/180;
double dtf=0.0;
double dtfdot=0.0;
double x=0.0;
double xdot=0.0;
double dx=0.0;
double dxdot=0.0;
double dc=0.0;
double dcdot=0.0;
double thetafdesi=0.0*3.14/180; // in rad
double xdesi=5866.74+2000.00; // 2 km from start of deceleration
11. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
double cdesi=0.0;
double htdesi=100.00; //100 m altitude
//gains for PID pilot model
/*******for longitudinal cyclic**************************************/
double k1=0.890; //k1*(thetaf-thetafdesi)
double k2=0.60; //k2*q
double k3=0.07; //k3*INTEGRAL(thetaf-thetafdesi)
double k4=-0.000569; //k4*(xdesi-x)
double k5=0.0168; //k5*u
double k6=0.00; //k6*INTEGRAL(xdesi-x)
/*******for collective***********************************************/
double k7=0.06; //k7*(cdesi-c)
double k8=0.050; //k8*INTEGRAL(cdesi-c)
double k9=0.0386; //k9*(htdesi-ht)
double k10=0.890; //k10*c
/*******end of PID gains*********************************************/
//creates a csv file named helisim.csv in the working directory
ofstream myfile;
myfile.open ("helisim.csv");
int MSE=5;
int percent=25;
//inserts heading into the helisim.csv file
myfile <<"Time (s)"<<","<<"u (m/s)"<<","<<"thetaf(deg)"<<","<<"theta0
(deg)"<<","<<"thetac (deg)"<<","<<"Hori. dist. (m)"<<","<<"Height
(m)"<<","<<"vertical velo. (m/s)"<<","<<"w (m/s)" <<","<<"q"<<endl;
for(number=0;number<=300;)
{
// correction for alfac
if(u==0.0){ if(w>0.0) phi=1.57;
else if(w==0.00) phi=0.0;
else phi=-1.57;}
else phi=atan(w/u);
if(u<0.0) phi=phi+3.14;
alfac = thetac-phi;
V = sqrt(u*u+w*w); //helicopter fwd velocity
mu = (V/(omega*R))*cos(alfac);
lambdac = (V/(omega*R))*sin(alfac);
//calculate longitudinal disk tile angle
a1 = (2.67*mu*theta0-2*mu*(lambdac+lambdai)-(16*q)/(gamma*omega))/
(1-0.5*mu*mu);
//Thrust coeffi according to BEM theory
CTbem = 0.25*a*sigma*(0.67*theta0*(1+1.5*mu*mu)-(lambdac+lambdai));
//Thrust coefficient according to Glauert theory
A = (V*cos(alfac-a1)/(omega*R))*(V*cos(alfac-a1)/(omega*R));
B = (V*sin(alfac-a1)/(omega*R)+lambdai)*
(V*sin(alfac-a1)/(omega*R)+lambdai);
CTglau = 2*lambdai*sqrt(A+B);
12. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
T = 3.14*CTbem*rho*omega*omega*R*R*R*R;
D = CDS*0.5*rho*V*V;
/********Euler integration *****************************************/
udot = -g*sin(thetaf)-(D*u)/(m*V)+T*sin(thetac-a1)/m-q*w;
wdot = g*cos(thetaf)-(D*w)/(m*V)-T*cos(thetac-a1)/m+q*u;
qdot = -T*h*sin(thetac-a1)/Iy;
thetafdot =q;
xdot = u*cos(thetaf)+w*sin(thetaf);
zdot =-c;
lambdaidot = (CTbem-CTglau)/tau;
u += udot*step;
w += wdot*step;
q += qdot*step;
thetaf += thetafdot*step;
x +=xdot*step;
z +=zdot*step;
lambdai += lambdaidot*step;
/********PID pilot action*******************************************/
//longitudinal cyclic control
if(number==150){xdesi=5866.74+2000.00;}
dxdot=xdesi-x;
dx=dx+dxdot*step;
thetafdesi=k4*dxdot+k5*u+k6*dx;
if(number<150){thetafdesi=-7.00*3.14/180;}
dtfdot=thetaf-thetafdesi;
dtf=dtf+dtfdot*step;
thetac=k1*(dtfdot*180/3.14)+k2*q*180/3.14+k3*dtf*180/3.14;
thetac=thetac*3.14/180; //final longi cyclic control
//collective control
c=u*sin(thetaf)-w*cos(thetaf);
ht=-z;
cdesi=k9*(htdesi-ht)+k10*c;
dcdot=(cdesi-c);
dc=dc+dcdot*step;
theta0=(5.00*3.14/180)+k7*dcdot+k8*dc; //final collective control
/*******End of PID pilot action*******************************************/
printf("n number=%f",number);
myfile <<number<<","<<u<<","<<thetaf*57.325<<","<<theta0*57.325<<","
<<thetac*57.325<<","<<x<<","<<ht<<","<<c<<","<<w<<","<<q<<endl;
number +=step;
} // end of for loop
myfile.close(); //close helisim.csv file
printf("n simulation complete ");
printf("n helisim.csv file created in the working directory");
printf("n press any key to continue");
getch();
return 0;
}
13. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
/*************************************************************************/
SIMULATION RESULT ANALYSIS
Fig.03 Deceleration manoeuvre simulation result
Deceleration manoeuvre has been carried out in 4 phases. (refer Fig. 03)
Phase 1: Helicopter starts with zero forward velocity, zero altitude
Phase 2: Helicopter builds up forward velocity of about 50 m/s, attains an altitude of 100 m.
This phase of the flight lasts up to 150 second.
Phase 3 & 4: Deceleration part of the manoeuver starts at 150 second. The objective of this
flight phase is to stop after 2 km from this point on while maintaining constant altitude and
hold the hover for at least 5 seconds.
The simulation state variables have been plotted in different figures below.
Fig.04 Plot of Horizontal distance covered (m x 50), Altitude (m) and u (m/sec)
Fig.05 Plot of 𝜃𝑓𝑢𝑠𝑒 Fuselage pitch attitude (degree)
Fig.06 Plot of 𝜃0 Main rotor collective (degree)
Fig.07 Plot of 𝜃𝑐 Longitudinal cyclic (degree)
Fig.08 Plot of 𝜃𝑐 Longitudinal cyclic (degree) from 145 second to 180 second
Fig.09 Plot of Vertical velocity (m/s) and w (m/s)
Fig.10 Plot of q (rad/s)
14. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
Fig.04 Plot of Horizontal distance covered (m x 50), Altitude (m) and u (m/sec)
ALTITUDE (m): The simulation starts with 0 m altitude which rises rapidly to settle at 100 m height
after a small oscillation and remains constant throughout except at 150 second when the
deceleration manoeuvre is initiated. When the longitudinal cyclic stick is pulled back to slowdown
the forward velocity of the helicopter, the nose of the helicopter pitches up and the helicopter
begins to climb. Main rotor collective is lowered to maintain the altitude.
U (m/s): The simulation starts with 0.001 m/s speed (to avoid numerical instability) and builds up a
speed of 50 m/s during phase 2. At 150 second (phase 3) when the deceleration is initiated, the
speed is gradually reduced to 0 m/s as the target is reached in phase 4.
HORIZONTAL DISTANCE (m x 50): The requirement of the deceleration manoeuvre is to stop at a
target after 2 km from the point of initiation of the deceleration. As my simulation starts with 0 m/s
fwd speed and builds up speed upto 50 m/s , the helicopter already covers a horizontal distance of
5866.74 meters upto phase 3. Therefore, the deceleration manoeuvre is continued for
5866.74+2000.00 meters.
15. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
Fig.05 Plot of 𝜃𝑓𝑢𝑠𝑒 Fuselage pitch attitude (degree)
Helicopter starts from hover with 0 pitch attitude, attains an initial (larger) nose down pitch attitude
of - 7.2 degree which reduces to -6.3 degree during phase 2. During phase 2 of flight helicopter
attains a forward speed of about 50 m/s. At 150 second (phase 3) when deceleration is abruptly
initiated, the nose pitches up to +31.7 degree (at 151 sec) and the helicopter rapidly loses forward
speed. By 210 sec the fuselage pitch becomes 0 again as the helicopter reaches the target and begins
to hover.
Fig.06 Plot of 𝜃0 Main rotor collective (degree)
During phase 1, initially the main rotor collective is 18.3 degree which momentarily increases to 18.9
degree and falls rapidly and settles at 7.8 degree during (phase 2) 50 m/s forward flight. At 150
second when the deceleration manoeuvre is initiated, main rotor collective is lowered rapidly from
7.7 degree to prevent rise in altitude as the longitudinal cyclic is pulled back to initiate deceleration.
During phase 4 , collective is held at 8.15 degree to hover above the target.
16. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
Fig.07 Plot of 𝜃𝑐 Longitudinal cyclic (degree)
Fig.08 Plot of 𝜃𝑐 Longitudinal cyclic (degree) from 145 second to 180 second
Looking at both the Fig 07 and Fig 08; At phase 1, longitudinal cyclic is 6.2 degree. Which
falls to 0 and gradually rises to 3.5 degree (phase 2) during which the helicopter attains a
forward speed of 50 m/s. At 150 second, the pilot rapidly pulls back the longitudinal stick
back to decrease the forward speed and then forward to 8.4 degree and then gradually
lowers to 0 degree to bring the helicopter to hover above the target.
[note: at the start (phase 1) and initiation of deceleration (phase 3), the controls take time to
stabilize and exhibit unrealistic values, after stabilization the values obtained are
reasonable]
17. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
Fig.09 Plot of Vertical velocity (m/s) and w (m/s)
Vertical velocity starts with 0 m/s at phase 1 and rapidly increases to 23 m/s till 100 m of
altitude is attained. As the altitude overshoots and oscillates about 100 m, the vertical
velocity too oscillates about 0 m/s. The same observations repeat at 150 second.
Fig.10 Plot of q (rad/s)
Except at time 0 sec and 150 second the q remains nearly zero during stable phases (2 and
4) of forward flight at 50 m/s and hover after reaching the target.
B. 3dofsim02.cpp PROGRAM SOURCE CODE
/*******************************************************************
3DoF longitudinal Helicopter simulator for MBB Bo105
Deepak Paul Tirkey
References:1. Memo M-756 by MD Pavel
18. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
2. Helicopter Performance stability and control
AE4-213 reading by T Van Holten
3. Lecture slides AE4-213 TU Delft by MD Pavel
*******************************************************************/
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
double m=2200.00; //mass of the helicopter (kg)
double Iy=4973.00; //pitch moment of inertia kg-m^2
double CDS=1.673; //equi flat plate area NASA CR 3579
double omega=44.4012; //rotor rad/sec
double R=4.91; //rotor radius
double gamma=5.07; //Locks inertia number
double a=5.7; //lift curve slope
double sigma=0.075; //solidity ratio
double rho=1.225; //density at ISA
double g=9.81;
double h=0.945; //height of the rotor above cg
double step=0.01; //for looping
double number=0;
//control variables
double theta0=8.7*3.14/180; //collective
double thetac=4.3*3.14/180; //longitudinal cyclic
//state variables
double u=50.00; //initial velo 50 m/s
double udot=0.0;
double w=0.0;
double wdot=0.0;
double q=0.0;
double qdot=0.0;
double thetaf=-7.3*3.14/180; //fuselage pitch attitude
double thetafdot=0.0*3.14/180;
double V=0.0; //velocity of the helicopter (m/s)
double c=0.0; // vertical velo
double ht=0.0; //height above ground
double z=0.0;
double zdot=0.0;
19. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
double alfac=0.0*3.14/180; //AoA of CP
double mu=0.0; //advance ratio
double lambdac=0.0; //total inflow ratio w.r.t. CP
double lambdai=sqrt(m*g/(3.14*R*R*2*rho))/(omega*R); //induced
inflow ratio
double lambdaidot=0.0;
double tau=0.1; //time lag
double a1=0.0*3.14/180; //longitudinal disk tilt
double CTbem=0.0; //thrust coeffi through BEM theory
double CTglau=0.0; //thrust coeffi through Glauert
double A=0.0,B=0.0; //for CTglau calculation
double T=0.0; //thrust
double D=0.0; //drag
double phi=0.0*3.14/180;
double dtf=0.0;
double dtfdot=0.0;
double x=0.0;
double xdot=0.0;
double dx=0.0;
double dxdot=0.0;
double dc=0.0;
double dcdot=0.0;
double thetafdesi=0.0*3.14/180; // in rad
double xdesi=2000.0; // 2 km from starting point
double cdesi=0.0;
double htdesi=100; //100 m above ground
//gains for PID pilot model
/*****for longitudinal cyclic*********************************/
double k1=0.890; //k1*(thetaf-thetafdesi)
double k2=0.60; //k2*q
double k3=0.000143; //k3*INTEGRAL(thetaf-thetafdesi)
double k4=-0.000569; //k4*(xdesi-x)
double k5=0.0138; //k5*u
double k6=0.00; //k6*INTEGRAL(xdesi-x)
/*******for collective****************************************/
double k7=0.06; //k7*(cdesi-c)
double k8=0.050; //k8*INTEGRAL(cdesi-c)
double k9=0.0386; //k9*(htdesi-ht)
double k10=0.890; //k10*c
/*******end of PID gains**************************************/
//creates a csv file named helisim.csv in the working directory
ofstream myfile;
myfile.open ("helisim.csv");
20. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
int MSE=5;
int percent=25;
//inserts heading into the helisim.csv file
myfile <<"number"<<","<<"V m/s"<<","<<"thetaf deg"<<","<<"theta0
deg"<<","<<"thetac deg"<<","<<"x"<<","<<"ht"<<endl;
for(number=0;number<=200;)
{
// correction for alfac
if(u==0.0){ if(w>0.0) phi=1.57;
else if(w==0.00) phi=0.0;
else phi=-1.57;}
else phi=atan(w/u);
if(u<0.0) phi=phi+3.14;
alfac = thetac-phi;
V = sqrt(u*u+w*w); //helicopter fwd velocity
mu = (V/(omega*R))*cos(alfac);
lambdac = (V/(omega*R))*sin(alfac);
//calculate longitudinal disk tile angle
a1 = (2.67*mu*theta0-2*mu*(lambdac+lambdai)-
(16*q)/(gamma*omega))/(1-0.5*mu*mu);
//Thrust coeffi according to BEM theory
CTbem = 0.25*a*sigma*(0.67*theta0*(1+1.5*mu*mu)-
(lambdac+lambdai));
//Thrust coefficient according to Glauert theory
A = (V*cos(alfac-a1)/(omega*R))*(V*cos(alfac-a1)/(omega*R));
B = (V*sin(alfac-a1)/(omega*R)+lambdai)*(V*sin(alfac-a1)/
(omega*R)+lambdai);
CTglau = 2*lambdai*sqrt(A+B);
T = 3.14*CTbem*rho*omega*omega*R*R*R*R;
D = CDS*0.5*rho*V*V;
/********Euler integration **********************************/
udot = -g*sin(thetaf)-(D*u)/(m*V)+T*sin(thetac-a1)/m-q*w;
wdot = g*cos(thetaf)-(D*w)/(m*V)-T*cos(thetac-a1)/m+q*u;
qdot = -T*h*sin(thetac-a1)/Iy;
21. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
thetafdot =q;
xdot = u*cos(thetaf)+w*sin(thetaf);
zdot =-c;
lambdaidot = (CTbem-CTglau)/tau;
u += udot*step;
w += wdot*step;
q += qdot*step;
thetaf += thetafdot*step;
x +=xdot*step;
z +=zdot*step;
lambdai += lambdaidot*step;
/********PID pilot action************************************/
//longitudinal cyclic control
dxdot=xdesi-x;
dx=dx+dxdot*step;
thetafdesi=k4*dxdot+k5*u+k6*dx;
dtfdot=thetaf-thetafdesi;
dtf=dtf+dtfdot*step;
thetac=k1*(dtfdot*180/3.14)+k2*q*180/3.14+k3*dtf*180/3.14;
thetac=thetac*3.14/180; //final longi cyclic control
//collective control
c=u*sin(thetaf)-w*cos(thetaf);
ht=-z;
cdesi=k9*(htdesi-ht)+k10*c;
dcdot=(cdesi-c);
dc=dc+dcdot*step;
theta0=(5.01*3.14/180)+k7*dcdot+k8*dc;//final colle control
/*******End of PID pilot action******************************/
printf("n number=%f",number);
myfile
<<number<<","<<V<<","<<thetaf*57.325<<","<<theta0*57.325
<<","<<thetac*57.325<<","<<x<<","<<ht<<endl;
number +=step;
} // end of for loop
myfile.close(); //close helisim.csv file
printf("n end of simulation ");
getch();
return 0;
}
/******************************************************************/
22. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
SIMULATION RESULT ANALYSIS
Fig.11 Deceleration manoeuvre simulation result
Helicopter starts with 50 m/s forward velocity.
Deceleration part of the manoeuver starts at 0 second. The objective of this manoeuvre is to stop
after 2 km from this point on while maintaining constant altitude and hold the hover for at least 5
seconds after reaching the target.
The simulation state variables have been plotted in different figures below.
Fig.12 Plot of Horizontal distance covered (m x 50) and Altitude (m)
Horizontal distance of 2000 m from start is covered within 134 second.
Simulation starts with 0 altitude, after an initial overshoot upto 108 m in 10 second, the altitude
settles at 100 meter.
23. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
Fig.13 Plot of forward velocity V (m/s)
The simulation starts with 50 m/s forward speed, due to initial nose down pitch attitude, the speed
increases upto 61 m/s and then gradually reduces to zero after reaching the target (2 km)
Fig. 14 Plot of 𝜃𝑓𝑢𝑠𝑒 Fuselage pitch attitude (degree), 𝜃0 Main rotor collective (degree) and
𝜃𝑐 Longitudinal cyclic (degree)
𝜃𝑓𝑢𝑠𝑒 starts with -7.3 degree which increases further to -14 degree. With longitudinal cyclic
stick gradually pulled back; 𝜃𝑓𝑢𝑠𝑒 begins to come to zero but overshoots and settles at zero
after reaching the target. 𝜃𝑐 is gradually reduced from 16 degree to 0 degree on reaching
24. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
the target. 𝜃0 starts from 20.8 degree, initially rises upto 22 degree then falls rapidly to 5
degree, then gradually attains hover value of 8.15 degree when target is reached.
Question 3. Stability: For the chosen helicopter, calculate the frequency and damping
characteristics of the phugoid mode in hover using phugoid approximation. Show how the
PID controllers developed to fly the manoeuvre are affecting the phugoid mode
characteristics (frequency and damping)
STABILITY DERIVATIVE CALCULATIONS: Stability derivative calculations are based on Bramwell’s
Helicopter Dynamics. It has been implemented using C++ in a source code named
‘stabilityderivatives.cpp’. It creates a csv file named stabilityderivatives.csv in the working
directory.
stabilityderivatives.cpp Source code
/**************************************************************************
Stability derivatives
-Deepak Paul Tirkey
References:1. Bramwell's Helicopter Dynamics
**************************************************************************/
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
//Bo105 Helicopter data declaration and initialization
float W=21582; //weight of the helicopter (N)
float R=4.91; //radius
float Iyy=4973; //kg-m^2
float gamma=5.07; //Lock’s inertia
float s=0.07; //solidity sigma
float tcD=0.0; //thrust coefficient wrt Disc plane
float tc=0.0;
float wC=0.0; //weight coefficient
float hcD=0.0; //H force coefficient
float d=0.013; //blade profile drag coefficient
float SFP=2.3; //equivalent flat plate area
float A=0.0; //rotor area
float d0=0.0; //ratio of SFP/sA
float mu=0.0;
float V=0.0; //helicopter velocity
float Vcap=0.0; //Vcap
float Vtip=218; //tip speed Omega*R (m/s)
float Vbar=0.0;
float nu0=0.0;
float rho=1.225;
float nui0bar=0.0;
float nuibar=0.0;
float lambdai=0.0;
float alfaD=0.0;
float lambdaD=0.0;
float theta0=0.0; //collective
25. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
float a=5.73; //lift curve slope
float a1=0.0; //longitudinal disk tilt
float B1=0.0; //longitudinal cyclic
float l=0.0;
float h=0.1924; //M-756
float a1s=0.0;
float alfaNF=alfaD-a1; //pg 151 AoA of No Feathering Plane
float xu=0.0,xw=0.0,xq=0.0;
float zu=0.0,zw=0.0,zq=0.0;
float mud=0.0,mw=0.0,mq=0.0; // mud to distinguish with mu
float mup=0.0,mwp=0.0,mqp=0.0; // prime values
// control
float xB1=0.0,xT0=0.0;
float zB1=0.0,zT0=0.0;
float mB1=0.0,mT0=0.0;
float mB1p=0.0,mT0p=0.0;
float dlambdai_dT0=0.0;
float dlambdaD_dT0=0.0;
// mu derivatives
float da1_dmu=0.0;
float dtc_dmu=0.0;
float dhcd_dmu=0.0;
// w derivatives
float da1_dw=0.0;
float dtc_dw=0.0;
float dhcd_dw=0.0;
// q derivatives
float da1_dq=0.0;
float dtc_dq=0.0;
float dhcd_dq=0.0;
//B1 control derivatives
float da1_dB1=0.0;
float dtc_dB1=0.0;
float dhcd_dB1=0.0;
//Theta0 T0 control derivatives
float da1_dT0=0.0;
float dtc_dT0=0.0;
float dhcd_dT0=0.0;
float dlambdai_dmu=0.0;
float dlambda_dmu=0.0;
A = 3.14159*R*R;
float mus=W/(9.81*rho*s*A*R); //mu star page 142
float iB=Iyy/(W*R*R/9.81); // page 142
//creates a csv file named stabilityderivatives.csv in the working
directory
ofstream myfile;
myfile.open ("stabilityderivatives.csv");
int MSE=5;
26. HELICOPTER PERFORMANCE STABILITY AND CONTROL
COURSE CODE: AE4314
Name: DEEPAK PAUL TIRKEY
ASSIGNMENT NUMBER 05 Student number: 4590929
int percent=25;
//inserts heading into the stabilityderivatives.csv file
myfile<<"velo(m/s)"<<","<<"theta0(deg)"<<","<<"thetaC(deg)"<<","<<"xu"<<","
<<"xw"<<","<<"xq"<<","<<"zu"<<","<<"zw"<<","<<"zq"<<","<<"mup"<<","<<"mwp"
<<","<<"mqp"<<","<<"mud(mu)"<<","<<"mw"<<","<<"mq"<<","<<"xB1"<<","<<"zB1"
<<","<<"mB1p"<<","<<"xT0"<<","<<"zT0"<<","<<"mT0p"<<endl;
d0=SFP/(s*A);
nu0 = sqrt(W/(2*rho*A)); //Hover induced inflow
for(V=0.0;V<100.0;) //cycle through helicopter velocity
{
Vcap = V/Vtip;
Vbar=V/nu0;
wC=W/(rho*s*A*Vtip*Vtip);
tcD=wC;
tc=wC;
mu=V/Vtip; //first approximation
hcD=0.25*mu*d;
nui0bar=sqrt(-0.5*Vbar*Vbar+sqrt(0.25*Vbar*Vbar*Vbar*Vbar+1));
nuibar=nui0bar;
lambdai = nui0bar*nu0/Vtip;
alfaD=(-0.5*Vcap*Vcap*d0+hcD)/tcD;
lambdaD=Vcap*sin(alfaD)-lambdai;
mu=Vcap*cos(alfaD);
theta0=((4*tcD/a)-lambdaD*(1-0.5*mu*mu)/
(1+1.5*mu*mu))*1.5*(1+1.5*mu*mu)/(1-mu*mu+2.25*mu*mu*mu*mu);
a1=2*mu*(1.33*theta0+lambdaD)/(1+1.5*mu*mu);
hcD=0.25*mu*d; //recalculation of hcD with improved mu
B1=a1+hcD/wC;
a1s=a1-B1;
//determination of mu derivatives
//da1_dmu
dlambdai_dmu=(2*mu*theta0+alfaNF-((4*tc)/(a*lambdai))
*Vbar*nuibar*nuibar*nuibar)/(1+(4/a)*(tc/lambdai)*
(1+nuibar*nuibar*nuibar*nuibar)); //eq 5.60
dlambda_dmu=alfaNF-dlambdai_dmu; //eq 5.57
da1_dmu=a1/mu-(2*mu*dlambda_dmu)/(1-0.5*mu*mu); //eq 5.64
//dtc_dmu
dtc_dmu=(2*mu*theta0+alfaNF+(Vbar*nuibar*nuibar*nuibar)/
(1+nuibar*nuibar*nuibar*nuibar))/((4/a)+(lambdai/tc)/
(1+nuibar*nuibar*nuibar*nuibar)); //eq 5.62
//dhcd_dmu
dhcd_dmu=0.25*d; //eq 5.66
//determination of w derivatives
//da1_dw
da1_dw=2*mu/((1-0.5*mu*mu)*
(1+0.25*a*lambdai/tc+nuibar*nuibar*nuibar*nuibar)); //eq 5.75
//dtc_dw