PACKAGE Rosace_System_Pkg PUBLIC WITH Ellidiss::Math::Real; RENAMES Ellidiss::Math::Real::ALL; WITH AI; SYSTEM Rosace_System END Rosace_System; SYSTEM IMPLEMENTATION Rosace_System.others SUBCOMPONENTS software : PROCESS Rosace_Controller.impl; hardware : SYSTEM hardware.impl; PROPERTIES -- Processor #1 binding Actual_Processor_Binding => (reference (Hardware.CPU1)) applies to Software.Environment.Aircraft_Dynamics, Software.Environment.Elevator, Software.Environment.Engine; -- Processor #2 binding Actual_Processor_Binding => (reference (Hardware.CPU2)) applies to Software.Controller.H_filter, Software.Controller.Az_filter, Software.Controller.Vz_filter, Software.Controller.Q_filter, Software.Controller.Va_filter; -- Processor #3 binding Actual_Processor_Binding => (reference (Hardware.CPU3)) applies to Software.Controller.Altitude_Hold, Software.Controller.Vz_Control, Software.Controller.Va_Control; -- Processor #4 binding Actual_Processor_Binding => (reference (Hardware.CPU4)) applies to Software.Monitoring; END Rosace_System.others; PROCESS Rosace_Controller END Rosace_Controller; PROCESS IMPLEMENTATION Rosace_Controller.impl SUBCOMPONENTS environment : THREAD GROUP Flight_Environment.impl; controller : THREAD GROUP Flight_Software.impl; monitoring : THREAD monitoring; CONNECTIONS c1 : PORT controller.Delta_E_C -> environment.Delta_E_C; c2 : PORT controller.Delta_Th_C -> environment.Delta_Th_C; c3 : FEATURE GROUP environment.fg <-> controller.fg; END Rosace_Controller.impl; FEATURE GROUP fg FEATURES Vz : OUT DATA PORT flt; Q : OUT DATA PORT flt; Az : OUT DATA PORT flt; H : OUT DATA PORT flt; Va : OUT DATA PORT flt; END fg; THREAD GROUP Flight_Environment FEATURES Delta_E_C : IN DATA PORT flt; Delta_Th_C : IN DATA PORT flt; fg : FEATURE GROUP fg; END Flight_Environment; THREAD GROUP IMPLEMENTATION Flight_Environment.impl SUBCOMPONENTS Engine : THREAD Engine_T.impl; Aircraft_Dynamics : THREAD Aircraft_Dynamics_T.impl; Elevator : THREAD Elevator_T.impl; CONNECTIONS c1 : PORT Delta_E_C -> Engine.Delta_Th_C; c2 : PORT Delta_Th_C -> Elevator.Delta_E_C; c3 : FEATURE GROUP fg <-> Aircraft_Dynamics.fg; c9 : PORT Engine.Output -> Aircraft_Dynamics.T; c10 : PORT Elevator.Output -> Aircraft_Dynamics.Delta_E; END Flight_Environment.impl; THREAD Engine_T FEATURES Delta_Th_C : IN DATA PORT flt; Output : OUT DATA PORT flt; END Engine_T; THREAD IMPLEMENTATION Engine_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 100 us; Period => 5000 us; END Engine_T.impl; THREAD Aircraft_Dynamics_T FEATURES Delta_E : IN DATA PORT flt; T : IN DATA PORT flt; fg : FEATURE GROUP fg; END Aircraft_Dynamics_T; THREAD IMPLEMENTATION Aircraft_Dynamics_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 200 us; Period => 5000 us; END Aircraft_Dynamics_T.impl; THREAD Elevator_T FEATURES Delta_E_C : IN DATA PORT flt; Output : OUT DATA PORT flt; END Elevator_T; THREAD IMPLEMENTATION Elevator_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 100 us; Period => 5000 us; END Elevator_T.impl; THREAD GROUP Flight_Software FEATURES Delta_E_C : OUT DATA PORT flt; Delta_Th_C : OUT DATA PORT flt; fg : FEATURE GROUP INVERSE OF fg; END Flight_Software; THREAD GROUP IMPLEMENTATION Flight_Software.impl SUBCOMPONENTS H_filter : THREAD H_Filter_T.impl; Vz_control : THREAD Vz_control_T.impl; Altitude_hold : THREAD Altitude_Hold_T.impl; Va_filter : THREAD Va_Filter_T.impl; Az_filter : THREAD Az_Filter_T.impl; Vz_filter : THREAD Vz_Filter_T.impl; Q_filter : THREAD Q_Filter_T.impl; Va_control : THREAD Va_control_T.impl; END Flight_Software.impl; THREAD H_Filter_T FEATURES H : IN DATA PORT flt; Output : OUT DATA PORT flt; END H_Filter_T; THREAD IMPLEMENTATION H_Filter_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 100 us; Period => 10000 us; END H_Filter_T.impl; THREAD Vz_control_T FEATURES Output : OUT DATA PORT flt; Vz_c : IN DATA PORT flt; Az_f : IN DATA PORT flt; Q_f : IN DATA PORT flt; Vz_f : IN DATA PORT flt; END Vz_control_T; THREAD IMPLEMENTATION Vz_control_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 100 us; Period => 20000 us; END Vz_control_T.impl; THREAD Altitude_Hold_T FEATURES H_c : IN DATA PORT flt; H_f : IN DATA PORT flt; Output : OUT DATA PORT flt; END Altitude_Hold_T; THREAD IMPLEMENTATION Altitude_Hold_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 100 us; Period => 20000 us; END Altitude_Hold_T.impl; THREAD Va_Filter_T FEATURES Va : IN DATA PORT flt; Output : OUT DATA PORT flt; END Va_Filter_T; THREAD IMPLEMENTATION Va_Filter_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 100 us; Period => 10000 us; END Va_Filter_T.impl; THREAD Az_Filter_T FEATURES Az : IN DATA PORT flt; Output : OUT DATA PORT flt; END Az_Filter_T; THREAD IMPLEMENTATION Az_Filter_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 100 us; Period => 10000 us; END Az_Filter_T.impl; THREAD Vz_Filter_T FEATURES Vz : IN DATA PORT flt; Output : OUT DATA PORT flt; END Vz_Filter_T; THREAD IMPLEMENTATION Vz_Filter_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 100 us; Period => 10000 us; END Vz_Filter_T.impl; THREAD Q_Filter_T FEATURES Q : IN DATA PORT flt; Output : OUT DATA PORT flt; END Q_Filter_T; THREAD IMPLEMENTATION Q_Filter_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 100 us; Period => 10000 us; END Q_Filter_T.impl; THREAD Va_control_T FEATURES Output : OUT DATA PORT flt; Vz_f : IN DATA PORT flt; Q_f : IN DATA PORT flt; Va_f : IN DATA PORT flt; Va_c : IN DATA PORT flt; END Va_control_T; THREAD IMPLEMENTATION Va_control_T.impl PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 1 us .. 100 us; Period => 20000 us; END Va_control_T.impl; THREAD monitoring PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 10us .. 10us; Period => 10000 us; END monitoring; SYSTEM hardware END hardware; SYSTEM IMPLEMENTATION hardware.impl SUBCOMPONENTS cpu1 : PROCESSOR CPU; cpu2 : PROCESSOR CPU; cpu3 : PROCESSOR CPU; cpu4 : PROCESSOR CPU; PROPERTIES Scheduling_Protocol => (POSIX_1003_HIGHEST_PRIORITY_FIRST_PROTOCOL); END hardware.impl; PROCESSOR CPU END CPU; END Rosace_System_Pkg;