package rosace public with aadlv3; DATA flt END flt; 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 and priorities Actual_Processor_Binding => (reference (Hardware.cpu4)) applies to Software.Environment.Engine, Software.Environment.Elevator, Software.Environment.Aircraft_Dynamics; Priority => 10 applies to Software.Environment.Engine; Priority => 9 applies to Software.Environment.Elevator; Priority => 5 applies to Software.Environment.Aircraft_Dynamics; -- Processor #2 binding and priorities Actual_Processor_Binding => (reference (Hardware.cpu3)) applies to Software.Controller.H_filter, Software.Controller.Az_filter, Software.Controller.Vz_filter, Software.Controller.Q_filter, Software.Controller.Va_filter; Priority => 10 applies to Software.Controller.H_filter; Priority => 09 applies to Software.Controller.Az_filter; Priority => 08 applies to Software.Controller.Vz_filter; Priority => 07 applies to Software.Controller.Q_filter; Priority => 06 applies to Software.Controller.Va_filter; Dispatch_Offset => 500 us 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 and priorities Actual_Processor_Binding => (reference (Hardware.cpu2)) applies to Software.Controller.Altitude_Hold, Software.Controller.Vz_Control, Software.Controller.Va_Control; Priority => 10 applies to Software.Controller.Altitude_Hold; Priority => 05 applies to Software.Controller.Vz_Control; Priority => 04 applies to Software.Controller.Va_Control; Dispatch_Offset => 1000 us applies to Software.Controller.Altitude_Hold, Software.Controller.Vz_Control, Software.Controller.Va_Control; -- Processor #4 binding and priorities Actual_Processor_Binding => (reference (Hardware.cpu1)) applies to Software.Monitoring; Priority => 10 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; PROPERTIES Timing => immediate applies to c1, c2; 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; Elevator : THREAD Elevator_T.impl; Aircraft_Dynamics : THREAD Aircraft_Dynamics_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 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 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 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; Az_filter : THREAD Az_Filter_T.impl; Vz_filter : THREAD Vz_Filter_T.impl; Q_filter : THREAD Q_Filter_T.impl; Va_filter : THREAD Va_Filter_T.impl; Altitude_hold : THREAD Altitude_Hold_T.impl; Vz_control : THREAD Vz_control_T.impl; Va_control : THREAD Va_control_T.impl; CONNECTIONS c6 : PORT fg.H -> H_filter.H; c5 : PORT fg.Az -> Az_filter.Az; c3 : PORT fg.Vz -> Vz_filter.Vz; c4 : PORT fg.Q -> Q_filter.Q; c7 : PORT fg.Va -> Va_filter.Va; c1 : PORT Vz_control.Output -> Delta_E_C; c2 : PORT Va_control.Output -> Delta_Th_C; c13 : PORT H_filter.Output -> Altitude_hold.H_f; c12 : PORT Az_filter.Output -> Vz_control.Az_f; c8 : PORT Vz_filter.Output -> Vz_control.Vz_f; c9 : PORT Vz_filter.Output -> Va_control.Vz_f; c10 : PORT Q_filter.Output -> Vz_control.Q_f; c11 : PORT Q_filter.Output -> Va_control.Q_f; c15 : PORT Va_filter.Output -> Va_control.Va_f; c14 : PORT Altitude_hold.Output -> Vz_control.Vz_c; PROPERTIES Timing => immediate applies to c6, c5, c3, c4, c7, c1, c2, c13, c12, c8, c9, c10, c11, c15, c14; 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 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_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 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 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 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 aadlv3::System_Soc_Type => Soc_Processing_Unit; END hardware.impl; processor cpu properties Scheduling_Protocol=>(POSIX_1003_HIGHEST_PRIORITY_FIRST_PROTOCOL); end cpu; end rosace;