/* Date : 1 avr. 2019 */ /* DataFlow format */ domain Physical_BasicPhysical_BasicPhysicalStatus = {ERRONEOUS, LOST, OK}; domain Physical_BasicPhysical_HiLoPhysicalStatus = {ERRONEOUS, HIGH_ERRONEOUS, LOST, LOW_ERRONEOUS, OK}; domain Physical_BasicPhysical_SensorHiLoPhysicalStatus = {ERRONEOUS, HIGH_ERRONEOUS, LOST, LOW_ERRONEOUS, OK, OUT_OF_RANGE}; domain Physical_BasicPhysical_SensorBasicPhysicalStatus = {ERRONEOUS, LOST, OK, OUT_OF_RANGE}; domain Physical_BasicPhysical_BinaryPhysicalStatus = {LOST, OK}; domain Functions_BasicFunctions_ModeSelection = {AUTO, MANUAL}; domain Functions_BasicFunctions_Presence = {ABSENT, PRESENT}; domain Functions_BasicFunctions_ModeSelection_ErroneousLost = {AUTO, ERRONEOUS, LOST, MANUAL}; domain Functions_BasicFunctions_BooleanStuck = {OK, STUCK_FALSE, STUCK_TRUE}; node Components_Payload_CameraSensor flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; Power:Physical_BasicPhysical_HiLoPhysicalStatus:in; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_err; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; assert icone = case { (status = LOST) : 2, (status = ERRONEOUS) : 3, else 1 }, output = case { ((Power = LOST) or (status = LOST)) : LOST, ((((Power = ERRONEOUS) or (Power = LOW_ERRONEOUS)) or (Power = HIGH_ERRONEOUS)) or (status = ERRONEOUS)) : ERRONEOUS, else OK }; init status := OK; extern law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_Payload_CameraRotarySupport flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; Power:Physical_BasicPhysical_HiLoPhysicalStatus:in; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_err; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; assert icone = case { (status = LOST) : 2, (status = ERRONEOUS) : 3, else 1 }, output = case { ((Power = LOST) or (status = LOST)) : LOST, ((((Power = ERRONEOUS) or (Power = LOW_ERRONEOUS)) or (Power = HIGH_ERRONEOUS)) or (status = ERRONEOUS)) : ERRONEOUS, else OK }; init status := OK; extern law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Functions_PhysicalOperators_AND_Physical_disymetric flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; minorInput:Physical_BasicPhysical_BasicPhysicalStatus:in; majorInput:Physical_BasicPhysical_BasicPhysicalStatus:in; assert output = case { (majorInput # OK) : majorInput, else minorInput }, icone = case { (output = OK) : 1, (output = LOST) : 2, else 3 }; edon node Functions_PhysicalOperators_AND_Physical_unaire flow icone:[1,2]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; input:Physical_BasicPhysical_BasicPhysicalStatus:in; assert output = input, icone = case { (output = OK) : 1, else 2 }; edon node Components_CommunicationDevices_CommunicationDevice flow icone:[1,2]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; Power:Physical_BasicPhysical_HiLoPhysicalStatus:in; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_recept_loss, fail_recept_err; trans (status = OK) |- fail_recept_loss -> status := LOST; (status = OK) |- fail_recept_err -> status := ERRONEOUS; assert icone = case { (status = LOST) : 2, else 1 }, output = case { ((Power = LOST) or (status = LOST)) : LOST, ((((Power = ERRONEOUS) or (Power = LOW_ERRONEOUS)) or (Power = HIGH_ERRONEOUS)) or (status = ERRONEOUS)) : ERRONEOUS, else OK }; init status := OK; extern law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_RemoteControl_RemoteCommunication flow icone:[1,2]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; Power:Physical_BasicPhysical_HiLoPhysicalStatus:in; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_transm_err, fail_transm_loss; trans (status = OK) |- fail_transm_loss -> status := LOST; (status = OK) |- fail_transm_err -> status := ERRONEOUS; assert icone = case { (status = LOST) : 2, else 1 }, output = case { ((Power = LOST) or (status = LOST)) : LOST, ((((Power = ERRONEOUS) or (Power = LOW_ERRONEOUS)) or (Power = HIGH_ERRONEOUS)) or (status = ERRONEOUS)) : ERRONEOUS, else OK }; init status := OK; extern attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_PowerSupply_PowerGeneration flow icone:[1,3]:private; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; state status:Physical_BasicPhysical_HiLoPhysicalStatus; event fail_err, fail_unsuff, fail_over, fail_loss; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; (status = OK) |- fail_over -> status := HIGH_ERRONEOUS; (status = OK) |- fail_unsuff -> status := LOW_ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output = status; init status := OK; extern law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_RemoteControl_RemoteSwitch flow icone:[1,3]:private; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power:Physical_BasicPhysical_HiLoPhysicalStatus:in; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_err; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output = case { ((status = LOST) or (Power = LOST)) : LOST, ((status = ERRONEOUS) or (Power = ERRONEOUS)) : ERRONEOUS, (Power = LOW_ERRONEOUS) : LOW_ERRONEOUS, (Power = HIGH_ERRONEOUS) : HIGH_ERRONEOUS, else OK }; init status := OK; extern attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_Links_EPL flow icone:[1,3]:private; input:Physical_BasicPhysical_HiLoPhysicalStatus:in; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; state status:Physical_BasicPhysical_HiLoPhysicalStatus; event fail_unsuff, fail_err, fail_loss; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; (status = OK) |- fail_unsuff -> status := LOW_ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output = case { ((status = LOST) or (input = LOST)) : LOST, (status # OK) : status, else input }; init status := OK; extern attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_RemoteControl_RemoteControlInterface flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_err; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output = status; init status := OK; extern attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_Networks_DigitalNetwork flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_err; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; assert icone = case { (status = LOST) : 2, (status = ERRONEOUS) : 3, else 1 }, output = status; init status := OK; extern law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_Sensors_SimpleSensor flow icone:[1,3]:private; Power:Physical_BasicPhysical_HiLoPhysicalStatus:in; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; state status:Physical_BasicPhysical_SensorHiLoPhysicalStatus; event fail_highErr, fail_lowErr, fail_loss, fail_err, fail_outOfRange; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_highErr -> status := HIGH_ERRONEOUS; (status = OK) |- fail_lowErr -> status := LOW_ERRONEOUS; (status = OK) |- fail_err -> status := ERRONEOUS; (status = OK) |- fail_outOfRange -> status := OUT_OF_RANGE; assert icone = case { (status = LOST) : 2, (status = HIGH_ERRONEOUS) : 3, (status = LOW_ERRONEOUS) : 3, else 1 }, output = case { ((Power = LOST) or (status = LOST)) : LOST, (((Power = ERRONEOUS) or (Power = LOW_ERRONEOUS)) or (Power = HIGH_ERRONEOUS)) : ERRONEOUS, (status = ERRONEOUS) : ERRONEOUS, (status = OUT_OF_RANGE) : LOST, (status = HIGH_ERRONEOUS) : HIGH_ERRONEOUS, (status = LOW_ERRONEOUS) : LOW_ERRONEOUS, else OK }; init status := OK; extern law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_Sensors_ComplexSensor flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; Power:Physical_BasicPhysical_HiLoPhysicalStatus:in; state status:Physical_BasicPhysical_SensorBasicPhysicalStatus; event fail_loss, fail_err, fail_outOfRange; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; (status = OK) |- fail_outOfRange -> status := OUT_OF_RANGE; assert icone = case { (status = LOST) : 2, (status = ERRONEOUS) : 3, else 1 }, output = case { ((Power = LOST) or (status = LOST)) : LOST, ((((Power = ERRONEOUS) or (Power = LOW_ERRONEOUS)) or (Power = HIGH_ERRONEOUS)) or (status = ERRONEOUS)) : ERRONEOUS, (status = OUT_OF_RANGE) : LOST, else OK }; init status := OK; extern law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_Sensors_PowerSupplyMonitoring flow icone:[1,2]:private; Power:Physical_BasicPhysical_HiLoPhysicalStatus:in; MonitoredPower:Physical_BasicPhysical_BasicPhysicalStatus:out; state status:Physical_BasicPhysical_BinaryPhysicalStatus; event fail_lossOfMonitoring; trans (status = OK) |- fail_lossOfMonitoring -> status := LOST; assert icone = case { (status = LOST) : 2, else 1 }, MonitoredPower = case { (Power = LOST) : LOST, ((((Power = ERRONEOUS) or (Power = HIGH_ERRONEOUS)) or (Power = LOW_ERRONEOUS)) and (status = OK)) : LOST, ((((Power = ERRONEOUS) or (Power = HIGH_ERRONEOUS)) or (Power = LOW_ERRONEOUS)) and (status = LOST)) : ERRONEOUS, else OK }; init status := OK; extern attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_Computers_Computation flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; Power:Physical_BasicPhysical_BasicPhysicalStatus:in; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_err; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; assert icone = case { (status = LOST) : 2, (status = ERRONEOUS) : 3, else 1 }, output = case { ((Power = LOST) or (status = LOST)) : LOST, (status = ERRONEOUS) : ERRONEOUS, else Power }; init status := OK; extern law = exponential(1.0E-4); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-7); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_Computers_AcquisitionEmission flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; Power:Physical_BasicPhysical_BasicPhysicalStatus:in; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_err; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; assert icone = case { (status = LOST) : 2, (status = ERRONEOUS) : 3, else 1 }, output = case { ((Power = LOST) or (status = LOST)) : LOST, (status = ERRONEOUS) : ERRONEOUS, else Power }; init status := OK; extern law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Functions_PhysicalOperators_PhysicalInjection flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; input:Physical_BasicPhysical_BasicPhysicalStatus:in; assert icone = case { (alloc = OK) : 1, (alloc = LOST) : 2, else 3 }, output = case { (alloc # OK) : alloc, else input }; edon node Functions_BasicFunctions_InOutFunction flow icone:[1,3]:private; input:Physical_BasicPhysical_BasicPhysicalStatus:in; output:Physical_BasicPhysical_BasicPhysicalStatus:out; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_error; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_error -> status := ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output = case { (status = OK) : input, else status }; init status := OK; extern law = constant(1.0E-4); attribute TypeOfEvent0x002f1() = "Functional"; law = constant(1.0E-5); attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status flow icone:[1,3]:private; output:Functions_BasicFunctions_ModeSelection:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; isErroneous:bool:out; isAlreadyErroneous:bool:in; input:Functions_BasicFunctions_ModeSelection:in; assert icone = case { (alloc = OK) : 1, (alloc = ERRONEOUS) : 3, else 2 }, output = case { (alloc = LOST) : MANUAL, ((alloc = ERRONEOUS) and isAlreadyErroneous) : input, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = MANUAL)) : AUTO, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = AUTO)) : MANUAL, else input }, isErroneous = case { (alloc = LOST) : isAlreadyErroneous, ((alloc = ERRONEOUS) and isAlreadyErroneous) : true, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = MANUAL)) : true, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = AUTO)) : true, else isAlreadyErroneous }; edon node Functions_BasicFunctions_InOutModeFunction flow icone:[1,2]:private; outputMode:Functions_BasicFunctions_ModeSelection:out; inputMode:Functions_BasicFunctions_ModeSelection:in; state status:{OK, STUCK_AUTO, STUCK_MAN}; event stuck_auto, stuck_man; trans (status = OK) |- stuck_man -> status := STUCK_MAN; (status = OK) |- stuck_auto -> status := STUCK_AUTO; assert outputMode = case { (status = STUCK_AUTO) : AUTO, (status = STUCK_MAN) : MANUAL, else inputMode }, icone = (if (outputMode = AUTO) then 1 else 2); init status := OK; extern law = exponential(0.001); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; law = exponential(0.001); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_BasicFunctions_SourceFunction flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_error; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_error -> status := ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output = status; init status := OK; extern law = constant(1.0E-4); attribute TypeOfEvent0x002f1() = "Functional"; law = constant(1.0E-5); attribute TypeOfEvent0x002f1() = "Functional"; edon node AIDASystem_Functions_Detection_v44 flow inputFlightPlan:Physical_BasicPhysical_BasicPhysicalStatus:in; inputPosition:Physical_BasicPhysical_BasicPhysicalStatus:in; inputSpeed:Physical_BasicPhysical_HiLoPhysicalStatus:in; inputControlPosition:Physical_BasicPhysical_BasicPhysicalStatus:in; inputLostHelixesControl:bool:in; inputIndicatedMode:Functions_BasicFunctions_ModeSelection:in; PilotSelectedMode:Functions_BasicFunctions_ModeSelection:out; ManualPayloadControl:Functions_BasicFunctions_Presence:out; PilotInconsistentControl:bool:out; PilotOrders:Functions_BasicFunctions_Presence:out; state mode:Functions_BasicFunctions_ModeSelection; event GoToManualMode; trans (mode = AUTO) |- GoToManualMode -> mode := MANUAL; assert PilotSelectedMode = (if (mode = AUTO) then AUTO else MANUAL), ManualPayloadControl = (if (mode = AUTO) then ABSENT else PRESENT), PilotInconsistentControl = ((mode = AUTO) and ((((((inputFlightPlan = ERRONEOUS) or (inputPosition # OK)) or (inputSpeed # OK)) or (inputControlPosition # OK)) or inputLostHelixesControl) or (inputIndicatedMode = MANUAL))), PilotOrders = (if (mode = AUTO) then ABSENT else PRESENT); init mode := AUTO; extern law = exponential(0.001); attribute DassaultSpecialCtrlPeriod() = 9.877E8; edon node Functions_PhysicalOperators_PhysicalInjection_bothHiLo flow icone:[1,3]:private; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; input:Physical_BasicPhysical_HiLoPhysicalStatus:in; assert icone = case { (alloc = OK) : 1, (alloc = LOST) : 2, else 3 }, output = case { (alloc = LOST) : LOST, (alloc = ERRONEOUS) : ERRONEOUS, else input }; edon node Functions_BasicFunctions_InOutFunction_Hilo_SF325 flow icone:[1,3]:private; input:Physical_BasicPhysical_HiLoPhysicalStatus:in; output_2:Physical_BasicPhysical_BasicPhysicalStatus:out; output_1:Physical_BasicPhysical_HiLoPhysicalStatus:out; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_error; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_error -> status := ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output_2 = case { (status = LOST) : LOST, (status = ERRONEOUS) : ERRONEOUS, (input = OK) : OK, (input = LOST) : LOST, else ERRONEOUS }, output_1 = case { (status = LOST) : LOST, (status = ERRONEOUS) : ERRONEOUS, else input }; init status := OK; extern law = constant(1.0E-4); attribute TypeOfEvent0x002f1() = "Functional"; law = constant(1.0E-5); attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_BasicOperators_AND_fullHiLo flow icone:[1,2]:private; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; input_1:Physical_BasicPhysical_HiLoPhysicalStatus:in; input_2:Physical_BasicPhysical_HiLoPhysicalStatus:in; assert output = case { ((input_1 = LOST) or (input_2 = LOST)) : LOST, ((input_1 = ERRONEOUS) or (input_2 = ERRONEOUS)) : ERRONEOUS, (input_1 = input_2) : input_1, (input_1 = OK) : input_2, (input_2 = OK) : input_1, else ERRONEOUS }, icone = case { (output = OK) : 1, else 2 }; edon node Functions_BasicFunctions_InOutFunction_HiLo flow icone:[1,3]:private; input:Physical_BasicPhysical_HiLoPhysicalStatus:in; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_error; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_error -> status := ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output = case { (status = LOST) : LOST, (status = ERRONEOUS) : ERRONEOUS, else input }; init status := OK; extern law = constant(1.0E-4); attribute TypeOfEvent0x002f1() = "Functional"; law = constant(1.0E-5); attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_BasicOperators_AND_complexHiLo flow icone:[1,2]:private; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; input_1:Physical_BasicPhysical_BasicPhysicalStatus:in; input_2:Physical_BasicPhysical_HiLoPhysicalStatus:in; assert output = case { ((input_1 = LOST) or (input_2 = LOST)) : LOST, (input_1 = ERRONEOUS) : ERRONEOUS, else input_2 }, icone = case { (output = OK) : 1, else 2 }; edon node Functions_PhysicalOperators_PhysicalInjection_HiLo flow icone:[1,3]:private; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; alloc:Physical_BasicPhysical_HiLoPhysicalStatus:in; input:Physical_BasicPhysical_BasicPhysicalStatus:in; assert icone = case { (alloc = OK) : 1, (alloc = LOST) : 2, else 3 }, output = case { (alloc # OK) : alloc, (input = OK) : OK, (input = LOST) : LOST, else ERRONEOUS }; edon node Functions_BasicFunctions_InOutFunction_HiLoReverse flow icone:[1,3]:private; input:Physical_BasicPhysical_HiLoPhysicalStatus:in; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_error; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_error -> status := ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output = case { (status = LOST) : LOST, (status = ERRONEOUS) : ERRONEOUS, (input = LOW_ERRONEOUS) : HIGH_ERRONEOUS, (input = HIGH_ERRONEOUS) : LOW_ERRONEOUS, else input }; init status := OK; extern law = constant(1.0E-4); attribute TypeOfEvent0x002f1() = "Functional"; law = constant(1.0E-5); attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_PhysicalOperators_AND_Physical flow icone:[1,2]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; input_1:Physical_BasicPhysical_BasicPhysicalStatus:in; input_2:Physical_BasicPhysical_BasicPhysicalStatus:in; assert output = (if ((input_1 = OK) and (input_2 = OK)) then OK else (if ((input_1 = LOST) or (input_2 = LOST)) then LOST else ERRONEOUS)), icone = case { (output = OK) : 1, else 2 }; edon node Functions_BasicOperators_ErrConditionalSelector_2_ComplexHiLo flow icone:[1,2]:private; inputAUTO:Physical_BasicPhysical_BasicPhysicalStatus:in; inputMANUAL:Physical_BasicPhysical_HiLoPhysicalStatus:in; condition:Functions_BasicFunctions_ModeSelection:in; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; assert icone = (if (condition = AUTO) then 1 else 2), output = case { (condition = MANUAL) : inputMANUAL, (inputAUTO = OK) : OK, (inputAUTO = LOST) : LOST, else ERRONEOUS }; edon node Functions_PhysicalOperators_PhysicalInjection_detection flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; input:Physical_BasicPhysical_BasicPhysicalStatus:in; assert icone = case { (alloc = OK) : 1, (alloc = LOST) : 2, else 3 }, output = case { ((alloc = LOST) or (alloc = ERRONEOUS)) : LOST, else input }; edon node Functions_BasicOperators_detectionOfErroneous flow output:Physical_BasicPhysical_BasicPhysicalStatus:out; input:Physical_BasicPhysical_BasicPhysicalStatus:in; assert output = case { (input = OK) : OK, else LOST }; edon node Functions_BasicOperators_AND flow icone:[1,2]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; input_1:Physical_BasicPhysical_BasicPhysicalStatus:in; input_2:Physical_BasicPhysical_BasicPhysicalStatus:in; assert output = (if ((input_1 = OK) and (input_2 = OK)) then OK else (if ((input_1 = LOST) or (input_2 = LOST)) then LOST else ERRONEOUS)), icone = case { (output = OK) : 1, else 2 }; edon node Functions_BasicOperators_ErrConditionalSelector_2 flow icone:[1,2]:private; inputAUTO:Physical_BasicPhysical_BasicPhysicalStatus:in; inputMANUAL:Physical_BasicPhysical_BasicPhysicalStatus:in; condition:Functions_BasicFunctions_ModeSelection:in; output:Physical_BasicPhysical_BasicPhysicalStatus:out; assert icone = (if (condition = AUTO) then 1 else 2), output = (if (condition = AUTO) then inputAUTO else inputMANUAL); edon node Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Origin flow icone:[1,3]:private; output:bool:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; input:bool:in; isErroneous:bool:out; assert icone = case { (alloc = OK) : 1, (alloc = LOST) : 2, else 3 }, output = case { (alloc = LOST) : false, (alloc = ERRONEOUS) : (not input), else input }, isErroneous = case { (alloc = ERRONEOUS) : true, else false }; edon node Functions_BasicOperators_Comparator_HiLo flow input1:Physical_BasicPhysical_HiLoPhysicalStatus:in; status_acquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; input2:Physical_BasicPhysical_HiLoPhysicalStatus:in; output:bool:out; assert output = case { (input1 = LOST) : true, (input2 = LOST) : true, (((input1 = ERRONEOUS) and (input2 = ERRONEOUS)) and (status_acquisition = ERRONEOUS)) : true, (input1 = input2) : false, (input1 = OK) : true, (input2 = OK) : true, (input1 = ERRONEOUS) : false, (input2 = ERRONEOUS) : false, else true }; edon node Functions_PhysicalOperators_PhysicalInjection_boolean_Status flow icone:[1,3]:private; output:bool:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; input:bool:in; isErroneous:bool:out; isAlreadyErroneous:bool:in; assert icone = case { (alloc = OK) : 1, (alloc = LOST) : 2, else 3 }, output = case { (alloc = LOST) : false, ((alloc = ERRONEOUS) and isAlreadyErroneous) : input, ((alloc = ERRONEOUS) and (not isAlreadyErroneous)) : (not input), else input }, isErroneous = case { (alloc = LOST) : isAlreadyErroneous, ((alloc = ERRONEOUS) and isAlreadyErroneous) : true, ((alloc = ERRONEOUS) and (not isAlreadyErroneous)) : true, else input }; edon node Boolean_Boolean_or4 flow icone:[1,2]:private; O:bool:out; I1:bool:in; I2:bool:in; I3:bool:in; I4:bool:in; assert icone = case { (((I1 or I2) or I3) or I4) : 1, else 2 }, O = (((I1 or I2) or I3) or I4); edon node Functions_BasicOperators_ANDBoolErrLost flow icone:[1,2]:private; input:bool:in; output:bool:out; failurePropagation:Physical_BasicPhysical_BasicPhysicalStatus:in; assert icone = (if (failurePropagation = OK) then 1 else 2), output = case { (failurePropagation = LOST) : false, (failurePropagation = ERRONEOUS) : true, else input }; edon node Functions_BasicOperators_Comparator flow input1:Physical_BasicPhysical_BasicPhysicalStatus:in; status_acquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; input2:Physical_BasicPhysical_BasicPhysicalStatus:in; output:bool:out; assert output = case { (input1 = LOST) : true, (input2 = LOST) : true, (((input1 = ERRONEOUS) and (input2 = ERRONEOUS)) and (status_acquisition = ERRONEOUS)) : true, (input1 = input2) : false, else true }; edon node Functions_BasicOperators_OR_3 flow icone:[1,2]:private; O:bool:out; I1:bool:in; I2:bool:in; I3:bool:in; assert icone = case { ((I1 or I2) or I3) : 1, else 2 }, O = ((I1 or I2) or I3); edon node Quadcopter_Observers_PilotRequiresManualMode flow icone:[1,2]:private; output:bool:out; input:Functions_BasicFunctions_ModeSelection:in; assert output = (input = MANUAL), icone = (if output then 2 else 1); edon node Boolean_Boolean_filter flow filterCriterion:bool:in; input:bool:in; output:bool:out; assert output = (if filterCriterion then false else input); edon node Quadcopter_Observers_StuckModeMAN_v03 flow icone:[1,2]:private; output:bool:out; PilotAPEngagementOrder:Functions_BasicFunctions_ModeSelection:in; AppliedAPEngagement:Functions_BasicFunctions_ModeSelection:in; assert output = ((AppliedAPEngagement = MANUAL) and (PilotAPEngagementOrder = AUTO)), icone = (if output then 2 else 1); edon node Boolean_Boolean_or2 flow icone:[1,2]:private; O:bool:out; I1:bool:in; I2:bool:in; assert icone = case { (I1 or I2) : 1, else 2 }, O = (I1 or I2); edon node Quadcopter_Observers_StuckMode_v03 flow icone:[1,2]:private; output:bool:out; input:Functions_BasicFunctions_ModeSelection:in; assert output = (input = AUTO), icone = (if output then 2 else 1); edon node Boolean_Boolean_intermediate flow icone:[1,2]:private; O:bool:out; I:bool:in; assert icone = case { I : 1, else 2 }, O = I; edon node Boolean_Boolean_and2 flow O:bool:out; I1:bool:in; I2:bool:in; assert O = (I1 and I2); edon node Quadcopter_Observers_ErroneousControlOfOneHelix flow icone:[1,2]:private; in1:Physical_BasicPhysical_HiLoPhysicalStatus:in; in2:Physical_BasicPhysical_HiLoPhysicalStatus:in; in3:Physical_BasicPhysical_HiLoPhysicalStatus:in; in4:Physical_BasicPhysical_HiLoPhysicalStatus:in; output:bool:out; assert output = ((((((((in1 = ERRONEOUS) or (in1 = HIGH_ERRONEOUS)) or (in2 = ERRONEOUS)) or (in2 = HIGH_ERRONEOUS)) or (in3 = ERRONEOUS)) or (in3 = HIGH_ERRONEOUS)) or (in4 = ERRONEOUS)) or (in4 = HIGH_ERRONEOUS)), icone = (if output then 2 else 1); edon node Quadcopter_Observers_TotalLossOfHelixesControl flow icone:[1,2]:private; in1:Physical_BasicPhysical_HiLoPhysicalStatus:in; in2:Physical_BasicPhysical_HiLoPhysicalStatus:in; in3:Physical_BasicPhysical_HiLoPhysicalStatus:in; in4:Physical_BasicPhysical_HiLoPhysicalStatus:in; output:bool:out; assert output = (((((in1 = LOST) or (in1 = LOW_ERRONEOUS)) and ((in2 = LOST) or (in2 = LOW_ERRONEOUS))) and ((in3 = LOST) or (in3 = LOW_ERRONEOUS))) and ((in4 = LOST) or (in4 = LOW_ERRONEOUS))), icone = (if output then 2 else 1); edon node Quadcopter_Observers_LossOfAtMost3HelixesControl flow icone:[1,2]:private; in1:Physical_BasicPhysical_HiLoPhysicalStatus:in; in2:Physical_BasicPhysical_HiLoPhysicalStatus:in; in3:Physical_BasicPhysical_HiLoPhysicalStatus:in; in4:Physical_BasicPhysical_HiLoPhysicalStatus:in; output:bool:out; assert output = (((((((((in1 = LOST) or (in1 = LOW_ERRONEOUS)) and ((in2 # ERRONEOUS) and (in2 # HIGH_ERRONEOUS))) and ((in3 # ERRONEOUS) and (in3 # HIGH_ERRONEOUS))) and ((in4 # ERRONEOUS) and (in4 # HIGH_ERRONEOUS))) or (((((in2 = LOST) or (in2 = LOW_ERRONEOUS)) and ((in1 # ERRONEOUS) and (in1 # HIGH_ERRONEOUS))) and ((in3 # ERRONEOUS) and (in3 # HIGH_ERRONEOUS))) and ((in4 # ERRONEOUS) and (in4 # HIGH_ERRONEOUS)))) or (((((in3 = LOST) or (in3 = LOW_ERRONEOUS)) and ((in1 # ERRONEOUS) and (in1 # HIGH_ERRONEOUS))) and ((in2 # ERRONEOUS) and (in2 # HIGH_ERRONEOUS))) and ((in4 # ERRONEOUS) and (in4 # HIGH_ERRONEOUS)))) or (((((in4 = LOST) or (in4 = LOW_ERRONEOUS)) and ((in1 # ERRONEOUS) and (in1 # HIGH_ERRONEOUS))) and ((in2 # ERRONEOUS) and (in2 # HIGH_ERRONEOUS))) and ((in3 # ERRONEOUS) and (in3 # HIGH_ERRONEOUS)))) and (not (((((in1 = LOST) or (in1 = LOW_ERRONEOUS)) and ((in2 = LOST) or (in2 = LOW_ERRONEOUS))) and ((in3 = LOST) or (in3 = LOW_ERRONEOUS))) and ((in4 = LOST) or (in4 = LOW_ERRONEOUS))))), icone = (if output then 2 else 1); edon node Functions_PhysicalOperators_PhysicalInjection_Presence_Status flow icone:[1,3]:private; output:Functions_BasicFunctions_Presence:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; isErroneous:bool:out; isAlreadyErroneous:bool:in; input:Functions_BasicFunctions_Presence:in; assert icone = case { (alloc = OK) : 1, (alloc = ERRONEOUS) : 3, else 2 }, output = case { (alloc = LOST) : PRESENT, ((alloc = ERRONEOUS) and isAlreadyErroneous) : input, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = PRESENT)) : ABSENT, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = ABSENT)) : PRESENT, else input }, isErroneous = case { (alloc = LOST) : isAlreadyErroneous, ((alloc = ERRONEOUS) and isAlreadyErroneous) : true, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = PRESENT)) : true, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = ABSENT)) : true, else isAlreadyErroneous }; edon node Functions_BasicOperators_PerfectPresenceSelectorOK flow icone:[1,2]:private; input:Physical_BasicPhysical_BasicPhysicalStatus:in; output:Physical_BasicPhysical_BasicPhysicalStatus:out; condition:Functions_BasicFunctions_Presence:in; assert icone = (if (condition = PRESENT) then 2 else 1), output = (if (condition = PRESENT) then OK else input); edon node Functions_PhysicalOperators_PhysicalInjection_Presence_Status_Origin flow icone:[1,3]:private; output:Functions_BasicFunctions_Presence:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; isErroneous:bool:out; input:Functions_BasicFunctions_Presence:in; assert icone = case { (alloc = OK) : 1, (alloc = ERRONEOUS) : 3, else 2 }, output = case { (alloc = LOST) : PRESENT, ((alloc = ERRONEOUS) and (input = PRESENT)) : ABSENT, ((alloc = ERRONEOUS) and (input = ABSENT)) : PRESENT, else input }, isErroneous = case { (alloc = ERRONEOUS) : true, else false }; edon node Functions_BasicFunctions_AbsentPresentFunction flow icone:[1,2]:private; input:Functions_BasicFunctions_Presence:in; output:Functions_BasicFunctions_Presence:out; state status:Physical_BasicPhysical_BinaryPhysicalStatus; event fail_loss; trans (status = OK) |- fail_loss -> status := LOST; assert icone = case { (status = OK) : 1, else 2 }, output = case { (status = OK) : input, else ABSENT }; init status := OK; extern law = exponential(1.0E-6); attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_PhysicalOperators_PhysicalInjection_Presence_2_Status_Origin flow icone:[1,3]:private; output:Functions_BasicFunctions_Presence:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; isErroneous:bool:out; input:Functions_BasicFunctions_Presence:in; assert icone = case { (alloc = OK) : 1, (alloc = ERRONEOUS) : 3, else 2 }, output = case { (alloc = LOST) : ABSENT, ((alloc = ERRONEOUS) and (input = PRESENT)) : ABSENT, ((alloc = ERRONEOUS) and (input = ABSENT)) : PRESENT, else input }, isErroneous = case { (alloc = ERRONEOUS) : true, else false }; edon node Functions_BasicOperators_PerfectPresenceSelectorLOSS flow icone:[1,2]:private; input:Physical_BasicPhysical_BasicPhysicalStatus:in; output:Physical_BasicPhysical_BasicPhysicalStatus:out; condition:Functions_BasicFunctions_Presence:in; assert icone = (if (condition = ABSENT) then 1 else 2), output = (if (condition = PRESENT) then LOST else input); edon node Functions_BasicFunctions_SourcePresenceFunction flow icone:[1,2]:private; output:Functions_BasicFunctions_Presence:out; state status:Functions_BasicFunctions_Presence; event fail_inadv; trans (status = ABSENT) |- fail_inadv -> status := PRESENT; assert icone = case { (status = ABSENT) : 1, else 2 }, output = status; init status := ABSENT; extern law = constant(1.0E-5); attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_BasicOperators_Choice flow icone:[1,2]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; input_1:Physical_BasicPhysical_BasicPhysicalStatus:in; input_2:Physical_BasicPhysical_BasicPhysicalStatus:in; assert icone = (if (input_2 = ERRONEOUS) then 2 else 1), output = (if (input_2 = ERRONEOUS) then ERRONEOUS else input_1); edon node Functions_PhysicalOperators_PhysicalInjection_ModeSelectionErroneousLost flow icone:[1,3]:private; output:Functions_BasicFunctions_ModeSelection_ErroneousLost:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; input:Functions_BasicFunctions_ModeSelection_ErroneousLost:in; assert icone = case { (alloc = OK) : 1, (alloc = ERRONEOUS) : 3, else 2 }, output = case { (alloc = LOST) : LOST, (alloc = ERRONEOUS) : ERRONEOUS, else input }; edon node Functions_BasicOperators_transtypageMode flow icone:[1,2]:private; O:Functions_BasicFunctions_ModeSelection_ErroneousLost:out; I:Functions_BasicFunctions_ModeSelection:in; assert icone = case { (I = AUTO) : 1, else 2 }, O = (if (I = AUTO) then AUTO else MANUAL); edon node Functions_BasicFunctions_ErroneousLostModeSelector flow icone:[1,2]:private; outputMode:Functions_BasicFunctions_ModeSelection_ErroneousLost:out; inputMode:Functions_BasicFunctions_ModeSelection_ErroneousLost:in; state status:{LOSS, OK, STUCK_AUTO, STUCK_MAN, UNDEF}; event stuck_auto, stuck_manual, OscillatoryModeSelection, fail_loss; trans (status = OK) |- stuck_auto -> status := STUCK_AUTO; (status = OK) |- stuck_manual -> status := STUCK_MAN; (status = OK) |- OscillatoryModeSelection -> status := UNDEF; (status = OK) |- fail_loss -> status := LOSS; assert outputMode = case { ((status = OK) and (inputMode = AUTO)) : AUTO, ((status = OK) and (inputMode = MANUAL)) : MANUAL, ((status = OK) and (inputMode = ERRONEOUS)) : ERRONEOUS, (status = LOSS) : LOST, (status = STUCK_AUTO) : AUTO, (status = UNDEF) : ERRONEOUS, else MANUAL }, icone = case { (outputMode = AUTO) : 1, else 2 }; init status := OK; extern law = exponential(0.001); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; law = exponential(0.001); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; law = exponential(0.001); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_PhysicalOperators_PhysicalInjection_ModeSelectionErroneousLost_Status flow icone:[1,3]:private; output:Functions_BasicFunctions_ModeSelection_ErroneousLost:out; alloc:Physical_BasicPhysical_BasicPhysicalStatus:in; isErroneous:bool:out; isAlreadyErroneous:bool:in; input:Functions_BasicFunctions_ModeSelection_ErroneousLost:in; assert icone = case { (alloc = OK) : 1, (alloc = ERRONEOUS) : 3, else 2 }, output = case { (alloc = LOST) : MANUAL, ((alloc = ERRONEOUS) and isAlreadyErroneous) : input, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = MANUAL)) : AUTO, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = AUTO)) : MANUAL, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = ERRONEOUS)) : ERRONEOUS, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = LOST)) : ERRONEOUS, else input }, isErroneous = case { (alloc = LOST) : isAlreadyErroneous, ((alloc = ERRONEOUS) and isAlreadyErroneous) : true, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = MANUAL)) : true, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = AUTO)) : true, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = ERRONEOUS)) : false, (((alloc = ERRONEOUS) and (not isAlreadyErroneous)) and (input = LOST)) : false, else isAlreadyErroneous }; edon node Functions_BasicFunctions_ErroneousLostPresentModeSelector flow icone:[1,2]:private; outputMode:Functions_BasicFunctions_ModeSelection_ErroneousLost:out; inputMode:Functions_BasicFunctions_ModeSelection_ErroneousLost:in; ManualOverride:Physical_BasicPhysical_BasicPhysicalStatus:in; MissionCompleted:Functions_BasicFunctions_Presence:in; state status:{LOSS, OK, STUCK_AUTO, STUCK_MAN, UNDEF}; event stuck_auto, stuck_manual, OscillatoryModeSelection, fail_loss; trans (status = OK) |- stuck_auto -> status := STUCK_AUTO; (status = OK) |- stuck_manual -> status := STUCK_MAN; (status = OK) |- OscillatoryModeSelection -> status := UNDEF; (status = OK) |- fail_loss -> status := LOSS; assert outputMode = case { ((status = OK) and ((ManualOverride # LOST) or (MissionCompleted = PRESENT))) : MANUAL, ((status = OK) and (inputMode = AUTO)) : AUTO, ((status = OK) and (inputMode = MANUAL)) : MANUAL, ((status = OK) and (inputMode = ERRONEOUS)) : ERRONEOUS, ((status = OK) and (inputMode = LOST)) : MANUAL, (status = STUCK_AUTO) : AUTO, (status = STUCK_MAN) : MANUAL, (status = UNDEF) : ERRONEOUS, else LOST }, icone = case { (outputMode = AUTO) : 1, else 2 }; init status := OK; extern law = exponential(0.001); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; law = exponential(0.001); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; law = exponential(0.001); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_BasicFunctions_FaultyManualModeSelector_LossType flow icone:[1,2]:private; outputMode:Functions_BasicFunctions_ModeSelection:out; inputMode:Functions_BasicFunctions_ModeSelection_ErroneousLost:in; FlightPlanInterruption:Functions_BasicFunctions_Presence:out; state status:{OK, STUCK_AUTO, STUCK_MANUAL}; event stuck_auto, stuck_manual; trans (status = OK) |- stuck_auto -> status := STUCK_AUTO; (status = OK) |- stuck_manual -> status := STUCK_MANUAL; assert outputMode = case { ((status = OK) and ((inputMode = ERRONEOUS) or (inputMode = LOST))) : MANUAL, ((status = OK) and (inputMode = AUTO)) : AUTO, ((status = OK) and (inputMode = MANUAL)) : MANUAL, (status = STUCK_AUTO) : AUTO, else MANUAL }, icone = case { (outputMode = AUTO) : 1, else 2 }, FlightPlanInterruption = case { ((status = OK) and ((inputMode = ERRONEOUS) or (inputMode = LOST))) : PRESENT, ((status = OK) and (inputMode = AUTO)) : ABSENT, ((status = OK) and (inputMode = MANUAL)) : PRESENT, (status = STUCK_AUTO) : ABSENT, else PRESENT }; init status := OK; extern attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Actuators flow icone:[1,3]:private; output:bool:out; alloc:Physical_BasicPhysical_HiLoPhysicalStatus:in; input:bool:in; isAlreadyErroneous:bool:in; assert icone = case { (alloc = OK) : 1, (alloc = LOST) : 2, else 3 }, output = case { (alloc = LOST) : false, (alloc = LOW_ERRONEOUS) : false, (alloc = HIGH_ERRONEOUS) : true, ((alloc = ERRONEOUS) and isAlreadyErroneous) : input, ((alloc = ERRONEOUS) and (not isAlreadyErroneous)) : (not input), else input }; edon node Boolean_Boolean_BooleanInOutFunction flow icone:[1,3]:private; input:bool:in; output:bool:out; state status:Functions_BasicFunctions_BooleanStuck; event stuck_true, stuck_false; trans (status = OK) |- stuck_true -> status := STUCK_TRUE; (status = OK) |- stuck_false -> status := STUCK_FALSE; assert icone = case { (status = OK) : 1, (status = STUCK_FALSE) : 3, else 2 }, output = case { (status = STUCK_TRUE) : true, (status = STUCK_FALSE) : false, else input }; init status := OK; extern attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_BasicOperators_PerfectConditionalSelectorLOST_HiLo flow icone:[1,2]:private; input:Physical_BasicPhysical_HiLoPhysicalStatus:in; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; condition:bool:in; assert icone = (if condition then 2 else 1), output = (if condition then LOST else input); edon node Functions_BasicFunctions_InOutPresentFunction flow icone:[1,3]:private; input:Functions_BasicFunctions_Presence:in; output:Physical_BasicPhysical_BasicPhysicalStatus:out; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_error; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_error -> status := ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output = case { (status = OK) : (if (input = PRESENT) then OK else LOST), else status }; init status := OK; extern law = constant(1.0E-4); attribute TypeOfEvent0x002f1() = "Functional"; law = constant(1.0E-5); attribute TypeOfEvent0x002f1() = "Functional"; edon node Functions_BasicOperators_AND_simpleHiLo flow icone:[1,2]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; input_1:Physical_BasicPhysical_BasicPhysicalStatus:in; input_2:Physical_BasicPhysical_HiLoPhysicalStatus:in; assert output = (if ((input_1 = OK) and (input_2 = OK)) then OK else (if ((input_1 = LOST) or (input_2 = LOST)) then LOST else ERRONEOUS)), icone = case { (output = OK) : 1, else 2 }; edon node Components_Propellers_Propeller flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_degradation, fail_loss; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_degradation -> status := ERRONEOUS; assert icone = case { (status = LOST) : 2, (status = ERRONEOUS) : 3, else 1 }, output = status; init status := OK; extern law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_PowerSupply_PowerDistribution flow icone:[1,3]:private; input:Physical_BasicPhysical_HiLoPhysicalStatus:in; output:Physical_BasicPhysical_HiLoPhysicalStatus:out; state status:Physical_BasicPhysical_HiLoPhysicalStatus; event fail_unsuff, fail_err, fail_loss; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; (status = OK) |- fail_unsuff -> status := LOW_ERRONEOUS; assert icone = case { (status = OK) : 1, (status = LOST) : 2, else 3 }, output = case { ((status = LOST) or (input = LOST)) : LOST, (status # OK) : status, else input }; init status := OK; extern attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_Actuators_MotorAndVariator flow icone:[1,3]:private; output:Physical_BasicPhysical_BasicPhysicalStatus:out; Power:Physical_BasicPhysical_HiLoPhysicalStatus:in; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_loss, fail_err; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; assert icone = case { (status = LOST) : 2, (status = ERRONEOUS) : 3, else 1 }, output = case { (((Power = LOST) or (Power = LOW_ERRONEOUS)) or (status = LOST)) : LOST, (((Power = ERRONEOUS) or (Power = HIGH_ERRONEOUS)) or (status = ERRONEOUS)) : ERRONEOUS, else OK }; init status := OK; extern law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(2.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node Components_DroneControlDesk_DroneControlDesk flow icone:[1,3]:private; Alloc_DroneControlDesk:Physical_BasicPhysical_BasicPhysicalStatus:out; state status:Physical_BasicPhysical_BasicPhysicalStatus; event fail_err, fail_loss; trans (status = OK) |- fail_loss -> status := LOST; (status = OK) |- fail_err -> status := ERRONEOUS; assert icone = case { (status = LOST) : 2, (status = ERRONEOUS) : 3, else 1 }, Alloc_DroneControlDesk = status; init status := OK; extern law = exponential(1.0E-6); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; law = exponential(1.0E-5); attribute DassaultSpecialCtrlPeriod() = 9.877E8; attribute TypeOfEvent0x002f1() = "Physical"; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF725_ComputeAltitudeAndVerticalSpeedMON flow icone:[1,3]:private; VerticalSpeed:Physical_BasicPhysical_BasicPhysicalStatus:out; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; GroundAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; BarometricAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF725_Dysfunctional:Functions_BasicFunctions_InOutFunction_Hilo_SF325; SF725_AllNeeded:Functions_BasicOperators_AND_fullHiLo; assert icone = case { (SF725_Dysfunctional.status = LOST) : 2, (SF725_Dysfunctional.status = ERRONEOUS) : 3, else 1 }, VerticalSpeed = Inj_Comp2.output, Altitude = Inj_Comp1.output, Inj_Comp2.alloc = Alloc_MonProcComputation, Inj_Comp2.input = SF725_Dysfunctional.output_2, Inj_Comp1.alloc = Alloc_MonProcComputation, Inj_Comp1.input = SF725_Dysfunctional.output_1, SF725_Dysfunctional.input = SF725_AllNeeded.output, SF725_AllNeeded.input_1 = GroundAltitude, SF725_AllNeeded.input_2 = BarometricAltitude; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF724_ComputeGroundAltitudeMON flow icone:[1,3]:private; GroundAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMonitoringDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; MeasuredGroundDistance:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub Inj_DroneMonitoringDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF724_Dysfunctional:Functions_BasicFunctions_InOutFunction_HiLo; SF724_NeedAll:Functions_BasicOperators_AND_complexHiLo; Inj_Acq:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; assert icone = case { (SF724_Dysfunctional.status = LOST) : 2, (SF724_Dysfunctional.status = ERRONEOUS) : 3, else 1 }, GroundAltitude = Inj_Comp.output, Inj_DroneMonitoringDigitalNetworkPath.alloc = Alloc_DroneMonitoringDigitalNetworkPath, Inj_DroneMonitoringDigitalNetworkPath.input = MeasuredGroundDistance, Inj_Comp.alloc = Alloc_MonProcComputation, Inj_Comp.input = SF724_Dysfunctional.output, SF724_Dysfunctional.input = SF724_NeedAll.output, SF724_NeedAll.input_1 = Attitude, SF724_NeedAll.input_2 = Inj_Acq.output, Inj_Acq.alloc = Alloc_MonProcAcquisition, Inj_Acq.input = Inj_DroneMonitoringDigitalNetworkPath.output; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF723_MeasureTelemetricSignalMON flow icone:[1,3]:private; GroundDistance:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_TelemetricSensorMON:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub Inj_TelemetricSensorMON:Functions_PhysicalOperators_PhysicalInjection_HiLo; SF723_Dysfunctional:Functions_BasicFunctions_SourceFunction; assert icone = case { (SF723_Dysfunctional.status = LOST) : 2, (SF723_Dysfunctional.status = ERRONEOUS) : 3, else 1 }, GroundDistance = Inj_TelemetricSensorMON.output, Inj_TelemetricSensorMON.alloc = Alloc_TelemetricSensorMON, Inj_TelemetricSensorMON.input = SF723_Dysfunctional.output; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF721_MeasureAmbiantPressureMON flow icone:[1,3]:private; Pressure:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_PressureSensorMON:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub Inj_PressureSensorMON:Functions_PhysicalOperators_PhysicalInjection_HiLo; SF721_Dysfunctional:Functions_BasicFunctions_SourceFunction; assert icone = case { (SF721_Dysfunctional.status = LOST) : 2, (SF721_Dysfunctional.status = ERRONEOUS) : 3, else 1 }, Pressure = Inj_PressureSensorMON.output, Inj_PressureSensorMON.alloc = Alloc_PressureSensorMON, Inj_PressureSensorMON.input = SF721_Dysfunctional.output; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF722_ComputeBarometricAltitudeMON flow icone:[1,3]:private; BarometricAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMonitoringDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; MeasuredPressure:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub Inj_DroneMonitoringDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF722_Dysfunctional:Functions_BasicFunctions_InOutFunction_HiLoReverse; Inj_Acq:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; assert icone = case { (SF722_Dysfunctional.status = LOST) : 2, (SF722_Dysfunctional.status = ERRONEOUS) : 3, else 1 }, BarometricAltitude = Inj_Comp.output, Inj_DroneMonitoringDigitalNetworkPath.alloc = Alloc_DroneMonitoringDigitalNetworkPath, Inj_DroneMonitoringDigitalNetworkPath.input = MeasuredPressure, Inj_Comp.alloc = Alloc_MonProcComputation, Inj_Comp.input = SF722_Dysfunctional.output, SF722_Dysfunctional.input = Inj_Acq.output, Inj_Acq.alloc = Alloc_MonProcAcquisition, Inj_Acq.input = Inj_DroneMonitoringDigitalNetworkPath.output; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF731_2_ControlAltitudeMON flow icone:[1,3]:private; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; AltitudeConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; T_AP:Physical_BasicPhysical_BasicPhysicalStatus:in; APEngagement^Mode:Functions_BasicFunctions_ModeSelection:in; APEngagement^IsErroneous:bool:in; T:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneDigitalNetworkPath5:Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status; Inj_DroneDigitalNetworkPath4:Functions_PhysicalOperators_PhysicalInjection; Inj_DroneDigitalNetworkPath3:Functions_PhysicalOperators_PhysicalInjection; Inj_DroneDigitalNetworkPath2:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_DroneDigitalNetworkPath1:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq5:Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF731_ComputeThrustMON:Functions_BasicFunctions_InOutFunction_HiLoReverse; SF731_2_AND2:Functions_BasicOperators_AND_complexHiLo; SF731_2_AND1:Functions_BasicOperators_AND_complexHiLo; Inj_Acq3:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF732_SelectTotalThrustConsignMON:Functions_BasicOperators_ErrConditionalSelector_2_ComplexHiLo; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq4:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq1:Functions_PhysicalOperators_PhysicalInjection; assert icone = (if (SF731_ComputeThrustMON.status = OK) then 1 else (if (SF731_ComputeThrustMON.status = LOST) then 3 else 2)), T = Inj_Comp.output, Inj_DroneDigitalNetworkPath5.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath5.isAlreadyErroneous = APEngagement^IsErroneous, Inj_DroneDigitalNetworkPath5.input = APEngagement^Mode, Inj_DroneDigitalNetworkPath4.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath4.input = AltitudeConsign, Inj_DroneDigitalNetworkPath3.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath3.input = T_AP, Inj_DroneDigitalNetworkPath2.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath2.input = Altitude, Inj_DroneDigitalNetworkPath1.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath1.input = Attitude, Inj_Acq5.alloc = Alloc_MonProcAcquisition, Inj_Acq5.isAlreadyErroneous = Inj_DroneDigitalNetworkPath5.isErroneous, Inj_Acq5.input = Inj_DroneDigitalNetworkPath5.output, Inj_Comp.alloc = Alloc_MonProcComputation, Inj_Comp.input = SF731_ComputeThrustMON.output, SF731_ComputeThrustMON.input = SF732_SelectTotalThrustConsignMON.output, SF731_2_AND2.input_1 = Inj_Acq4.output, SF731_2_AND2.input_2 = SF731_2_AND1.output, SF731_2_AND1.input_1 = Inj_Acq1.output, SF731_2_AND1.input_2 = Inj_Acq3.output, Inj_Acq3.alloc = Alloc_MonProcAcquisition, Inj_Acq3.input = Inj_DroneDigitalNetworkPath2.output, SF732_SelectTotalThrustConsignMON.inputAUTO = Inj_Acq2.output, SF732_SelectTotalThrustConsignMON.inputMANUAL = SF731_2_AND2.output, SF732_SelectTotalThrustConsignMON.condition = Inj_Acq5.output, Inj_Acq2.alloc = Alloc_MonProcAcquisition, Inj_Acq2.input = Inj_DroneDigitalNetworkPath3.output, Inj_Acq4.alloc = Alloc_MonProcAcquisition, Inj_Acq4.input = Inj_DroneDigitalNetworkPath4.output, Inj_Acq1.alloc = Alloc_MonProcAcquisition, Inj_Acq1.input = Inj_DroneDigitalNetworkPath1.output; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF733_6_ControlAttitudeMON flow icone:[1,3]:private; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; AttitudeAPConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; PitchRollConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; YawConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; APEngagement^Mode:Functions_BasicFunctions_ModeSelection:in; APEngagement^IsErroneous:bool:in; P:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PilotDroneControlPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneDigitalNetworkPath5:Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status; Inj_DroneDigitalNetworkPath3:Functions_PhysicalOperators_PhysicalInjection; Inj_PilotDroneControlPath:Functions_PhysicalOperators_PhysicalInjection_detection; Inj_DroneDigitalNetworkPath1:Functions_PhysicalOperators_PhysicalInjection; SF733_Detection:Functions_BasicOperators_detectionOfErroneous; Inj_DroneDigitalNetworkPath2:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq5:Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status; Inj_Acq4:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq3:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq1:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection; SF733_6_AND3:Functions_BasicOperators_AND; SF734_6_ControlAttitudeMON:Functions_BasicFunctions_InOutFunction; SF733_SelectAttitudeConsignMON:Functions_BasicOperators_ErrConditionalSelector_2; SF733_6_AND2:Functions_BasicOperators_AND; SF733_6_AND1:Functions_BasicOperators_AND; assert icone = (if (SF734_6_ControlAttitudeMON.status = OK) then 1 else (if (SF734_6_ControlAttitudeMON.status = LOST) then 3 else 2)), P = Inj_Comp.output, Inj_DroneDigitalNetworkPath5.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath5.isAlreadyErroneous = APEngagement^IsErroneous, Inj_DroneDigitalNetworkPath5.input = APEngagement^Mode, Inj_DroneDigitalNetworkPath3.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath3.input = YawConsign, Inj_PilotDroneControlPath.alloc = Alloc_PilotDroneControlPath, Inj_PilotDroneControlPath.input = PitchRollConsign, Inj_DroneDigitalNetworkPath1.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath1.input = AttitudeAPConsign, SF733_Detection.input = Inj_Acq4.output, Inj_DroneDigitalNetworkPath2.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath2.input = Attitude, Inj_Acq5.alloc = Alloc_MonProcAcquisition, Inj_Acq5.isAlreadyErroneous = Inj_DroneDigitalNetworkPath5.isErroneous, Inj_Acq5.input = Inj_DroneDigitalNetworkPath5.output, Inj_Acq4.alloc = Alloc_MonProcAcquisition, Inj_Acq4.input = Inj_PilotDroneControlPath.output, Inj_Acq3.alloc = Alloc_MonProcAcquisition, Inj_Acq3.input = Inj_DroneDigitalNetworkPath3.output, Inj_Acq2.alloc = Alloc_MonProcAcquisition, Inj_Acq2.input = Inj_DroneDigitalNetworkPath2.output, Inj_Acq1.alloc = Alloc_MonProcAcquisition, Inj_Acq1.input = Inj_DroneDigitalNetworkPath1.output, Inj_Comp.alloc = Alloc_MonProcComputation, Inj_Comp.input = SF734_6_ControlAttitudeMON.output, SF733_6_AND3.input_1 = SF733_Detection.output, SF733_6_AND3.input_2 = Inj_Acq3.output, SF734_6_ControlAttitudeMON.input = SF733_SelectAttitudeConsignMON.output, SF733_SelectAttitudeConsignMON.inputAUTO = SF733_6_AND2.output, SF733_SelectAttitudeConsignMON.inputMANUAL = SF733_6_AND1.output, SF733_SelectAttitudeConsignMON.condition = Inj_Acq5.output, SF733_6_AND2.input_1 = Inj_Acq1.output, SF733_6_AND2.input_2 = Inj_Acq2.output, SF733_6_AND1.input_1 = SF733_6_AND3.output, SF733_6_AND1.input_2 = Inj_Acq2.output; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF737_8_ComputeMotorRate flow icone:[1,2]:private; Thrust:Physical_BasicPhysical_HiLoPhysicalStatus:in; P:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; MotorRates:Physical_BasicPhysical_HiLoPhysicalStatus:out; sub Inj_Comp:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF737_8_ControlThrust:Functions_BasicFunctions_InOutFunction_HiLo; SF737_AllNeeded:Functions_BasicOperators_AND_complexHiLo; assert icone = case { (SF737_8_ControlThrust.status = OK) : 1, else 2 }, MotorRates = Inj_Comp.output, Inj_Comp.alloc = Alloc_MonProcComputation, Inj_Comp.input = SF737_8_ControlThrust.output, SF737_8_ControlThrust.input = SF737_AllNeeded.output, SF737_AllNeeded.input_1 = P, SF737_AllNeeded.input_2 = Thrust; edon node eq_AIDASystem_Functions_SF745_DisableDroneMotor flow icone:[1,2]:private; Motor1Runaway^Detected:bool:in; Motor1Runaway^IsErroneous:bool:in; Motor2Runaway^Detected:bool:in; Motor2Runaway^IsErroneous:bool:in; Motor3Runaway^Detected:bool:in; Motor3Runaway^IsErroneous:bool:in; Motor4Runaway^Detected:bool:in; Motor4Runaway^IsErroneous:bool:in; AttitudeFailureDetected^Detected:bool:in; AttitudeFailureDetected^IsErroneous:bool:in; AltitudeFailureDetected^Detected:bool:in; AltitudeFailureDetected^IsErroneous:bool:in; MotorConsignFailureDetected^Detected:bool:in; MotorConsignFailureDetected^IsErroneous:bool:in; MotorDisabled^Motor1:bool:out; MotorDisabled^IsErroneous1:bool:out; MotorDisabled^Motor2:bool:out; MotorDisabled^IsErroneous2:bool:out; MotorDisabled^Motor3:bool:out; MotorDisabled^IsErroneous3:bool:out; MotorDisabled^Motor4:bool:out; MotorDisabled^IsErroneous4:bool:out; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_Comp4:Functions_PhysicalOperators_PhysicalInjection_boolean_Status; Inj_Comp3:Functions_PhysicalOperators_PhysicalInjection_boolean_Status; Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection_boolean_Status; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection_boolean_Status; SF745_OR44:Boolean_Boolean_or4; SF745_OR33:Boolean_Boolean_or4; SF745_OR22:Boolean_Boolean_or4; SF745_OR11:Boolean_Boolean_or4; FailureModesOfSF74:Functions_BasicFunctions_SourceFunction; SF745_FMPropagation4:Functions_BasicOperators_ANDBoolErrLost; SF745_FMPropagation3:Functions_BasicOperators_ANDBoolErrLost; SF745_FMPropagation2:Functions_BasicOperators_ANDBoolErrLost; SF745_FMPropagation1:Functions_BasicOperators_ANDBoolErrLost; Inj_Emiss4:Functions_PhysicalOperators_PhysicalInjection_boolean_Status; Inj_Emiss3:Functions_PhysicalOperators_PhysicalInjection_boolean_Status; Inj_Emiss2:Functions_PhysicalOperators_PhysicalInjection_boolean_Status; Inj_Emiss1:Functions_PhysicalOperators_PhysicalInjection_boolean_Status; SF745_OR4:Boolean_Boolean_or4; SF745_OR3:Boolean_Boolean_or4; SF745_OR2:Boolean_Boolean_or4; SF745_OR1:Boolean_Boolean_or4; assert icone = case { (FailureModesOfSF74.status = OK) : 1, else 2 }, MotorDisabled^Motor1 = Inj_Emiss1.output, MotorDisabled^IsErroneous1 = Inj_Emiss1.isErroneous, MotorDisabled^Motor2 = Inj_Emiss2.output, MotorDisabled^IsErroneous2 = Inj_Emiss2.isErroneous, MotorDisabled^Motor3 = Inj_Emiss3.output, MotorDisabled^IsErroneous3 = Inj_Emiss3.isErroneous, MotorDisabled^Motor4 = Inj_Emiss4.output, MotorDisabled^IsErroneous4 = Inj_Emiss4.isErroneous, Inj_Comp4.alloc = Alloc_MonProcComputation, Inj_Comp4.input = SF745_FMPropagation4.output, Inj_Comp4.isAlreadyErroneous = SF745_OR44.O, Inj_Comp3.alloc = Alloc_MonProcComputation, Inj_Comp3.input = SF745_FMPropagation3.output, Inj_Comp3.isAlreadyErroneous = SF745_OR33.O, Inj_Comp2.alloc = Alloc_MonProcComputation, Inj_Comp2.input = SF745_FMPropagation2.output, Inj_Comp2.isAlreadyErroneous = SF745_OR22.O, Inj_Comp1.alloc = Alloc_MonProcComputation, Inj_Comp1.input = SF745_FMPropagation1.output, Inj_Comp1.isAlreadyErroneous = SF745_OR11.O, SF745_OR44.I1 = Motor4Runaway^IsErroneous, SF745_OR44.I2 = AltitudeFailureDetected^IsErroneous, SF745_OR44.I3 = AttitudeFailureDetected^IsErroneous, SF745_OR44.I4 = MotorConsignFailureDetected^IsErroneous, SF745_OR33.I1 = Motor3Runaway^IsErroneous, SF745_OR33.I2 = AltitudeFailureDetected^IsErroneous, SF745_OR33.I3 = AttitudeFailureDetected^IsErroneous, SF745_OR33.I4 = MotorConsignFailureDetected^IsErroneous, SF745_OR22.I1 = Motor2Runaway^IsErroneous, SF745_OR22.I2 = AltitudeFailureDetected^IsErroneous, SF745_OR22.I3 = AttitudeFailureDetected^IsErroneous, SF745_OR22.I4 = MotorConsignFailureDetected^IsErroneous, SF745_OR11.I1 = Motor1Runaway^IsErroneous, SF745_OR11.I2 = AltitudeFailureDetected^IsErroneous, SF745_OR11.I3 = AttitudeFailureDetected^IsErroneous, SF745_OR11.I4 = MotorConsignFailureDetected^IsErroneous, SF745_FMPropagation4.input = SF745_OR4.O, SF745_FMPropagation4.failurePropagation = FailureModesOfSF74.output, SF745_FMPropagation3.input = SF745_OR3.O, SF745_FMPropagation3.failurePropagation = FailureModesOfSF74.output, SF745_FMPropagation2.input = SF745_OR2.O, SF745_FMPropagation2.failurePropagation = FailureModesOfSF74.output, SF745_FMPropagation1.input = SF745_OR1.O, SF745_FMPropagation1.failurePropagation = FailureModesOfSF74.output, Inj_Emiss4.alloc = Alloc_MonProcEmission, Inj_Emiss4.input = Inj_Comp4.output, Inj_Emiss4.isAlreadyErroneous = Inj_Comp4.isErroneous, Inj_Emiss3.alloc = Alloc_MonProcEmission, Inj_Emiss3.input = Inj_Comp3.output, Inj_Emiss3.isAlreadyErroneous = Inj_Comp3.isErroneous, Inj_Emiss2.alloc = Alloc_MonProcEmission, Inj_Emiss2.input = Inj_Comp2.output, Inj_Emiss2.isAlreadyErroneous = Inj_Comp2.isErroneous, Inj_Emiss1.alloc = Alloc_MonProcEmission, Inj_Emiss1.input = Inj_Comp1.output, Inj_Emiss1.isAlreadyErroneous = Inj_Comp1.isErroneous, SF745_OR4.I1 = Motor4Runaway^Detected, SF745_OR4.I2 = AltitudeFailureDetected^Detected, SF745_OR4.I3 = AttitudeFailureDetected^Detected, SF745_OR4.I4 = MotorConsignFailureDetected^Detected, SF745_OR3.I1 = MotorConsignFailureDetected^Detected, SF745_OR3.I2 = AttitudeFailureDetected^Detected, SF745_OR3.I3 = AltitudeFailureDetected^Detected, SF745_OR3.I4 = Motor3Runaway^Detected, SF745_OR2.I1 = MotorConsignFailureDetected^Detected, SF745_OR2.I2 = AttitudeFailureDetected^Detected, SF745_OR2.I3 = AltitudeFailureDetected^Detected, SF745_OR2.I4 = Motor2Runaway^Detected, SF745_OR1.I1 = MotorConsignFailureDetected^Detected, SF745_OR1.I2 = AttitudeFailureDetected^Detected, SF745_OR1.I3 = AltitudeFailureDetected^Detected, SF745_OR1.I4 = Motor1Runaway^Detected; edon node eq_AIDASystem_Functions_SF744_CompareDroneMotorRate flow MotorRatesMeasured^MotorRate1:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRatesMeasured^MotorRate2:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRatesMeasured^MotorRate3:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRatesMeasured^MotorRate4:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMonitoringDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; MotorRate:Physical_BasicPhysical_HiLoPhysicalStatus:in; Motor1Runaway^Detected:bool:out; Motor1Runaway^IsErroneous:bool:out; Motor2Runaway^Detected:bool:out; Motor2Runaway^IsErroneous:bool:out; Motor3Runaway^Detected:bool:out; Motor3Runaway^IsErroneous:bool:out; Motor4Runaway^Detected:bool:out; Motor4Runaway^IsErroneous:bool:out; sub Inj_DroneDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_DroneMonitoringDigitalNetworkPath5:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_DroneMonitoringDigitalNetworkPath4:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_DroneMonitoringDigitalNetworkPath3:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_DroneMonitoringDigitalNetworkPath2:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Comp4:Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Origin; Inj_Comp3:Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Origin; Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Origin; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Origin; Inj_Acq5:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Acq4:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Acq3:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF744_MonitorMotorRate4:Functions_BasicOperators_Comparator_HiLo; SF744_MonitorMotorRate3:Functions_BasicOperators_Comparator_HiLo; SF744_MonitorMotorRate2:Functions_BasicOperators_Comparator_HiLo; SF744_MonitorMotorRate1:Functions_BasicOperators_Comparator_HiLo; Inj_Acq1:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; assert Motor1Runaway^Detected = Inj_Comp1.output, Motor1Runaway^IsErroneous = Inj_Comp1.isErroneous, Motor2Runaway^Detected = Inj_Comp2.output, Motor2Runaway^IsErroneous = Inj_Comp2.isErroneous, Motor3Runaway^Detected = Inj_Comp3.output, Motor3Runaway^IsErroneous = Inj_Comp3.isErroneous, Motor4Runaway^Detected = Inj_Comp4.output, Motor4Runaway^IsErroneous = Inj_Comp4.isErroneous, Inj_DroneDigitalNetworkPath.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath.input = MotorRate, Inj_DroneMonitoringDigitalNetworkPath5.alloc = Alloc_DroneMonitoringDigitalNetworkPath, Inj_DroneMonitoringDigitalNetworkPath5.input = MotorRatesMeasured^MotorRate4, Inj_DroneMonitoringDigitalNetworkPath4.alloc = Alloc_DroneMonitoringDigitalNetworkPath, Inj_DroneMonitoringDigitalNetworkPath4.input = MotorRatesMeasured^MotorRate3, Inj_DroneMonitoringDigitalNetworkPath3.alloc = Alloc_DroneMonitoringDigitalNetworkPath, Inj_DroneMonitoringDigitalNetworkPath3.input = MotorRatesMeasured^MotorRate2, Inj_DroneMonitoringDigitalNetworkPath2.alloc = Alloc_DroneMonitoringDigitalNetworkPath, Inj_DroneMonitoringDigitalNetworkPath2.input = MotorRatesMeasured^MotorRate1, Inj_Comp4.alloc = Alloc_MonProcComputation, Inj_Comp4.input = SF744_MonitorMotorRate4.output, Inj_Comp3.alloc = Alloc_MonProcComputation, Inj_Comp3.input = SF744_MonitorMotorRate3.output, Inj_Comp2.alloc = Alloc_MonProcComputation, Inj_Comp2.input = SF744_MonitorMotorRate2.output, Inj_Comp1.alloc = Alloc_MonProcComputation, Inj_Comp1.input = SF744_MonitorMotorRate1.output, Inj_Acq5.alloc = Alloc_MonProcAcquisition, Inj_Acq5.input = Inj_DroneMonitoringDigitalNetworkPath5.output, Inj_Acq4.alloc = Alloc_MonProcAcquisition, Inj_Acq4.input = Inj_DroneMonitoringDigitalNetworkPath4.output, Inj_Acq3.alloc = Alloc_MonProcAcquisition, Inj_Acq3.input = Inj_DroneMonitoringDigitalNetworkPath3.output, Inj_Acq2.alloc = Alloc_MonProcAcquisition, Inj_Acq2.input = Inj_DroneMonitoringDigitalNetworkPath2.output, SF744_MonitorMotorRate4.input1 = Inj_Acq5.output, SF744_MonitorMotorRate4.status_acquisition = Alloc_MonProcAcquisition, SF744_MonitorMotorRate4.input2 = Inj_Acq1.output, SF744_MonitorMotorRate3.input1 = Inj_Acq4.output, SF744_MonitorMotorRate3.status_acquisition = Alloc_MonProcAcquisition, SF744_MonitorMotorRate3.input2 = Inj_Acq1.output, SF744_MonitorMotorRate2.input1 = Inj_Acq3.output, SF744_MonitorMotorRate2.status_acquisition = Alloc_MonProcAcquisition, SF744_MonitorMotorRate2.input2 = Inj_Acq1.output, SF744_MonitorMotorRate1.input1 = Inj_Acq2.output, SF744_MonitorMotorRate1.status_acquisition = Alloc_MonProcAcquisition, SF744_MonitorMotorRate1.input2 = Inj_Acq1.output, Inj_Acq1.alloc = Alloc_MonProcAcquisition, Inj_Acq1.input = Inj_DroneDigitalNetworkPath.output; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF742_CompareDroneAltitude flow AltitudeMON:Physical_BasicPhysical_HiLoPhysicalStatus:in; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; GroundAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; GroundAltitudeMON:Physical_BasicPhysical_HiLoPhysicalStatus:in; VerticalSpeed:Physical_BasicPhysical_BasicPhysicalStatus:in; VerticalSpeedMON:Physical_BasicPhysical_BasicPhysicalStatus:in; AltitudeFailure^Detected:bool:out; AltitudeFailure^IsErroneous:bool:out; Alloc_MonProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneDigitalNetworkPath2:Functions_PhysicalOperators_PhysicalInjection; Inj_DroneDigitalNetworkPath1:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_DroneDigitalNetworkPath3:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Comp4:Functions_PhysicalOperators_PhysicalInjection_boolean_Status; SF742_GlobalCompareDroneAltitude_Status:Functions_BasicOperators_OR_3; Inj_Comp3:Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Origin; Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Origin; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Origin; SF742_GlobalCompareDroneAltitude:Functions_BasicOperators_OR_3; SF742_CompareVerticalSpeed:Functions_BasicOperators_Comparator; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq3:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF742_CompareGroundAltitude:Functions_BasicOperators_Comparator_HiLo; Inj_Acq1:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF742_CompareAltitude:Functions_BasicOperators_Comparator_HiLo; assert AltitudeFailure^Detected = Inj_Comp4.output, AltitudeFailure^IsErroneous = Inj_Comp4.isErroneous, Inj_DroneDigitalNetworkPath2.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath2.input = VerticalSpeed, Inj_DroneDigitalNetworkPath1.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath1.input = Altitude, Inj_DroneDigitalNetworkPath3.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath3.input = GroundAltitude, Inj_Comp4.alloc = Alloc_MonProcComputation, Inj_Comp4.input = SF742_GlobalCompareDroneAltitude.O, Inj_Comp4.isAlreadyErroneous = SF742_GlobalCompareDroneAltitude_Status.O, SF742_GlobalCompareDroneAltitude_Status.I1 = Inj_Comp1.isErroneous, SF742_GlobalCompareDroneAltitude_Status.I2 = Inj_Comp2.isErroneous, SF742_GlobalCompareDroneAltitude_Status.I3 = Inj_Comp3.isErroneous, Inj_Comp3.alloc = Alloc_MonProcComputation, Inj_Comp3.input = SF742_CompareGroundAltitude.output, Inj_Comp2.alloc = Alloc_MonProcComputation, Inj_Comp2.input = SF742_CompareVerticalSpeed.output, Inj_Comp1.alloc = Alloc_MonProcComputation, Inj_Comp1.input = SF742_CompareAltitude.output, SF742_GlobalCompareDroneAltitude.I1 = Inj_Comp1.output, SF742_GlobalCompareDroneAltitude.I2 = Inj_Comp2.output, SF742_GlobalCompareDroneAltitude.I3 = Inj_Comp3.output, SF742_CompareVerticalSpeed.input1 = Inj_Acq2.output, SF742_CompareVerticalSpeed.status_acquisition = Alloc_MonProcAcquisition, SF742_CompareVerticalSpeed.input2 = VerticalSpeedMON, Inj_Acq2.alloc = Alloc_MonProcAcquisition, Inj_Acq2.input = Inj_DroneDigitalNetworkPath2.output, Inj_Acq3.alloc = Alloc_MonProcAcquisition, Inj_Acq3.input = Inj_DroneDigitalNetworkPath3.output, SF742_CompareGroundAltitude.input1 = Inj_Acq3.output, SF742_CompareGroundAltitude.status_acquisition = Alloc_MonProcAcquisition, SF742_CompareGroundAltitude.input2 = GroundAltitudeMON, Inj_Acq1.alloc = Alloc_MonProcAcquisition, Inj_Acq1.input = Inj_DroneDigitalNetworkPath1.output, SF742_CompareAltitude.input1 = Inj_Acq1.output, SF742_CompareAltitude.status_acquisition = Alloc_MonProcAcquisition, SF742_CompareAltitude.input2 = AltitudeMON; edon node eq_AIDASystem_Functions_SF421_RunFlightPlan flow icone:[1,2]:private; Alloc_DroneMissionDataPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Time:Physical_BasicPhysical_BasicPhysicalStatus:in; Position:Physical_BasicPhysical_BasicPhysicalStatus:in; FlightPlan:Physical_BasicPhysical_BasicPhysicalStatus:in; PositionConsign_FlightPlanPayloadControl:Physical_BasicPhysical_BasicPhysicalStatus:out; FlightPlanProgress:Physical_BasicPhysical_BasicPhysicalStatus:out; MissionCompleted^Signal:Functions_BasicFunctions_Presence:out; MissionCompleted^IsErroneous:bool:out; FlightPlanInterruption:Functions_BasicFunctions_Presence:in; sub Inj_DroneMissionDataPath:Functions_PhysicalOperators_PhysicalInjection; Inj_DroneDigitalNetworkPath1:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection_Presence_2_Status_Origin; Inj_Emiss:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq3:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq1:Functions_PhysicalOperators_PhysicalInjection; SF421_FlightPlanInterruption:Functions_BasicOperators_PerfectPresenceSelectorLOSS; SF421_MissionCompleted:Functions_BasicFunctions_SourcePresenceFunction; SF421_Compute:Functions_BasicFunctions_InOutFunction; SF421_Choice:Functions_BasicOperators_Choice; SF421_AND:Functions_BasicOperators_AND; Inj_DroneDigitalNetworkPath2:Functions_PhysicalOperators_PhysicalInjection; assert icone = case { ((SF421_Compute.status # OK) or (SF421_MissionCompleted.status = PRESENT)) : 2, else 1 }, PositionConsign_FlightPlanPayloadControl = Inj_Comp1.output, FlightPlanProgress = Inj_Emiss.output, MissionCompleted^Signal = Inj_Comp2.output, MissionCompleted^IsErroneous = Inj_Comp2.isErroneous, Inj_DroneMissionDataPath.alloc = Alloc_DroneMissionDataPath, Inj_DroneMissionDataPath.input = FlightPlan, Inj_DroneDigitalNetworkPath1.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath1.input = Time, Inj_Comp2.alloc = Alloc_MainProcComputation, Inj_Comp2.input = SF421_MissionCompleted.output, Inj_Emiss.alloc = Alloc_MainProcEmission, Inj_Emiss.input = Inj_Comp1.output, Inj_Comp1.alloc = Alloc_MainProcComputation, Inj_Comp1.input = SF421_FlightPlanInterruption.output, Inj_Acq3.alloc = Alloc_MainProcAcquisition, Inj_Acq3.input = Inj_DroneMissionDataPath.output, Inj_Acq2.alloc = Alloc_MainProcAcquisition, Inj_Acq2.input = Inj_DroneDigitalNetworkPath2.output, Inj_Acq1.alloc = Alloc_MainProcAcquisition, Inj_Acq1.input = Inj_DroneDigitalNetworkPath1.output, SF421_FlightPlanInterruption.input = SF421_Compute.output, SF421_FlightPlanInterruption.condition = FlightPlanInterruption, SF421_Compute.input = SF421_Choice.output, SF421_Choice.input_1 = SF421_AND.output, SF421_Choice.input_2 = Inj_Acq3.output, SF421_AND.input_1 = Inj_Acq1.output, SF421_AND.input_2 = Inj_Acq2.output, Inj_DroneDigitalNetworkPath2.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath2.input = Position; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF422_RunSpeedControl flow icone:[1,3]:private; PilotControlConsigns:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMissionDataPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; DroneSpeedConsign_ProgrammedPayloadControl:Physical_BasicPhysical_BasicPhysicalStatus:out; sub Inj_DroneMissionDataPath:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq:Functions_PhysicalOperators_PhysicalInjection; SF422_RunSpeedControl:Functions_BasicFunctions_InOutFunction; assert icone = case { (SF422_RunSpeedControl.status = LOST) : 2, (SF422_RunSpeedControl.status = ERRONEOUS) : 3, else 1 }, DroneSpeedConsign_ProgrammedPayloadControl = Inj_Comp.output, Inj_DroneMissionDataPath.alloc = Alloc_DroneMissionDataPath, Inj_DroneMissionDataPath.input = PilotControlConsigns, Inj_Comp.alloc = Alloc_MainProcComputation, Inj_Comp.input = SF422_RunSpeedControl.output, Inj_Acq.alloc = Alloc_MainProcAcquisition, Inj_Acq.input = Inj_DroneMissionDataPath.output, SF422_RunSpeedControl.input = Inj_Acq.output; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF325_ComputeAltitudeAndVerticalSpeed flow Altitude_WSL:Physical_BasicPhysical_HiLoPhysicalStatus:out; VerticalSpeed_WSL:Physical_BasicPhysical_BasicPhysicalStatus:out; VerticalSpeed:Physical_BasicPhysical_BasicPhysicalStatus:out; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; GroundAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; BarometricAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub Inj_Emiss2:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection; SF325_Dysfunctional:Functions_BasicFunctions_InOutFunction_Hilo_SF325; Inj_Emiss1:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF325_AllNeeded:Functions_BasicOperators_AND_fullHiLo; assert Altitude_WSL = Inj_Emiss1.output, VerticalSpeed_WSL = Inj_Emiss2.output, VerticalSpeed = Inj_Comp2.output, Altitude = Inj_Comp1.output, Inj_Emiss2.alloc = Alloc_MainProcEmission, Inj_Emiss2.input = Inj_Comp2.output, Inj_Comp2.alloc = Alloc_MainProcComputation, Inj_Comp2.input = SF325_Dysfunctional.output_2, SF325_Dysfunctional.input = SF325_AllNeeded.output, Inj_Emiss1.alloc = Alloc_MainProcEmission, Inj_Emiss1.input = Inj_Comp1.output, Inj_Comp1.alloc = Alloc_MainProcComputation, Inj_Comp1.input = SF325_Dysfunctional.output_1, SF325_AllNeeded.input_1 = GroundAltitude, SF325_AllNeeded.input_2 = BarometricAltitude; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF324_ComputeGroundAltitude flow GroundAltitude_WSL:Physical_BasicPhysical_HiLoPhysicalStatus:out; GroundAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; MeasuredGroundDistance:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub Inj_DroneDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Emiss:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF324_NeedAll:Functions_BasicOperators_AND_complexHiLo; SF324_Dysfunctional:Functions_BasicFunctions_InOutFunction_HiLo; Inj_Acq:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; assert GroundAltitude_WSL = Inj_Emiss.output, GroundAltitude = Inj_Comp.output, Inj_DroneDigitalNetworkPath.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath.input = MeasuredGroundDistance, Inj_Emiss.alloc = Alloc_MainProcEmission, Inj_Emiss.input = Inj_Comp.output, Inj_Comp.alloc = Alloc_MainProcComputation, Inj_Comp.input = SF324_Dysfunctional.output, SF324_NeedAll.input_1 = Attitude, SF324_NeedAll.input_2 = Inj_Acq.output, SF324_Dysfunctional.input = SF324_NeedAll.output, Inj_Acq.alloc = Alloc_MainProcAcquisition, Inj_Acq.input = Inj_DroneDigitalNetworkPath.output; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF323_MeasureTelemetricSignal flow GroundDistance:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_TelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub Inj_TelemetricSensor:Functions_PhysicalOperators_PhysicalInjection_HiLo; SF323_Dysfunctional:Functions_BasicFunctions_SourceFunction; assert GroundDistance = Inj_TelemetricSensor.output, Inj_TelemetricSensor.alloc = Alloc_TelemetricSensor, Inj_TelemetricSensor.input = SF323_Dysfunctional.output; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF321_MeasureAmbiantPressure flow Pressure:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_PressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub Inj_PressureSensor:Functions_PhysicalOperators_PhysicalInjection_HiLo; SF321_Dysfunctional:Functions_BasicFunctions_SourceFunction; assert Pressure = Inj_PressureSensor.output, Inj_PressureSensor.alloc = Alloc_PressureSensor, Inj_PressureSensor.input = SF321_Dysfunctional.output; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF322_ComputeBarometricAltitude flow BarometricAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; MeasuredPressure:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub Inj_DroneDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF322_Dysfunctional:Functions_BasicFunctions_InOutFunction_HiLoReverse; Inj_Acq:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; assert BarometricAltitude = Inj_Comp.output, Inj_DroneDigitalNetworkPath.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath.input = MeasuredPressure, Inj_Comp.alloc = Alloc_MainProcComputation, Inj_Comp.input = SF322_Dysfunctional.output, SF322_Dysfunctional.input = Inj_Acq.output, Inj_Acq.alloc = Alloc_MainProcAcquisition, Inj_Acq.input = Inj_DroneDigitalNetworkPath.output; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF331_FilmGround flow VideoFlux:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_LateralSpeedCamera:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_LateralSpeedCamera:Functions_PhysicalOperators_PhysicalInjection; SF331_Dysfunctional:Functions_BasicFunctions_SourceFunction; assert VideoFlux = Inj_LateralSpeedCamera.output, Inj_LateralSpeedCamera.alloc = Alloc_LateralSpeedCamera, Inj_LateralSpeedCamera.input = SF331_Dysfunctional.output; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF332_ComputeGroundSpeed flow GroundAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; VideoFlux:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; GroundSpeed:Physical_BasicPhysical_HiLoPhysicalStatus:out; sub Inj_DroneDigitalNetworkPath2:Functions_PhysicalOperators_PhysicalInjection; Inj_DroneDigitalNetworkPath1:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Emiss:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF332_Dysfunctional:Functions_BasicFunctions_InOutFunction_HiLo; SF332_AllNeeded:Functions_BasicOperators_AND_complexHiLo; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq1:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; assert GroundSpeed = Inj_Emiss.output, Inj_DroneDigitalNetworkPath2.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath2.input = VideoFlux, Inj_DroneDigitalNetworkPath1.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath1.input = GroundAltitude, Inj_Emiss.alloc = Alloc_VideoProcEmission, Inj_Emiss.input = Inj_Comp.output, Inj_Comp.alloc = Alloc_VideoProcComputation, Inj_Comp.input = SF332_Dysfunctional.output, SF332_Dysfunctional.input = SF332_AllNeeded.output, SF332_AllNeeded.input_1 = Inj_Acq2.output, SF332_AllNeeded.input_2 = Inj_Acq1.output, Inj_Acq2.alloc = Alloc_VideoProcAcquisition, Inj_Acq2.input = Inj_DroneDigitalNetworkPath2.output, Inj_Acq1.alloc = Alloc_VideoProcAcquisition, Inj_Acq1.input = Inj_DroneDigitalNetworkPath1.output; edon node eq_AIDASystem_Physical_Path_PilotPayloadControl flow RemoteCommunication:Physical_BasicPhysical_BasicPhysicalStatus:in; RadioController:Physical_BasicPhysical_BasicPhysicalStatus:in; MainDigitalNetwork:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PilotPayloadControlPath:Physical_BasicPhysical_BasicPhysicalStatus:out; sub AND_Physical_disymetric2:Functions_PhysicalOperators_AND_Physical_disymetric; AND_Physical_disymetric1:Functions_PhysicalOperators_AND_Physical_disymetric; assert Alloc_PilotPayloadControlPath = AND_Physical_disymetric2.output, AND_Physical_disymetric2.minorInput = AND_Physical_disymetric1.output, AND_Physical_disymetric2.majorInput = MainDigitalNetwork, AND_Physical_disymetric1.minorInput = RemoteCommunication, AND_Physical_disymetric1.majorInput = RadioController; edon node eq_AIDASystem_Physical_Path_DronePhotosAndVideos flow WifiController:Physical_BasicPhysical_BasicPhysicalStatus:in; MainDigitalNetwork:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DronePhotosAndVideosPath:Physical_BasicPhysical_BasicPhysicalStatus:out; sub AND_Physical_disymetric1:Functions_PhysicalOperators_AND_Physical_disymetric; assert Alloc_DronePhotosAndVideosPath = AND_Physical_disymetric1.output, AND_Physical_disymetric1.minorInput = MainDigitalNetwork, AND_Physical_disymetric1.majorInput = WifiController; edon node eq_AIDASystem_Physical_Path_DroneMissionData flow MainDigitalNetwork:Physical_BasicPhysical_BasicPhysicalStatus:in; WifiController_transmission:Physical_BasicPhysical_BasicPhysicalStatus:in; WifiController_reception:Physical_BasicPhysical_BasicPhysicalStatus:in; DroneMissionDataPath_ControlDesk2Drone:Physical_BasicPhysical_BasicPhysicalStatus:out; DroneMissionDataPath_Drone2ControlDesk:Physical_BasicPhysical_BasicPhysicalStatus:out; sub AND_Physical_disymetric2:Functions_PhysicalOperators_AND_Physical_disymetric; AND_Physical_disymetric1:Functions_PhysicalOperators_AND_Physical_disymetric; assert DroneMissionDataPath_ControlDesk2Drone = AND_Physical_disymetric1.output, DroneMissionDataPath_Drone2ControlDesk = AND_Physical_disymetric2.output, AND_Physical_disymetric2.minorInput = MainDigitalNetwork, AND_Physical_disymetric2.majorInput = WifiController_transmission, AND_Physical_disymetric1.minorInput = WifiController_reception, AND_Physical_disymetric1.majorInput = MainDigitalNetwork; edon node eq_AIDASystem_Physical_Path_PilotDroneControl flow RemoteCommunication:Physical_BasicPhysical_BasicPhysicalStatus:in; RadioController:Physical_BasicPhysical_BasicPhysicalStatus:in; MainDigitalNetwork:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PilotDroneControlPath:Physical_BasicPhysical_BasicPhysicalStatus:out; sub AND_Physical_disymetric2:Functions_PhysicalOperators_AND_Physical_disymetric; AND_Physical_disymetric1:Functions_PhysicalOperators_AND_Physical_disymetric; assert Alloc_PilotDroneControlPath = AND_Physical_disymetric2.output, AND_Physical_disymetric2.minorInput = AND_Physical_disymetric1.output, AND_Physical_disymetric2.majorInput = MainDigitalNetwork, AND_Physical_disymetric1.minorInput = RemoteCommunication, AND_Physical_disymetric1.majorInput = RadioController; edon node eq_AIDASystem_Physical_RemoteControlInterface flow Alloc_PushButton:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_CameraControlDevice:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_LeftAndRightSideSticks:Physical_BasicPhysical_BasicPhysicalStatus:out; sub CameraControlDevice:Components_RemoteControl_RemoteControlInterface; PushButton:Components_RemoteControl_RemoteControlInterface; LeftAndRightSideSticks:Components_RemoteControl_RemoteControlInterface; assert Alloc_PushButton = PushButton.output, Alloc_CameraControlDevice = CameraControlDevice.output, Alloc_LeftAndRightSideSticks = LeftAndRightSideSticks.output; edon node eq_AIDASystem_Physical_MainProcessor flow oProcessor^Acquisition:Physical_BasicPhysical_BasicPhysicalStatus:out; oProcessor^Emission:Physical_BasicPhysical_BasicPhysicalStatus:out; oProcessor^Computation:Physical_BasicPhysical_BasicPhysicalStatus:out; Power:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub PowerSupplyMonitoring:Components_Sensors_PowerSupplyMonitoring; Computation:Components_Computers_Computation; Acquisition:Components_Computers_AcquisitionEmission; Emission:Components_Computers_AcquisitionEmission; assert oProcessor^Acquisition = Acquisition.output, oProcessor^Emission = Emission.output, oProcessor^Computation = Computation.output, PowerSupplyMonitoring.Power = Power, Computation.Power = PowerSupplyMonitoring.MonitoredPower, Acquisition.Power = PowerSupplyMonitoring.MonitoredPower, Emission.Power = PowerSupplyMonitoring.MonitoredPower; edon node eq_AIDASystem_Functions_SF64_DisplayDroneFollowUpData flow icone:[1,2]:private; iControlMode^Mode:Functions_BasicFunctions_ModeSelection:in; iControlMode^IsErroneous:bool:in; iFlightPlanProgress:Physical_BasicPhysical_BasicPhysicalStatus:in; oControlMode:Functions_BasicFunctions_ModeSelection:out; oFlightPlanProgress:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_DroneMissionDataPath_Drone2ControlDesk2:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneControlDesk_reception:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneMissionDataPath_Drone2ControlDesk2:Functions_PhysicalOperators_PhysicalInjection; Inj_DroneMissionDataPath_Drone2ControlDesk1:Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status; Inj_DroneControlDesk_reception1:Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status; Inj_DroneControlDesk_reception2:Functions_PhysicalOperators_PhysicalInjection; SF64_FlightPlanProgress:Functions_BasicFunctions_InOutFunction; SF64_ControlMode:Functions_BasicFunctions_InOutModeFunction; assert icone = case { ((SF64_ControlMode.status # OK) or (SF64_FlightPlanProgress.status # OK)) : 2, else 1 }, oControlMode = Inj_DroneControlDesk_reception1.output, oFlightPlanProgress = Inj_DroneControlDesk_reception2.output, Inj_DroneMissionDataPath_Drone2ControlDesk2.alloc = Alloc_DroneMissionDataPath_Drone2ControlDesk2, Inj_DroneMissionDataPath_Drone2ControlDesk2.input = iFlightPlanProgress, Inj_DroneMissionDataPath_Drone2ControlDesk1.alloc = Alloc_DroneMissionDataPath_Drone2ControlDesk2, Inj_DroneMissionDataPath_Drone2ControlDesk1.isAlreadyErroneous = iControlMode^IsErroneous, Inj_DroneMissionDataPath_Drone2ControlDesk1.input = iControlMode^Mode, Inj_DroneControlDesk_reception1.alloc = Alloc_DroneControlDesk_reception, Inj_DroneControlDesk_reception1.isAlreadyErroneous = Inj_DroneMissionDataPath_Drone2ControlDesk1.isErroneous, Inj_DroneControlDesk_reception1.input = SF64_ControlMode.outputMode, Inj_DroneControlDesk_reception2.alloc = Alloc_DroneControlDesk_reception, Inj_DroneControlDesk_reception2.input = SF64_FlightPlanProgress.output, SF64_FlightPlanProgress.input = Inj_DroneMissionDataPath_Drone2ControlDesk2.output, SF64_ControlMode.inputMode = Inj_DroneMissionDataPath_Drone2ControlDesk1.output; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF72_ComputeAltitudeMON flow icone:[1,2]:private; Alloc_MonProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_TelemetricSensorMON:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_PressureSensorMON:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_DroneMonitoringDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; GroundAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:out; VerticalSpeed:Physical_BasicPhysical_BasicPhysicalStatus:out; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:out; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; sub SF725_ComputeAltitudeAndVerticalSpeedMON:eq_AIDASystem_FunctionsWithPhysical_forInj_SF725_ComputeAltitudeAndVerticalSpeedMON; SF724_ComputeGroundAltitudeMON:eq_AIDASystem_FunctionsWithPhysical_forInj_SF724_ComputeGroundAltitudeMON; SF723_MeasureTelemetricSignalMON:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF723_MeasureTelemetricSignalMON; SF721_MeasureAmbiantPressureMON:eq_AIDASystem_FunctionsWithPhysical_forInj_SF721_MeasureAmbiantPressureMON; SF722_ComputeBarometricAltitudeMON:eq_AIDASystem_FunctionsWithPhysical_forInj_SF722_ComputeBarometricAltitudeMON; assert icone = case { (((((SF721_MeasureAmbiantPressureMON.SF721_Dysfunctional.status # OK) or (SF722_ComputeBarometricAltitudeMON.SF722_Dysfunctional.status # OK)) or (SF723_MeasureTelemetricSignalMON.SF723_Dysfunctional.status # OK)) or (SF724_ComputeGroundAltitudeMON.SF724_Dysfunctional.status # OK)) or (SF725_ComputeAltitudeAndVerticalSpeedMON.SF725_Dysfunctional.status # OK)) : 2, else 1 }, GroundAltitude = SF724_ComputeGroundAltitudeMON.GroundAltitude, VerticalSpeed = SF725_ComputeAltitudeAndVerticalSpeedMON.VerticalSpeed, Altitude = SF725_ComputeAltitudeAndVerticalSpeedMON.Altitude, SF725_ComputeAltitudeAndVerticalSpeedMON.Alloc_MonProcComputation = Alloc_MonProcComputation, SF725_ComputeAltitudeAndVerticalSpeedMON.GroundAltitude = SF724_ComputeGroundAltitudeMON.GroundAltitude, SF725_ComputeAltitudeAndVerticalSpeedMON.BarometricAltitude = SF722_ComputeBarometricAltitudeMON.BarometricAltitude, SF724_ComputeGroundAltitudeMON.Alloc_MonProcComputation = Alloc_MonProcComputation, SF724_ComputeGroundAltitudeMON.Alloc_DroneMonitoringDigitalNetworkPath = Alloc_DroneMonitoringDigitalNetworkPath, SF724_ComputeGroundAltitudeMON.Alloc_MonProcAcquisition = Alloc_MonProcAcquisition, SF724_ComputeGroundAltitudeMON.Attitude = Attitude, SF724_ComputeGroundAltitudeMON.MeasuredGroundDistance = SF723_MeasureTelemetricSignalMON.GroundDistance, SF723_MeasureTelemetricSignalMON.Alloc_TelemetricSensorMON = Alloc_TelemetricSensorMON, SF721_MeasureAmbiantPressureMON.Alloc_PressureSensorMON = Alloc_PressureSensorMON, SF722_ComputeBarometricAltitudeMON.Alloc_MonProcComputation = Alloc_MonProcComputation, SF722_ComputeBarometricAltitudeMON.Alloc_DroneMonitoringDigitalNetworkPath = Alloc_DroneMonitoringDigitalNetworkPath, SF722_ComputeBarometricAltitudeMON.Alloc_MonProcAcquisition = Alloc_MonProcAcquisition, SF722_ComputeBarometricAltitudeMON.MeasuredPressure = SF721_MeasureAmbiantPressureMON.Pressure; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF71_ComputeAttitudeMON flow icone:[1,3]:private; Alloc_MonProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_IRSMON:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MagnetometerMON:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMonitoringDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:out; sub Inj_Acq:Functions_PhysicalOperators_PhysicalInjection; Inj_DroneMonitoringDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection; Inj_Sensors:Functions_PhysicalOperators_PhysicalInjection; PhyAdd_AND:Functions_PhysicalOperators_AND_Physical; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection; SF71_Dysfunctional:Functions_BasicFunctions_SourceFunction; assert icone = case { (SF71_Dysfunctional.status = LOST) : 2, (SF71_Dysfunctional.status = ERRONEOUS) : 3, else 1 }, Attitude = Inj_Comp.output, Inj_Acq.alloc = Alloc_MonProcAcquisition, Inj_Acq.input = Inj_DroneMonitoringDigitalNetworkPath.output, Inj_DroneMonitoringDigitalNetworkPath.alloc = Alloc_DroneMonitoringDigitalNetworkPath, Inj_DroneMonitoringDigitalNetworkPath.input = Inj_Sensors.output, Inj_Sensors.alloc = PhyAdd_AND.output, Inj_Sensors.input = SF71_Dysfunctional.output, PhyAdd_AND.input_1 = Alloc_IRSMON, PhyAdd_AND.input_2 = Alloc_MagnetometerMON, Inj_Comp.alloc = Alloc_MonProcComputation, Inj_Comp.input = Inj_Acq.output; edon node eq_AIDASystem_Functions_SF73_ControlAttitudeAndAltitudeMON flow icone:[1,2]:private; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; YawConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; PitchRollConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; AltitudeConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; AttitudeAPConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; AltitudeAPConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; APEngagement^Mode:Functions_BasicFunctions_ModeSelection:in; APEngagement^IsErroneous:bool:in; MotorRate:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_PilotDroneControlPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; sub SF731_2_ControlAltitudeMON:eq_AIDASystem_FunctionsWithPhysical_forInj_SF731_2_ControlAltitudeMON; SF733_6_ControlAttitudeMON:eq_AIDASystem_FunctionsWithPhysical_forInj_SF733_6_ControlAttitudeMON; SF737_8_ComputeMotorRate:eq_AIDASystem_FunctionsWithPhysical_forInj_SF737_8_ComputeMotorRate; assert icone = case { (((SF733_6_ControlAttitudeMON.SF734_6_ControlAttitudeMON.status = OK) and (SF731_2_ControlAltitudeMON.SF731_ComputeThrustMON.status = OK)) and (SF737_8_ComputeMotorRate.SF737_8_ControlThrust.status = OK)) : 1, else 2 }, MotorRate = SF737_8_ComputeMotorRate.MotorRates, SF731_2_ControlAltitudeMON.Altitude = Altitude, SF731_2_ControlAltitudeMON.Attitude = Attitude, SF731_2_ControlAltitudeMON.AltitudeConsign = AltitudeConsign, SF731_2_ControlAltitudeMON.T_AP = AltitudeAPConsign, SF731_2_ControlAltitudeMON.APEngagement^Mode = APEngagement^Mode, SF731_2_ControlAltitudeMON.APEngagement^IsErroneous = APEngagement^IsErroneous, SF731_2_ControlAltitudeMON.Alloc_MonProcComputation = Alloc_MonProcComputation, SF731_2_ControlAltitudeMON.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF731_2_ControlAltitudeMON.Alloc_MonProcAcquisition = Alloc_MonProcAcquisition, SF733_6_ControlAttitudeMON.Attitude = Attitude, SF733_6_ControlAttitudeMON.AttitudeAPConsign = AttitudeAPConsign, SF733_6_ControlAttitudeMON.PitchRollConsign = PitchRollConsign, SF733_6_ControlAttitudeMON.YawConsign = YawConsign, SF733_6_ControlAttitudeMON.APEngagement^Mode = APEngagement^Mode, SF733_6_ControlAttitudeMON.APEngagement^IsErroneous = APEngagement^IsErroneous, SF733_6_ControlAttitudeMON.Alloc_MonProcComputation = Alloc_MonProcComputation, SF733_6_ControlAttitudeMON.Alloc_PilotDroneControlPath = Alloc_PilotDroneControlPath, SF733_6_ControlAttitudeMON.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF733_6_ControlAttitudeMON.Alloc_MonProcAcquisition = Alloc_MonProcAcquisition, SF737_8_ComputeMotorRate.Thrust = SF731_2_ControlAltitudeMON.T, SF737_8_ComputeMotorRate.P = SF733_6_ControlAttitudeMON.P, SF737_8_ComputeMotorRate.Alloc_MonProcComputation = Alloc_MonProcComputation; edon node eq_AIDASystem_Functions_SF74_MonitorParameters flow icone:[1,2]:private; Alloc_MonProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; MotorRateMON:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRate:Physical_BasicPhysical_HiLoPhysicalStatus:in; GroundAltitudeMON:Physical_BasicPhysical_HiLoPhysicalStatus:in; GroundAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; AltitudeMON:Physical_BasicPhysical_HiLoPhysicalStatus:in; VerticalSpeedMON:Physical_BasicPhysical_BasicPhysicalStatus:in; VerticalSpeed:Physical_BasicPhysical_BasicPhysicalStatus:in; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; AttitudeMON:Physical_BasicPhysical_BasicPhysicalStatus:in; MotorRateMeasured^MotorRate1:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRateMeasured^MotorRate2:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRateMeasured^MotorRate3:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRateMeasured^MotorRate4:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorsDisabled^Motor1:bool:out; MotorsDisabled^IsErroneous1:bool:out; MotorsDisabled^Motor2:bool:out; MotorsDisabled^IsErroneous2:bool:out; MotorsDisabled^Motor3:bool:out; MotorsDisabled^IsErroneous3:bool:out; MotorsDisabled^Motor4:bool:out; MotorsDisabled^IsErroneous4:bool:out; Alloc_MonProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMonitoringDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneDigitalNetworkPath2:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_DroneDigitalNetworkPath1:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Origin; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Origin; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF743_CompareMotorConsign:Functions_BasicOperators_Comparator_HiLo; Inj_Acq1:Functions_PhysicalOperators_PhysicalInjection; SF745_DisableDroneMotor:eq_AIDASystem_Functions_SF745_DisableDroneMotor; SF744_MonitorMotorRate:eq_AIDASystem_Functions_SF744_CompareDroneMotorRate; SF741_CompareAttitude:Functions_BasicOperators_Comparator; SF742_CompareDroneAltitude:eq_AIDASystem_FunctionsWithPhysical_forInj_SF742_CompareDroneAltitude; assert icone = case { (SF745_DisableDroneMotor.FailureModesOfSF74.status = OK) : 1, else 2 }, MotorsDisabled^Motor1 = SF745_DisableDroneMotor.MotorDisabled^Motor1, MotorsDisabled^IsErroneous1 = SF745_DisableDroneMotor.MotorDisabled^IsErroneous1, MotorsDisabled^Motor2 = SF745_DisableDroneMotor.MotorDisabled^Motor2, MotorsDisabled^IsErroneous2 = SF745_DisableDroneMotor.MotorDisabled^IsErroneous2, MotorsDisabled^Motor3 = SF745_DisableDroneMotor.MotorDisabled^Motor3, MotorsDisabled^IsErroneous3 = SF745_DisableDroneMotor.MotorDisabled^IsErroneous3, MotorsDisabled^Motor4 = SF745_DisableDroneMotor.MotorDisabled^Motor4, MotorsDisabled^IsErroneous4 = SF745_DisableDroneMotor.MotorDisabled^IsErroneous4, Inj_DroneDigitalNetworkPath2.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath2.input = MotorRate, Inj_DroneDigitalNetworkPath1.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath1.input = Attitude, Inj_Comp2.alloc = Alloc_MonProcComputation, Inj_Comp2.input = SF743_CompareMotorConsign.output, Inj_Comp1.alloc = Alloc_MonProcComputation, Inj_Comp1.input = SF741_CompareAttitude.output, Inj_Acq2.alloc = Alloc_MonProcAcquisition, Inj_Acq2.input = Inj_DroneDigitalNetworkPath2.output, SF743_CompareMotorConsign.input1 = Inj_Acq2.output, SF743_CompareMotorConsign.status_acquisition = Alloc_MonProcAcquisition, SF743_CompareMotorConsign.input2 = MotorRateMON, Inj_Acq1.alloc = Alloc_MonProcAcquisition, Inj_Acq1.input = Inj_DroneDigitalNetworkPath1.output, SF745_DisableDroneMotor.Motor1Runaway^Detected = SF744_MonitorMotorRate.Motor1Runaway^Detected, SF745_DisableDroneMotor.Motor1Runaway^IsErroneous = SF744_MonitorMotorRate.Motor1Runaway^IsErroneous, SF745_DisableDroneMotor.Motor2Runaway^Detected = SF744_MonitorMotorRate.Motor2Runaway^Detected, SF745_DisableDroneMotor.Motor2Runaway^IsErroneous = SF744_MonitorMotorRate.Motor2Runaway^IsErroneous, SF745_DisableDroneMotor.Motor3Runaway^Detected = SF744_MonitorMotorRate.Motor3Runaway^Detected, SF745_DisableDroneMotor.Motor3Runaway^IsErroneous = SF744_MonitorMotorRate.Motor3Runaway^IsErroneous, SF745_DisableDroneMotor.Motor4Runaway^Detected = SF744_MonitorMotorRate.Motor4Runaway^Detected, SF745_DisableDroneMotor.Motor4Runaway^IsErroneous = SF744_MonitorMotorRate.Motor4Runaway^IsErroneous, SF745_DisableDroneMotor.AttitudeFailureDetected^Detected = Inj_Comp1.output, SF745_DisableDroneMotor.AttitudeFailureDetected^IsErroneous = Inj_Comp1.isErroneous, SF745_DisableDroneMotor.AltitudeFailureDetected^Detected = SF742_CompareDroneAltitude.AltitudeFailure^Detected, SF745_DisableDroneMotor.AltitudeFailureDetected^IsErroneous = SF742_CompareDroneAltitude.AltitudeFailure^IsErroneous, SF745_DisableDroneMotor.MotorConsignFailureDetected^Detected = Inj_Comp2.output, SF745_DisableDroneMotor.MotorConsignFailureDetected^IsErroneous = Inj_Comp2.isErroneous, SF745_DisableDroneMotor.Alloc_MonProcComputation = Alloc_MonProcComputation, SF745_DisableDroneMotor.Alloc_MonProcEmission = Alloc_MonProcEmission, SF744_MonitorMotorRate.MotorRatesMeasured^MotorRate1 = MotorRateMeasured^MotorRate1, SF744_MonitorMotorRate.MotorRatesMeasured^MotorRate2 = MotorRateMeasured^MotorRate2, SF744_MonitorMotorRate.MotorRatesMeasured^MotorRate3 = MotorRateMeasured^MotorRate3, SF744_MonitorMotorRate.MotorRatesMeasured^MotorRate4 = MotorRateMeasured^MotorRate4, SF744_MonitorMotorRate.Alloc_MonProcComputation = Alloc_MonProcComputation, SF744_MonitorMotorRate.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF744_MonitorMotorRate.Alloc_DroneMonitoringDigitalNetworkPath = Alloc_DroneMonitoringDigitalNetworkPath, SF744_MonitorMotorRate.Alloc_MonProcAcquisition = Alloc_MonProcAcquisition, SF744_MonitorMotorRate.MotorRate = MotorRate, SF741_CompareAttitude.input1 = Inj_Acq1.output, SF741_CompareAttitude.status_acquisition = Alloc_MonProcAcquisition, SF741_CompareAttitude.input2 = AttitudeMON, SF742_CompareDroneAltitude.AltitudeMON = AltitudeMON, SF742_CompareDroneAltitude.Altitude = Altitude, SF742_CompareDroneAltitude.GroundAltitude = GroundAltitude, SF742_CompareDroneAltitude.GroundAltitudeMON = GroundAltitudeMON, SF742_CompareDroneAltitude.VerticalSpeed = VerticalSpeed, SF742_CompareDroneAltitude.VerticalSpeedMON = VerticalSpeedMON, SF742_CompareDroneAltitude.Alloc_MonProcAcquisition = Alloc_MonProcAcquisition, SF742_CompareDroneAltitude.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF742_CompareDroneAltitude.Alloc_MonProcComputation = Alloc_MonProcComputation; edon node eq_AIDASystem_FunctionsWithPhysical_ForInj_SF51_SelectCameraControl flow AutomaticPayloadControl:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PilotPayloadControlPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; ManualPayloadControl^Signal:Functions_BasicFunctions_Presence:in; ManualPayloadControl^IsErroneous:bool:in; FileStorageFormat:Physical_BasicPhysical_BasicPhysicalStatus:out; CameraPositionConsign_PhotoAndVideoControl:Physical_BasicPhysical_BasicPhysicalStatus:out; sub Inj_PilotPayloadControlPath:Functions_PhysicalOperators_PhysicalInjection_Presence_Status; Inj_DroneDigitalNetworkPath1:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection; Inj_Emiss1:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection_Presence_Status; Inj_Acq1:Functions_PhysicalOperators_PhysicalInjection; SF51_Switch:Functions_BasicOperators_PerfectPresenceSelectorOK; assert FileStorageFormat = SF51_Switch.output, CameraPositionConsign_PhotoAndVideoControl = Inj_Emiss1.output, Inj_PilotPayloadControlPath.alloc = Alloc_PilotPayloadControlPath, Inj_PilotPayloadControlPath.isAlreadyErroneous = ManualPayloadControl^IsErroneous, Inj_PilotPayloadControlPath.input = ManualPayloadControl^Signal, Inj_DroneDigitalNetworkPath1.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath1.input = AutomaticPayloadControl, Inj_Comp1.alloc = Alloc_VideoProcComputation, Inj_Comp1.input = SF51_Switch.output, Inj_Emiss1.alloc = Alloc_VideoProcEmission, Inj_Emiss1.input = Inj_Comp1.output, Inj_Acq2.alloc = Alloc_VideoProcAcquisition, Inj_Acq2.isAlreadyErroneous = Inj_PilotPayloadControlPath.isErroneous, Inj_Acq2.input = Inj_PilotPayloadControlPath.output, Inj_Acq1.alloc = Alloc_VideoProcAcquisition, Inj_Acq1.input = Inj_DroneDigitalNetworkPath1.output, SF51_Switch.input = Inj_Acq1.output, SF51_Switch.condition = Inj_Acq2.output; edon node eq_AIDASystem_FunctionsWithPhysical_ForInj_SF55_AcquireManualPayloadControl flow icone:[1,2]:private; iManualPayloadControl:Functions_BasicFunctions_Presence:in; Alloc_CameraControlDevice:Physical_BasicPhysical_BasicPhysicalStatus:in; oManualPayloadControl^Signal:Functions_BasicFunctions_Presence:out; oManualPayloadControl^IsErroneous:bool:out; sub Inj_CameraControlDevice:Functions_PhysicalOperators_PhysicalInjection_Presence_Status_Origin; SF55_Dysfunctional:Functions_BasicFunctions_AbsentPresentFunction; assert icone = case { (SF55_Dysfunctional.status = LOST) : 2, else 1 }, oManualPayloadControl^Signal = Inj_CameraControlDevice.output, oManualPayloadControl^IsErroneous = Inj_CameraControlDevice.isErroneous, Inj_CameraControlDevice.alloc = Alloc_CameraControlDevice, Inj_CameraControlDevice.input = SF55_Dysfunctional.output, SF55_Dysfunctional.input = iManualPayloadControl; edon node eq_AIDASystem_FunctionsWithPhysical_ForInj_SF52_ControlCameraOrientation flow icone:[1,3]:private; CameraPositionConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_CameraRotarySupport:Physical_BasicPhysical_BasicPhysicalStatus:in; CameraPosition:Physical_BasicPhysical_BasicPhysicalStatus:out; sub Inj_DroneDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection; Inj_CameraRotarySupport:Functions_PhysicalOperators_PhysicalInjection; SF52_Dysfunctional:Functions_BasicFunctions_InOutFunction; assert icone = case { (SF52_Dysfunctional.status = LOST) : 2, (SF52_Dysfunctional.status = ERRONEOUS) : 3, else 1 }, CameraPosition = Inj_CameraRotarySupport.output, Inj_DroneDigitalNetworkPath.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath.input = CameraPositionConsign, Inj_CameraRotarySupport.alloc = Alloc_CameraRotarySupport, Inj_CameraRotarySupport.input = SF52_Dysfunctional.output, SF52_Dysfunctional.input = Inj_DroneDigitalNetworkPath.output; edon node eq_AIDASystem_FunctionsWithPhysical_ForInj_SF53_MakePhotosAndVideos flow icone:[1,3]:private; CameraPosition:Physical_BasicPhysical_BasicPhysicalStatus:in; PhotoAndVideoControl:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_CameraSensor:Physical_BasicPhysical_BasicPhysicalStatus:in; Video_Photo:Physical_BasicPhysical_BasicPhysicalStatus:out; sub Inj_DroneDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection; Inj_CameraSensor:Functions_PhysicalOperators_PhysicalInjection; SF53_Dysfunctional:Functions_BasicFunctions_InOutFunction; SF53_NeedAll:Functions_BasicOperators_AND; assert icone = case { (SF53_Dysfunctional.status = LOST) : 2, (SF53_Dysfunctional.status = ERRONEOUS) : 3, else 1 }, Video_Photo = Inj_CameraSensor.output, Inj_DroneDigitalNetworkPath.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath.input = PhotoAndVideoControl, Inj_CameraSensor.alloc = Alloc_CameraSensor, Inj_CameraSensor.input = SF53_Dysfunctional.output, SF53_Dysfunctional.input = SF53_NeedAll.output, SF53_NeedAll.input_1 = CameraPosition, SF53_NeedAll.input_2 = Inj_DroneDigitalNetworkPath.output; edon node eq_AIDASystem_FunctionsWithPhysical_ForInj_SF54_DigitisePhotosAndVideos flow icone:[1,3]:private; Video_Photo:Physical_BasicPhysical_BasicPhysicalStatus:in; FileStorageFormat:Physical_BasicPhysical_BasicPhysicalStatus:in; PhotosAndVideoFiles:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_VideoProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection; Inj_Emiss3:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection; SF54_Dysfunctional:Functions_BasicFunctions_InOutFunction; SF54_NeedAll:Functions_BasicOperators_AND; Inj_Acq3:Functions_PhysicalOperators_PhysicalInjection; assert icone = case { (SF54_Dysfunctional.status = LOST) : 2, (SF54_Dysfunctional.status = ERRONEOUS) : 3, else 1 }, PhotosAndVideoFiles = Inj_Emiss3.output, Inj_DroneDigitalNetworkPath.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath.input = Video_Photo, Inj_Emiss3.alloc = Alloc_VideoProcEmission, Inj_Emiss3.input = Inj_Comp2.output, Inj_Comp2.alloc = Alloc_VideoProcComputation, Inj_Comp2.input = SF54_Dysfunctional.output, SF54_Dysfunctional.input = SF54_NeedAll.output, SF54_NeedAll.input_1 = Inj_Acq3.output, SF54_NeedAll.input_2 = FileStorageFormat, Inj_Acq3.alloc = Alloc_VideoProcAcquisition, Inj_Acq3.input = Inj_DroneDigitalNetworkPath.output; edon node eq_AIDASystem_Functions_SF42_RunAutomaticControl flow FlightPlan:Physical_BasicPhysical_BasicPhysicalStatus:in; Position:Physical_BasicPhysical_BasicPhysicalStatus:in; FlightPlanProgress:Physical_BasicPhysical_BasicPhysicalStatus:out; AutomaticPayloadControl:Physical_BasicPhysical_BasicPhysicalStatus:out; SpeedConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; PositionConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; PilotControlConsigns:Physical_BasicPhysical_BasicPhysicalStatus:in; Time:Physical_BasicPhysical_BasicPhysicalStatus:in; FlightPlanInterruption:Functions_BasicFunctions_Presence:in; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMissionDataPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; MissionCompleted^Signal:Functions_BasicFunctions_Presence:out; MissionCompleted^IsErroneous:bool:out; sub Inj_Emiss:Functions_PhysicalOperators_PhysicalInjection; SF423_SelectAutomaticPayloadControl:Functions_BasicOperators_AND; SF421_RunFlightPlan:eq_AIDASystem_Functions_SF421_RunFlightPlan; SF422_RunSpeedControl:eq_AIDASystem_FunctionsWithPhysical_forInj_SF422_RunSpeedControl; assert FlightPlanProgress = SF421_RunFlightPlan.FlightPlanProgress, AutomaticPayloadControl = Inj_Emiss.output, SpeedConsign = SF422_RunSpeedControl.DroneSpeedConsign_ProgrammedPayloadControl, PositionConsign = SF421_RunFlightPlan.PositionConsign_FlightPlanPayloadControl, MissionCompleted^Signal = SF421_RunFlightPlan.MissionCompleted^Signal, MissionCompleted^IsErroneous = SF421_RunFlightPlan.MissionCompleted^IsErroneous, Inj_Emiss.alloc = Alloc_MainProcEmission, Inj_Emiss.input = SF423_SelectAutomaticPayloadControl.output, SF423_SelectAutomaticPayloadControl.input_1 = SF421_RunFlightPlan.PositionConsign_FlightPlanPayloadControl, SF423_SelectAutomaticPayloadControl.input_2 = SF422_RunSpeedControl.DroneSpeedConsign_ProgrammedPayloadControl, SF421_RunFlightPlan.Alloc_DroneMissionDataPath = Alloc_DroneMissionDataPath, SF421_RunFlightPlan.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF421_RunFlightPlan.Alloc_MainProcEmission = Alloc_MainProcEmission, SF421_RunFlightPlan.Alloc_MainProcComputation = Alloc_MainProcComputation, SF421_RunFlightPlan.Alloc_MainProcAcquisition = Alloc_MainProcAcquisition, SF421_RunFlightPlan.Time = Time, SF421_RunFlightPlan.Position = Position, SF421_RunFlightPlan.FlightPlan = FlightPlan, SF421_RunFlightPlan.FlightPlanInterruption = FlightPlanInterruption, SF422_RunSpeedControl.PilotControlConsigns = PilotControlConsigns, SF422_RunSpeedControl.Alloc_MainProcComputation = Alloc_MainProcComputation, SF422_RunSpeedControl.Alloc_DroneMissionDataPath = Alloc_DroneMissionDataPath, SF422_RunSpeedControl.Alloc_MainProcAcquisition = Alloc_MainProcAcquisition; edon node eq_AIDASystem_Functions_SF44_AcquirePilotControlConsignAndMode flow icone:[1,2]:private; AcquiredPilotControlConsigns:Physical_BasicPhysical_BasicPhysicalStatus:out; AcquiredPilotControlMode:Functions_BasicFunctions_ModeSelection_ErroneousLost:out; PilotControlMode:Functions_BasicFunctions_ModeSelection:in; Alloc_DroneControlDesk_transmission:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneControlDesk_transmission2:Functions_PhysicalOperators_PhysicalInjection_ModeSelectionErroneousLost; Inj_DroneControlDesk_transmission1:Functions_PhysicalOperators_PhysicalInjection; SF44_AcquireControlConsigns:Functions_BasicFunctions_SourceFunction; SF44_transtypage:Functions_BasicOperators_transtypageMode; SF44_AcquireControlMode:Functions_BasicFunctions_ErroneousLostModeSelector; assert icone = case { ((SF44_AcquireControlConsigns.status # OK) or (SF44_AcquireControlMode.status # OK)) : 2, else 1 }, AcquiredPilotControlConsigns = Inj_DroneControlDesk_transmission1.output, AcquiredPilotControlMode = Inj_DroneControlDesk_transmission2.output, Inj_DroneControlDesk_transmission2.alloc = Alloc_DroneControlDesk_transmission, Inj_DroneControlDesk_transmission2.input = SF44_AcquireControlMode.outputMode, Inj_DroneControlDesk_transmission1.alloc = Alloc_DroneControlDesk_transmission, Inj_DroneControlDesk_transmission1.input = SF44_AcquireControlConsigns.output, SF44_transtypage.I = PilotControlMode, SF44_AcquireControlMode.inputMode = SF44_transtypage.O; edon node eq_AIDASystem_Functions_SF43_SelectControlMode flow icone:[1,2]:private; PilotManualControl:Functions_BasicFunctions_ModeSelection_ErroneousLost:in; IndicatedMode^Mode:Functions_BasicFunctions_ModeSelection:out; IndicatedMode^IsErroneous:bool:out; APEngagement_WSL^Mode:Functions_BasicFunctions_ModeSelection:out; APEngagement_WSL^IsErroneous:bool:out; APEngagement:Functions_BasicFunctions_ModeSelection:out; ManualOverride:Physical_BasicPhysical_BasicPhysicalStatus:in; MissionCompleted^Signal:Functions_BasicFunctions_Presence:in; MissionCompleted^IsErroneous:bool:in; FlightPlanInterruption:Functions_BasicFunctions_Presence:out; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMissionDataPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PilotDroneControlPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneMissionDataPath:Functions_PhysicalOperators_PhysicalInjection_ModeSelectionErroneousLost; Inj_PilotDroneControlPath:Functions_PhysicalOperators_PhysicalInjection_detection; SF431_Detection:Functions_BasicOperators_detectionOfErroneous; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection_ModeSelectionErroneousLost_Status; Inj_Comp4:Functions_PhysicalOperators_PhysicalInjection_Presence_Status; Inj_Emiss2:Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status; Inj_Emiss1:Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status; Inj_Comp3:Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status; Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection_ModeSelection_Status; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq1:Functions_PhysicalOperators_PhysicalInjection_ModeSelectionErroneousLost; SF431_SelectControlMode:Functions_BasicFunctions_ErroneousLostPresentModeSelector; SF433_IndicateControlMode:Functions_BasicFunctions_InOutModeFunction; SF432_PassivateEngagementOscillation:Functions_BasicFunctions_FaultyManualModeSelector_LossType; assert APEngagement = Inj_Comp2.output, icone = case { (APEngagement = AUTO) : 1, else 2 }, IndicatedMode^Mode = Inj_Emiss2.output, IndicatedMode^IsErroneous = Inj_Emiss2.isErroneous, APEngagement_WSL^Mode = Inj_Emiss1.output, APEngagement_WSL^IsErroneous = Inj_Emiss1.isErroneous, FlightPlanInterruption = Inj_Comp4.output, Inj_DroneMissionDataPath.alloc = Alloc_DroneMissionDataPath, Inj_DroneMissionDataPath.input = PilotManualControl, Inj_PilotDroneControlPath.alloc = Alloc_PilotDroneControlPath, Inj_PilotDroneControlPath.input = ManualOverride, SF431_Detection.input = Inj_Acq2.output, Inj_Comp1.alloc = Alloc_MainProcComputation, Inj_Comp1.isAlreadyErroneous = MissionCompleted^IsErroneous, Inj_Comp1.input = SF431_SelectControlMode.outputMode, Inj_Comp4.alloc = Alloc_MainProcComputation, Inj_Comp4.isAlreadyErroneous = Inj_Comp1.isErroneous, Inj_Comp4.input = SF432_PassivateEngagementOscillation.FlightPlanInterruption, Inj_Emiss2.alloc = Alloc_MainProcEmission, Inj_Emiss2.isAlreadyErroneous = Inj_Comp3.isErroneous, Inj_Emiss2.input = Inj_Comp3.output, Inj_Emiss1.alloc = Alloc_MainProcEmission, Inj_Emiss1.isAlreadyErroneous = Inj_Comp2.isErroneous, Inj_Emiss1.input = Inj_Comp2.output, Inj_Comp3.alloc = Alloc_MainProcComputation, Inj_Comp3.isAlreadyErroneous = Inj_Comp2.isErroneous, Inj_Comp3.input = SF433_IndicateControlMode.outputMode, Inj_Comp2.alloc = Alloc_MainProcComputation, Inj_Comp2.isAlreadyErroneous = Inj_Comp1.isErroneous, Inj_Comp2.input = SF432_PassivateEngagementOscillation.outputMode, Inj_Acq2.alloc = Alloc_MainProcAcquisition, Inj_Acq2.input = Inj_PilotDroneControlPath.output, Inj_Acq1.alloc = Alloc_MainProcAcquisition, Inj_Acq1.input = Inj_DroneMissionDataPath.output, SF431_SelectControlMode.inputMode = Inj_Acq1.output, SF431_SelectControlMode.ManualOverride = SF431_Detection.output, SF431_SelectControlMode.MissionCompleted = MissionCompleted^Signal, SF433_IndicateControlMode.inputMode = Inj_Comp2.output, SF432_PassivateEngagementOscillation.inputMode = Inj_Comp1.output; edon node eq_AIDASystem_Functions_SF1i_ControlHelix_2 flow icone:[1,2]:private; MotorDisabled_IsErroneous:bool:in; MotorDisabled:bool:in; MotorRateMeasured:Physical_BasicPhysical_HiLoPhysicalStatus:out; ThrustAndTorque:Physical_BasicPhysical_HiLoPhysicalStatus:out; MotorRate:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_PowerDistribution:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_MotorAndVariator:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMonitoringDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_Propeller:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_DroneMonitoringDigitalNetworkPath:Functions_PhysicalOperators_PhysicalInjection_boolean_Status; Inj_PowerDistribution:Functions_PhysicalOperators_PhysicalInjection_boolean_Status_Actuators; SF1i6_DepowerMotor:Boolean_Boolean_BooleanInOutFunction; Inj_Propeller:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF1i3_CreateThrustAndTorque:Functions_BasicFunctions_InOutFunction_HiLo; SF1i1_5_PerfectSelectorLOST:Functions_BasicOperators_PerfectConditionalSelectorLOST_HiLo; Inj_Actuator:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF1i1_5_CreateMotionAndMeasure:Functions_BasicFunctions_InOutFunction_HiLo; assert icone = case { (((SF1i1_5_CreateMotionAndMeasure.status = OK) and (SF1i3_CreateThrustAndTorque.status = OK)) and (SF1i6_DepowerMotor.status = OK)) : 1, else 2 }, MotorRateMeasured = Inj_Actuator.output, ThrustAndTorque = Inj_Propeller.output, Inj_DroneDigitalNetworkPath.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath.input = MotorRate, Inj_DroneMonitoringDigitalNetworkPath.alloc = Alloc_DroneMonitoringDigitalNetworkPath, Inj_DroneMonitoringDigitalNetworkPath.input = MotorDisabled, Inj_DroneMonitoringDigitalNetworkPath.isAlreadyErroneous = MotorDisabled_IsErroneous, Inj_PowerDistribution.alloc = Alloc_PowerDistribution, Inj_PowerDistribution.input = SF1i6_DepowerMotor.output, Inj_PowerDistribution.isAlreadyErroneous = Inj_DroneMonitoringDigitalNetworkPath.isErroneous, SF1i6_DepowerMotor.input = Inj_DroneMonitoringDigitalNetworkPath.output, Inj_Propeller.alloc = Alloc_Propeller, Inj_Propeller.input = SF1i3_CreateThrustAndTorque.output, SF1i3_CreateThrustAndTorque.input = SF1i1_5_PerfectSelectorLOST.output, SF1i1_5_PerfectSelectorLOST.input = Inj_Actuator.output, SF1i1_5_PerfectSelectorLOST.condition = Inj_PowerDistribution.output, Inj_Actuator.alloc = Alloc_MotorAndVariator, Inj_Actuator.input = SF1i1_5_CreateMotionAndMeasure.output, SF1i1_5_CreateMotionAndMeasure.input = Inj_DroneDigitalNetworkPath.output; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF24_ControlAltitude flow icone:[1,3]:private; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; AltitudeConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; VerticalSpeedConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; Thrust_AP:Physical_BasicPhysical_BasicPhysicalStatus:in; APEngagement:Functions_BasicFunctions_ModeSelection:in; Thrust:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_PilotDroneControlPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_PilotDroneControlPath:Functions_PhysicalOperators_PhysicalInjection_detection; SF241_Detection:Functions_BasicOperators_detectionOfErroneous; SF241_ComputeAltitudeConsign:Functions_BasicFunctions_InOutFunction; Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF242_3_ComputeTotalThrust:Functions_BasicFunctions_InOutFunction_HiLoReverse; SF242_3_SelectTotalThrustConsign:Functions_BasicOperators_ErrConditionalSelector_2_ComplexHiLo; SF242_3_AND2:Functions_BasicOperators_AND_complexHiLo; SF242_3_AND1:Functions_BasicOperators_AND_complexHiLo; Inj_Emiss:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq:Functions_PhysicalOperators_PhysicalInjection; assert icone = case { ((SF241_ComputeAltitudeConsign.status = LOST) or (SF242_3_ComputeTotalThrust.status = LOST)) : 3, ((SF241_ComputeAltitudeConsign.status = ERRONEOUS) or (SF242_3_ComputeTotalThrust.status = ERRONEOUS)) : 2, else 1 }, AltitudeConsign = Inj_Emiss.output, Thrust = Inj_Comp2.output, Inj_PilotDroneControlPath.alloc = Alloc_PilotDroneControlPath, Inj_PilotDroneControlPath.input = VerticalSpeedConsign, SF241_Detection.input = Inj_Acq.output, SF241_ComputeAltitudeConsign.input = SF241_Detection.output, Inj_Comp2.alloc = Alloc_MainProcComputation, Inj_Comp2.input = SF242_3_ComputeTotalThrust.output, SF242_3_ComputeTotalThrust.input = SF242_3_SelectTotalThrustConsign.output, SF242_3_SelectTotalThrustConsign.inputAUTO = Thrust_AP, SF242_3_SelectTotalThrustConsign.inputMANUAL = SF242_3_AND2.output, SF242_3_SelectTotalThrustConsign.condition = APEngagement, SF242_3_AND2.input_1 = Inj_Comp1.output, SF242_3_AND2.input_2 = SF242_3_AND1.output, SF242_3_AND1.input_1 = Attitude, SF242_3_AND1.input_2 = Altitude, Inj_Emiss.alloc = Alloc_MainProcEmission, Inj_Emiss.input = Inj_Comp1.output, Inj_Comp1.alloc = Alloc_MainProcComputation, Inj_Comp1.input = SF241_ComputeAltitudeConsign.output, Inj_Acq.alloc = Alloc_MainProcAcquisition, Inj_Acq.input = Inj_PilotDroneControlPath.output; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF23_ControlAttitude flow icone:[1,3]:private; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; AttitudeAPConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; PitchRollConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; YawRateConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; APEngagement:Functions_BasicFunctions_ModeSelection:in; YawConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; P:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_PilotDroneControlPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_PilotDroneControlPath1:Functions_PhysicalOperators_PhysicalInjection_detection; Inj_PilotDroneControlPath2:Functions_PhysicalOperators_PhysicalInjection_detection; SF232_5_Detection:Functions_BasicOperators_detectionOfErroneous; SF231_Detection:Functions_BasicOperators_detectionOfErroneous; Inj_Comp2:Functions_PhysicalOperators_PhysicalInjection; Inj_Emiss:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp1:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq:Functions_PhysicalOperators_PhysicalInjection; SF231_ComputeYawConsign:Functions_BasicFunctions_InOutFunction; SF232_5_AND3:Functions_BasicOperators_AND; SF_232_5_ControlAttitudeAngle:Functions_BasicFunctions_InOutFunction; SF232_5_SelectAttitudeConsign:Functions_BasicOperators_ErrConditionalSelector_2; SF232_5_AND2:Functions_BasicOperators_AND; SF232_5_AND1:Functions_BasicOperators_AND; assert icone = case { ((SF231_ComputeYawConsign.status = LOST) or (SF_232_5_ControlAttitudeAngle.status = LOST)) : 3, ((SF231_ComputeYawConsign.status = ERRONEOUS) or (SF_232_5_ControlAttitudeAngle.status = ERRONEOUS)) : 2, else 1 }, YawConsign = Inj_Emiss.output, P = Inj_Comp2.output, Inj_PilotDroneControlPath1.alloc = Alloc_PilotDroneControlPath, Inj_PilotDroneControlPath1.input = PitchRollConsign, Inj_PilotDroneControlPath2.alloc = Alloc_PilotDroneControlPath, Inj_PilotDroneControlPath2.input = YawRateConsign, SF232_5_Detection.input = Inj_Acq2.output, SF231_Detection.input = Inj_Acq.output, Inj_Comp2.alloc = Alloc_MainProcComputation, Inj_Comp2.input = SF_232_5_ControlAttitudeAngle.output, Inj_Emiss.alloc = Alloc_MainProcEmission, Inj_Emiss.input = Inj_Comp1.output, Inj_Comp1.alloc = Alloc_MainProcComputation, Inj_Comp1.input = SF231_ComputeYawConsign.output, Inj_Acq2.alloc = Alloc_MainProcAcquisition, Inj_Acq2.input = Inj_PilotDroneControlPath1.output, Inj_Acq.alloc = Alloc_MainProcAcquisition, Inj_Acq.input = Inj_PilotDroneControlPath2.output, SF231_ComputeYawConsign.input = SF231_Detection.output, SF232_5_AND3.input_1 = SF232_5_Detection.output, SF232_5_AND3.input_2 = Inj_Comp1.output, SF_232_5_ControlAttitudeAngle.input = SF232_5_SelectAttitudeConsign.output, SF232_5_SelectAttitudeConsign.inputAUTO = SF232_5_AND2.output, SF232_5_SelectAttitudeConsign.inputMANUAL = SF232_5_AND1.output, SF232_5_SelectAttitudeConsign.condition = APEngagement, SF232_5_AND2.input_1 = AttitudeAPConsign, SF232_5_AND2.input_2 = Attitude, SF232_5_AND1.input_1 = SF232_5_AND3.output, SF232_5_AND1.input_2 = Attitude; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF22_AcquirePilotOrders flow icone:[1,3]:private; ManualOverride:Physical_BasicPhysical_BasicPhysicalStatus:out; Consigns:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_PushButton:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_LeftAndRightSideSticks:Physical_BasicPhysical_BasicPhysicalStatus:in; PilotOrders:Functions_BasicFunctions_Presence:in; sub Inj_PushButton:Functions_PhysicalOperators_PhysicalInjection; SF225_Dysfunctional:Functions_BasicFunctions_InOutPresentFunction; SF221_4_Dysfunctional:Functions_BasicFunctions_InOutPresentFunction; Inj_LeftAndRightSideSticks:Functions_PhysicalOperators_PhysicalInjection; assert icone = case { ((SF221_4_Dysfunctional.status = OK) and (SF225_Dysfunctional.status = OK)) : 1, else 2 }, ManualOverride = Inj_PushButton.output, Consigns = Inj_LeftAndRightSideSticks.output, Inj_PushButton.alloc = Alloc_PushButton, Inj_PushButton.input = SF225_Dysfunctional.output, SF225_Dysfunctional.input = PilotOrders, SF221_4_Dysfunctional.input = PilotOrders, Inj_LeftAndRightSideSticks.alloc = Alloc_LeftAndRightSideSticks, Inj_LeftAndRightSideSticks.input = SF221_4_Dysfunctional.output; edon node eq_AIDASystem_Functions_SF21_ControlPosition flow icone:[1,3]:private; Position:Physical_BasicPhysical_BasicPhysicalStatus:in; VerticalSpeed:Physical_BasicPhysical_BasicPhysicalStatus:in; Speed:Physical_BasicPhysical_HiLoPhysicalStatus:in; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; PositionConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; SpeedConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; Attitude_Thrust_APConsign_WSL:Physical_BasicPhysical_BasicPhysicalStatus:out; Attitude_Thrust_APConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneDigitalNetworkPath2:Functions_PhysicalOperators_PhysicalInjection; Inj_DroneDigitalNetworkPath1:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF21_AND4:Functions_BasicOperators_AND_simpleHiLo; Inj_Emiss:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection; SF21_AND5:Functions_BasicOperators_AND; SF21_Dysfunctional:Functions_BasicFunctions_InOutFunction; SF21_AND2:Functions_BasicOperators_AND; SF21_AND1:Functions_BasicOperators_AND; SF21_AND3:Functions_BasicOperators_AND; assert icone = (if (SF21_Dysfunctional.status = OK) then 1 else (if (SF21_Dysfunctional.status = LOST) then 3 else 2)), Attitude_Thrust_APConsign_WSL = Inj_Emiss.output, Attitude_Thrust_APConsign = Inj_Comp.output, Inj_DroneDigitalNetworkPath2.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath2.input = Position, Inj_DroneDigitalNetworkPath1.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath1.input = Speed, SF21_AND4.input_1 = VerticalSpeed, SF21_AND4.input_2 = Inj_DroneDigitalNetworkPath1.output, Inj_Emiss.alloc = Alloc_MainProcEmission, Inj_Emiss.input = Inj_Comp.output, Inj_Comp.alloc = Alloc_MainProcComputation, Inj_Comp.input = SF21_Dysfunctional.output, SF21_AND5.input_1 = Attitude, SF21_AND5.input_2 = SF21_AND3.output, SF21_Dysfunctional.input = SF21_AND5.output, SF21_AND2.input_1 = SpeedConsign, SF21_AND2.input_2 = SF21_AND1.output, SF21_AND1.input_1 = PositionConsign, SF21_AND1.input_2 = Inj_DroneDigitalNetworkPath2.output, SF21_AND3.input_1 = SF21_AND4.output, SF21_AND3.input_2 = SF21_AND2.output; edon node eq_AIDASystem_FunctionsWithPhysical_forInj_SF25_ControlThrust flow icone:[1,3]:private; P:Physical_BasicPhysical_BasicPhysicalStatus:in; Thrust:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; MotorRates:Physical_BasicPhysical_HiLoPhysicalStatus:out; sub Inj_Emiss:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection_bothHiLo; SF25_Dysfunctional:Functions_BasicFunctions_InOutFunction_HiLo; SF25_AllNeeded:Functions_BasicOperators_AND_complexHiLo; assert icone = case { (SF25_Dysfunctional.status = OK) : 1, (SF25_Dysfunctional.status = LOST) : 2, else 3 }, MotorRates = Inj_Emiss.output, Inj_Emiss.alloc = Alloc_MainProcEmission, Inj_Emiss.input = Inj_Comp.output, Inj_Comp.alloc = Alloc_MainProcComputation, Inj_Comp.input = SF25_Dysfunctional.output, SF25_Dysfunctional.input = SF25_AllNeeded.output, SF25_AllNeeded.input_1 = P, SF25_AllNeeded.input_2 = Thrust; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF32_ComputeAltitude flow icone:[1,2]:private; Alloc_MainProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_TelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_PressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Altitude_WSL:Physical_BasicPhysical_HiLoPhysicalStatus:out; VerticalSpeed_WSL:Physical_BasicPhysical_BasicPhysicalStatus:out; VerticalSpeed:Physical_BasicPhysical_BasicPhysicalStatus:out; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:out; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; GroundAltitude_WSL:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; sub SF325_ComputeAltitudeAndVerticalSpeed:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF325_ComputeAltitudeAndVerticalSpeed; SF324_ComputeGroundAltitude:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF324_ComputeGroundAltitude; SF323_MeasureTelemetricSignal:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF323_MeasureTelemetricSignal; SF321_MeasureAmbiantPressure:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF321_MeasureAmbiantPressure; SF322_ComputeBarometricAltitude:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF322_ComputeBarometricAltitude; assert icone = case { (((((SF321_MeasureAmbiantPressure.SF321_Dysfunctional.status = OK) and (SF322_ComputeBarometricAltitude.SF322_Dysfunctional.status = OK)) and (SF323_MeasureTelemetricSignal.SF323_Dysfunctional.status = OK)) and (SF324_ComputeGroundAltitude.SF324_Dysfunctional.status = OK)) and (SF325_ComputeAltitudeAndVerticalSpeed.SF325_Dysfunctional.status = OK)) : 1, else 2 }, Altitude_WSL = SF325_ComputeAltitudeAndVerticalSpeed.Altitude_WSL, VerticalSpeed_WSL = SF325_ComputeAltitudeAndVerticalSpeed.VerticalSpeed_WSL, VerticalSpeed = SF325_ComputeAltitudeAndVerticalSpeed.VerticalSpeed, Altitude = SF325_ComputeAltitudeAndVerticalSpeed.Altitude, GroundAltitude_WSL = SF324_ComputeGroundAltitude.GroundAltitude_WSL, SF325_ComputeAltitudeAndVerticalSpeed.Alloc_MainProcComputation = Alloc_MainProcComputation, SF325_ComputeAltitudeAndVerticalSpeed.Alloc_MainProcEmission = Alloc_MainProcEmission, SF325_ComputeAltitudeAndVerticalSpeed.GroundAltitude = SF324_ComputeGroundAltitude.GroundAltitude, SF325_ComputeAltitudeAndVerticalSpeed.BarometricAltitude = SF322_ComputeBarometricAltitude.BarometricAltitude, SF324_ComputeGroundAltitude.Alloc_MainProcComputation = Alloc_MainProcComputation, SF324_ComputeGroundAltitude.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF324_ComputeGroundAltitude.Alloc_MainProcEmission = Alloc_MainProcEmission, SF324_ComputeGroundAltitude.Alloc_MainProcAcquisition = Alloc_MainProcAcquisition, SF324_ComputeGroundAltitude.Attitude = Attitude, SF324_ComputeGroundAltitude.MeasuredGroundDistance = SF323_MeasureTelemetricSignal.GroundDistance, SF323_MeasureTelemetricSignal.Alloc_TelemetricSensor = Alloc_TelemetricSensor, SF321_MeasureAmbiantPressure.Alloc_PressureSensor = Alloc_PressureSensor, SF322_ComputeBarometricAltitude.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF322_ComputeBarometricAltitude.Alloc_MainProcComputation = Alloc_MainProcComputation, SF322_ComputeBarometricAltitude.Alloc_MainProcAcquisition = Alloc_MainProcAcquisition, SF322_ComputeBarometricAltitude.MeasuredPressure = SF321_MeasureAmbiantPressure.Pressure; edon node eq_AIDASystem_Functions_SF33_ComputeDroneSpeed flow icone:[1,2]:private; GroundAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; Speed_WSL:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_LateralSpeedCamera:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; sub SF331_FilmGround:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF331_FilmGround; SF332_ComputeGroundSpeed:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF332_ComputeGroundSpeed; assert icone = case { ((SF331_FilmGround.SF331_Dysfunctional.status = OK) and (SF332_ComputeGroundSpeed.SF332_Dysfunctional.status = OK)) : 1, else 2 }, Speed_WSL = SF332_ComputeGroundSpeed.GroundSpeed, SF331_FilmGround.Alloc_LateralSpeedCamera = Alloc_LateralSpeedCamera, SF332_ComputeGroundSpeed.GroundAltitude = GroundAltitude, SF332_ComputeGroundSpeed.VideoFlux = SF331_FilmGround.VideoFlux, SF332_ComputeGroundSpeed.Alloc_VideoProcAcquisition = Alloc_VideoProcAcquisition, SF332_ComputeGroundSpeed.Alloc_VideoProcComputation = Alloc_VideoProcComputation, SF332_ComputeGroundSpeed.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF332_ComputeGroundSpeed.Alloc_VideoProcEmission = Alloc_VideoProcEmission; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF31_ComputeAttitude flow icone:[1,2]:private; Alloc_MainProcEmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcAcquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcComputation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_IRS:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_Magnetometer:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Attitude_WSL:Physical_BasicPhysical_BasicPhysicalStatus:out; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:out; sub SF314_6_AllNeeded:Functions_BasicOperators_AND; Inj_Acq2:Functions_PhysicalOperators_PhysicalInjection; Inj_DroneDigitalNetworkPath2:Functions_PhysicalOperators_PhysicalInjection; Inj_Magnetometer:Functions_PhysicalOperators_PhysicalInjection; SF313_Dysfunctional:Functions_BasicFunctions_SourceFunction; SF314_6_Dysfunctional:Functions_BasicFunctions_InOutFunction; Inj_Emiss:Functions_PhysicalOperators_PhysicalInjection; Inj_Acq1:Functions_PhysicalOperators_PhysicalInjection; Inj_DroneDigitalNetworkPath1:Functions_PhysicalOperators_PhysicalInjection; Inj_IRS:Functions_PhysicalOperators_PhysicalInjection; Inj_Comp:Functions_PhysicalOperators_PhysicalInjection; SF311_2_Dysfunctional:Functions_BasicFunctions_SourceFunction; assert icone = case { (((SF311_2_Dysfunctional.status = OK) and (SF313_Dysfunctional.status = OK)) and (SF314_6_Dysfunctional.status = OK)) : 1, else 2 }, Attitude_WSL = Inj_Emiss.output, Attitude = Inj_Comp.output, SF314_6_AllNeeded.input_1 = Inj_Acq1.output, SF314_6_AllNeeded.input_2 = Inj_Acq2.output, Inj_Acq2.alloc = Alloc_MainProcAcquisition, Inj_Acq2.input = Inj_DroneDigitalNetworkPath2.output, Inj_DroneDigitalNetworkPath2.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath2.input = Inj_Magnetometer.output, Inj_Magnetometer.alloc = Alloc_Magnetometer, Inj_Magnetometer.input = SF313_Dysfunctional.output, SF314_6_Dysfunctional.input = SF314_6_AllNeeded.output, Inj_Emiss.alloc = Alloc_MainProcEmission, Inj_Emiss.input = Inj_Comp.output, Inj_Acq1.alloc = Alloc_MainProcAcquisition, Inj_Acq1.input = Inj_DroneDigitalNetworkPath1.output, Inj_DroneDigitalNetworkPath1.alloc = Alloc_DroneDigitalNetworkPath, Inj_DroneDigitalNetworkPath1.input = Inj_IRS.output, Inj_IRS.alloc = Alloc_IRS, Inj_IRS.input = SF311_2_Dysfunctional.output, Inj_Comp.alloc = Alloc_MainProcComputation, Inj_Comp.input = SF314_6_Dysfunctional.output; edon node eq_AIDASystem_FunctionsWithPhysical_Alloc_SF34_ComputePositionAndTime flow icone:[1,2]:private; Alloc_PositionSensor:Physical_BasicPhysical_BasicPhysicalStatus:in; PositionAndTime:Physical_BasicPhysical_BasicPhysicalStatus:out; sub Inj_PositionSensor:Functions_PhysicalOperators_PhysicalInjection; SF34_Dysfunctional:Functions_BasicFunctions_SourceFunction; assert icone = case { (SF34_Dysfunctional.status = OK) : 1, else 2 }, PositionAndTime = Inj_PositionSensor.output, Inj_PositionSensor.alloc = Alloc_PositionSensor, Inj_PositionSensor.input = SF34_Dysfunctional.output; edon node eq_AIDASystem_Physical_PowerDistribution flow PowerInput:Physical_BasicPhysical_HiLoPhysicalStatus:in; oDistribToIRS:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToMagnetometer:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToPressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToTelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToLateralSpeedCamera:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToPositionSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToVideoProcessor:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToMainProcessor:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToActuator1:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToActuator2:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToActuator3:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToActuator4:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToCameraSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToCameraRotarySupport:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToWifiController:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToRadioController:Physical_BasicPhysical_HiLoPhysicalStatus:out; sub DistribToCameraSensor:Components_Links_EPL; DistribToCameraRotarySupport:Components_Links_EPL; DistribToWifiController:Components_Links_EPL; DistribToRadioController:Components_Links_EPL; DistribToIRS:Components_Links_EPL; DistribToVideoProcessor:Components_Links_EPL; Bar:Components_PowerSupply_PowerDistribution; DistribToActuator1:Components_Links_EPL; DistribToActuator2:Components_Links_EPL; DistribToActuator3:Components_Links_EPL; DistribToActuator4:Components_Links_EPL; DistribToMainProcessor:Components_Links_EPL; DistribToMagnetometer:Components_Links_EPL; DistribToPressureSensor:Components_Links_EPL; DistribToTelemetricSensor:Components_Links_EPL; DistribToLateralSpeedCamera:Components_Links_EPL; DistribToPositionSensor:Components_Links_EPL; assert oDistribToIRS = DistribToIRS.output, oDistribToMagnetometer = DistribToMagnetometer.output, oDistribToPressureSensor = DistribToPressureSensor.output, oDistribToTelemetricSensor = DistribToTelemetricSensor.output, oDistribToLateralSpeedCamera = DistribToLateralSpeedCamera.output, oDistribToPositionSensor = DistribToPositionSensor.output, oDistribToVideoProcessor = DistribToVideoProcessor.output, oDistribToMainProcessor = DistribToMainProcessor.output, oDistribToActuator1 = DistribToActuator1.output, oDistribToActuator2 = DistribToActuator2.output, oDistribToActuator3 = DistribToActuator3.output, oDistribToActuator4 = DistribToActuator4.output, oDistribToCameraSensor = DistribToCameraSensor.output, oDistribToCameraRotarySupport = DistribToCameraRotarySupport.output, oDistribToWifiController = DistribToWifiController.output, oDistribToRadioController = DistribToRadioController.output, DistribToCameraSensor.input = Bar.output, DistribToCameraRotarySupport.input = Bar.output, DistribToWifiController.input = Bar.output, DistribToRadioController.input = Bar.output, DistribToIRS.input = Bar.output, DistribToVideoProcessor.input = Bar.output, Bar.input = PowerInput, DistribToActuator1.input = Bar.output, DistribToActuator2.input = Bar.output, DistribToActuator3.input = Bar.output, DistribToActuator4.input = Bar.output, DistribToMainProcessor.input = Bar.output, DistribToMagnetometer.input = Bar.output, DistribToPressureSensor.input = Bar.output, DistribToTelemetricSensor.input = Bar.output, DistribToLateralSpeedCamera.input = Bar.output, DistribToPositionSensor.input = Bar.output; edon node eq_AIDASystem_Physical_PowerDistribution_MON flow PowerInput_MON:Physical_BasicPhysical_HiLoPhysicalStatus:in; oDistribToIRS_MON:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToMagnetometer_MON:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToPressureSensor_MON:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToTelemetricSensor_MON:Physical_BasicPhysical_HiLoPhysicalStatus:out; oDistribToMonitoringProcessor:Physical_BasicPhysical_HiLoPhysicalStatus:out; sub DistribToMonitoringProcessor:Components_Links_EPL; DistribToTelemetricSensor_MON:Components_Links_EPL; DistribToPressureSensor_MON:Components_Links_EPL; DistribToMagnetometer_MON:Components_Links_EPL; DistribToIRS_MON:Components_Links_EPL; Bar_MON:Components_PowerSupply_PowerDistribution; assert oDistribToIRS_MON = DistribToIRS_MON.output, oDistribToMagnetometer_MON = DistribToMagnetometer_MON.output, oDistribToPressureSensor_MON = DistribToPressureSensor_MON.output, oDistribToTelemetricSensor_MON = DistribToTelemetricSensor_MON.output, oDistribToMonitoringProcessor = DistribToMonitoringProcessor.output, DistribToMonitoringProcessor.input = Bar_MON.output, DistribToTelemetricSensor_MON.input = Bar_MON.output, DistribToPressureSensor_MON.input = Bar_MON.output, DistribToMagnetometer_MON.input = Bar_MON.output, DistribToIRS_MON.input = Bar_MON.output, Bar_MON.input = PowerInput_MON; edon node eq_AIDASystem_Physical_Payload flow Alloc_CameraSensor:Physical_BasicPhysical_BasicPhysicalStatus:out; Power_CameraSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_CameraRotarySupport:Physical_BasicPhysical_BasicPhysicalStatus:out; Power_CameraRotarySupport:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub CameraSensor:Components_Payload_CameraSensor; CameraRotarySupport:Components_Payload_CameraRotarySupport; assert Alloc_CameraSensor = CameraSensor.output, Alloc_CameraRotarySupport = CameraRotarySupport.output, CameraSensor.Power = Power_CameraSensor, CameraRotarySupport.Power = Power_CameraRotarySupport; edon node eq_AIDASystem_Physical_Paths flow Alloc_DroneMonitoringDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_DroneMissionDataPath_Drone2ControlDesk:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_DronePhotosAndVideosPath:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_DroneMissionDataPath_ControlDesk2Drone:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_PilotPayloadControlPath:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:out; WifiController_transmission:Physical_BasicPhysical_BasicPhysicalStatus:in; WifiController_reception:Physical_BasicPhysical_BasicPhysicalStatus:in; RadioController:Physical_BasicPhysical_BasicPhysicalStatus:in; RemoteCommunication:Physical_BasicPhysical_BasicPhysicalStatus:in; MonitoringDigitalNetwork:Physical_BasicPhysical_BasicPhysicalStatus:in; MainDigitalNetwork:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PilotDroneControlPath:Physical_BasicPhysical_BasicPhysicalStatus:out; sub Path_PilotPayloadControl:eq_AIDASystem_Physical_Path_PilotPayloadControl; DroneMonitoringDigitalNetworkPath:Functions_PhysicalOperators_AND_Physical_unaire; DroneDigitalNetworkPath:Functions_PhysicalOperators_AND_Physical_unaire; Path_DronePhotosAndVideos:eq_AIDASystem_Physical_Path_DronePhotosAndVideos; Path_DroneMissionData:eq_AIDASystem_Physical_Path_DroneMissionData; Path_PilotDroneControl_PilotConsigns:eq_AIDASystem_Physical_Path_PilotDroneControl; assert Alloc_DroneMonitoringDigitalNetworkPath = DroneMonitoringDigitalNetworkPath.output, Alloc_DroneMissionDataPath_Drone2ControlDesk = Path_DroneMissionData.DroneMissionDataPath_Drone2ControlDesk, Alloc_DronePhotosAndVideosPath = Path_DronePhotosAndVideos.Alloc_DronePhotosAndVideosPath, Alloc_DroneMissionDataPath_ControlDesk2Drone = Path_DroneMissionData.DroneMissionDataPath_ControlDesk2Drone, Alloc_PilotPayloadControlPath = Path_PilotPayloadControl.Alloc_PilotPayloadControlPath, Alloc_DroneDigitalNetworkPath = DroneDigitalNetworkPath.output, Alloc_PilotDroneControlPath = Path_PilotDroneControl_PilotConsigns.Alloc_PilotDroneControlPath, Path_PilotPayloadControl.RemoteCommunication = RemoteCommunication, Path_PilotPayloadControl.RadioController = RadioController, Path_PilotPayloadControl.MainDigitalNetwork = MainDigitalNetwork, DroneMonitoringDigitalNetworkPath.input = MonitoringDigitalNetwork, DroneDigitalNetworkPath.input = MainDigitalNetwork, Path_DronePhotosAndVideos.WifiController = WifiController_transmission, Path_DronePhotosAndVideos.MainDigitalNetwork = MainDigitalNetwork, Path_DroneMissionData.MainDigitalNetwork = MainDigitalNetwork, Path_DroneMissionData.WifiController_transmission = WifiController_transmission, Path_DroneMissionData.WifiController_reception = WifiController_reception, Path_PilotDroneControl_PilotConsigns.RemoteCommunication = RemoteCommunication, Path_PilotDroneControl_PilotConsigns.RadioController = RadioController, Path_PilotDroneControl_PilotConsigns.MainDigitalNetwork = MainDigitalNetwork; edon node eq_AIDASystem_Physical_CommunicationDevices flow oWifiController_transmission:Physical_BasicPhysical_BasicPhysicalStatus:out; oWifiController_reception:Physical_BasicPhysical_BasicPhysicalStatus:out; oRadioController:Physical_BasicPhysical_BasicPhysicalStatus:out; Power_WifiController:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power_RadioController:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub RadioController:Components_CommunicationDevices_CommunicationDevice; WifiController_reception:Components_CommunicationDevices_CommunicationDevice; WifiController_transmission:Components_CommunicationDevices_CommunicationDevice; assert oWifiController_transmission = WifiController_transmission.output, oWifiController_reception = WifiController_reception.output, oRadioController = RadioController.output, RadioController.Power = Power_RadioController, WifiController_reception.Power = Power_WifiController, WifiController_transmission.Power = Power_WifiController; edon node eq_AIDASystem_Physical_Remotecontrol flow Alloc_PushButton:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_CameraControlDevice:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_LeftAndRightSideSticks:Physical_BasicPhysical_BasicPhysicalStatus:out; oRemoteCommunication:Physical_BasicPhysical_BasicPhysicalStatus:out; sub RemoteCommunication:Components_RemoteControl_RemoteCommunication; RemoteBattery:Components_PowerSupply_PowerGeneration; RemoteSwitch:Components_RemoteControl_RemoteSwitch; DistribToRemoteSwitch:Components_Links_EPL; DistribToRemoteCommunication:Components_Links_EPL; RemoteControlInterface:eq_AIDASystem_Physical_RemoteControlInterface; assert Alloc_PushButton = RemoteControlInterface.Alloc_PushButton, Alloc_CameraControlDevice = RemoteControlInterface.Alloc_CameraControlDevice, Alloc_LeftAndRightSideSticks = RemoteControlInterface.Alloc_LeftAndRightSideSticks, oRemoteCommunication = RemoteCommunication.output, RemoteCommunication.Power = DistribToRemoteCommunication.output, RemoteSwitch.Power = DistribToRemoteSwitch.output, DistribToRemoteSwitch.input = RemoteBattery.output, DistribToRemoteCommunication.input = RemoteSwitch.output; edon node eq_AIDASystem_Physical_Networks flow Alloc_MonitoringDN:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MainDN:Physical_BasicPhysical_BasicPhysicalStatus:out; sub MonitoringDigitalNetwork:Components_Networks_DigitalNetwork; MainDigitalNetwork:Components_Networks_DigitalNetwork; assert Alloc_MonitoringDN = MonitoringDigitalNetwork.output, Alloc_MainDN = MainDigitalNetwork.output; edon node eq_AIDASystem_Physical_Sensors flow Alloc_Sensors_MON^IRS:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_Sensors_MON^Magnetometer:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_Sensors_MON^PressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_Sensors_MON^TelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_Sensors_Main^IRS:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_Sensors_Main^Magnetometer:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_Sensors_Main^PressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_Sensors_Main^TelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_Sensors_Main^LateralSpeedCamera:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_Sensors_Main^PositionSensor:Physical_BasicPhysical_BasicPhysicalStatus:out; Power_MON^IRS:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power_MON^Magnetometer:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power_MON^PressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power_MON^TelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power^IRS:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power^Magnetometer:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power^PressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power^TelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power^PositionSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power^LateralSpeedCamera:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub TelemetricSensor_MON:Components_Sensors_SimpleSensor; PressureSensor_MON:Components_Sensors_SimpleSensor; Magnetometer_MON:Components_Sensors_ComplexSensor; InertialReferenceSensors_MON:Components_Sensors_ComplexSensor; PositionSensor:Components_Sensors_ComplexSensor; LateralSpeedCamera:Components_Sensors_ComplexSensor; TelemetricSensor:Components_Sensors_SimpleSensor; PressureSensor:Components_Sensors_SimpleSensor; Magnetometer:Components_Sensors_ComplexSensor; InertialReferenceSensors:Components_Sensors_ComplexSensor; assert Alloc_Sensors_MON^IRS = InertialReferenceSensors_MON.output, Alloc_Sensors_MON^Magnetometer = Magnetometer_MON.output, Alloc_Sensors_MON^PressureSensor = PressureSensor_MON.output, Alloc_Sensors_MON^TelemetricSensor = TelemetricSensor_MON.output, Alloc_Sensors_Main^IRS = InertialReferenceSensors.output, Alloc_Sensors_Main^Magnetometer = Magnetometer.output, Alloc_Sensors_Main^PressureSensor = PressureSensor.output, Alloc_Sensors_Main^TelemetricSensor = TelemetricSensor.output, Alloc_Sensors_Main^LateralSpeedCamera = LateralSpeedCamera.output, Alloc_Sensors_Main^PositionSensor = PositionSensor.output, TelemetricSensor_MON.Power = Power_MON^TelemetricSensor, PressureSensor_MON.Power = Power_MON^PressureSensor, Magnetometer_MON.Power = Power_MON^Magnetometer, InertialReferenceSensors_MON.Power = Power_MON^IRS, PositionSensor.Power = Power^PositionSensor, LateralSpeedCamera.Power = Power^LateralSpeedCamera, TelemetricSensor.Power = Power^TelemetricSensor, PressureSensor.Power = Power^PressureSensor, Magnetometer.Power = Power^Magnetometer, InertialReferenceSensors.Power = Power^IRS; edon node eq_AIDASystem_Physical_Computers flow Alloc_MonitoringProcessor^Acquisition:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MonitoringProcessor^Emission:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MonitoringProcessor^Computation:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MainProcessor^Acquisition:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MainProcessor^Emission:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MainProcessor^Computation:Physical_BasicPhysical_BasicPhysicalStatus:out; Power_MonitoringProcessor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power_MainProcessor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_VideoProcessor^Acquisition:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_VideoProcessor^Emission:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_VideoProcessor^Computation:Physical_BasicPhysical_BasicPhysicalStatus:out; Power_VideoProcessor:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub MonitoringProcessor:eq_AIDASystem_Physical_MainProcessor; VideoProcessor:eq_AIDASystem_Physical_MainProcessor; MainProcessor:eq_AIDASystem_Physical_MainProcessor; assert Alloc_MonitoringProcessor^Acquisition = MonitoringProcessor.oProcessor^Acquisition, Alloc_MonitoringProcessor^Emission = MonitoringProcessor.oProcessor^Emission, Alloc_MonitoringProcessor^Computation = MonitoringProcessor.oProcessor^Computation, Alloc_MainProcessor^Acquisition = MainProcessor.oProcessor^Acquisition, Alloc_MainProcessor^Emission = MainProcessor.oProcessor^Emission, Alloc_MainProcessor^Computation = MainProcessor.oProcessor^Computation, Alloc_VideoProcessor^Acquisition = VideoProcessor.oProcessor^Acquisition, Alloc_VideoProcessor^Emission = VideoProcessor.oProcessor^Emission, Alloc_VideoProcessor^Computation = VideoProcessor.oProcessor^Computation, MonitoringProcessor.Power = Power_MonitoringProcessor, VideoProcessor.Power = Power_VideoProcessor, MainProcessor.Power = Power_MainProcessor; edon node eq_AIDASystem_Functions_SF6_ManageMission flow icone:[1,2]:private; oFlightPlanProgress:Physical_BasicPhysical_BasicPhysicalStatus:out; iFlightPlanProgress:Physical_BasicPhysical_BasicPhysicalStatus:in; iFlightPlan:Physical_BasicPhysical_BasicPhysicalStatus:in; oFlightPlan:Physical_BasicPhysical_BasicPhysicalStatus:out; iDroneControlMode^Mode:Functions_BasicFunctions_ModeSelection:in; iDroneControlMode^IsErroneous:bool:in; oDroneControlMode:Functions_BasicFunctions_ModeSelection:out; Alloc_DroneMissionDataPath_Drone2ControlDesk:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneControlDesk_transmission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneControlDesk_reception:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneControlDesk_transmission:Functions_PhysicalOperators_PhysicalInjection; SF61_ComputeFlightPlanAndZone:Functions_BasicFunctions_InOutFunction; SF64_DisplayDroneFollowUpData:eq_AIDASystem_Functions_SF64_DisplayDroneFollowUpData; assert icone = case { (((SF61_ComputeFlightPlanAndZone.status = OK) and (SF64_DisplayDroneFollowUpData.SF64_ControlMode.status = OK)) and (SF64_DisplayDroneFollowUpData.SF64_FlightPlanProgress.status = OK)) : 1, else 2 }, oFlightPlanProgress = SF64_DisplayDroneFollowUpData.oFlightPlanProgress, oFlightPlan = Inj_DroneControlDesk_transmission.output, oDroneControlMode = SF64_DisplayDroneFollowUpData.oControlMode, Inj_DroneControlDesk_transmission.alloc = Alloc_DroneControlDesk_transmission, Inj_DroneControlDesk_transmission.input = SF61_ComputeFlightPlanAndZone.output, SF61_ComputeFlightPlanAndZone.input = iFlightPlan, SF64_DisplayDroneFollowUpData.iControlMode^Mode = iDroneControlMode^Mode, SF64_DisplayDroneFollowUpData.iControlMode^IsErroneous = iDroneControlMode^IsErroneous, SF64_DisplayDroneFollowUpData.iFlightPlanProgress = iFlightPlanProgress, SF64_DisplayDroneFollowUpData.Alloc_DroneMissionDataPath_Drone2ControlDesk2 = Alloc_DroneMissionDataPath_Drone2ControlDesk, SF64_DisplayDroneFollowUpData.Alloc_DroneControlDesk_reception = Alloc_DroneControlDesk_reception; edon node eq_AIDASystem_Functions_SF7_MonitorDroneControl_v042 flow icone:[1,2]:private; APEngagement^Mode:Functions_BasicFunctions_ModeSelection:in; APEngagement^IsErroneous:bool:in; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; GroundAltitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; VerticalSpeed:Physical_BasicPhysical_BasicPhysicalStatus:in; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRate:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRatesMeasured^MotorRate1:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRatesMeasured^MotorRate2:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRatesMeasured^MotorRate3:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRatesMeasured^MotorRate4:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorDisabled^Motor1:bool:out; MotorDisabled^IsErroneous1:bool:out; MotorDisabled^Motor2:bool:out; MotorDisabled^IsErroneous2:bool:out; MotorDisabled^Motor3:bool:out; MotorDisabled^IsErroneous3:bool:out; MotorDisabled^Motor4:bool:out; MotorDisabled^IsErroneous4:bool:out; Consigns^AltitudeManualConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; Consigns^YawManualConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; Consigns^PitchRollManualConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; Consigns^AltitudeAndAttitudeAPConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PilotDroneControlPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_SensorsMON^IRS:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_SensorsMON^Magnetometer:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_SensorsMON^PressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_SensorsMON^TelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_MonitoringProcessor^Acquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonitoringProcessor^Emission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MonitoringProcessor^Computation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMonitoringDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; sub SF72_ComputeDroneAltitudeMON:eq_AIDASystem_FunctionsWithPhysical_forInj_SF72_ComputeAltitudeMON; SF71_ComputeAttitudeMON:eq_AIDASystem_FunctionsWithPhysical_forInj_SF71_ComputeAttitudeMON; SF73_ControlAttitudeAndAltitudeMON:eq_AIDASystem_Functions_SF73_ControlAttitudeAndAltitudeMON; SF74_MonitorParameters:eq_AIDASystem_Functions_SF74_MonitorParameters; assert icone = case { ((((((((((SF74_MonitorParameters.SF745_DisableDroneMotor.FailureModesOfSF74.status = OK) and (SF71_ComputeAttitudeMON.SF71_Dysfunctional.status = OK)) and (SF72_ComputeDroneAltitudeMON.SF721_MeasureAmbiantPressureMON.SF721_Dysfunctional.status = OK)) and (SF72_ComputeDroneAltitudeMON.SF722_ComputeBarometricAltitudeMON.SF722_Dysfunctional.status = OK)) and (SF72_ComputeDroneAltitudeMON.SF723_MeasureTelemetricSignalMON.SF723_Dysfunctional.status = OK)) and (SF72_ComputeDroneAltitudeMON.SF724_ComputeGroundAltitudeMON.SF724_Dysfunctional.status = OK)) and (SF72_ComputeDroneAltitudeMON.SF725_ComputeAltitudeAndVerticalSpeedMON.SF725_Dysfunctional.status = OK)) and (SF73_ControlAttitudeAndAltitudeMON.SF731_2_ControlAltitudeMON.SF731_ComputeThrustMON.status = OK)) and (SF73_ControlAttitudeAndAltitudeMON.SF733_6_ControlAttitudeMON.SF734_6_ControlAttitudeMON.status = OK)) and (SF73_ControlAttitudeAndAltitudeMON.SF737_8_ComputeMotorRate.SF737_8_ControlThrust.status = OK)) : 1, else 2 }, MotorDisabled^Motor1 = SF74_MonitorParameters.MotorsDisabled^Motor1, MotorDisabled^IsErroneous1 = SF74_MonitorParameters.MotorsDisabled^IsErroneous1, MotorDisabled^Motor2 = SF74_MonitorParameters.MotorsDisabled^Motor2, MotorDisabled^IsErroneous2 = SF74_MonitorParameters.MotorsDisabled^IsErroneous2, MotorDisabled^Motor3 = SF74_MonitorParameters.MotorsDisabled^Motor3, MotorDisabled^IsErroneous3 = SF74_MonitorParameters.MotorsDisabled^IsErroneous3, MotorDisabled^Motor4 = SF74_MonitorParameters.MotorsDisabled^Motor4, MotorDisabled^IsErroneous4 = SF74_MonitorParameters.MotorsDisabled^IsErroneous4, SF72_ComputeDroneAltitudeMON.Alloc_MonProcAcquisition = Alloc_MonitoringProcessor^Acquisition, SF72_ComputeDroneAltitudeMON.Alloc_MonProcComputation = Alloc_MonitoringProcessor^Computation, SF72_ComputeDroneAltitudeMON.Alloc_TelemetricSensorMON = Alloc_SensorsMON^TelemetricSensor, SF72_ComputeDroneAltitudeMON.Alloc_PressureSensorMON = Alloc_SensorsMON^PressureSensor, SF72_ComputeDroneAltitudeMON.Alloc_DroneMonitoringDigitalNetworkPath = Alloc_DroneMonitoringDigitalNetworkPath, SF72_ComputeDroneAltitudeMON.Attitude = SF71_ComputeAttitudeMON.Attitude, SF71_ComputeAttitudeMON.Alloc_MonProcAcquisition = Alloc_MonitoringProcessor^Acquisition, SF71_ComputeAttitudeMON.Alloc_MonProcComputation = Alloc_MonitoringProcessor^Computation, SF71_ComputeAttitudeMON.Alloc_IRSMON = Alloc_SensorsMON^IRS, SF71_ComputeAttitudeMON.Alloc_MagnetometerMON = Alloc_SensorsMON^Magnetometer, SF71_ComputeAttitudeMON.Alloc_DroneMonitoringDigitalNetworkPath = Alloc_DroneMonitoringDigitalNetworkPath, SF73_ControlAttitudeAndAltitudeMON.Altitude = Altitude, SF73_ControlAttitudeAndAltitudeMON.Attitude = Attitude, SF73_ControlAttitudeAndAltitudeMON.YawConsign = Consigns^YawManualConsign, SF73_ControlAttitudeAndAltitudeMON.PitchRollConsign = Consigns^PitchRollManualConsign, SF73_ControlAttitudeAndAltitudeMON.AltitudeConsign = Consigns^AltitudeManualConsign, SF73_ControlAttitudeAndAltitudeMON.AttitudeAPConsign = Consigns^AltitudeAndAttitudeAPConsign, SF73_ControlAttitudeAndAltitudeMON.AltitudeAPConsign = Consigns^AltitudeAndAttitudeAPConsign, SF73_ControlAttitudeAndAltitudeMON.APEngagement^Mode = APEngagement^Mode, SF73_ControlAttitudeAndAltitudeMON.APEngagement^IsErroneous = APEngagement^IsErroneous, SF73_ControlAttitudeAndAltitudeMON.Alloc_PilotDroneControlPath = Alloc_PilotDroneControlPath, SF73_ControlAttitudeAndAltitudeMON.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF73_ControlAttitudeAndAltitudeMON.Alloc_MonProcAcquisition = Alloc_MonitoringProcessor^Acquisition, SF73_ControlAttitudeAndAltitudeMON.Alloc_MonProcComputation = Alloc_MonitoringProcessor^Computation, SF74_MonitorParameters.Alloc_MonProcAcquisition = Alloc_MonitoringProcessor^Acquisition, SF74_MonitorParameters.Alloc_MonProcComputation = Alloc_MonitoringProcessor^Computation, SF74_MonitorParameters.MotorRateMON = SF73_ControlAttitudeAndAltitudeMON.MotorRate, SF74_MonitorParameters.MotorRate = MotorRate, SF74_MonitorParameters.GroundAltitudeMON = SF72_ComputeDroneAltitudeMON.GroundAltitude, SF74_MonitorParameters.GroundAltitude = GroundAltitude, SF74_MonitorParameters.Altitude = Altitude, SF74_MonitorParameters.AltitudeMON = SF72_ComputeDroneAltitudeMON.Altitude, SF74_MonitorParameters.VerticalSpeedMON = SF72_ComputeDroneAltitudeMON.VerticalSpeed, SF74_MonitorParameters.VerticalSpeed = VerticalSpeed, SF74_MonitorParameters.Attitude = Attitude, SF74_MonitorParameters.AttitudeMON = SF71_ComputeAttitudeMON.Attitude, SF74_MonitorParameters.MotorRateMeasured^MotorRate1 = MotorRatesMeasured^MotorRate1, SF74_MonitorParameters.MotorRateMeasured^MotorRate2 = MotorRatesMeasured^MotorRate2, SF74_MonitorParameters.MotorRateMeasured^MotorRate3 = MotorRatesMeasured^MotorRate3, SF74_MonitorParameters.MotorRateMeasured^MotorRate4 = MotorRatesMeasured^MotorRate4, SF74_MonitorParameters.Alloc_MonProcEmission = Alloc_MonitoringProcessor^Emission, SF74_MonitorParameters.Alloc_DroneMonitoringDigitalNetworkPath = Alloc_DroneMonitoringDigitalNetworkPath, SF74_MonitorParameters.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath; edon node eq_AIDASystem_Observers_Observer_v44 flow Thrust1:Physical_BasicPhysical_HiLoPhysicalStatus:in; Thrust2:Physical_BasicPhysical_HiLoPhysicalStatus:in; Thrust3:Physical_BasicPhysical_HiLoPhysicalStatus:in; Thrust4:Physical_BasicPhysical_HiLoPhysicalStatus:in; APEngagement:Functions_BasicFunctions_ModeSelection:in; PilotInconsistentControl:bool:in; PilotManualControl:Functions_BasicFunctions_ModeSelection:in; LostHelixesControl:bool:out; sub PilotRequiresManualMode:Quadcopter_Observers_PilotRequiresManualMode; LossOfSelectedManualModeFiltered:Boolean_Boolean_filter; filter4:Boolean_Boolean_filter; filter3:Boolean_Boolean_filter; filter2:Boolean_Boolean_filter; StuckModeManual:Quadcopter_Observers_StuckModeMAN_v03; ControlledCrash:Boolean_Boolean_or2; StuckModeAutoOrErr:Quadcopter_Observers_StuckMode_v03; FC03_MAJ:Boolean_Boolean_intermediate; TotalLossOfControl:Boolean_Boolean_and2; UncontrolledCrashInAuthorizedArea:Boolean_Boolean_or2; LossOfSelectedManualMode:Boolean_Boolean_and2; UncontrolledCrashInNonAuthorizedArea:Boolean_Boolean_or2; FC02_HAZ:Boolean_Boolean_intermediate; FC01_CAT:Boolean_Boolean_intermediate; ErroneousControlOfOneHelix:Quadcopter_Observers_ErroneousControlOfOneHelix; TotalLossOfHelixesControl:Quadcopter_Observers_TotalLossOfHelixesControl; LossOfAtMost3HelixesControl:Quadcopter_Observers_LossOfAtMost3HelixesControl; assert LostHelixesControl = LossOfAtMost3HelixesControl.output, PilotRequiresManualMode.input = PilotManualControl, LossOfSelectedManualModeFiltered.filterCriterion = PilotInconsistentControl, LossOfSelectedManualModeFiltered.input = LossOfSelectedManualMode.O, filter4.filterCriterion = PilotInconsistentControl, filter4.input = ControlledCrash.O, filter3.filterCriterion = PilotInconsistentControl, filter3.input = UncontrolledCrashInAuthorizedArea.O, filter2.filterCriterion = PilotInconsistentControl, filter2.input = UncontrolledCrashInNonAuthorizedArea.O, StuckModeManual.PilotAPEngagementOrder = PilotManualControl, StuckModeManual.AppliedAPEngagement = APEngagement, ControlledCrash.I1 = PilotRequiresManualMode.output, ControlledCrash.I2 = StuckModeManual.output, StuckModeAutoOrErr.input = APEngagement, FC03_MAJ.I = filter4.output, TotalLossOfControl.I1 = LossOfAtMost3HelixesControl.output, TotalLossOfControl.I2 = LossOfSelectedManualMode.O, UncontrolledCrashInAuthorizedArea.I1 = TotalLossOfHelixesControl.output, UncontrolledCrashInAuthorizedArea.I2 = LossOfAtMost3HelixesControl.output, LossOfSelectedManualMode.I1 = StuckModeAutoOrErr.output, LossOfSelectedManualMode.I2 = PilotRequiresManualMode.output, UncontrolledCrashInNonAuthorizedArea.I1 = ErroneousControlOfOneHelix.output, UncontrolledCrashInNonAuthorizedArea.I2 = TotalLossOfControl.O, FC02_HAZ.I = filter3.output, FC01_CAT.I = filter2.output, ErroneousControlOfOneHelix.in1 = Thrust1, ErroneousControlOfOneHelix.in2 = Thrust2, ErroneousControlOfOneHelix.in3 = Thrust4, ErroneousControlOfOneHelix.in4 = Thrust3, TotalLossOfHelixesControl.in1 = Thrust1, TotalLossOfHelixesControl.in2 = Thrust2, TotalLossOfHelixesControl.in3 = Thrust4, TotalLossOfHelixesControl.in4 = Thrust3, LossOfAtMost3HelixesControl.in1 = Thrust1, LossOfAtMost3HelixesControl.in2 = Thrust2, LossOfAtMost3HelixesControl.in3 = Thrust4, LossOfAtMost3HelixesControl.in4 = Thrust3; edon node eq_AIDASystem_Functions_SF5_MakeAndRecordVideo flow icone:[1,2]:private; ManualPayloadControl:Functions_BasicFunctions_Presence:in; AutomaticPayloadControl:Physical_BasicPhysical_BasicPhysicalStatus:in; VideoFlux:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_VideoProcessor^Acquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcessor^Emission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcessor^Computation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PilotPayloadControlPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_CameraSensor:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_CameraRotarySupport:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_CameraControlDevice:Physical_BasicPhysical_BasicPhysicalStatus:in; sub SF51_SelectCameraControl:eq_AIDASystem_FunctionsWithPhysical_ForInj_SF51_SelectCameraControl; SF55_AcquireManualPayloadControl:eq_AIDASystem_FunctionsWithPhysical_ForInj_SF55_AcquireManualPayloadControl; SF52_ControlCameraOrientation:eq_AIDASystem_FunctionsWithPhysical_ForInj_SF52_ControlCameraOrientation; SF53_MakePhotosAndVideos:eq_AIDASystem_FunctionsWithPhysical_ForInj_SF53_MakePhotosAndVideos; SF54_DigitisePhotosAndVideos:eq_AIDASystem_FunctionsWithPhysical_ForInj_SF54_DigitisePhotosAndVideos; assert icone = case { ((((SF55_AcquireManualPayloadControl.SF55_Dysfunctional.status = OK) and (SF52_ControlCameraOrientation.SF52_Dysfunctional.status = OK)) and (SF53_MakePhotosAndVideos.SF53_Dysfunctional.status = OK)) and (SF54_DigitisePhotosAndVideos.SF54_Dysfunctional.status = OK)) : 1, else 2 }, VideoFlux = SF54_DigitisePhotosAndVideos.PhotosAndVideoFiles, SF51_SelectCameraControl.AutomaticPayloadControl = AutomaticPayloadControl, SF51_SelectCameraControl.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF51_SelectCameraControl.Alloc_PilotPayloadControlPath = Alloc_PilotPayloadControlPath, SF51_SelectCameraControl.Alloc_VideoProcEmission = Alloc_VideoProcessor^Emission, SF51_SelectCameraControl.Alloc_VideoProcComputation = Alloc_VideoProcessor^Computation, SF51_SelectCameraControl.Alloc_VideoProcAcquisition = Alloc_VideoProcessor^Acquisition, SF51_SelectCameraControl.ManualPayloadControl^Signal = SF55_AcquireManualPayloadControl.oManualPayloadControl^Signal, SF51_SelectCameraControl.ManualPayloadControl^IsErroneous = SF55_AcquireManualPayloadControl.oManualPayloadControl^IsErroneous, SF55_AcquireManualPayloadControl.iManualPayloadControl = ManualPayloadControl, SF55_AcquireManualPayloadControl.Alloc_CameraControlDevice = Alloc_CameraControlDevice, SF52_ControlCameraOrientation.CameraPositionConsign = SF51_SelectCameraControl.CameraPositionConsign_PhotoAndVideoControl, SF52_ControlCameraOrientation.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF52_ControlCameraOrientation.Alloc_CameraRotarySupport = Alloc_CameraRotarySupport, SF53_MakePhotosAndVideos.CameraPosition = SF52_ControlCameraOrientation.CameraPosition, SF53_MakePhotosAndVideos.PhotoAndVideoControl = SF51_SelectCameraControl.CameraPositionConsign_PhotoAndVideoControl, SF53_MakePhotosAndVideos.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF53_MakePhotosAndVideos.Alloc_CameraSensor = Alloc_CameraSensor, SF54_DigitisePhotosAndVideos.Video_Photo = SF53_MakePhotosAndVideos.Video_Photo, SF54_DigitisePhotosAndVideos.FileStorageFormat = SF51_SelectCameraControl.FileStorageFormat, SF54_DigitisePhotosAndVideos.Alloc_VideoProcComputation = Alloc_VideoProcessor^Computation, SF54_DigitisePhotosAndVideos.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF54_DigitisePhotosAndVideos.Alloc_VideoProcEmission = Alloc_VideoProcessor^Emission, SF54_DigitisePhotosAndVideos.Alloc_VideoProcAcquisition = Alloc_VideoProcessor^Acquisition; edon node eq_AIDASystem_Functions_SF4_ControlDroneNavigation flow Position:Physical_BasicPhysical_BasicPhysicalStatus:in; Time:Physical_BasicPhysical_BasicPhysicalStatus:in; PositionConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; SpeedConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; FlightPlan:Physical_BasicPhysical_BasicPhysicalStatus:in; APEngagement_WSL^Mode:Functions_BasicFunctions_ModeSelection:out; APEngagement_WSL^IsErroneous:bool:out; APEngagement:Functions_BasicFunctions_ModeSelection:out; IndicatedMode^Mode:Functions_BasicFunctions_ModeSelection:out; IndicatedMode^IsErroneous:bool:out; PilotManualControl:Functions_BasicFunctions_ModeSelection:in; FlightPlanProgress:Physical_BasicPhysical_BasicPhysicalStatus:out; AutomaticPayloadControl:Physical_BasicPhysical_BasicPhysicalStatus:out; ManualOverride:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcessor^Acquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcessor^Emission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcessor^Computation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PilotDroneControlPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMissionDataPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneControlDesk_transmission:Physical_BasicPhysical_BasicPhysicalStatus:in; sub Inj_DroneControlDesk_transmission:Functions_PhysicalOperators_PhysicalInjection; SF42_RunAutomaticControl:eq_AIDASystem_Functions_SF42_RunAutomaticControl; SF44_AcquirePilotControlConsignAndMode:eq_AIDASystem_Functions_SF44_AcquirePilotControlConsignAndMode; SF43_SelectControlMode:eq_AIDASystem_Functions_SF43_SelectControlMode; SF41_AcquireAndStoreFlightPlan:Functions_BasicFunctions_InOutFunction; assert PositionConsign = SF42_RunAutomaticControl.PositionConsign, SpeedConsign = SF42_RunAutomaticControl.SpeedConsign, APEngagement_WSL^Mode = SF43_SelectControlMode.APEngagement_WSL^Mode, APEngagement_WSL^IsErroneous = SF43_SelectControlMode.APEngagement_WSL^IsErroneous, APEngagement = SF43_SelectControlMode.APEngagement, IndicatedMode^Mode = SF43_SelectControlMode.IndicatedMode^Mode, IndicatedMode^IsErroneous = SF43_SelectControlMode.IndicatedMode^IsErroneous, FlightPlanProgress = SF42_RunAutomaticControl.FlightPlanProgress, AutomaticPayloadControl = SF42_RunAutomaticControl.AutomaticPayloadControl, Inj_DroneControlDesk_transmission.alloc = Alloc_DroneControlDesk_transmission, Inj_DroneControlDesk_transmission.input = SF41_AcquireAndStoreFlightPlan.output, SF42_RunAutomaticControl.FlightPlan = Inj_DroneControlDesk_transmission.output, SF42_RunAutomaticControl.Position = Position, SF42_RunAutomaticControl.PilotControlConsigns = SF44_AcquirePilotControlConsignAndMode.AcquiredPilotControlConsigns, SF42_RunAutomaticControl.Time = Time, SF42_RunAutomaticControl.FlightPlanInterruption = SF43_SelectControlMode.FlightPlanInterruption, SF42_RunAutomaticControl.Alloc_MainProcComputation = Alloc_MainProcessor^Computation, SF42_RunAutomaticControl.Alloc_MainProcEmission = Alloc_MainProcessor^Emission, SF42_RunAutomaticControl.Alloc_DroneMissionDataPath = Alloc_DroneMissionDataPath, SF42_RunAutomaticControl.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF42_RunAutomaticControl.Alloc_MainProcAcquisition = Alloc_MainProcessor^Acquisition, SF44_AcquirePilotControlConsignAndMode.PilotControlMode = PilotManualControl, SF44_AcquirePilotControlConsignAndMode.Alloc_DroneControlDesk_transmission = Alloc_DroneControlDesk_transmission, SF43_SelectControlMode.PilotManualControl = SF44_AcquirePilotControlConsignAndMode.AcquiredPilotControlMode, SF43_SelectControlMode.ManualOverride = ManualOverride, SF43_SelectControlMode.MissionCompleted^Signal = SF42_RunAutomaticControl.MissionCompleted^Signal, SF43_SelectControlMode.MissionCompleted^IsErroneous = SF42_RunAutomaticControl.MissionCompleted^IsErroneous, SF43_SelectControlMode.Alloc_MainProcComputation = Alloc_MainProcessor^Computation, SF43_SelectControlMode.Alloc_MainProcEmission = Alloc_MainProcessor^Emission, SF43_SelectControlMode.Alloc_DroneMissionDataPath = Alloc_DroneMissionDataPath, SF43_SelectControlMode.Alloc_PilotDroneControlPath = Alloc_PilotDroneControlPath, SF43_SelectControlMode.Alloc_MainProcAcquisition = Alloc_MainProcessor^Acquisition, SF41_AcquireAndStoreFlightPlan.input = FlightPlan; edon node eq_AIDASystem_Functions_SF1_ControlDroneHelixes_2 flow icone:[1,2]:private; MotorRatesMeasured^MotorRate1:Physical_BasicPhysical_HiLoPhysicalStatus:out; MotorRatesMeasured^MotorRate2:Physical_BasicPhysical_HiLoPhysicalStatus:out; MotorRatesMeasured^MotorRate3:Physical_BasicPhysical_HiLoPhysicalStatus:out; MotorRatesMeasured^MotorRate4:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_PowerDistribution^EPL_Act1:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_PowerDistribution^EPL_Act2:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_PowerDistribution^EPL_Act3:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_PowerDistribution^EPL_Act4:Physical_BasicPhysical_HiLoPhysicalStatus:in; MotorRate:Physical_BasicPhysical_HiLoPhysicalStatus:in; ThrustAndTorque1:Physical_BasicPhysical_HiLoPhysicalStatus:out; ThrustAndTorque2:Physical_BasicPhysical_HiLoPhysicalStatus:out; ThrustAndTorque3:Physical_BasicPhysical_HiLoPhysicalStatus:out; ThrustAndTorque4:Physical_BasicPhysical_HiLoPhysicalStatus:out; MotorDisabled^Motor1:bool:in; MotorDisabled^IsErroneous1:bool:in; MotorDisabled^Motor2:bool:in; MotorDisabled^IsErroneous2:bool:in; MotorDisabled^Motor3:bool:in; MotorDisabled^IsErroneous3:bool:in; MotorDisabled^Motor4:bool:in; MotorDisabled^IsErroneous4:bool:in; Alloc_MotorsAndVariators^MotorAndVariator1:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MotorsAndVariators^MotorAndVariator2:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MotorsAndVariators^MotorAndVariator3:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MotorsAndVariators^MotorAndVariator4:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneMonitoringDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_Propellers^Propeller1:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_Propellers^Propeller2:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_Propellers^Propeller3:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_Propellers^Propeller4:Physical_BasicPhysical_BasicPhysicalStatus:in; sub SF14_ControlHelix4:eq_AIDASystem_Functions_SF1i_ControlHelix_2; SF13_ControlHelix3:eq_AIDASystem_Functions_SF1i_ControlHelix_2; SF12_ControlHelix2:eq_AIDASystem_Functions_SF1i_ControlHelix_2; SF11_ControlHelix1:eq_AIDASystem_Functions_SF1i_ControlHelix_2; assert icone = case { ((((((((((((SF11_ControlHelix1.SF1i1_5_CreateMotionAndMeasure.status = OK) and (SF11_ControlHelix1.SF1i3_CreateThrustAndTorque.status = OK)) and (SF11_ControlHelix1.SF1i6_DepowerMotor.status = OK)) and (SF12_ControlHelix2.SF1i1_5_CreateMotionAndMeasure.status = OK)) and (SF12_ControlHelix2.SF1i3_CreateThrustAndTorque.status = OK)) and (SF12_ControlHelix2.SF1i6_DepowerMotor.status = OK)) and (SF13_ControlHelix3.SF1i1_5_CreateMotionAndMeasure.status = OK)) and (SF13_ControlHelix3.SF1i3_CreateThrustAndTorque.status = OK)) and (SF13_ControlHelix3.SF1i6_DepowerMotor.status = OK)) and (SF14_ControlHelix4.SF1i1_5_CreateMotionAndMeasure.status = OK)) and (SF14_ControlHelix4.SF1i3_CreateThrustAndTorque.status = OK)) and (SF14_ControlHelix4.SF1i6_DepowerMotor.status = OK)) : 1, else 2 }, MotorRatesMeasured^MotorRate1 = SF11_ControlHelix1.MotorRateMeasured, MotorRatesMeasured^MotorRate2 = SF12_ControlHelix2.MotorRateMeasured, MotorRatesMeasured^MotorRate3 = SF13_ControlHelix3.MotorRateMeasured, MotorRatesMeasured^MotorRate4 = SF14_ControlHelix4.MotorRateMeasured, ThrustAndTorque1 = SF11_ControlHelix1.ThrustAndTorque, ThrustAndTorque2 = SF12_ControlHelix2.ThrustAndTorque, ThrustAndTorque3 = SF13_ControlHelix3.ThrustAndTorque, ThrustAndTorque4 = SF14_ControlHelix4.ThrustAndTorque, SF14_ControlHelix4.MotorDisabled_IsErroneous = MotorDisabled^IsErroneous4, SF14_ControlHelix4.MotorDisabled = MotorDisabled^Motor4, SF14_ControlHelix4.MotorRate = MotorRate, SF14_ControlHelix4.Alloc_PowerDistribution = Alloc_PowerDistribution^EPL_Act4, SF14_ControlHelix4.Alloc_MotorAndVariator = Alloc_MotorsAndVariators^MotorAndVariator4, SF14_ControlHelix4.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF14_ControlHelix4.Alloc_DroneMonitoringDigitalNetworkPath = Alloc_DroneMonitoringDigitalNetworkPath, SF14_ControlHelix4.Alloc_Propeller = Alloc_Propellers^Propeller4, SF13_ControlHelix3.MotorDisabled_IsErroneous = MotorDisabled^IsErroneous3, SF13_ControlHelix3.MotorDisabled = MotorDisabled^Motor3, SF13_ControlHelix3.MotorRate = MotorRate, SF13_ControlHelix3.Alloc_PowerDistribution = Alloc_PowerDistribution^EPL_Act3, SF13_ControlHelix3.Alloc_MotorAndVariator = Alloc_MotorsAndVariators^MotorAndVariator3, SF13_ControlHelix3.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF13_ControlHelix3.Alloc_DroneMonitoringDigitalNetworkPath = Alloc_DroneMonitoringDigitalNetworkPath, SF13_ControlHelix3.Alloc_Propeller = Alloc_Propellers^Propeller3, SF12_ControlHelix2.MotorDisabled_IsErroneous = MotorDisabled^IsErroneous2, SF12_ControlHelix2.MotorDisabled = MotorDisabled^Motor2, SF12_ControlHelix2.MotorRate = MotorRate, SF12_ControlHelix2.Alloc_PowerDistribution = Alloc_PowerDistribution^EPL_Act2, SF12_ControlHelix2.Alloc_MotorAndVariator = Alloc_MotorsAndVariators^MotorAndVariator2, SF12_ControlHelix2.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF12_ControlHelix2.Alloc_DroneMonitoringDigitalNetworkPath = Alloc_DroneMonitoringDigitalNetworkPath, SF12_ControlHelix2.Alloc_Propeller = Alloc_Propellers^Propeller2, SF11_ControlHelix1.MotorDisabled_IsErroneous = MotorDisabled^IsErroneous1, SF11_ControlHelix1.MotorDisabled = MotorDisabled^Motor1, SF11_ControlHelix1.MotorRate = MotorRate, SF11_ControlHelix1.Alloc_PowerDistribution = Alloc_PowerDistribution^EPL_Act1, SF11_ControlHelix1.Alloc_MotorAndVariator = Alloc_MotorsAndVariators^MotorAndVariator1, SF11_ControlHelix1.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF11_ControlHelix1.Alloc_DroneMonitoringDigitalNetworkPath = Alloc_DroneMonitoringDigitalNetworkPath, SF11_ControlHelix1.Alloc_Propeller = Alloc_Propellers^Propeller1; edon node eq_AIDASystem_Functions_SF2_ControlDroneAttitudeAndPosition flow icone:[1,2]:private; VerticalSpeed:Physical_BasicPhysical_BasicPhysicalStatus:in; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:in; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:in; Position:Physical_BasicPhysical_BasicPhysicalStatus:in; Speed:Physical_BasicPhysical_HiLoPhysicalStatus:in; PositionConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; SpeedConsign:Physical_BasicPhysical_BasicPhysicalStatus:in; APEngagement:Functions_BasicFunctions_ModeSelection:in; MotorRate:Physical_BasicPhysical_HiLoPhysicalStatus:out; DetectControlDronePosition:Physical_BasicPhysical_BasicPhysicalStatus:out; Consigns^AltitudeManualConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; Consigns^YawManualConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; Consigns^PitchRollManualConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; Consigns^AltitudeAndAttitudeAPConsign:Physical_BasicPhysical_BasicPhysicalStatus:out; PilotOrders:Functions_BasicFunctions_Presence:in; ManualOverride:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MainProcessor^Acquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcessor^Emission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcessor^Computation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PilotDroneControlPath:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_PushButton:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_LeftAndRightSideSticks:Physical_BasicPhysical_BasicPhysicalStatus:in; sub SF24_ControlAltitude:eq_AIDASystem_FunctionsWithPhysical_forInj_SF24_ControlAltitude; SF23_ControlAttitude:eq_AIDASystem_FunctionsWithPhysical_forInj_SF23_ControlAttitude; SF22_AcquirePilotOrders:eq_AIDASystem_FunctionsWithPhysical_forInj_SF22_AcquirePilotOrders; SF21_ControlPosition:eq_AIDASystem_Functions_SF21_ControlPosition; SF25_ControlThrust:eq_AIDASystem_FunctionsWithPhysical_forInj_SF25_ControlThrust; assert icone = case { ((((((((SF21_ControlPosition.SF21_Dysfunctional.status # OK) or (SF22_AcquirePilotOrders.SF221_4_Dysfunctional.status # OK)) or (SF22_AcquirePilotOrders.SF225_Dysfunctional.status # OK)) or (SF23_ControlAttitude.SF231_ComputeYawConsign.status # OK)) or (SF23_ControlAttitude.SF_232_5_ControlAttitudeAngle.status # OK)) or (SF24_ControlAltitude.SF241_ComputeAltitudeConsign.status # OK)) or (SF24_ControlAltitude.SF242_3_ComputeTotalThrust.status # OK)) or (SF25_ControlThrust.SF25_Dysfunctional.status # OK)) : 2, else 1 }, MotorRate = SF25_ControlThrust.MotorRates, DetectControlDronePosition = SF21_ControlPosition.Attitude_Thrust_APConsign, Consigns^AltitudeManualConsign = SF24_ControlAltitude.AltitudeConsign, Consigns^YawManualConsign = SF23_ControlAttitude.YawConsign, Consigns^PitchRollManualConsign = SF22_AcquirePilotOrders.Consigns, Consigns^AltitudeAndAttitudeAPConsign = SF21_ControlPosition.Attitude_Thrust_APConsign_WSL, ManualOverride = SF22_AcquirePilotOrders.ManualOverride, SF24_ControlAltitude.Altitude = Altitude, SF24_ControlAltitude.Attitude = Attitude, SF24_ControlAltitude.VerticalSpeedConsign = SF22_AcquirePilotOrders.Consigns, SF24_ControlAltitude.Thrust_AP = SF21_ControlPosition.Attitude_Thrust_APConsign, SF24_ControlAltitude.APEngagement = APEngagement, SF24_ControlAltitude.Alloc_PilotDroneControlPath = Alloc_PilotDroneControlPath, SF24_ControlAltitude.Alloc_MainProcEmission = Alloc_MainProcessor^Emission, SF24_ControlAltitude.Alloc_MainProcAcquisition = Alloc_MainProcessor^Acquisition, SF24_ControlAltitude.Alloc_MainProcComputation = Alloc_MainProcessor^Computation, SF23_ControlAttitude.Attitude = Attitude, SF23_ControlAttitude.AttitudeAPConsign = SF21_ControlPosition.Attitude_Thrust_APConsign, SF23_ControlAttitude.PitchRollConsign = SF22_AcquirePilotOrders.Consigns, SF23_ControlAttitude.YawRateConsign = SF22_AcquirePilotOrders.Consigns, SF23_ControlAttitude.APEngagement = APEngagement, SF23_ControlAttitude.Alloc_PilotDroneControlPath = Alloc_PilotDroneControlPath, SF23_ControlAttitude.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF23_ControlAttitude.Alloc_MainProcEmission = Alloc_MainProcessor^Emission, SF23_ControlAttitude.Alloc_MainProcAcquisition = Alloc_MainProcessor^Acquisition, SF23_ControlAttitude.Alloc_MainProcComputation = Alloc_MainProcessor^Computation, SF22_AcquirePilotOrders.Alloc_PushButton = Alloc_PushButton, SF22_AcquirePilotOrders.Alloc_LeftAndRightSideSticks = Alloc_LeftAndRightSideSticks, SF22_AcquirePilotOrders.PilotOrders = PilotOrders, SF21_ControlPosition.Position = Position, SF21_ControlPosition.VerticalSpeed = VerticalSpeed, SF21_ControlPosition.Speed = Speed, SF21_ControlPosition.Attitude = Attitude, SF21_ControlPosition.PositionConsign = PositionConsign, SF21_ControlPosition.SpeedConsign = SpeedConsign, SF21_ControlPosition.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF21_ControlPosition.Alloc_MainProcEmission = Alloc_MainProcessor^Emission, SF21_ControlPosition.Alloc_MainProcComputation = Alloc_MainProcessor^Computation, SF25_ControlThrust.P = SF23_ControlAttitude.P, SF25_ControlThrust.Thrust = SF24_ControlAltitude.Thrust, SF25_ControlThrust.Alloc_MainProcEmission = Alloc_MainProcessor^Emission, SF25_ControlThrust.Alloc_MainProcComputation = Alloc_MainProcessor^Computation; edon node eq_AIDASystem_Functions_SF3_ComputeDronePositionAndSpeed flow icone:[1,2]:private; VerticalSpeed_WSL:Physical_BasicPhysical_BasicPhysicalStatus:out; Altitude_WSL:Physical_BasicPhysical_HiLoPhysicalStatus:out; VerticalSpeed:Physical_BasicPhysical_BasicPhysicalStatus:out; Altitude:Physical_BasicPhysical_HiLoPhysicalStatus:out; Attitude_WSL:Physical_BasicPhysical_BasicPhysicalStatus:out; Attitude:Physical_BasicPhysical_BasicPhysicalStatus:out; Position:Physical_BasicPhysical_BasicPhysicalStatus:out; Speed:Physical_BasicPhysical_HiLoPhysicalStatus:out; Time:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_VideoProcessor^Acquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcessor^Emission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_VideoProcessor^Computation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcessor^Acquisition:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcessor^Emission:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_MainProcessor^Computation:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_Sensors^IRS:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_Sensors^Magnetometer:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_Sensors^PressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_Sensors^TelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:in; Alloc_Sensors^LateralSpeedCamera:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_Sensors^PositionSensor:Physical_BasicPhysical_BasicPhysicalStatus:in; Alloc_DroneDigitalNetworkPath:Physical_BasicPhysical_BasicPhysicalStatus:in; GroundAltitude_WSL:Physical_BasicPhysical_HiLoPhysicalStatus:out; sub SF32_ComputeAltitude:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF32_ComputeAltitude; SF33_ComputeDroneSpeed:eq_AIDASystem_Functions_SF33_ComputeDroneSpeed; SF31_ComputeAttitude:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF31_ComputeAttitude; SF34_ComputePositionAndTime:eq_AIDASystem_FunctionsWithPhysical_Alloc_SF34_ComputePositionAndTime; assert icone = case { (((((((((((SF31_ComputeAttitude.SF311_2_Dysfunctional.status = OK) and (SF31_ComputeAttitude.SF313_Dysfunctional.status = OK)) and (SF31_ComputeAttitude.SF314_6_Dysfunctional.status = OK)) and (SF32_ComputeAltitude.SF321_MeasureAmbiantPressure.SF321_Dysfunctional.status = OK)) and (SF32_ComputeAltitude.SF322_ComputeBarometricAltitude.SF322_Dysfunctional.status = OK)) and (SF32_ComputeAltitude.SF323_MeasureTelemetricSignal.SF323_Dysfunctional.status = OK)) and (SF32_ComputeAltitude.SF324_ComputeGroundAltitude.SF324_Dysfunctional.status = OK)) and (SF32_ComputeAltitude.SF325_ComputeAltitudeAndVerticalSpeed.SF325_Dysfunctional.status = OK)) and (SF33_ComputeDroneSpeed.SF331_FilmGround.SF331_Dysfunctional.status = OK)) and (SF33_ComputeDroneSpeed.SF332_ComputeGroundSpeed.SF332_Dysfunctional.status = OK)) and (SF34_ComputePositionAndTime.SF34_Dysfunctional.status = OK)) : 1, else 2 }, VerticalSpeed_WSL = SF32_ComputeAltitude.VerticalSpeed_WSL, Altitude_WSL = SF32_ComputeAltitude.Altitude_WSL, VerticalSpeed = SF32_ComputeAltitude.VerticalSpeed, Altitude = SF32_ComputeAltitude.Altitude, Attitude_WSL = SF31_ComputeAttitude.Attitude_WSL, Attitude = SF31_ComputeAttitude.Attitude, Position = SF34_ComputePositionAndTime.PositionAndTime, Speed = SF33_ComputeDroneSpeed.Speed_WSL, Time = SF34_ComputePositionAndTime.PositionAndTime, GroundAltitude_WSL = SF32_ComputeAltitude.GroundAltitude_WSL, SF32_ComputeAltitude.Alloc_MainProcAcquisition = Alloc_MainProcessor^Acquisition, SF32_ComputeAltitude.Alloc_MainProcComputation = Alloc_MainProcessor^Computation, SF32_ComputeAltitude.Alloc_TelemetricSensor = Alloc_Sensors^TelemetricSensor, SF32_ComputeAltitude.Alloc_PressureSensor = Alloc_Sensors^PressureSensor, SF32_ComputeAltitude.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF32_ComputeAltitude.Attitude = SF31_ComputeAttitude.Attitude, SF32_ComputeAltitude.Alloc_MainProcEmission = Alloc_MainProcessor^Emission, SF33_ComputeDroneSpeed.GroundAltitude = SF32_ComputeAltitude.GroundAltitude_WSL, SF33_ComputeDroneSpeed.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF33_ComputeDroneSpeed.Alloc_LateralSpeedCamera = Alloc_Sensors^LateralSpeedCamera, SF33_ComputeDroneSpeed.Alloc_VideoProcAcquisition = Alloc_VideoProcessor^Acquisition, SF33_ComputeDroneSpeed.Alloc_VideoProcEmission = Alloc_VideoProcessor^Emission, SF33_ComputeDroneSpeed.Alloc_VideoProcComputation = Alloc_VideoProcessor^Computation, SF31_ComputeAttitude.Alloc_MainProcEmission = Alloc_MainProcessor^Emission, SF31_ComputeAttitude.Alloc_MainProcAcquisition = Alloc_MainProcessor^Acquisition, SF31_ComputeAttitude.Alloc_MainProcComputation = Alloc_MainProcessor^Computation, SF31_ComputeAttitude.Alloc_IRS = Alloc_Sensors^IRS, SF31_ComputeAttitude.Alloc_Magnetometer = Alloc_Sensors^Magnetometer, SF31_ComputeAttitude.Alloc_DroneDigitalNetworkPath = Alloc_DroneDigitalNetworkPath, SF34_ComputePositionAndTime.Alloc_PositionSensor = Alloc_Sensors^PositionSensor; edon node eq_AIDASystem_Physical_Propellers flow Alloc_Propellers^Propeller1:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_Propellers^Propeller2:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_Propellers^Propeller3:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_Propellers^Propeller4:Physical_BasicPhysical_BasicPhysicalStatus:out; sub Propeller4:Components_Propellers_Propeller; Propeller3:Components_Propellers_Propeller; Propeller2:Components_Propellers_Propeller; Propeller1:Components_Propellers_Propeller; assert Alloc_Propellers^Propeller1 = Propeller1.output, Alloc_Propellers^Propeller2 = Propeller2.output, Alloc_Propellers^Propeller3 = Propeller3.output, Alloc_Propellers^Propeller4 = Propeller4.output; edon node eq_AIDASystem_Physical_PowerSupply flow Power_MonitoringProcessor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_MainProcessor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_Actuators^EPL_Act1:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_Actuators^EPL_Act2:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_Actuators^EPL_Act3:Physical_BasicPhysical_HiLoPhysicalStatus:out; Alloc_Actuators^EPL_Act4:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_CameraSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_CameraRotarySupport:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_WifiController:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_RadioController:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_VideoProcessor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_Sensors_MON^IRS:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_Sensors_MON^Magnetometer:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_Sensors_MON^PressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_Sensors_MON^TelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_Sensors_Main^IRS:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_Sensors_Main^Magnetometer:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_Sensors_Main^PressureSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_Sensors_Main^TelemetricSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_Sensors_Main^PositionSensor:Physical_BasicPhysical_HiLoPhysicalStatus:out; Power_Sensors_Main^LateralSpeedCamera:Physical_BasicPhysical_HiLoPhysicalStatus:out; sub DroneBattery:Components_PowerSupply_PowerGeneration; PowerDistribution:eq_AIDASystem_Physical_PowerDistribution; PowerDistribution_MON:eq_AIDASystem_Physical_PowerDistribution_MON; assert Power_MonitoringProcessor = PowerDistribution_MON.oDistribToMonitoringProcessor, Power_MainProcessor = PowerDistribution.oDistribToMainProcessor, Alloc_Actuators^EPL_Act1 = PowerDistribution.oDistribToActuator1, Alloc_Actuators^EPL_Act2 = PowerDistribution.oDistribToActuator2, Alloc_Actuators^EPL_Act3 = PowerDistribution.oDistribToActuator3, Alloc_Actuators^EPL_Act4 = PowerDistribution.oDistribToActuator4, Power_CameraSensor = PowerDistribution.oDistribToCameraSensor, Power_CameraRotarySupport = PowerDistribution.oDistribToCameraRotarySupport, Power_WifiController = PowerDistribution.oDistribToWifiController, Power_RadioController = PowerDistribution.oDistribToRadioController, Power_VideoProcessor = PowerDistribution.oDistribToVideoProcessor, Power_Sensors_MON^IRS = PowerDistribution_MON.oDistribToIRS_MON, Power_Sensors_MON^Magnetometer = PowerDistribution_MON.oDistribToMagnetometer_MON, Power_Sensors_MON^PressureSensor = PowerDistribution_MON.oDistribToPressureSensor_MON, Power_Sensors_MON^TelemetricSensor = PowerDistribution_MON.oDistribToTelemetricSensor_MON, Power_Sensors_Main^IRS = PowerDistribution.oDistribToIRS, Power_Sensors_Main^Magnetometer = PowerDistribution.oDistribToMagnetometer, Power_Sensors_Main^PressureSensor = PowerDistribution.oDistribToPressureSensor, Power_Sensors_Main^TelemetricSensor = PowerDistribution.oDistribToTelemetricSensor, Power_Sensors_Main^PositionSensor = PowerDistribution.oDistribToPositionSensor, Power_Sensors_Main^LateralSpeedCamera = PowerDistribution.oDistribToLateralSpeedCamera, PowerDistribution.PowerInput = DroneBattery.output, PowerDistribution_MON.PowerInput_MON = DroneBattery.output; edon node eq_AIDASystem_Physical_Actuators flow Alloc_MotorsAndVariators^MotorAndVariator1:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MotorsAndVariators^MotorAndVariator2:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MotorsAndVariators^MotorAndVariator3:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_MotorsAndVariators^MotorAndVariator4:Physical_BasicPhysical_BasicPhysicalStatus:out; Power^EPL_Act1:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power^EPL_Act2:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power^EPL_Act3:Physical_BasicPhysical_HiLoPhysicalStatus:in; Power^EPL_Act4:Physical_BasicPhysical_HiLoPhysicalStatus:in; sub MotorAndVariator4:Components_Actuators_MotorAndVariator; MotorAndVariator3:Components_Actuators_MotorAndVariator; MotorAndVariator2:Components_Actuators_MotorAndVariator; MotorAndVariator1:Components_Actuators_MotorAndVariator; assert Alloc_MotorsAndVariators^MotorAndVariator1 = MotorAndVariator1.output, Alloc_MotorsAndVariators^MotorAndVariator2 = MotorAndVariator2.output, Alloc_MotorsAndVariators^MotorAndVariator3 = MotorAndVariator3.output, Alloc_MotorsAndVariators^MotorAndVariator4 = MotorAndVariator4.output, MotorAndVariator4.Power = Power^EPL_Act4, MotorAndVariator3.Power = Power^EPL_Act3, MotorAndVariator2.Power = Power^EPL_Act2, MotorAndVariator1.Power = Power^EPL_Act1; edon node eq_AIDASystem_Physical_DroneControlDesk flow Alloc_DroneControlDesk_transmission:Physical_BasicPhysical_BasicPhysicalStatus:out; Alloc_DroneControlDesk_reception:Physical_BasicPhysical_BasicPhysicalStatus:out; sub DroneControlDesk_reception:Components_DroneControlDesk_DroneControlDesk; DroneControlDesk_transmission:Components_DroneControlDesk_DroneControlDesk; assert Alloc_DroneControlDesk_transmission = DroneControlDesk_transmission.Alloc_DroneControlDesk, Alloc_DroneControlDesk_reception = DroneControlDesk_reception.Alloc_DroneControlDesk; edon node main sub Payload:eq_AIDASystem_Physical_Payload; Paths:eq_AIDASystem_Physical_Paths; CommunicationDevices:eq_AIDASystem_Physical_CommunicationDevices; Remotecontrol:eq_AIDASystem_Physical_Remotecontrol; Networks:eq_AIDASystem_Physical_Networks; Sensors:eq_AIDASystem_Physical_Sensors; Computers:eq_AIDASystem_Physical_Computers; SF6:eq_AIDASystem_Functions_SF6_ManageMission; EXT_Database_UploadPredefinedFlightZoneBoarders:Functions_BasicFunctions_SourceFunction; EXT_PilotDetection:AIDASystem_Functions_Detection_v44; SF7:eq_AIDASystem_Functions_SF7_MonitorDroneControl_v042; FailureConditions:eq_AIDASystem_Observers_Observer_v44; SF5:eq_AIDASystem_Functions_SF5_MakeAndRecordVideo; SF4:eq_AIDASystem_Functions_SF4_ControlDroneNavigation; SF1:eq_AIDASystem_Functions_SF1_ControlDroneHelixes_2; SF2:eq_AIDASystem_Functions_SF2_ControlDroneAttitudeAndPosition; SF3:eq_AIDASystem_Functions_SF3_ComputeDronePositionAndSpeed; Propellers:eq_AIDASystem_Physical_Propellers; PowerSupply:eq_AIDASystem_Physical_PowerSupply; Actuators:eq_AIDASystem_Physical_Actuators; DroneControlDesk:eq_AIDASystem_Physical_DroneControlDesk; assert Payload.Power_CameraSensor = PowerSupply.Power_CameraSensor, Payload.Power_CameraRotarySupport = PowerSupply.Power_CameraRotarySupport, Paths.WifiController_transmission = CommunicationDevices.oWifiController_transmission, Paths.WifiController_reception = CommunicationDevices.oWifiController_reception, Paths.RadioController = CommunicationDevices.oRadioController, Paths.RemoteCommunication = Remotecontrol.oRemoteCommunication, Paths.MonitoringDigitalNetwork = Networks.Alloc_MonitoringDN, Paths.MainDigitalNetwork = Networks.Alloc_MainDN, CommunicationDevices.Power_WifiController = PowerSupply.Power_WifiController, CommunicationDevices.Power_RadioController = PowerSupply.Power_RadioController, Sensors.Power_MON^IRS = PowerSupply.Power_Sensors_MON^IRS, Sensors.Power_MON^Magnetometer = PowerSupply.Power_Sensors_MON^Magnetometer, Sensors.Power_MON^PressureSensor = PowerSupply.Power_Sensors_MON^PressureSensor, Sensors.Power_MON^TelemetricSensor = PowerSupply.Power_Sensors_MON^TelemetricSensor, Sensors.Power^IRS = PowerSupply.Power_Sensors_Main^IRS, Sensors.Power^Magnetometer = PowerSupply.Power_Sensors_Main^Magnetometer, Sensors.Power^PressureSensor = PowerSupply.Power_Sensors_Main^PressureSensor, Sensors.Power^TelemetricSensor = PowerSupply.Power_Sensors_Main^TelemetricSensor, Sensors.Power^PositionSensor = PowerSupply.Power_Sensors_Main^PositionSensor, Sensors.Power^LateralSpeedCamera = PowerSupply.Power_Sensors_Main^LateralSpeedCamera, Computers.Power_MonitoringProcessor = PowerSupply.Power_MonitoringProcessor, Computers.Power_MainProcessor = PowerSupply.Power_MainProcessor, Computers.Power_VideoProcessor = PowerSupply.Power_VideoProcessor, SF6.iFlightPlanProgress = SF4.FlightPlanProgress, SF6.iFlightPlan = EXT_Database_UploadPredefinedFlightZoneBoarders.output, SF6.iDroneControlMode^Mode = SF4.IndicatedMode^Mode, SF6.iDroneControlMode^IsErroneous = SF4.IndicatedMode^IsErroneous, SF6.Alloc_DroneMissionDataPath_Drone2ControlDesk = Paths.Alloc_DroneMissionDataPath_ControlDesk2Drone, SF6.Alloc_DroneControlDesk_transmission = DroneControlDesk.Alloc_DroneControlDesk_transmission, SF6.Alloc_DroneControlDesk_reception = DroneControlDesk.Alloc_DroneControlDesk_reception, EXT_PilotDetection.inputFlightPlan = SF6.oFlightPlanProgress, EXT_PilotDetection.inputPosition = SF3.Position, EXT_PilotDetection.inputSpeed = SF3.Speed, EXT_PilotDetection.inputControlPosition = SF2.DetectControlDronePosition, EXT_PilotDetection.inputLostHelixesControl = FailureConditions.LostHelixesControl, EXT_PilotDetection.inputIndicatedMode = SF6.oDroneControlMode, SF7.APEngagement^Mode = SF4.APEngagement_WSL^Mode, SF7.APEngagement^IsErroneous = SF4.APEngagement_WSL^IsErroneous, SF7.Attitude = SF3.Attitude_WSL, SF7.GroundAltitude = SF3.GroundAltitude_WSL, SF7.VerticalSpeed = SF3.VerticalSpeed_WSL, SF7.Altitude = SF3.Altitude_WSL, SF7.MotorRate = SF2.MotorRate, SF7.MotorRatesMeasured^MotorRate1 = SF1.MotorRatesMeasured^MotorRate1, SF7.MotorRatesMeasured^MotorRate2 = SF1.MotorRatesMeasured^MotorRate2, SF7.MotorRatesMeasured^MotorRate3 = SF1.MotorRatesMeasured^MotorRate3, SF7.MotorRatesMeasured^MotorRate4 = SF1.MotorRatesMeasured^MotorRate4, SF7.Consigns^AltitudeManualConsign = SF2.Consigns^AltitudeManualConsign, SF7.Consigns^YawManualConsign = SF2.Consigns^YawManualConsign, SF7.Consigns^PitchRollManualConsign = SF2.Consigns^PitchRollManualConsign, SF7.Consigns^AltitudeAndAttitudeAPConsign = SF2.Consigns^AltitudeAndAttitudeAPConsign, SF7.Alloc_PilotDroneControlPath = Paths.Alloc_PilotDroneControlPath, SF7.Alloc_SensorsMON^IRS = Sensors.Alloc_Sensors_MON^IRS, SF7.Alloc_SensorsMON^Magnetometer = Sensors.Alloc_Sensors_MON^Magnetometer, SF7.Alloc_SensorsMON^PressureSensor = Sensors.Alloc_Sensors_MON^PressureSensor, SF7.Alloc_SensorsMON^TelemetricSensor = Sensors.Alloc_Sensors_MON^TelemetricSensor, SF7.Alloc_MonitoringProcessor^Acquisition = Computers.Alloc_MonitoringProcessor^Acquisition, SF7.Alloc_MonitoringProcessor^Emission = Computers.Alloc_MonitoringProcessor^Emission, SF7.Alloc_MonitoringProcessor^Computation = Computers.Alloc_MonitoringProcessor^Computation, SF7.Alloc_DroneDigitalNetworkPath = Paths.Alloc_DroneDigitalNetworkPath, SF7.Alloc_DroneMonitoringDigitalNetworkPath = Paths.Alloc_DroneMonitoringDigitalNetworkPath, FailureConditions.Thrust1 = SF1.ThrustAndTorque1, FailureConditions.Thrust2 = SF1.ThrustAndTorque2, FailureConditions.Thrust3 = SF1.ThrustAndTorque3, FailureConditions.Thrust4 = SF1.ThrustAndTorque4, FailureConditions.APEngagement = SF4.APEngagement, FailureConditions.PilotInconsistentControl = EXT_PilotDetection.PilotInconsistentControl, FailureConditions.PilotManualControl = EXT_PilotDetection.PilotSelectedMode, SF5.ManualPayloadControl = EXT_PilotDetection.ManualPayloadControl, SF5.AutomaticPayloadControl = SF4.AutomaticPayloadControl, SF5.Alloc_VideoProcessor^Acquisition = Computers.Alloc_VideoProcessor^Acquisition, SF5.Alloc_VideoProcessor^Emission = Computers.Alloc_VideoProcessor^Emission, SF5.Alloc_VideoProcessor^Computation = Computers.Alloc_VideoProcessor^Computation, SF5.Alloc_PilotPayloadControlPath = Paths.Alloc_PilotPayloadControlPath, SF5.Alloc_CameraSensor = Payload.Alloc_CameraSensor, SF5.Alloc_CameraRotarySupport = Payload.Alloc_CameraRotarySupport, SF5.Alloc_DroneDigitalNetworkPath = Paths.Alloc_DroneDigitalNetworkPath, SF5.Alloc_CameraControlDevice = Remotecontrol.Alloc_CameraControlDevice, SF4.Position = SF3.Position, SF4.Time = SF3.Time, SF4.FlightPlan = SF6.oFlightPlan, SF4.PilotManualControl = EXT_PilotDetection.PilotSelectedMode, SF4.ManualOverride = SF2.ManualOverride, SF4.Alloc_MainProcessor^Acquisition = Computers.Alloc_MainProcessor^Acquisition, SF4.Alloc_MainProcessor^Emission = Computers.Alloc_MainProcessor^Emission, SF4.Alloc_MainProcessor^Computation = Computers.Alloc_MainProcessor^Computation, SF4.Alloc_PilotDroneControlPath = Paths.Alloc_PilotDroneControlPath, SF4.Alloc_DroneDigitalNetworkPath = Paths.Alloc_DroneDigitalNetworkPath, SF4.Alloc_DroneMissionDataPath = Paths.Alloc_DroneMissionDataPath_ControlDesk2Drone, SF4.Alloc_DroneControlDesk_transmission = DroneControlDesk.Alloc_DroneControlDesk_transmission, SF1.Alloc_PowerDistribution^EPL_Act1 = PowerSupply.Alloc_Actuators^EPL_Act1, SF1.Alloc_PowerDistribution^EPL_Act2 = PowerSupply.Alloc_Actuators^EPL_Act2, SF1.Alloc_PowerDistribution^EPL_Act3 = PowerSupply.Alloc_Actuators^EPL_Act3, SF1.Alloc_PowerDistribution^EPL_Act4 = PowerSupply.Alloc_Actuators^EPL_Act4, SF1.MotorRate = SF2.MotorRate, SF1.MotorDisabled^Motor1 = SF7.MotorDisabled^Motor1, SF1.MotorDisabled^IsErroneous1 = SF7.MotorDisabled^IsErroneous1, SF1.MotorDisabled^Motor2 = SF7.MotorDisabled^Motor2, SF1.MotorDisabled^IsErroneous2 = SF7.MotorDisabled^IsErroneous2, SF1.MotorDisabled^Motor3 = SF7.MotorDisabled^Motor3, SF1.MotorDisabled^IsErroneous3 = SF7.MotorDisabled^IsErroneous3, SF1.MotorDisabled^Motor4 = SF7.MotorDisabled^Motor4, SF1.MotorDisabled^IsErroneous4 = SF7.MotorDisabled^IsErroneous4, SF1.Alloc_MotorsAndVariators^MotorAndVariator1 = Actuators.Alloc_MotorsAndVariators^MotorAndVariator1, SF1.Alloc_MotorsAndVariators^MotorAndVariator2 = Actuators.Alloc_MotorsAndVariators^MotorAndVariator2, SF1.Alloc_MotorsAndVariators^MotorAndVariator3 = Actuators.Alloc_MotorsAndVariators^MotorAndVariator3, SF1.Alloc_MotorsAndVariators^MotorAndVariator4 = Actuators.Alloc_MotorsAndVariators^MotorAndVariator4, SF1.Alloc_DroneDigitalNetworkPath = Paths.Alloc_DroneDigitalNetworkPath, SF1.Alloc_DroneMonitoringDigitalNetworkPath = Paths.Alloc_DroneMonitoringDigitalNetworkPath, SF1.Alloc_Propellers^Propeller1 = Propellers.Alloc_Propellers^Propeller1, SF1.Alloc_Propellers^Propeller2 = Propellers.Alloc_Propellers^Propeller2, SF1.Alloc_Propellers^Propeller3 = Propellers.Alloc_Propellers^Propeller3, SF1.Alloc_Propellers^Propeller4 = Propellers.Alloc_Propellers^Propeller4, SF2.VerticalSpeed = SF3.VerticalSpeed, SF2.Altitude = SF3.Altitude, SF2.Attitude = SF3.Attitude, SF2.Position = SF3.Position, SF2.Speed = SF3.Speed, SF2.PositionConsign = SF4.PositionConsign, SF2.SpeedConsign = SF4.SpeedConsign, SF2.APEngagement = SF4.APEngagement, SF2.PilotOrders = EXT_PilotDetection.PilotOrders, SF2.Alloc_MainProcessor^Acquisition = Computers.Alloc_MainProcessor^Acquisition, SF2.Alloc_MainProcessor^Emission = Computers.Alloc_MainProcessor^Emission, SF2.Alloc_MainProcessor^Computation = Computers.Alloc_MainProcessor^Computation, SF2.Alloc_DroneDigitalNetworkPath = Paths.Alloc_DroneDigitalNetworkPath, SF2.Alloc_PilotDroneControlPath = Paths.Alloc_PilotDroneControlPath, SF2.Alloc_PushButton = Remotecontrol.Alloc_PushButton, SF2.Alloc_LeftAndRightSideSticks = Remotecontrol.Alloc_LeftAndRightSideSticks, SF3.Alloc_VideoProcessor^Acquisition = Computers.Alloc_VideoProcessor^Acquisition, SF3.Alloc_VideoProcessor^Emission = Computers.Alloc_VideoProcessor^Emission, SF3.Alloc_VideoProcessor^Computation = Computers.Alloc_VideoProcessor^Computation, SF3.Alloc_MainProcessor^Acquisition = Computers.Alloc_MainProcessor^Acquisition, SF3.Alloc_MainProcessor^Emission = Computers.Alloc_MainProcessor^Emission, SF3.Alloc_MainProcessor^Computation = Computers.Alloc_MainProcessor^Computation, SF3.Alloc_Sensors^IRS = Sensors.Alloc_Sensors_Main^IRS, SF3.Alloc_Sensors^Magnetometer = Sensors.Alloc_Sensors_Main^Magnetometer, SF3.Alloc_Sensors^PressureSensor = Sensors.Alloc_Sensors_Main^PressureSensor, SF3.Alloc_Sensors^TelemetricSensor = Sensors.Alloc_Sensors_Main^TelemetricSensor, SF3.Alloc_Sensors^LateralSpeedCamera = Sensors.Alloc_Sensors_Main^LateralSpeedCamera, SF3.Alloc_Sensors^PositionSensor = Sensors.Alloc_Sensors_Main^PositionSensor, SF3.Alloc_DroneDigitalNetworkPath = Paths.Alloc_DroneDigitalNetworkPath, Actuators.Power^EPL_Act1 = PowerSupply.Alloc_Actuators^EPL_Act1, Actuators.Power^EPL_Act2 = PowerSupply.Alloc_Actuators^EPL_Act2, Actuators.Power^EPL_Act3 = PowerSupply.Alloc_Actuators^EPL_Act3, Actuators.Power^EPL_Act4 = PowerSupply.Alloc_Actuators^EPL_Act4; extern nodeproperty = "AIDASystem/AIDASystem/AIDA0_4_4"; nodeproperty = "1"; nodeproperty = "default"; nodeproperty = "2019-04-01 10:02:08"; edon