flybywiresim / aircraft

The A32NX & A380X Project are community driven open source projects to create free Airbus aircraft in Microsoft Flight Simulator that are as close to reality as possible.
https://flybywiresim.com
GNU General Public License v3.0
4.99k stars 1.04k forks source link

[REQUEST] A320Neo Weight & Balance #3430

Closed ghosh9691 closed 3 years ago

ghosh9691 commented 3 years ago

Is your feature request related to a problem? Please describe.

The A320neo weight and balance as specified by Asobo is not reflective of a 2-class A320neo. This leads to invalid ZFW CG and problems correctly configuring the weight and fuel.

Describe the feature you'd like to see implemented

I would like to submit the following improvement to the weight and balance section of the flight_model.cfg file. This data is based on a real world A320-214 (ceo version) with MSN 3611 (registration B-6371). The data below is take from the real world AHM-560 used in the airline world for weight and balance. Please review and if possible, add to your already excellent A320.

============== data to be added ===========
max_number_of_stations = 9 ; Number of payload stations - 8C150Y configuration based on CES A320-214 (B-2201)
station_load.0 = 176, 43.99704724, -1.86, 5.017127, TT:MENU.PAYLOAD.PILOT, 1
station_load.1 = 176, 43.99704724, 1.86, 5.017127, TT:MENU.PAYLOAD.COPILOT, 2
station_load.2 = 0, 43.99704724, -1.86, 5.017127, JUMP SEAT 1, 1
station_load.3 = 0, 43.99704724, 1.86, 5.017127, JUMP SEAT 2, 2
station_load.4 = 1060, 30.029528, 0, 5.039792, BUSINESS CLASS (max:1410lb), 0    ; 8 business pax max; 6 occupied
station_load.5 = 8150, 10.78084, 0, 5.039792, ECONOMY CLASS 1 (max:11650lb), 0   ; max 66 economy seats; 70% occupied
station_load.6 = 10370, -21.197507, 0, 5.039792, ECONOMY CLASS 2 (max:15520lb), 0 ; max 84 economy seats; 70% occupied
station_load.7 = 3505, 21.825772, 0, 0.94849, FWD HOLD (max:7500lb), 0
station_load.8 = 4000, -35.825745, 0.000001, 1.007935, AFT HOLD (max:13300lb), 0
=============================================================

References

The AHM-560 is available upon request.

Additional context

Discord username (if different from GitHub):

ghosh9691 commented 3 years ago

