Added very simplistic volt and amp modeling to the electrical model. This
should really be made more generic and part of the electrical model config but this is all I had time for this weekend.
This commit is contained in:
parent
af13301cbd
commit
11e112c1e4
2 changed files with 45 additions and 0 deletions
|
@ -237,6 +237,8 @@ void FGElectricalSystem::init () {
|
||||||
config_props = new SGPropertyNode;
|
config_props = new SGPropertyNode;
|
||||||
|
|
||||||
SGPropertyNode *path_n = fgGetNode("/sim/systems/electrical/path");
|
SGPropertyNode *path_n = fgGetNode("/sim/systems/electrical/path");
|
||||||
|
_volts_out = fgGetNode( "/systems/electrical/volts", true );
|
||||||
|
_amps_out = fgGetNode( "/systems/electrical/amps", true );
|
||||||
|
|
||||||
if (path_n) {
|
if (path_n) {
|
||||||
SGPath config( globals->get_fg_root() );
|
SGPath config( globals->get_fg_root() );
|
||||||
|
@ -281,6 +283,7 @@ void FGElectricalSystem::unbind () {
|
||||||
|
|
||||||
void FGElectricalSystem::update (double dt) {
|
void FGElectricalSystem::update (double dt) {
|
||||||
if ( !enabled ) {
|
if ( !enabled ) {
|
||||||
|
_amps_out->setDoubleValue(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,6 +311,45 @@ void FGElectricalSystem::update (double dt) {
|
||||||
propagate( suppliers[i], 0.0, " " );
|
propagate( suppliers[i], 0.0, " " );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double alt_norm
|
||||||
|
= fgGetDouble("/systems/electrical/suppliers/alternator") / 60.0;
|
||||||
|
|
||||||
|
// impliment an extremely simplistic voltage model (assumes
|
||||||
|
// certain naming conventions in electrical system config)
|
||||||
|
double volts = 0.0;
|
||||||
|
if ( fgGetBool("/controls/switches/master-bat") ) {
|
||||||
|
volts = 24.0;
|
||||||
|
}
|
||||||
|
if ( fgGetBool("/controls/switches/master-alt") &&
|
||||||
|
fgGetDouble("/engines/engine[0]/rpm") > 800 )
|
||||||
|
{
|
||||||
|
double alt_contrib = 28.0;
|
||||||
|
if ( alt_contrib > volts ) {
|
||||||
|
volts = alt_contrib;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_volts_out->setDoubleValue( volts );
|
||||||
|
|
||||||
|
// impliment an extremely simplistic amps model (assumes certain
|
||||||
|
// naming conventions in the electrical system config) ... FIXME:
|
||||||
|
// make this more generic
|
||||||
|
double amps = 0.0;
|
||||||
|
if ( fgGetBool("/controls/switches/master-bat") ) {
|
||||||
|
if ( fgGetBool("/controls/switches/master-alt") ) {
|
||||||
|
amps += 40.0 * alt_norm;
|
||||||
|
}
|
||||||
|
amps -= 15.0; // normal load
|
||||||
|
if ( fgGetBool("/controls/switches/flashing-beacon") ) {
|
||||||
|
amps -= 7.5;
|
||||||
|
}
|
||||||
|
if ( fgGetBool("/controls/switches/nav-lights") ) {
|
||||||
|
amps -= 7.5;
|
||||||
|
}
|
||||||
|
if ( amps > 7.0 ) {
|
||||||
|
amps = 7.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_amps_out->setDoubleValue( amps );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -215,6 +215,9 @@ private:
|
||||||
comp_list buses;
|
comp_list buses;
|
||||||
comp_list outputs;
|
comp_list outputs;
|
||||||
comp_list connectors;
|
comp_list connectors;
|
||||||
|
|
||||||
|
SGPropertyNode *_volts_out;
|
||||||
|
SGPropertyNode *_amps_out;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue