Module: simpleSolarPanel¶
Executive Summary¶
This module provides first-order modeling of power generation from an attitude and orbitally coupled solar panel. Specifically, it:
Evaluates the impact of shadowing using an assigned eclipseSimMsg
Computes power generation using a cosine law based on the panel area, efficiency, and attitude
Allows for the panel body-fixed orientation
nHat_B
, the panel area, and the panel efficiency to be set viasetPanelParameters()
.Writes out a powerNodeUsageSimMsg describing its power generation.
Power generation is computed according to SMAD:
\[W_{out} = W_{base} * C_{eclipse} * C_{panel} * (\hat{n}\cdot \hat{s}) A_{panel}\]where \(W_{base}\) is the base power (in \(\mbox{W}/\mbox{m}^2\)) at the spacecraft location from the sun, \(C_{eclipse}\) is the eclipse/penumbra mitigator on the sun’s power (1 corresponds to no shadow, 0 corresponds to eclipse), \(C_{panel}\) represents the panel’s efficiency at converting solar energy into electrical energy, \((\hat{n}\cdot \hat{s})\) represents the alignment between the panel’s normal vector and the spaceraft-sun unit vector, and \(A_{panel}\) represents the panel area in meters squared.
For more information on how to set up and use this module, see the simple power system example: scenarioPowerDemo
Module Assumptions and Limitations¶
This module only uses the input and output messages of the PowerNodeBase base class. Further, the module does not include any self-shadowing in the solar panel power generation evaluation.
Message Connection Descriptions¶
The following table lists additional module input messages beyond those specified in Module: powerNodeBase.
Msg Variable Name |
Msg Type |
Description |
---|---|---|
sunInMsgName |
Describes sun position. |
|
stateInMsgName |
Describes spacecraft position, attitude. |
|
sunEclipseInMsgName |
Optional input message. Describes shadow factor due to planetary bodies. |
User Guide¶
This module inherits the user guide from the PowerNodeBase base class. Module specific instructions include:
must specify
sunInMsgName
andstateInMsgName
input message namesthe
sunEclipseInMsgName
message name is optional. If provided the modules uses the eclipse shadow factor to adjust the power generation if needed.must specify the variables
panelArea
,panelEfficiency
andnHat_B
. These there parameters can also be set at the same time throughsetPanelParameters(nHat_B, panelArea, panelEfficiency)
For more information on how to set up and use this module, see the simple power system example: scenarioPowerDemo
-
class
SimpleSolarPanel
: public PowerNodeBase¶ Public Functions
-
SimpleSolarPanel
()¶
-
~SimpleSolarPanel
()¶
-
void
customCrossInit
()¶
-
bool
customReadMessages
()¶
-
void
customReset
(uint64_t CurrentClock)¶ custom solar panel reset function
-
void
setPanelParameters
(Eigen::Vector3d nHat_B, double panelArea, double panelEfficiency)¶ This method allows for solar panel parameters to be set.
- Return
void
- Parameters
nHat_B
: The normal vector of the solar panel expressed in the spacecraft body frame.panelArea
: the spacecraft panel area in meters squared.panelEfficiency
: The efficiency of the solar panel in nondimensional units; typically ranges from 0.1 to 0.5.
Public Members
-
std::string
sunInMsgName
¶ [-] Message name for sun data
-
std::string
stateInMsgName
¶ [-] Message name for spacecraft state
-
std::string
sunEclipseInMsgName
¶ [-] Message name for sun eclipse state message
-
double
panelArea
¶ [m^2] Panel area in meters squared.
-
double
panelEfficiency
¶ [W/W] Panel efficiency in converting solar energy to electrical energy.
Private Functions
-
void
evaluatePowerModel
(PowerNodeUsageSimMsg *powerUsageMsg)¶ This method computes the power generated by the solar panel and stores it in a PowerNodeUsageSimMsg. This is evaluated in two steps:
Compute the amount of power available at the spacecraft position using the SOLAR_FLUX_EARTH macro, distance factor, and eclipse shadow factor;
Compute how much of that power is captured and converted to power using the projectedArea and panelEfficiency attributes.
- Return
void
-
void
computeSunData
()¶ This method computes the spacecraft-sun vector, the solar panel’s projected area, and the sunDistanceFactor based on the magnitude of the spacecraft sun vector.
- Return
void
Private Members
-
double
projectedArea
¶ [m^2] Area of the panel projected along the sun vector.
-
double
sunDistanceFactor
¶ [-] Scale factor on the base solar power computed using the true s/c-sun distance.
-
int64_t
sunInMsgID
¶ [-] Connect to input time message
-
int64_t
stateInMsgID
¶ [-] Connect to input time message
-
int64_t
sunEclipseInMsgID
¶ [-] Connect to input sun eclipse message
-
SpicePlanetStateSimMsg
sunData
¶ [-] Unused for now, but including it for future
-
SCPlusStatesSimMsg
stateCurrent
¶ [-] Current SSBI-relative state
-
double
shadowFactor
¶ [-] solar eclipse shadow factor from 0 (fully obscured) to 1 (fully visible)
-