[A32NXWeightAndBalance.txt](https://github.com/flybywiresim/a32nx/files/5947595/A32NXWeightAndBalance.txt)

donstim commented 3 years ago

Thanks for providing this! We need to look further into what Asobo's weight and balance info is based on. Otherwise, this looks very good.

ghosh9691 commented 3 years ago

Asobo's default appears to be a premium heavy config with just two cabins. Based on my experience in the airline industry writing flight planning and w&b software, I have yet to come across a commercial aircraft that is divided into just two cabins, even for someone like a La Compagnie. For an aircraft this size, 3 cabin definitions are the norm (if you are doing w&b based on cabins). If you are doing based on seats or seat rows, the number of cabins don't matter. Maybe someday, I will define each seat 😃. Thanks for considering this submission.

donstim commented 3 years ago

I really like what you are proposing, including the jump seats and specifying the limit for each load station in the weight and balance menu. I also like what you've done to make it easier to configure the airplane load properly.

I plan to pursue this as a change to the mod, but I have a few questions. I am an airplane performance engineer, not a weight & balance expert by any means. Just browsing A320neo cabin layouts on SeatGuru.com, it seems like the one class cabin layout for this airplane is pretty popular. But I also see some that are called 2-class cabins, like this one on Lufthansa (https://www.seatguru.com/airlines/Lufthansa/Lufthansa_Airbus_A320neo.php) and this one on ANA (https://www.ana.co.jp/en/us/travel-information/seat-map/a320/). Or would you not classify the Lufthansa one (or both) as 2-class for weight and balance? They are very different in terms of seating layout relative to the wing 25% mac.

I'm not really sure how important the exact cabin configuration is for our mod, but I would think that a valid ZFW CG and better ability to correctly load fuel and payload would be a high priority. I don't think anything we've done so far constrains us to the MSFS/Asobo default loading station configuration. Interestingly, the in-work EFB show the layout as 1-class even though it currently isn't. (I mention that as an example that I don't think anyone else has given this much thought as yet.)

The airplane we are modeling currently as an empty weight of 90,400 lb, a MZFW of 64,300 kg (141757 lb), and a MTOW of 79,000 kg (174,165 lb according to MSFS. With your proposed loading stations, it looks like the allowable payload will fit within that MZFW (though MZFW isn't really represented in any way in MSFS). I wonder how the airplane you based this off of compares, or if it even matters?

I noticed you put the default jump seats as unoccupied. Maybe we should fill those so they don't look superfluous since people may not know what to put in there?

ghosh9691 commented 3 years ago

Airplane performance engineer? I wonder if our paths have crossed in the past :-). People such as yourself were responsible for entering and maintaining A/C performance data in my flight planning system. Maybe your airline used the software I wrote!!! We should catchup in real life...

Anyway, we can certainly model a single class A320. However, from a W&B perspective, class of service (i.e., Business, Economy, etc.) is completely different from W&B cabin configuration. A single class A320 is also typically divided in to 3-5 W&B cabins. Then the centroid for each cabin is where the weight in that cabin acts. The more the cabins, the more accurate the load sheet. Usually, airlines will define an aircraft as:

1) Multiple cabins - for A320, I have seen from 3-5 cabins. Each of these cabins may have business class, premium economy or economy class seats depending on the airline. These cabins are typically named 0A, 0B, 0C, 0D and 0E from front of the aircraft to the back. For each cabin, you have the number of seats, the centroid and the average weight of pax (I have taken 80KG for adults). 2) The next level from (1) is to define each row of seats in the aircraft from front to back. So, for an all economy aircraft, these would be 25-30 seats of 6-abreast. Then you have the centroid for each row and the index effect per kg at that row. Obviously, because now your data points are an order of magnitude greater, you get a much finer idea of your CG 3) The third way is to define each seat - very involved and I do not remember any airline going to this level. It only makes sense if you are operating into airports where your payload is limited by performance due to either altitude or obstacle clearance requirements. Even then, the seat row method gives more than adequate results.

Also, I have not yet done this, but the cargo deck is also divided into 4 holds on the A320. These are: 1) FWD Hold: 3 ULD or 3402KG max 2) AFT Hold: max 4 ULD a) AFT Hold 3: 2426KG max b) AFT Hold 4: 2110KG max c) AFT Hold 5: 1497KG max

There is no Hold 2 (that's where the wing box is located). These matter a lot since proper loading gives us a much better CG and prevents the aircraft from constantly going out of the CG bounds.

One question I do have: Do you know what MSFS/Asobo use as the reference point? For the A320 (ceo and neo), the Reference Station is 18.85m from zero point. Typically, the zero point is at the nose of the airplane, but I am not sure where this is for MSFS2020.

As to the aircraft, I have been going with the MSFS definition with a 79000KG MTOW and 41000KG EOW (this is actually low and does not seem to include lavs, galleys, crew baggage, etc.). A typical Empty operating weight for the A320-200 series is 42500-43500KG. Another thing to note is that I have used an average adult weight of 80KG - this may need to be looked at. I am not sure what the current average weights are in use in the industry but I think maybe 85KG would be more accurate estimation of pax wt + cabin bag - thoughts?

Let me know if you would like to discuss offline. Hopefully I can contribute. It's been a long time since I last contributed to flight sim - used to provide Navdata back in the late 90's/early 2000's - was just me and Richard Stefan (of Navigraph) back then :-).

donstim commented 3 years ago

I didn't work for an airline, so I doubt if our paths crossed. :-(

For the MSFS/Asobo reference point, it is not the nose of the airplane as the nose contact point in the default is 45 feet ahead of the reference point (recently changed to 44.07 in the mod). Based on my understanding of the flight model, I believe the reference zero position is the wing quarter-chord point. But, with the airplane aerodynamic center apparently set at 8.75 feet behind the reference zero position in the flight model cfg file, I'm not so sure about that either!

I don't know what industry is currently using for standard weights. I only have what the FAA recommendation is in AC 120-27F (https://www.faa.gov/documentLibrary/media/Advisory_Circular/AC_120-27F.pdf). That would be about 200 lb for men and about 171 lb for women with 5 lb of clothes in the summer and 10 lb in the winter without carry-on bags.

You are the expert here on weight & balance, so I would defer to you how to best configure the airplane in the sim.

ghosh9691 commented 3 years ago

Are you modeling a specific aircraft or just a specific weight variant (I believe the 79 ton TOW is weight variant 052)?

donstim commented 3 years ago

It's WV 055. In my opinion (take that for what it's worth), it would just be the weight variant. Any individual airplane could be reconfigured at any time.

