State MachineΒΆ
The behavior of the system is managed by the state machine. The state machine for cable wraps is shown in next diagram
@startuml
state NoInternalErrors {
state Idle
state On {
state WaitDrivesOn
state ReleasingBrakes
state Enable
State PoweringOffFaultyDrive
state DiscreteMove
state Stopping
state JogMove
state Tracking
state ChangeDriveInTracking{
}
state EngagingBrakes
[*] --> WaitDrivesOn
WaitDrivesOn --> ReleasingBrakes : DrivesDone
ReleasingBrakes --> Enable
Enable --> DiscreteMove : Move
DiscreteMove --> Enable : MoveDone
DiscreteMove --> Stopping : Stop
Enable --> JogMove : MoveVelocity
JogMove --> Stopping : Stop
Enable --> Tracking : EnableTracking
Tracking --> Tracking : Track
Tracking --> Stopping : Stop
Tracking --> ChangeDriveInTracking : FaultInOneDrive
ChangeDriveInTracking --> Tracking
ChangeDriveInTracking --> Stopping : Stop
Stopping --> Enable : StopDone
WaitDrivesOn --> PoweringOffFaultyDrive : ChangeDrive
PoweringOffFaultyDrive --> WaitDrivesOn : ChangeDriveDone
Enable -up-> EngagingBrakes : Power(off)
}
state Fault
[*] --> Idle
Idle -down-> On : Power(on)
On -right-> Fault : Alarm
Fault --> Idle : Reset
EngagingBrakes --> Idle : BrakesEngaged
}
state InternalErrors {
}
[*] --> CommandMemory
CommandMemory --> InitActions : MemoryOk
InitActions --> Idle : InitOK
NoInternalErrors --> InternalErrors : Error
@enduml