simpleSolarPanel#

Executive Summary#

This module provides first-order modeling of power generation from an attitude and orbitally coupled solar panel. Specifically, it:

  1. Evaluates the impact of shadowing using an assigned EclipseMsgPayload

  2. Computes power generation using a cosine law based on the panel area, efficiency, and attitude

  3. Allows for the panel body-fixed orientation nHat_B, the panel area, and the panel efficiency to be set via setPanelParameters().

  4. Writes out a PowerNodeUsageMsgPayload 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 PowerNodeBase.

Module I/O Messages#

Msg Variable Name

Msg Type

Description

sunInMsg

SpicePlanetStateMsgPayload

Describes sun position

stateInMsg

SCStatesMsgPayload

Describes spacecraft position, attitude.

sunEclipseInMsg

EclipseMsgPayload

(optional) 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 connect sunInMsg and stateInMsg input messages

  • the sunEclipseInMsg message is optional. If provided the modules uses the eclipse shadow factor to adjust the power generation if needed.

  • must specify the variables panelArea, panelEfficiency and nHat_B. These there parameters can also be set at the same time through setPanelParameters(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#

class SimpleSolarPanel : public PowerNodeBase#

simple solar panel class

Public Functions

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.

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.

Returns:

void

Public Members

ReadFunctor<SpicePlanetStateMsgPayload> sunInMsg#

[-] sun data input message

ReadFunctor<SCStatesMsgPayload> stateInMsg#

[-] spacecraft state input message

ReadFunctor<EclipseMsgPayload> sunEclipseInMsg#

[-] Messun eclipse state input message

double panelArea#

[m^2] Panel area in meters squared.

double panelEfficiency#

[W/W] Panel efficiency in converting solar energy to electrical energy.

Eigen::Vector3d nHat_B#

[-] Panel normal unit vector relative to the spacecraft body frame.

BSKLogger bskLogger#

&#8212; BSK Logging