ghosh9691 commented 3 years ago

Cool. I will base the weights off of WV055 and ensure that we stay within limits. Will come back with a more evolved w&b section and post here.

donstim commented 3 years ago

If you'd like and are comfortable doing so, feel free to propose it in a pull request. Otherwise I can do that for you.

ghosh9691 commented 3 years ago

Any specific branch to use as a base?

donstim commented 3 years ago

Best to fork it from the latest master: https://github.com/flybywiresim/a32nx

ghosh9691 commented 3 years ago

Sorry! I got a bit lost. I normally use gitlab.com, not github. So attaching the changes here. It would be good if some of the real world pilots can take it for a test flight to check out the handling. To me, it seemed that the aircraft behavior on takeoff was a bit more natural - the speed came up slower than before. Let me know what they think...

donstim commented 3 years ago

I'll take a look at it tomorrow. As long as the CG is within the limits, why would you expect the aircraft flight characteristics to be any different?

ghosh9691 commented 3 years ago

Mostly because I do not know how fuel burn CG changes are modeled in the sim. I will also try and see if I can determine how this changes over the course of a flight. Also will run some more tests to see how it behaves at the edges of the flight envelope.

ghosh9691 commented 3 years ago

Hi @donstim

Attached are the final figures - the best that can be done! The MSFS A320 Empty weight CG itself is off - ideally, empty weight CG should be 25% MAC. Anyway, the numbers in the file are fairly accurate. For MaxZFW, the CG works out to be around 28%MAC which is about 2% AFT of what the real airplane does. Please include these figures if possible.

A32NX_WB_flight_model_20210210.txt

P.S.: The MSFS A320 is off by about 5feet (AFT) for each location.

donstim commented 3 years ago

I'm sorry I haven't had time to do anything with this yet. You know you can change the empty weight cg position, right? Currently "empty_weight_CG_position = -9, 0, -1." If you choose to do that, I guess you would probably need to re-work the other station values?

ghosh9691 commented 3 years ago

Ah, I will play around with that. Maybe I can get the EOW CG to be 25%... give me another day or two.

donstim commented 3 years ago

Sure thing. That would be great.

MariusSchuller commented 3 years ago

Hey guys,

I just read through all of your comment and I think this is a very interesting and important topic. Although I am not working in the aviation industry, I hope you view me worthy of contributing to this as a mechanical engineer.

I've already thought about the weight and balance topic last year. From my point of view it is very difficult for the average sim-pilot to handle the weights of the passengers and cargo realistically so the overall CG is somewhat in limits. I analyzed the aircraft.cfg file and, based on the information in there, basically created one equilibrium covering all weights and their respective distance to the reference point (which, by the way, I couln't figure out where it is either). Whith this, I already created an Excel-Tool with which you add information like number of PAX, Crew and Block Fuel ans most importantly a target CG - it then outputs all the weights for business class, economy class and forward and aft baggage. I also included the jump/crew seats here. I have already described this in the Request #2808.

