Skip to content

Finite State Machine representations of System and Subsystems#40

Merged
chgio merged 11 commits into
mainfrom
model/fsm
Feb 17, 2023
Merged

Finite State Machine representations of System and Subsystems#40
chgio merged 11 commits into
mainfrom
model/fsm

Conversation

@chgio
Copy link
Copy Markdown
Contributor

@chgio chgio commented Feb 12, 2023

For a detailed description of the Finite State Machine models, see the FSM Specification Document.

Giorgio Ciacchella added 7 commits February 9, 2023 21:41
add [MSM] System States diagram containing states:
- [*] Pre-Orbit Entry
- Detumbling & Deployment
- In-Orbit Operation
  - Idle
  - Uplink
  - Downlink
  - Imaging
  - Processing
  - Imaging & Uplink
  - Imaging & Downlink
  - Processing LP & Uplink
  - Processing LP & Downlink
- Failure states, 1 per S/S:
  - Power Failure
  - Communications Failure
  - OBC Failure
  - Mechanical Failure
  - Control Failure
  - Payload Failure
  - Software Failure
- [*] Combustion

transitions represent the two main intended modes of operation:
- auto-triggered Uplink & Downlink
- auto-triggered Imaging & Processing
plus:
- Uplink & Downlink concurrently with other tasks
- failure from any In-Orbit Operation state
- manual recovery to Idle from any non-Idle state
change the following in [MSM] System States:
- rename [*] initial state to System Boot representing power-up to
  the entire system, and connect it directly to Idle
- rename Detumbling & Deployment to Orbit Entry as an idle-based
  state loop with sub-states:
	- Contact-Seeking
	- Detumbling
	- Deployment
- clean up transitions to failure states from each sub-state of In-Orbit
  Operation, starting from the whole region instead
- fix transition to Processing LP & Uplink, moving starting state from
  Processing to Imaging
- add new transitions:
	- from Uplink to Imaging & Uplink, triggered by AoI entry while
	  in Uplink state
	- from Downlink to Imaging & Downlink, triggered by AoI entry
	  while in Downlink state
add basic system functions to [SFBD] Root System Function Breakdown, and
allocate them to the System in [SAB] System Architecture:
- Collect telemetry
- Deployments:
	- solar panels
	- antennas
	- drag-sail
- Operate nominal & high power
- Adjust attitude & Detumble
- Process images (nominal & low power)
- Capture images

also create the State Machine and Capability Function Matrix
"System Matrix: States vs Functions", compiled with relevant allocations
of system functions to system states (failure states are excluded from
the rows; capabilities are excluded from the columns)
actuate transitions from System level to Logical level:
- State Machine transition
- System Functions transition
rearrange [LFBD] Root Logical Functional Breakdown with basic functions
transitioned from System level

add [LCBD] Subsystem Breakdown new with components representing the
basic subsystems:
- Electrical Power Subsystem
- Mechanical Deployment Subsystem
- Attitude Determination and Control Subsystem
- Software Pipeline Subsystem
- Payload Subsystem
...together with the already-present:
- Communications Subsystem
- On-Board Computer Subsystem

allocate basic functions to basic subsystems in [SAB]:
- Electrical Power Subsystem:
	- Operate nominal power
	- Operate high power
- Mechanical Deployment Subsystem:
	- Deploy solar panels
	- Deploy antennas
	- Deploy drag-sail
- Attitude Determination and Control Subsystem:
	- Adjust attitude
	- Detumble
- Software Pipeline Subsystem:
	- Process images (nominal power)
	- Process images (low power)
- Payload Subsystem:
	- Capture images
- On-Board Computer Subsystem:
	- Collect telemetry
add [MSM] for each Subsystem:
- ADCS States:
	- Idle
	- Actuate
- Comms States:
	- Idle
	- Send
	- Receive
- Deployer States:
	- Idle
	- Deploy
	- End-of-Life (dragsail) -> Combustion
- EPS States:
	- Idle
	- High-Power
- OBC States:
	- Operational
- Payload States:
	- Idle
	- Imaging
- Pipeline States:
	- Idle
	- Processing
	- Processing Low-Power
Compile realisation relationships between system states and subsystem
states, and allocations of subsystem functions to subsystem states:
- [MSM] ADCS States:
	- Idle:
		- state realisations to all In-Orbit Operation states
		- do activity: Adjust attitude
	- Actuate:
		- state realisation to Detumbling
		- do activity: Detumble
