FGElectricalOutput::FGElectricalOutput ( SGPropertyNode *node ) {
kind = FG_OUTPUT;
- output_amps = 0.1;
+ output_amps = 0.1; // arbitrary default value
name = node->getStringValue("name");
+ SGPropertyNode *draw = node->getNode("rated-draw");
+ if ( draw != NULL ) {
+ output_amps = draw->getDoubleValue();
+ }
+ // cout << "rated draw = " << output_amps << endl;
+
int i;
for ( i = 0; i < node->nChildren(); ++i ) {
SGPropertyNode *child = node->getChild(i);
SGPath config( globals->get_fg_root() );
config.append( path_n->getStringValue() );
- SG_LOG( SG_ALL, SG_ALERT, "Reading electrical system model from "
+ SG_LOG( SG_ALL, SG_INFO, "Reading electrical system model from "
<< config.str() );
try {
readProperties( config.str(), config_props );
<< config.str() );
}
- } else
- SG_LOG( SG_ALL, SG_ALERT,
+ } else {
+ SG_LOG( SG_ALL, SG_WARN,
"No electrical model specified for this model!");
+ }
delete config_props;
}
// impliment an extremely simplistic voltage model (assumes
// certain naming conventions in electrical system config)
+ // FIXME: we probably want to be able to feed power from all
+ // engines if they are running and the master-alt is switched on
double volts = 0.0;
- if ( fgGetBool("/controls/switches/master-bat") ) {
+ if ( fgGetBool("/controls/engines/engine[0]/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;
+ if ( fgGetBool("/controls/engines/engine[0]/master-alt") ) {
+ if ( fgGetDouble("/engines/engine[0]/rpm") > 800 ) {
+ double alt_contrib = 28.0;
+ if ( alt_contrib > volts ) {
+ volts = alt_contrib;
+ }
+ } else if ( fgGetDouble("/engines/engine[0]/rpm") > 200 ) {
+ double alt_contrib = 20.0;
+ if ( alt_contrib > volts ) {
+ volts = alt_contrib;
+ }
}
}
_volts_out->setDoubleValue( volts );
// 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") &&
+ if ( fgGetBool("/controls/engines/engine[0]/master-bat") ) {
+ if ( fgGetBool("/controls/engines/engine[0]/master-alt") &&
fgGetDouble("/engines/engine[0]/rpm") > 800 )
{
amps += 40.0 * alt_norm;