Regarding your question how the CG-change of fuel consumption is modelled (if you haven't found out already): Each fuel tank (center, inner, outer) has its own position with respect to the refrence point, exactly like every other "weight-point". During flight, the fuel consumption causes the weight in the tanks (starting with the center tank) to decrease which therefore changes the CG.

Regarding your discussion on passenger weights: I found this paper looking at this question with an empirical approach: https://www.easa.europa.eu/sites/default/files/dfu/Weight%20Survey%20R20090095%20Final.pdf. The weights I used for my tool are: Crew (each, including their carry-on): 200lb; Passenger (each): 170lb; Carry-On (for each passenger): 17.5 lb; checked baggage (for each passenger, but distributed into forward and aft baggage compatments): 50.5 lb

I also get your discussion about adding more sections or even modelling each row - yet I think we should bear in mind that MSFS currently only offers to change the weights in the BC and EC within their own UI.

I hope I contributed something meaningful to the discussion. What are your thoughts? I'd be happy to share my calulations so we can input a weights and balance tool with realistic values to the EFB!

ghosh9691 commented 3 years ago

Thanks, @MariusSchuller! I agree that an easier tool is required to help end users enter the weights. The current UI drives me up the wall! However, this is something that should be part of the EFB.

Now, the MS/Asobo calculations are okay, but not quite accurate. Firstly, at empty weight, the CG should be 25%. I have now configured the aircraft to have that CG. However, the fuel loading CG changes are garbage. In the real world, when you start adding fuel to an empty aircraft, upto 1337KG fuel, the CG moves aft. Then it starts moving forward until you get to max fuel where CG is well forward (~20.51%). So the modeling is wrong in MSFS. Also, in the real world, there is a table for the impact of fuel on the CG.

Secondly, for some weird reason, Asobo has chosen to define load points as z, x and y. This is not how it works in real life. In real life, all values are only along the longitudinal direction, i.e, Fore and Aft. There is no side-to-side or up and down component of the moment. It is completely irrelevant. All data from Boeing, Airbus, Embraer, etc. is only in fore and aft direction. This is how we do things in the real world and load sheets are based on that. Only small airplanes like the C172, etc. have an impact of side-to-side weight due to their size. I guess most everything in MSFS has always been modeled on the Cessna rather than the jets.

The formulae used to compute the weight and balance is quite simple and well documented. I am putting it here so that the EFB team may use this...

For each station, the Index is computed as:

Index = (Weight x (Station Arm - Reference Station Arm)/C) + K

And %MAC = ((C x (Index - K)/Weight) + Reference Station Arm - LEMAC) / (MAC / 100)

Where, for A320-200 (remember, CEO and NEO are same from W&B perspective):

These values are design values and do not change for an A320-200. They will be different for the A319 or A321.

Given the above, at a weight of 41005KG (which is the weight of the A320 in MSFS), the CG is at exactly 25% if you change the "empty_weight_cg_position" to -8.75,0,0 (default is -9, 0, -1).

I have changed the configuration of the aircraft to account for real world data and am at a place where I can get the CG at different loads to be within 1%MAC of real world figures. I just need to add a few more things to the config - galleys, lavs, cabin crew, etc. to come up with a Dry Operating Weight (also called Empty Operating Weight) that is more real-life like. Then the station loads (to use MSFS terminology) can be varied for pax and cargo and computed from those numbers.

ghosh9691 commented 3 years ago

@donstim have created the pull request above (#3474 ). Please review and let me know if any changes are required.

donstim commented 3 years ago

You work fast!

Regarding the effect on cg of adding and burning fuel, are you aware that the station points of the fuel tanks are contained in the [FUEL SYSTEM] section of the flight_model.cfg file? (They are also contained in the [FUEL] section, but I think this section has been made obsolete by the [FUEL SYSTEM] section. But, just to be on the safe side, I suggest that if you make any changes to the station information in the [FUEL SYSTEM] section, that you make the same changes in the [FUEL] section.

Just like for the other loading station, the cg effect of the different fuel tanks is represented just by the centroid of each entire tank. We are simulating a 3-tank airplane with center, wing inner, and wing outer tanks as described in https://github.com/flybywiresim/a32nx/pull/2286. Can you take a look at whether the tank centroid locations are consistent with your station locations, and whether any update would be appropriate to more accurately reflect fuel loading and fuel burnoff effects on cg? It appears to me that MSFS does simulate loading the wing tanks first (outers then inners), then the center tank, and uses fuel from them in the opposite order.

ghosh9691 commented 3 years ago

@donstim,

I will take a look. MSFS is definitely filling and draining the tanks in the correct sequence. However, the impact of fuel loading is a more complicated calculation and will take a little bit of time to figure out the actual variances in centroid.

Btw, are you modeling the Taxi FF and APU FF? I believe those values are 12KG/min for Taxi and 130KG/hour for the APU. Are you using Airbus PEP for the performance figures?

Another question I had was centered around the definition of the Empty Weight (41005KG) that you are using. To me, this is what the different weights mean:

1) Basic Weight = Weight of the airplane including Potable water, galley equipment, trolleys, books, magazines, etc. 2) Dry Operating Weight (DOW)/Empty Operating Weight (EOW) = Basic Weight + Cockpit Crew + Cabin Crew + Pantry Weights (food & drinks)

Looking at the values across different airlines, I see basic weights of 42500-43000KG. Then you add the crew, food and drinks before you can add any pax, cargo or fuel. Do you think we should simulate those as well?

And we will need to add in the EFB the ability to enter these values and also, when we get from Simbrief, we will need to distribute these appropriately.

Let me know how you want to proceed.

donstim commented 3 years ago

The APU fuel burn rate is also given in the [FUEL SYSTEM] section of the flight_model.cfg file. It is given as "33," but the units aren't specified anywhere that I can see. But on the assumption (based on the units for the other parameters in that section) that it is in gallons/hour, which is probably a bit low depending on what density you use. MSFS uses 6.7 lb/gal, so 33 gal would be 221 lbs, or about 100 kg/hr. Feel free to adjust that, too.

For taxi fuel, I'm assuming MSFS just uses the idle fuel flow rate. We are currently in the process of updating the engine (and flight) models now, so i can't say what the typical taxi fuel usage will be. At least, I haven't seen anything that indicates to me that there is a specific taxi fuel flow.

For the empty weight question, I think there is quite a bit of latitude there. We aren't stuck with 90,400 lb. That's just what Asobo had in there, and we haven't touched it. I am fairly positive that Asobo didn't use a standard industry definition in setting it. Based on how they have their loading set up such that airplane weight is their empty weight+cockpit crew+payload+fuel, I would use the dry operating weight definition you stated minus cockpit crew. It is up to you as to whether to include a change to the empty weight consistent with that, but keep in mind how that will play with full payload + full fuel + cockpit crew and MTOW for the general sim pilot.

Are you on Discord? There is a very popular Discord server set up for this project, and it includes different channels for different parts of the project. I put a message in the EFB section to alert those working on the EFB to @MariusSchuller's suggestion and to make them aware of this issue and its associated PR. The Discord server link is https://discord.gg/flybywire.

ghosh9691 commented 3 years ago

Yes, I am on discord with the same user name, but that EFB channels is readonly for me

Danimalpm commented 3 years ago

@donstim Thanks for clarifying WV 055 was modeled. The "Simbrief Airframe with the correct weights" link on the A32NX project main page doesn't clarify the issue as the MZFW and MLW figures don't match the documentation I have for WV 055.

donstim commented 3 years ago

@donstim Thanks for clarifying WV 055 was modeled. The "Simbrief Airframe with the correct weights" link on the A32NX project main page doesn't clarify the issue as the MZFW and MLW figures don't match the documentation I have for WV 055.

You're right the "Simbrief Airframe with the correct weights" link doesn''t have the right weights for WV 055. I am not sure why you are telling me this; I wouldn't have ever referenced that link for providing the correct weights. In fact, I opened an issue about that around 2 weeks ago (https://github.com/flybywiresim/a32nx/issues/3299).