- [MSM] Comms States:
	- fix order (receive -> send)
	- Idle:
		- state realisation to all states outside Link loops
		- do activity: --
	- Receive:
		- state realisation to Contact-Seeking and all X+Downlink
		  states
		- do activity: Receive mode change telecommand,
		  Direct-issue mode change signal
	- Send:
		- state realisation to Contact-Seeking and all X+Uplink
		  states
		- do activity: Send mode change outcome full & minimal
		  telemetry
- [MSM] Deployer States:
	- Idle:
		- state realisation to all non-deployment states
		- do activity: --
	- Deploy:
		- state realisation to Deployment
		- do activity: Deploy solar panels, Deploy antennas
	- End-of-Life:
		- state realisation to Combustion
		- do activity: Deploy drag-sail
- [MSM] EPS States:
	- Idle:
		- state realisation to Idle, Imaging, Deployment
		- do activity: Operate nominal power
	- High-Power:
		- state realisation to all power-intensive states
		- do activity: Operate high power
- [MSM] OBC States:
	- Operational:
		- state realisation to all states
		- do activity: Collect telemetry, Relay-issue mode
		  change signal, Validate outcome of mode change signal
- [MSM] Payload States:
	- Idle:
		- state realisation to all non-imaging states
		- do activity: --
	- Imaging:
		- state realisation to all Imaging+X states
		- do activity: Capture images
- [MSM] Pipeline States:
	- Idle:
		- state realisation to all non-processing states
		- do activity: --
	- Processing:
		- state realisation to Processing
		- do activity: Process images (nominal power)
	- Processing Low-Power:
		- state realisation to all Processing+X states
		- do activity: Process images (low power)

also create the State Machine and Capability Function Matrix
"Subsystem Matrix: States vs Functions", manually compiled with the
allocations above
@chgio chgio added devops CI/CD Pipelines maintenance/extension system Outside the scope of any single Subsystem labels Feb 12, 2023
@chgio chgio requested a review from DiegoHDLH February 12, 2023 00:45
@chgio chgio self-assigned this Feb 12, 2023
Giorgio Ciacchella added 2 commits February 12, 2023 13:54
at System Level, modify [MSM] System States:
- space out states for readability
- add transitions completing all secondary system state loops
  (all relevant combinations of subsystem transitions)
- annotate transitions with trigger descriptions (excluding
  idle-targeting override transitions)

at Logical Level, modify all [MSM] X States:
- set X Boot state and transition to realise System Boot state and
  transition
- add transitions needed to realise all system-level transitions
- appropriately name transitions and set them to realise the relevant
  system-level transitions
- annotate transitions with trigger descriptions (note: all subsystem
  transitions are triggered by OBC commands; the description means what
  such command is based on)
rename conflicting pipeline transitions to:
- Sensing Loop Free Exit (from Processing)
- Sensing Loop Throttled Exit (from Processing Low-Power)
Copy link
Copy Markdown

@DiegoHDLH DiegoHDLH left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

very good

at System Level, modify [MSM] System States:
- remove Contact-Seeking state
- move ejection transition target to Detumbling
- rename Detumbling -> Deployment transition to the only occurrence of
  Ejection Loop Progress

also, in System Matrix: States vs Functions' Deployment state, add
"Receive mode change ..." and "Send mode change ..." functions and swap
"Operate nominal power" to "Operate high power".

at Logical Level, modify
- [MSM] Comms States:
	- add Detumbling and Deployment state realisation to Send state
	- add new state loop: Entry Orbit Reverse Link Loop
	  (Idle -> Send)
	- remove realisations from the forward loop transitions and
	  allocate them to the reverse loop instead
- [MSM] ADCS States:
	- add Deployment state realisation to Idle state
	- change Idle -> Actuate transition trigger description to
	  Ejection
	- add Ejection Loop Entry transition realisation to Idle ->
	  Actuate
- [MSM] EPS States:
	- change Idle -> High-Power transition trigger description to a
	  more generic High demand
	- add Ejection Loop Entry transition realistaion to Idle ->
	  High-Power
	- add Ejection Loop Exit transition realisation to High-Power ->
	  Idle

note: this region of the FSM and its implications will require more work
when actually considering the launch stage of the mission (e.g. uplink
and and downlink actions which are kept in separate states in the main
operation region are merged together in this region for simplicity);
however, refer to this changeset for an idea of the work to do when
modifying the Finite State Machine representations :)
@chgio chgio merged commit 7ea22e8 into main Feb 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

devops CI/CD Pipelines maintenance/extension system Outside the scope of any single Subsystem

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants