Tbone81 10 Posted November 2, 2011 (edited) Hi. Isnt there something wrong with the dc ammeter? When it goes to zero, the engine won´t start. Zero amps means no comsumption, it has nothing to do with the amount of power left on the battery. The ammeter is acting like a voltmeter. Edited November 2, 2011 by Tbone81 Share this post Link to post Share on other sites
Bothersome 10 Posted November 2, 2011 Hi.Isnt there something wrong with the dc ammeter? When it goes to zero, the engine won´t start. Zero amps means no comsumption, it has nothing to do with the amount of power left on the battery. The ammeter is acting like a voltmeter. Yes, you're right about that. But most game companies get their intentions from the movies. They don't really know a whole lot about all the finer details of life and how things work. They're basically saying "This is how much charge is left in the battery." In real life, for lead acid batteries, their is no easy way to know how much charge is left in the battery. A dead battery under no load still shows 12 volts (for a 12 volt battery). So in the game you really need a volt meter and an amp meter. And the amp meter would only show a discharge or charge rate. While the volt meter would show a voltage as it comes under load. If the battery is low, the volt meter would fall a little when coming under load. Share this post Link to post Share on other sites
armored_sheep 56 Posted November 3, 2011 Isnt there something wrong with the dc ammeter?...The ammeter is acting like a voltmeter. You are right, it is not acurate and yes we used DC meter in cockpit intentionaly to give player feedback about electricity "hitzone". We have simplified the "simulation" of electrical systems (and other systems, as you can notice from the simplified startup sequence). There is no complex simulation of ground power, AC, DC, and other things. We thought it is fine for the game and if there will be some enthuziasts that do care about such fidelity, I believe they can MOD this into the game. Share this post Link to post Share on other sites
Tbone81 10 Posted November 3, 2011 You are right, it is not acurate and yes we used DC meter in cockpit intentionaly to give player feedback about electricity "hitzone". We have simplified the "simulation" of electrical systems (and other systems, as you can notice from the simplified startup sequence). There is no complex simulation of ground power, AC, DC, and other things. We thought it is fine for the game and if there will be some enthuziasts that do care about such fidelity, I believe they can MOD this into the game. Okey:) Thank you for clearing that up. Share this post Link to post Share on other sites
CarlGustaffa 4 Posted November 3, 2011 (edited) We thought it is fine for the game and if there will be some enthuziasts that do care about such fidelity, I believe they can MOD this into the game. In MSFS we could mod stuff like this simply by creating an xml defining a gauge function and place it somewhere as an instrument onto a predefined special texture on the panel. In A2 I understand (I'm not into vehicle modding) that if we want to change something like this (i.e. the broken AH-1X attitude indicator) we had to have access to the full model (correct me if I'm wrong) since animations are part of the model. But these are not given to the modders, so we can't fix problems, only create everything from scratch which may be out of reach for most of us. Can I, as a (used-to-be) gauge programmer, modify existing vehicles, or do I also have to learn how to model, texture, apply flight model, to create everything from scratch? Edit: Found my old FS2002 electrical system (part of). If someone wants to have a go on modding, and can read FS xml file (RPN), feel free to grab some inspiration: <Gauge Name="Automatic setting of electrical functions" Version="1.0"> <Update Frequency="1"/> <!--******************************************************************************************--> <!-- --> <!-- Avionics. Set FS2002 audiopanel functions based on combination of unit and ap switches --> <!-- --> <!--******************************************************************************************--> (*Toggle Nav1 ident if applicable by three switches and current ident status*) <Element> <Select> <Value>(L:AP_Nav1,bool) ! (L:NavCom1 ident,bool) ! || (L:NavCom1 on,bool) ! || (A:NAV1 SOUND,bool) && (L:AP_Nav1,bool) (L:NavCom1 ident,bool) && (L:NavCom1 on,bool) && (A:NAV1 SOUND,bool) ! && || if{ (>K:RADIO_VOR1_IDENT_TOGGLE) }</Value> </Select> </Element> (*Toggle Nav2 ident if applicable by three switches and current ident status*) <Element> <Select> <Value>(L:AP_Nav2,bool) ! (L:NavCom2 ident,bool) ! || (L:NavCom2 on,bool) ! || (A:NAV2 SOUND,bool) && (L:AP_Nav2,bool) (L:NavCom2 ident,bool) && (L:NavCom2 on,bool) && (A:NAV2 SOUND,bool) ! && || if{ (>K:RADIO_VOR2_IDENT_TOGGLE) }</Value> </Select> </Element> (*Set ADF ident on if ADF reciever is on, ADF mode correct, and audiopanel route thru is set*) <!--Simplified below, ANT mode now used for reception test ONLY. ADF Sound is toggled directly on audio panel <Element> <Select> <Value>(L:AP_ADF,bool) ! (L:ADF Mode, enum) ! || (L:ADF On,bool) ! || (A:ADF SOUND,bool) && (L:AP_ADF,bool) (L:ADF Mode, enum) && (L:ADF On,bool) && (A:ADF SOUND,bool) ! && || if{ 0 (>K:RADIO_ADF_IDENT_TOGGLE) }</Value> </Select> </Element> --> <Element> <Select> <Value>(L:AP_ADF,bool) ! (L:ADF On,bool) ! || (A:ADF SOUND,bool) && (L:AP_ADF,bool) (L:ADF On,bool) && (A:ADF SOUND,bool) ! && || if{ 0 (>K:RADIO_ADF_IDENT_TOGGLE) }</Value> </Select> </Element> <!--******************************************************************************************--> <!-- --> <!-- Electrical. Prepare all possible extra loads not supported by FS, accumulate in the end. --> <!-- --> <!--******************************************************************************************--> <!-- --> <!-- Switchset1 --> <!-- --> (*Taxi Lights*) <Element> <Select> <Value>(A:Light taxi,bool) if{ 5 (>L:MyAmps Light taxi,amps) } els{ 0 (>L:MyAmps Light taxi,amps) }</Value> </Select> </Element> (*Landing Lights, 4.35 based on 2*250W/115V*) <Element> <Select> <Value>(A:Light landing,bool) if{ 4.35 (>L:MyAmps Light landing,amps) } els{ 0 (>L:MyAmps Light landing,amps) }</Value> </Select> </Element> (*Landing Lights Extension Timer, 6.0 amps*) <Element> <Select> <Value>(L:LandLightTimer,seconds) (P:Absolute Time,seconds) > if{ 6.0 (>L:MyAmps Light extension,amps) } els{ 0 (>L:MyAmps Light extension,amps) }</Value> </Select> </Element> <!-- --> <!-- Switchset2 --> <!-- --> (*Avionics, 5 default, 8 because of a major increase of avionics onboard compared to a C172 size aircraft*) <Element> <Select> <Value>(A:Avionics master switch,bool) if{ 8 (>L:MyAmps Avionics,amps) } els{ 0 (>L:MyAmps Avionics,amps) }</Value> </Select> </Element> (*Windshield, 9 amps while heater brings up the windscreen temperature, then 0. Timer varies with temperature as stated in POH*) <Element> <Select> <Value>(L:WindShield DeIce,bool) ! if{ 0 (>L:MyAmps WindShield DeIce,amps) } els{ (P:Absolute time, seconds) 0.075 (*how long cycle*) * sin (A:Ambient temperature, celsius) /-/ 40.0 / < if{ 9 (>L:MyAmps WindShield DeIce,amps) } els{ 0 (>L:MyAmps WindShield DeIce,amps) }</Value> </Select> </Element> (*Propeller Anti Ice, should be 11-18 amps fluctuation, but will currently draw 15 amps current continously*) <Element> <Select> <Value>(A:prop deice switch,bool) if{ (P:Absolute time, seconds) 0.3 (*cycle speed*) * sin 2.0 / 0.5 + (*normalized to 0-1*) 7 * 11 + (*ranged to 7-18 amps*) (>L:MyAmps Prop DeIce,amps) } els{ 0 (>L:MyAmps Prop DeIce,amps) }</Value> </Select> </Element> <!-- --> <!-- Switchset3 --> <!-- --> (*The amps drawn from the heater, is only determined by the fan position switch. The heater itself is gasonline driven*) <Element> <Select> <Value>(L:HeaterOn,bool) if{ (L:HeaterFan,bool) if{ 12 (>L:MyAmps Heater,amps) } els{ 6 (>L:MyAmps Heater,amps) } } els{ 0 (>L:MyAmps Heater,amps) }</Value> </Select> </Element> (*Stall vent heat, 5, same as default pitot heat with one tube*) <Element> <Select> <Value>(L:Stall Heat Switch, bool) if{ 5 (>L:MyAmps Stall Heat,amps) } els{ 0 (>L:MyAmps Stall Heat,amps) }</Value> </Select> </Element> <!-- --> <!--Fuel and Starts--> <!-- --> (*Fuel Aux Pumps, 3.6 amps in both conditions, highspeed operation during engine failure not supported*) <Element> <Select> <Value>(A:General eng1 fuel pump on,bool) if{ 3.6 (>L:MyAmps FPump1,amps) } els{ 0 (>L:MyAmps FPump1,amps) }</Value> </Select> </Element> <Element> <Select> <Value>(A:General eng2 fuel pump on,bool) if{ 3.6 (>L:MyAmps FPump2,amps) } els{ 0 (>L:MyAmps FPump2,amps) }</Value> </Select> </Element> (*Fuel Transfer Pumps, 5.2 amps*) <Element> <Select> <Value>(L:Transfer Pump Left,bool) if{ 5.2 (>L:MyAmps FTPump1,amps) } els{ 0 (>L:MyAmps FTPump1,amps) }</Value> </Select> </Element> <Element> <Select> <Value>(L:Transfer Pump Right,bool) if{ 5.2 (>L:MyAmps FTPump2,amps) } els{ 0 (>L:MyAmps FTPump2,amps) }</Value> </Select> </Element> (*Engine starters, not sure if they go through ammeter though*) <Element> <Select> <Value>(A:General Eng1 Starter,bool) if{ 15 (>L:MyAmps Starter1,amps) } els{ 0 (>L:MyAmps Starter1,amps) }</Value> </Select> </Element> <Element> <Select> <Value>(A:General Eng2 Starter,bool) if{ 15 (>L:MyAmps Starter2,amps) } els{ 0 (>L:MyAmps Starter2,amps) }</Value> </Select> </Element> <!-- --> <!-- Avionics --> <!-- --> (*Autopilot Yaw damper*) <Element> <Select> <Value>(A:AUTOPILOT YAW DAMPER,bool) if{ 6 (>L:MyAmps YawDamp,amps) } els{ 0 (>L:MyAmps YawDamp,amps) }</Value> </Select> </Element> (*EHSI*) <Element> <Select> <Value>(L:EHSI Switch,bool) if{ 2.6 (>L:MyAmps EHSI,amps) } els{ 0 (>L:MyAmps EHSI,amps) }</Value> </Select> </Element> (*EHSI*) <Element> <Select> <Value>(L:GyroSlave,bool) if{ 3.0 (>L:MyAmps Slaving,amps) } els{ 0 (>L:MyAmps Slaving,amps) }</Value> </Select> </Element> (*Autopilot Master*) <Element> <Select> <Value>(A:Autopilot master, bool) if{ 5.0 (>L:MyAmps AutoPilot,amps) } els{ 0 (>L:MyAmps AutoPilot,amps) }</Value> </Select> </Element> (*marker beacon reciever*) <Element> <Select> <Value>(A:OUTER MARKER, BOOL) (A:MIDDLE MARKER, BOOL) || (A:INNER MARKER, BOOL) || (L:Marker Timer,seconds) (P:Absolute Time,seconds) > || if{ 8.0 (>L:MyAmps Marker,amps) } els{ 0 (>L:MyAmps Marker,amps) }</Value> </Select> </Element> <!-- --> <!-- Misc Systems --> <!-- --> (*Prop sync*) <Element> <Select> <Value>(A:PROP SYNC ACTIVE,bool) if{ 5.0 (>L:MyAmps PropSync,amps) } els{ 0 (>L:MyAmps PropSync,amps) }</Value> </Select> </Element> (*Panel backlights*) <Element> <Select> <Value>(L:PanelLight_Flight,enum) 0.5 > if{ 7.0 (>L:MyAmps Flight,amps) } els{ 0 (>L:MyAmps Flight,amps) }</Value> </Select> </Element> (*Angle of attack indicator*) <Element> <Select> <Value>(A:ANGLE OF ATTACK INDICATOR, radians) 1.0 < if{ 2.2 (>L:MyAmps AoA,amps) } els{ 0 (>L:MyAmps AoA,amps) }</Value> </Select> </Element> (*Test switch circuit*) <Element> <Select> <Value>(L:TestSwitch,bool) if{ 3.0 (>L:MyAmps Test Circuit,amps) } els{ 0 (>L:MyAmps Test Circuit,amps) }</Value> </Select> </Element> (*Air conditioning*) <Element> <Select> <Value>(L:AirCond Mode,enum) 1 == (P:Absolute Time,seconds) 50 % 38 > && (L:Fail Hydraulics,bool) ! && if{ 25 (>L:MyAmps ACOn,amps) } els{ 0 (>L:MyAmps ACOn,amps) }</Value> </Select> </Element> (*Air conditioning blower*) <Element> <Select> <Value>(L:AirCond Mode,enum) 0 != if{ (L:AirCond Blowspeed,bool) 10 * 10 + (>L:MyAmps ACBlower,amps) } els{ 0 (>L:MyAmps ACBlower,amps) }</Value> </Select> </Element> <!--Set a total load accumulator--> <Element> <Select> <Value> (L:MyAmps Light taxi,amps) (L:MyAmps Light landing,amps) + (L:MyAmps Light extension,amps) + (L:MyAmps Avionics,amps) + (L:MyAmps WindShield DeIce,amps) + (L:MyAmps Prop DeIce,amps) + (L:MyAmps Stall Heat,amps) + (L:MyAmps Heater,amps) + (L:MyAmps FPump1,amps) + (L:MyAmps FPump2,amps) + (L:MyAmps FTPump1,amps) + (L:MyAmps FTPump2,amps) + (L:MyAmps YawDamp,amps) + (L:MyAmps EHSI,amps) + (L:MyAmps Slaving,amps) + (L:MyAmps AutoPilot,amps) + (L:MyAmps Marker,amps) + (L:MyAmps PropSync,amps) + (L:MyAmps Flight,amps) + (L:MyAmps AoA,amps) + (L:MyAmps Test Circuit,amps) + (L:MyAmps ACOn,amps) + (L:MyAmps ACBlower,amps) + (>L:Amps Total,amps)</Value> </Select> </Element> <!--******************************************************************************************--> <!-- --> <!--Set electrical loads based on a case selector, original case based code didn't work at all--> <!-- --> <!--******************************************************************************************--> <!--Prepare case selector. Routine is working ok, proven by EHSI infoscreen--> <Element> <Select> <Value>(A:Electrical master battery,bool) (A:GENERAL ENG1 MASTER ALTERNATOR,bool) (A:General Eng1 Rpm,rpm) 20 > if{ 1 * } els{ 0 * } 2 * + (A:GENERAL ENG2 MASTER ALTERNATOR,bool) (A:General Eng2 Rpm,rpm) 20 > if{ 1 * } els{ 0 * } 4 * + (>L:AmpDivideBinary,enum)</Value> </Select> </Element> <!--Divide extra load among alternators and/or battery according to the case selector, excessive load to battery not supported yet--> <Element>(*both alternators online*) <Select> <Value>(L:AmpDivideBinary,enum) 6 == (L:AmpDivideBinary,enum) 7 == || if{ (L:Amps Total,amps) 2 / (>L:LoadRalt,amps) (L:Amps Total,amps) 2 / (>L:LoadLalt,amps) (L:MyAmps Starter1,amps) (L:MyAmps Starter2,amps) + (>L:LoadBatt,amps) }</Value> </Select> </Element> <Element>(*right alternator online*) <Select> <Value>(L:AmpDivideBinary,enum) 4 == (L:AmpDivideBinary,enum) 5 == || if{ (L:Amps Total,amps) (>L:LoadRalt,amps) (L:MyAmps Starter1,amps) (L:MyAmps Starter2,amps) + (>L:LoadBatt,amps) }</Value> </Select> </Element> <Element>(*left alternator online*) <Select> <Value>(L:AmpDivideBinary,enum) 2 == (L:AmpDivideBinary,enum) 3 == || if{ (L:Amps Total,amps) (>L:LoadLalt,amps) (L:MyAmps Starter1,amps) (L:MyAmps Starter2,amps) + (>L:LoadBatt,amps) }</Value> </Select> </Element> <Element>(*both alternators offline*) <Select> <Value>(L:AmpDivideBinary,enum) 1 == if{ (L:Amps Total,amps) (L:MyAmps Starter1,amps) + (L:MyAmps Starter2,amps) + (>L:LoadBatt,amps) 0 (>L:LoadLalt,amps) 0 (>L:LoadRalt,amps) }</Value> </Select> </Element> <!--Set LoadBatt to zero, if not set above. Emm, is this code really necessary anymore?--> <!-- <Element> <Select> <Value>(L:AmpDivideBinary,enum) 1 & if{ quit } els{ 0 (>L:LoadBatt,amps) }</Value> </Select> </Element> <Element> <Select> <Value>(L:AmpDivideBinary,enum) 2 & if{ quit } els{ 0 (>L:LoadLalt,amps) }</Value> </Select> </Element> <Element> <Select> <Value>(L:AmpDivideBinary,enum) 4 & if{ quit } els{ 0 (>L:LoadRalt,amps) }</Value> </Select> </Element> --> </Gauge> Edited November 3, 2011 by CarlGustaffa Share this post Link to post Share on other sites
armored_sheep 56 Posted November 3, 2011 Can I, as a (used-to-be) gauge programmer, modify existing vehicles, or do I also have to learn how to model, texture, apply flight model, to create everything from scratch? You need 3D model (*.p3d) to create such thing as animated object in 3D cockpit in our engine. Share this post Link to post Share on other sites
CarlGustaffa 4 Posted November 3, 2011 That's what I was afraid of. So "just mod it" becomes "have to make everything" which is out of reach for many. Share this post Link to post Share on other sites
Xptical 10 Posted November 3, 2011 Yes, you're right about that. But most game companies get their intentions from the movies. They don't really know a whole lot about all the finer details of life and how things work.They're basically saying "This is how much charge is left in the battery." In real life, for lead acid batteries, their is no easy way to know how much charge is left in the battery. A dead battery under no load still shows 12 volts (for a 12 volt battery). So in the game you really need a volt meter and an amp meter. And the amp meter would only show a discharge or charge rate. While the volt meter would show a voltage as it comes under load. If the battery is low, the volt meter would fall a little when coming under load. Not sure about lead-acid batteries, but Lithium-Polymer battery level can be measured by checking the resistance of the cells. Higher resistance == lower charge. Share this post Link to post Share on other sites