1
0
mirror of http://172.16.200.102/AIDA/AIDASafety.git synced 2025-12-20 19:03:56 +01:00
Files
AIDASafety/AIDASystem-AltaRicaDataFlow.alt
2018-10-12 15:13:51 +02:00

1432 lines
60 KiB
Plaintext

/* Date : 8 oct. 2018 */
/* DataFlow format */
domain Functions_BasicFunctions_BasicFunctionStatus = {ERRONEOUS, LOST, OK};
domain Functions_BasicFunctions_ModeSelection = {AUTO, MANUAL};
domain Functions_BasicFunctions_Presence = {ABSENT, PRESENT};
domain Functions_BasicFunctions_ModeSelection_ErroneousLost = {AUTO, ERRONEOUS, LOST, MANUAL};
node Functions_BasicFunctions_InOutFunction
flow
icone:[1,3]:private;
input:Functions_BasicFunctions_BasicFunctionStatus:in;
output:Functions_BasicFunctions_BasicFunctionStatus:out;
state
status:Functions_BasicFunctions_BasicFunctionStatus;
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 <event fail_loss> = constant(1.0E-4);
law <event fail_error> = constant(1.0E-5);
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 <event stuck_auto> = exponential(0.001);
attribute DassaultSpecialCtrlPeriod(<event stuck_auto>) = 9.877E8;
law <event stuck_man> = exponential(0.001);
attribute DassaultSpecialCtrlPeriod(<event stuck_man>) = 9.877E8;
edon
node Functions_BasicFunctions_SourceFunction
flow
icone:[1,3]:private;
output:Functions_BasicFunctions_BasicFunctionStatus:out;
state
status:Functions_BasicFunctions_BasicFunctionStatus;
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 <event fail_loss> = constant(1.0E-4);
law <event fail_error> = constant(1.0E-5);
edon
node AIDASystem_Functions_Detection_v44
flow
inputFlightPlan:Functions_BasicFunctions_BasicFunctionStatus:in;
inputPosition:Functions_BasicFunctions_BasicFunctionStatus:in;
inputSpeed:Functions_BasicFunctions_BasicFunctionStatus:in;
inputControlPosition:Functions_BasicFunctions_BasicFunctionStatus: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 <event GoToManualMode> = exponential(0.001);
attribute DassaultSpecialCtrlPeriod(<event GoToManualMode>) = 9.877E8;
edon
node Functions_BasicOperators_AND
flow
output:Functions_BasicFunctions_BasicFunctionStatus:out;
input_1:Functions_BasicFunctions_BasicFunctionStatus:in;
input_2:Functions_BasicFunctions_BasicFunctionStatus: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));
edon
node Functions_BasicOperators_ErrConditionalSelector_2
flow
icone:[1,2]:private;
inputAUTO:Functions_BasicFunctions_BasicFunctionStatus:in;
inputMANUAL:Functions_BasicFunctions_BasicFunctionStatus:in;
condition:Functions_BasicFunctions_ModeSelection:in;
output:Functions_BasicFunctions_BasicFunctionStatus:out;
assert
icone = (if (condition = AUTO) then 1 else 2),
output = (if (condition = AUTO) then inputAUTO else inputMANUAL);
edon
node Functions_BasicOperators_ANDBoolErrLost
flow
icone:[1,2]:private;
input:bool:in;
output:bool:out;
failurePropagation:Functions_BasicFunctions_BasicFunctionStatus:in;
assert
icone = (if (failurePropagation = OK) then 1 else 2),
output = case {
(failurePropagation = LOST) : false,
(failurePropagation = ERRONEOUS) : 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_Comparator
flow
input1:Functions_BasicFunctions_BasicFunctionStatus:in;
input2:Functions_BasicFunctions_BasicFunctionStatus:in;
output:bool:out;
assert
output = case {
(input1 = LOST) : true,
(input2 = LOST) : true,
(input1 = input2) : false,
else true
};
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:Functions_BasicFunctions_BasicFunctionStatus:in;
in2:Functions_BasicFunctions_BasicFunctionStatus:in;
in3:Functions_BasicFunctions_BasicFunctionStatus:in;
in4:Functions_BasicFunctions_BasicFunctionStatus:in;
output:bool:out;
assert
output = ((((in1 = ERRONEOUS) or (in2 = ERRONEOUS)) or (in3 = ERRONEOUS)) or (in4 = ERRONEOUS)),
icone = (if output then 2 else 1);
edon
node Quadcopter_Observers_TotalLossOfHelixesControl
flow
icone:[1,2]:private;
in1:Functions_BasicFunctions_BasicFunctionStatus:in;
in2:Functions_BasicFunctions_BasicFunctionStatus:in;
in3:Functions_BasicFunctions_BasicFunctionStatus:in;
in4:Functions_BasicFunctions_BasicFunctionStatus:in;
output:bool:out;
assert
output = ((((in1 = LOST) and (in2 = LOST)) and (in3 = LOST)) and (in4 = LOST)),
icone = (if output then 2 else 1);
edon
node Quadcopter_Observers_LossOfAtMost3HelixesControl
flow
icone:[1,2]:private;
in1:Functions_BasicFunctions_BasicFunctionStatus:in;
in2:Functions_BasicFunctions_BasicFunctionStatus:in;
in3:Functions_BasicFunctions_BasicFunctionStatus:in;
in4:Functions_BasicFunctions_BasicFunctionStatus:in;
output:bool:out;
assert
output = ((((((((in1 = LOST) and (in2 # ERRONEOUS)) and (in3 # ERRONEOUS)) and (in4 # ERRONEOUS)) or ((((in2 = LOST) and (in1 # ERRONEOUS)) and (in3 # ERRONEOUS)) and (in4 # ERRONEOUS))) or ((((in3 = LOST) and (in2 # ERRONEOUS)) and (in1 # ERRONEOUS)) and (in4 # ERRONEOUS))) or ((((in4 = LOST) and (in2 # ERRONEOUS)) and (in3 # ERRONEOUS)) and (in1 # ERRONEOUS))) and (not ((((in1 = LOST) and (in2 = LOST)) and (in3 = LOST)) and (in4 = LOST)))),
icone = (if output then 2 else 1);
edon
node Functions_BasicOperators_PerfectPresenceSelectorOK
flow
icone:[1,2]:private;
input:Functions_BasicFunctions_BasicFunctionStatus:in;
output:Functions_BasicFunctions_BasicFunctionStatus: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_BasicFunctions_AbsentPresentFunction
flow
icone:[1,2]:private;
input:Functions_BasicFunctions_Presence:in;
output:Functions_BasicFunctions_Presence:out;
state
status:{LOST, OK};
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 <event fail_loss> = exponential(1.0E-6);
edon
node Functions_BasicOperators_PerfectPresenceSelectorLOSS
flow
icone:[1,2]:private;
input:Functions_BasicFunctions_BasicFunctionStatus:in;
output:Functions_BasicFunctions_BasicFunctionStatus: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 <event fail_inadv> = constant(1.0E-5);
edon
node Functions_BasicOperators_Choice
flow
icone:[1,2]:private;
output:Functions_BasicFunctions_BasicFunctionStatus:out;
input_1:Functions_BasicFunctions_BasicFunctionStatus:in;
input_2:Functions_BasicFunctions_BasicFunctionStatus:in;
assert
icone = (if (input_2 = ERRONEOUS) then 2 else 1),
output = (if (input_2 = ERRONEOUS) then ERRONEOUS else input_1);
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 <event stuck_auto> = exponential(0.001);
attribute DassaultSpecialCtrlPeriod(<event stuck_auto>) = 9.877E8;
law <event stuck_manual> = exponential(0.001);
attribute DassaultSpecialCtrlPeriod(<event stuck_manual>) = 9.877E8;
law <event OscillatoryModeSelection> = exponential(0.001);
attribute DassaultSpecialCtrlPeriod(<event OscillatoryModeSelection>) = 9.877E8;
attribute DassaultSpecialCtrlPeriod(<event fail_loss>) = 9.877E8;
edon
node Functions_BasicFunctions_ErroneousLostPresentModeSelector
flow
icone:[1,2]:private;
outputMode:Functions_BasicFunctions_ModeSelection_ErroneousLost:out;
inputMode:Functions_BasicFunctions_ModeSelection_ErroneousLost:in;
ManualConsigns:Functions_BasicFunctions_BasicFunctionStatus: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 ((ManualConsigns # 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 <event stuck_auto> = exponential(0.001);
attribute DassaultSpecialCtrlPeriod(<event stuck_auto>) = 9.877E8;
law <event stuck_manual> = exponential(0.001);
attribute DassaultSpecialCtrlPeriod(<event stuck_manual>) = 9.877E8;
law <event OscillatoryModeSelection> = exponential(0.001);
attribute DassaultSpecialCtrlPeriod(<event OscillatoryModeSelection>) = 9.877E8;
attribute DassaultSpecialCtrlPeriod(<event fail_loss>) = 9.877E8;
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(<event stuck_auto>) = 9.877E8;
attribute DassaultSpecialCtrlPeriod(<event stuck_manual>) = 9.877E8;
edon
node Functions_BasicOperators_PerfectConditionalSelectorLOST
flow
icone:[1,2]:private;
input:Functions_BasicFunctions_BasicFunctionStatus:in;
output:Functions_BasicFunctions_BasicFunctionStatus:out;
condition:bool:in;
assert
icone = (if condition then 2 else 1),
output = (if condition then LOST else input);
edon
node Boolean_Boolean_BooleanInOutFunction
flow
icone:[1,3]:private;
input:bool:in;
output:bool:out;
state
status:{OK, STUCK_FALSE, STUCK_TRUE};
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 = OK) : input,
(status = STUCK_FALSE) : false,
else true
};
init
status := OK;
extern
attribute DassaultSpecialCtrlPeriod(<event stuck_true>) = 9.877E8;
attribute DassaultSpecialCtrlPeriod(<event stuck_false>) = 9.877E8;
edon
node Functions_BasicFunctions_InOutPresentFunction
flow
icone:[1,3]:private;
input:Functions_BasicFunctions_Presence:in;
output:Functions_BasicFunctions_BasicFunctionStatus:out;
state
status:Functions_BasicFunctions_BasicFunctionStatus;
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 <event fail_loss> = constant(1.0E-4);
law <event fail_error> = constant(1.0E-5);
edon
node eq_AIDASystem_Functions_SF232_5_ControlAttitude
flow
icone:[1,3]:private;
Attitude:Functions_BasicFunctions_BasicFunctionStatus:in;
AttitudeAPConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
PitchRollConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
YawConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
APEngagement:Functions_BasicFunctions_ModeSelection:in;
P:Functions_BasicFunctions_BasicFunctionStatus:out;
sub
AND3:Functions_BasicOperators_AND;
ControlAttitudeState:Functions_BasicFunctions_InOutFunction;
SF232_SelectAttitudeConsign:Functions_BasicOperators_ErrConditionalSelector_2;
AND2:Functions_BasicOperators_AND;
AND1:Functions_BasicOperators_AND;
assert
icone = (if (ControlAttitudeState.status = OK) then 1 else (if (ControlAttitudeState.status = LOST) then 3 else 2)),
P = ControlAttitudeState.output,
AND3.input_1 = PitchRollConsign,
AND3.input_2 = YawConsign,
ControlAttitudeState.input = SF232_SelectAttitudeConsign.output,
SF232_SelectAttitudeConsign.inputAUTO = AND2.output,
SF232_SelectAttitudeConsign.inputMANUAL = AND1.output,
SF232_SelectAttitudeConsign.condition = APEngagement,
AND2.input_1 = AttitudeAPConsign,
AND2.input_2 = Attitude,
AND1.input_1 = AND3.output,
AND1.input_2 = Attitude;
edon
node eq_AIDASystem_Functions_SF242_3_ControlAltitude
flow
icone:[1,3]:private;
Altitude:Functions_BasicFunctions_BasicFunctionStatus:in;
Attitude:Functions_BasicFunctions_BasicFunctionStatus:in;
AltitudeConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
T_AP:Functions_BasicFunctions_BasicFunctionStatus:in;
APEngagement:Functions_BasicFunctions_ModeSelection:in;
T:Functions_BasicFunctions_BasicFunctionStatus:out;
sub
ControlAltitudeState:Functions_BasicFunctions_InOutFunction;
SF243_SelectTotalThrustConsign:Functions_BasicOperators_ErrConditionalSelector_2;
AND2:Functions_BasicOperators_AND;
AND1:Functions_BasicOperators_AND;
assert
icone = (if (ControlAltitudeState.status = OK) then 1 else (if (ControlAltitudeState.status = LOST) then 3 else 2)),
T = ControlAltitudeState.output,
ControlAltitudeState.input = SF243_SelectTotalThrustConsign.output,
SF243_SelectTotalThrustConsign.inputAUTO = T_AP,
SF243_SelectTotalThrustConsign.inputMANUAL = AND2.output,
SF243_SelectTotalThrustConsign.condition = APEngagement,
AND2.input_1 = AltitudeConsign,
AND2.input_2 = AND1.output,
AND1.input_1 = Altitude,
AND1.input_2 = Attitude;
edon
node eq_AIDASystem_Functions_SF75_DisableDroneMotor
flow
icone:[1,2]:private;
Motor1Runaway:bool:in;
Motor2Runaway:bool:in;
Motor3Runaway:bool:in;
Motor4Runaway:bool:in;
AttitudeFailureDetected:bool:in;
AltitudeFailureDetected:bool:in;
MotorConsignFailureDetected:bool:in;
MotorDisabled^Motor1:bool:out;
MotorDisabled^Motor2:bool:out;
MotorDisabled^Motor3:bool:out;
MotorDisabled^Motor4:bool:out;
sub
FMPropagation4:Functions_BasicOperators_ANDBoolErrLost;
OR4:Boolean_Boolean_or4;
OR3:Boolean_Boolean_or4;
FMPropagation3:Functions_BasicOperators_ANDBoolErrLost;
FMPropagation2:Functions_BasicOperators_ANDBoolErrLost;
OR2:Boolean_Boolean_or4;
OR1:Boolean_Boolean_or4;
FailureModesOfSF74:Functions_BasicFunctions_SourceFunction;
FMPropagation1:Functions_BasicOperators_ANDBoolErrLost;
assert
icone = case {
(FailureModesOfSF74.status = OK) : 1,
else 2
},
MotorDisabled^Motor1 = FMPropagation1.output,
MotorDisabled^Motor2 = FMPropagation2.output,
MotorDisabled^Motor3 = FMPropagation3.output,
MotorDisabled^Motor4 = FMPropagation4.output,
FMPropagation4.input = OR4.O,
FMPropagation4.failurePropagation = FailureModesOfSF74.output,
OR4.I1 = Motor4Runaway,
OR4.I2 = AltitudeFailureDetected,
OR4.I3 = AttitudeFailureDetected,
OR4.I4 = MotorConsignFailureDetected,
OR3.I1 = MotorConsignFailureDetected,
OR3.I2 = AttitudeFailureDetected,
OR3.I3 = AltitudeFailureDetected,
OR3.I4 = Motor3Runaway,
FMPropagation3.input = OR3.O,
FMPropagation3.failurePropagation = FailureModesOfSF74.output,
FMPropagation2.input = OR2.O,
FMPropagation2.failurePropagation = FailureModesOfSF74.output,
OR2.I1 = MotorConsignFailureDetected,
OR2.I2 = AttitudeFailureDetected,
OR2.I3 = AltitudeFailureDetected,
OR2.I4 = Motor2Runaway,
OR1.I1 = MotorConsignFailureDetected,
OR1.I2 = AttitudeFailureDetected,
OR1.I3 = AltitudeFailureDetected,
OR1.I4 = Motor1Runaway,
FMPropagation1.input = OR1.O,
FMPropagation1.failurePropagation = FailureModesOfSF74.output;
edon
node eq_AIDASystem_Functions_SF7_MonitorDroneControl
flow
MotorRatesMeasured^MotorRate1:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRatesMeasured^MotorRate2:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRatesMeasured^MotorRate3:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRatesMeasured^MotorRate4:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRate:Functions_BasicFunctions_BasicFunctionStatus:in;
Motor1Runaway:bool:out;
Motor2Runaway:bool:out;
Motor3Runaway:bool:out;
Motor4Runaway:bool:out;
sub
MonitorMotorRate4:Functions_BasicOperators_Comparator;
MonitorMotorRate3:Functions_BasicOperators_Comparator;
MonitorMotorRate2:Functions_BasicOperators_Comparator;
MonitorMotorRate1:Functions_BasicOperators_Comparator;
assert
Motor1Runaway = MonitorMotorRate1.output,
Motor2Runaway = MonitorMotorRate2.output,
Motor3Runaway = MonitorMotorRate3.output,
Motor4Runaway = MonitorMotorRate4.output,
MonitorMotorRate4.input1 = MotorRatesMeasured^MotorRate4,
MonitorMotorRate4.input2 = MotorRate,
MonitorMotorRate3.input1 = MotorRatesMeasured^MotorRate3,
MonitorMotorRate3.input2 = MotorRate,
MonitorMotorRate2.input1 = MotorRatesMeasured^MotorRate2,
MonitorMotorRate2.input2 = MotorRate,
MonitorMotorRate1.input1 = MotorRatesMeasured^MotorRate1,
MonitorMotorRate1.input2 = MotorRate;
edon
node eq_AIDASystem_Functions_SF421_RunFlightPlan
flow
Time:Functions_BasicFunctions_BasicFunctionStatus:in;
Position:Functions_BasicFunctions_BasicFunctionStatus:in;
FlightPlan:Functions_BasicFunctions_BasicFunctionStatus:in;
Progress:Functions_BasicFunctions_BasicFunctionStatus:out;
MissionCompleted:Functions_BasicFunctions_Presence:out;
FlightPlanInterruption:Functions_BasicFunctions_Presence:in;
sub
SF421_FlightPlanInterruption:Functions_BasicOperators_PerfectPresenceSelectorLOSS;
SF421_MissionCompleted:Functions_BasicFunctions_SourcePresenceFunction;
SF421_Compute:Functions_BasicFunctions_InOutFunction;
SF421_Choice:Functions_BasicOperators_Choice;
SF421_AND1:Functions_BasicOperators_AND;
assert
Progress = SF421_FlightPlanInterruption.output,
MissionCompleted = SF421_MissionCompleted.output,
SF421_FlightPlanInterruption.input = SF421_Compute.output,
SF421_FlightPlanInterruption.condition = FlightPlanInterruption,
SF421_Compute.input = SF421_Choice.output,
SF421_Choice.input_1 = SF421_AND1.output,
SF421_Choice.input_2 = FlightPlan,
SF421_AND1.input_1 = Time,
SF421_AND1.input_2 = Position;
edon
node eq_AIDASystem_Functions_SF64_DisplayDroneFollowUpData
flow
input_ControlMode:Functions_BasicFunctions_ModeSelection:in;
input_FlightPlanProgress:Functions_BasicFunctions_BasicFunctionStatus:in;
output_ControlMode:Functions_BasicFunctions_ModeSelection:out;
output_FlightPlanProgress:Functions_BasicFunctions_BasicFunctionStatus:out;
sub
SF64_FlightPlanProgress:Functions_BasicFunctions_InOutFunction;
SF64_ControlMode:Functions_BasicFunctions_InOutModeFunction;
assert
output_ControlMode = SF64_ControlMode.outputMode,
output_FlightPlanProgress = SF64_FlightPlanProgress.output,
SF64_FlightPlanProgress.input = input_FlightPlanProgress,
SF64_ControlMode.inputMode = input_ControlMode;
edon
node eq_AIDASystem_Functions_SF73_ControlAttitudeAndAltitudeMON
flow
icone:[1,2]:private;
Altitude:Functions_BasicFunctions_BasicFunctionStatus:in;
Attitude:Functions_BasicFunctions_BasicFunctionStatus:in;
YawConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
PitchRollConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
AltitudeConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
AttitudeAPConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
AltitudeAPConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
APEngagement:Functions_BasicFunctions_ModeSelection:in;
MotorRate:Functions_BasicFunctions_BasicFunctionStatus:out;
sub
SF733_6_ControlAttitudeMON:eq_AIDASystem_Functions_SF232_5_ControlAttitude;
SF731_2_ControlAltitudeMON:eq_AIDASystem_Functions_SF242_3_ControlAltitude;
SF737_AllNeeded:Functions_BasicOperators_AND;
SF737_8_ControlThrust:Functions_BasicFunctions_InOutFunction;
assert
icone = case {
(((SF737_8_ControlThrust.status = OK) and (SF731_2_ControlAltitudeMON.ControlAltitudeState.status = OK)) and (SF733_6_ControlAttitudeMON.ControlAttitudeState.status = OK)) : 1,
else 2
},
MotorRate = SF737_8_ControlThrust.output,
SF733_6_ControlAttitudeMON.Attitude = Attitude,
SF733_6_ControlAttitudeMON.AttitudeAPConsign = AttitudeAPConsign,
SF733_6_ControlAttitudeMON.PitchRollConsign = PitchRollConsign,
SF733_6_ControlAttitudeMON.YawConsign = YawConsign,
SF733_6_ControlAttitudeMON.APEngagement = APEngagement,
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 = APEngagement,
SF737_AllNeeded.input_1 = SF731_2_ControlAltitudeMON.T,
SF737_AllNeeded.input_2 = SF733_6_ControlAttitudeMON.P,
SF737_8_ControlThrust.input = SF737_AllNeeded.output;
edon
node eq_AIDASystem_Functions_SF74_MonitorParameters
flow
icone:[1,2]:private;
MotorRateMON:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRate:Functions_BasicFunctions_BasicFunctionStatus:in;
Altitude:Functions_BasicFunctions_BasicFunctionStatus:in;
AltitudeMON:Functions_BasicFunctions_BasicFunctionStatus:in;
Attitude:Functions_BasicFunctions_BasicFunctionStatus:in;
AttitudeMON:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRateMeasured^MotorRate1:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRateMeasured^MotorRate2:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRateMeasured^MotorRate3:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRateMeasured^MotorRate4:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorsDisabled^Motor1:bool:out;
MotorsDisabled^Motor2:bool:out;
MotorsDisabled^Motor3:bool:out;
MotorsDisabled^Motor4:bool:out;
sub
SF745_DisableDroneMotor:eq_AIDASystem_Functions_SF75_DisableDroneMotor;
SF744_MonitorMotorRate:eq_AIDASystem_Functions_SF7_MonitorDroneControl;
SF743_MonitorMotorConsign:Functions_BasicOperators_Comparator;
SF742_MonitorAltitude:Functions_BasicOperators_Comparator;
SF741_MonitorAttitude:Functions_BasicOperators_Comparator;
assert
icone = case {
(SF745_DisableDroneMotor.FailureModesOfSF74.status = OK) : 1,
else 2
},
MotorsDisabled^Motor1 = SF745_DisableDroneMotor.MotorDisabled^Motor1,
MotorsDisabled^Motor2 = SF745_DisableDroneMotor.MotorDisabled^Motor2,
MotorsDisabled^Motor3 = SF745_DisableDroneMotor.MotorDisabled^Motor3,
MotorsDisabled^Motor4 = SF745_DisableDroneMotor.MotorDisabled^Motor4,
SF745_DisableDroneMotor.Motor1Runaway = SF744_MonitorMotorRate.Motor1Runaway,
SF745_DisableDroneMotor.Motor2Runaway = SF744_MonitorMotorRate.Motor2Runaway,
SF745_DisableDroneMotor.Motor3Runaway = SF744_MonitorMotorRate.Motor3Runaway,
SF745_DisableDroneMotor.Motor4Runaway = SF744_MonitorMotorRate.Motor4Runaway,
SF745_DisableDroneMotor.AttitudeFailureDetected = SF741_MonitorAttitude.output,
SF745_DisableDroneMotor.AltitudeFailureDetected = SF742_MonitorAltitude.output,
SF745_DisableDroneMotor.MotorConsignFailureDetected = SF743_MonitorMotorConsign.output,
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.MotorRate = MotorRate,
SF743_MonitorMotorConsign.input1 = MotorRate,
SF743_MonitorMotorConsign.input2 = MotorRateMON,
SF742_MonitorAltitude.input1 = Altitude,
SF742_MonitorAltitude.input2 = AltitudeMON,
SF741_MonitorAttitude.input1 = Attitude,
SF741_MonitorAttitude.input2 = AttitudeMON;
edon
node eq_AIDASystem_Functions_SF42_RunAutomaticControl
flow
FlightPlan:Functions_BasicFunctions_BasicFunctionStatus:in;
Position:Functions_BasicFunctions_BasicFunctionStatus:in;
FlightPlanProgress:Functions_BasicFunctions_BasicFunctionStatus:out;
AutomaticPayloadControl:Functions_BasicFunctions_BasicFunctionStatus:out;
SpeedConsign:Functions_BasicFunctions_BasicFunctionStatus:out;
PositionConsign:Functions_BasicFunctions_BasicFunctionStatus:out;
PilotControlConsigns:Functions_BasicFunctions_BasicFunctionStatus:in;
Time:Functions_BasicFunctions_BasicFunctionStatus:in;
FlightPlanInterruption:Functions_BasicFunctions_Presence:in;
MissionCompleted:Functions_BasicFunctions_Presence:out;
sub
SF423_SelectAutomaticPayloadControl:Functions_BasicOperators_AND;
SF422_RunSpeedControl:Functions_BasicFunctions_InOutFunction;
SF421_RunFlightPlan:eq_AIDASystem_Functions_SF421_RunFlightPlan;
assert
FlightPlanProgress = SF421_RunFlightPlan.Progress,
AutomaticPayloadControl = SF423_SelectAutomaticPayloadControl.output,
SpeedConsign = SF422_RunSpeedControl.output,
PositionConsign = SF421_RunFlightPlan.Progress,
MissionCompleted = SF421_RunFlightPlan.MissionCompleted,
SF423_SelectAutomaticPayloadControl.input_1 = SF421_RunFlightPlan.Progress,
SF423_SelectAutomaticPayloadControl.input_2 = SF422_RunSpeedControl.output,
SF422_RunSpeedControl.input = PilotControlConsigns,
SF421_RunFlightPlan.Time = Time,
SF421_RunFlightPlan.Position = Position,
SF421_RunFlightPlan.FlightPlan = FlightPlan,
SF421_RunFlightPlan.FlightPlanInterruption = FlightPlanInterruption;
edon
node eq_AIDASystem_Functions_SF44_AcquirePilotControlConsignAndMode
flow
AcquiredPilotControlConsigns:Functions_BasicFunctions_BasicFunctionStatus:out;
AcquiredPilotControlMode:Functions_BasicFunctions_ModeSelection_ErroneousLost:out;
PilotControlMode:Functions_BasicFunctions_ModeSelection:in;
sub
AcquireControlConsigns:Functions_BasicFunctions_SourceFunction;
transtypage:Functions_BasicOperators_transtypageMode;
AcquireControlMode:Functions_BasicFunctions_ErroneousLostModeSelector;
assert
AcquiredPilotControlConsigns = AcquireControlConsigns.output,
AcquiredPilotControlMode = AcquireControlMode.outputMode,
transtypage.I = PilotControlMode,
AcquireControlMode.inputMode = transtypage.O;
edon
node eq_AIDASystem_Functions_SF43_SelectControlMode
flow
icone:[1,2]:private;
PilotManualControl:Functions_BasicFunctions_ModeSelection_ErroneousLost:in;
IndicatedMode:Functions_BasicFunctions_ModeSelection:out;
APEngagement:Functions_BasicFunctions_ModeSelection:out;
ManualConsigns:Functions_BasicFunctions_BasicFunctionStatus:in;
MissionCompleted:Functions_BasicFunctions_Presence:in;
FlightPlanInterruption:Functions_BasicFunctions_Presence:out;
sub
SF431_SelectControlMode:Functions_BasicFunctions_ErroneousLostPresentModeSelector;
SF433_IndicateControlMode:Functions_BasicFunctions_InOutModeFunction;
SF432_PassivateEngagementOscillation:Functions_BasicFunctions_FaultyManualModeSelector_LossType;
assert
APEngagement = SF432_PassivateEngagementOscillation.outputMode,
icone = case {
(APEngagement = AUTO) : 1,
else 2
},
IndicatedMode = SF433_IndicateControlMode.outputMode,
FlightPlanInterruption = SF432_PassivateEngagementOscillation.FlightPlanInterruption,
SF431_SelectControlMode.inputMode = PilotManualControl,
SF431_SelectControlMode.ManualConsigns = ManualConsigns,
SF431_SelectControlMode.MissionCompleted = MissionCompleted,
SF433_IndicateControlMode.inputMode = SF432_PassivateEngagementOscillation.outputMode,
SF432_PassivateEngagementOscillation.inputMode = SF431_SelectControlMode.outputMode;
edon
node eq_AIDASystem_Functions_SF1i_ControlHelix_2
flow
MotorDisabled:bool:in;
MotorRateMeasured:Functions_BasicFunctions_BasicFunctionStatus:out;
ThrustAndTorque:Functions_BasicFunctions_BasicFunctionStatus:out;
MotorRate:Functions_BasicFunctions_BasicFunctionStatus:in;
sub
SF1i1_5_PerfectSelectorLOST:Functions_BasicOperators_PerfectConditionalSelectorLOST;
SF1i1_5_CreateMotionAndMeasure:Functions_BasicFunctions_InOutFunction;
SF1i6_DepowerMotor:Boolean_Boolean_BooleanInOutFunction;
SF1i3_CreateThrustAndTorque:Functions_BasicFunctions_InOutFunction;
assert
MotorRateMeasured = SF1i1_5_CreateMotionAndMeasure.output,
ThrustAndTorque = SF1i3_CreateThrustAndTorque.output,
SF1i1_5_PerfectSelectorLOST.input = SF1i1_5_CreateMotionAndMeasure.output,
SF1i1_5_PerfectSelectorLOST.condition = SF1i6_DepowerMotor.output,
SF1i1_5_CreateMotionAndMeasure.input = MotorRate,
SF1i6_DepowerMotor.input = MotorDisabled,
SF1i3_CreateThrustAndTorque.input = SF1i1_5_PerfectSelectorLOST.output;
edon
node eq_AIDASystem_Functions_SF21_ControlPosition
flow
icone:[1,3]:private;
Position:Functions_BasicFunctions_BasicFunctionStatus:in;
Speed:Functions_BasicFunctions_BasicFunctionStatus:in;
Attitude:Functions_BasicFunctions_BasicFunctionStatus:in;
PositionConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
SpeedConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
AttitudeThrustAPConsign:Functions_BasicFunctions_BasicFunctionStatus:out;
sub
SF212_SelectSpeedConsign:Functions_BasicOperators_AND;
ControlPositionState:Functions_BasicFunctions_InOutFunction;
AND2:Functions_BasicOperators_AND;
AND1:Functions_BasicOperators_AND;
AND3:Functions_BasicOperators_AND;
AND4:Functions_BasicOperators_AND;
assert
icone = (if (ControlPositionState.status = OK) then 1 else (if (ControlPositionState.status = LOST) then 3 else 2)),
AttitudeThrustAPConsign = ControlPositionState.output,
SF212_SelectSpeedConsign.input_1 = AND4.output,
SF212_SelectSpeedConsign.input_2 = AND3.output,
ControlPositionState.input = SF212_SelectSpeedConsign.output,
AND2.input_1 = Position,
AND2.input_2 = AND1.output,
AND1.input_1 = Speed,
AND1.input_2 = Attitude,
AND3.input_1 = PositionConsign,
AND3.input_2 = AND2.output,
AND4.input_1 = SpeedConsign,
AND4.input_2 = AND1.output;
edon
node eq_AIDASystem_Functions_SF33_ComputeDroneSpeed
flow
icone:[1,2]:private;
Altitude:Functions_BasicFunctions_BasicFunctionStatus:in;
Speed:Functions_BasicFunctions_BasicFunctionStatus:out;
sub
SF331_FilmGround:Functions_BasicFunctions_SourceFunction;
SF332_AllNeeded:Functions_BasicOperators_AND;
SF332_ComputeSpeed:Functions_BasicFunctions_InOutFunction;
assert
icone = case {
((SF331_FilmGround.status = OK) and (SF332_ComputeSpeed.status = OK)) : 1,
else 2
},
Speed = SF332_ComputeSpeed.output,
SF332_AllNeeded.input_1 = SF331_FilmGround.output,
SF332_AllNeeded.input_2 = Altitude,
SF332_ComputeSpeed.input = SF332_AllNeeded.output;
edon
node eq_AIDASystem_Functions_SF6_ManageMission
flow
icone:[1,2]:private;
oFlightPlanProgress:Functions_BasicFunctions_BasicFunctionStatus:out;
iFlightPlanProgress:Functions_BasicFunctions_BasicFunctionStatus:in;
iFlightPlan:Functions_BasicFunctions_BasicFunctionStatus:in;
oFlightPlan:Functions_BasicFunctions_BasicFunctionStatus:out;
iDroneControlMode:Functions_BasicFunctions_ModeSelection:in;
oDroneControlMode:Functions_BasicFunctions_ModeSelection:out;
sub
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.output_FlightPlanProgress,
oFlightPlan = SF61_ComputeFlightPlanAndZone.output,
oDroneControlMode = SF64_DisplayDroneFollowUpData.output_ControlMode,
SF61_ComputeFlightPlanAndZone.input = iFlightPlan,
SF64_DisplayDroneFollowUpData.input_ControlMode = iDroneControlMode,
SF64_DisplayDroneFollowUpData.input_FlightPlanProgress = iFlightPlanProgress;
edon
node eq_AIDASystem_Functions_SF7_MonitorDroneControl_v042
flow
icone:[1,2]:private;
APEngagement:Functions_BasicFunctions_ModeSelection:in;
Attitude:Functions_BasicFunctions_BasicFunctionStatus:in;
Altitude:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRate:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRatesMeasured^MotorRate1:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRatesMeasured^MotorRate2:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRatesMeasured^MotorRate3:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorRatesMeasured^MotorRate4:Functions_BasicFunctions_BasicFunctionStatus:in;
MotorDisabled^Motor1:bool:out;
MotorDisabled^Motor2:bool:out;
MotorDisabled^Motor3:bool:out;
MotorDisabled^Motor4:bool:out;
Consigns^AltitudeManualConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
Consigns^YawManualConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
Consigns^PitchRollManualConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
Consigns^AltitudeAndAttitudeAPConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
sub
SF73_ControlAttitudeAndAltitudeMON:eq_AIDASystem_Functions_SF73_ControlAttitudeAndAltitudeMON;
SF71_ComputeAttitudeMON:Functions_BasicFunctions_SourceFunction;
SF72_ComputeAltitudeMON:Functions_BasicFunctions_InOutFunction;
SF74_MonitorParameters:eq_AIDASystem_Functions_SF74_MonitorParameters;
assert
icone = case {
((((((SF74_MonitorParameters.SF745_DisableDroneMotor.FailureModesOfSF74.status = OK) and (SF71_ComputeAttitudeMON.status = OK)) and (SF72_ComputeAltitudeMON.status = OK)) and (SF73_ControlAttitudeAndAltitudeMON.SF737_8_ControlThrust.status = OK)) and (SF73_ControlAttitudeAndAltitudeMON.SF731_2_ControlAltitudeMON.ControlAltitudeState.status = OK)) and (SF73_ControlAttitudeAndAltitudeMON.SF733_6_ControlAttitudeMON.ControlAttitudeState.status = OK)) : 1,
else 2
},
MotorDisabled^Motor1 = SF74_MonitorParameters.MotorsDisabled^Motor1,
MotorDisabled^Motor2 = SF74_MonitorParameters.MotorsDisabled^Motor2,
MotorDisabled^Motor3 = SF74_MonitorParameters.MotorsDisabled^Motor3,
MotorDisabled^Motor4 = SF74_MonitorParameters.MotorsDisabled^Motor4,
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 = APEngagement,
SF72_ComputeAltitudeMON.input = SF71_ComputeAttitudeMON.output,
SF74_MonitorParameters.MotorRateMON = SF73_ControlAttitudeAndAltitudeMON.MotorRate,
SF74_MonitorParameters.MotorRate = MotorRate,
SF74_MonitorParameters.Altitude = Altitude,
SF74_MonitorParameters.AltitudeMON = SF72_ComputeAltitudeMON.output,
SF74_MonitorParameters.Attitude = Attitude,
SF74_MonitorParameters.AttitudeMON = SF71_ComputeAttitudeMON.output,
SF74_MonitorParameters.MotorRateMeasured^MotorRate1 = MotorRatesMeasured^MotorRate1,
SF74_MonitorParameters.MotorRateMeasured^MotorRate2 = MotorRatesMeasured^MotorRate2,
SF74_MonitorParameters.MotorRateMeasured^MotorRate3 = MotorRatesMeasured^MotorRate3,
SF74_MonitorParameters.MotorRateMeasured^MotorRate4 = MotorRatesMeasured^MotorRate4;
edon
node eq_AIDASystem_Observers_Observer_v44
flow
Thrust1:Functions_BasicFunctions_BasicFunctionStatus:in;
Thrust2:Functions_BasicFunctions_BasicFunctionStatus:in;
Thrust3:Functions_BasicFunctions_BasicFunctionStatus:in;
Thrust4:Functions_BasicFunctions_BasicFunctionStatus: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:Functions_BasicFunctions_BasicFunctionStatus:in;
VideoFlux:Functions_BasicFunctions_BasicFunctionStatus:out;
sub
SF51_SelectCameraControl:Functions_BasicOperators_PerfectPresenceSelectorOK;
SF55_AcquireManualPayloadControl:Functions_BasicFunctions_AbsentPresentFunction;
SF52_4_MakePhotosAndVideos:Functions_BasicFunctions_InOutFunction;
assert
icone = case {
((SF55_AcquireManualPayloadControl.status = OK) and (SF52_4_MakePhotosAndVideos.status = OK)) : 1,
else 2
},
VideoFlux = SF52_4_MakePhotosAndVideos.output,
SF51_SelectCameraControl.input = AutomaticPayloadControl,
SF51_SelectCameraControl.condition = SF55_AcquireManualPayloadControl.output,
SF55_AcquireManualPayloadControl.input = ManualPayloadControl,
SF52_4_MakePhotosAndVideos.input = SF51_SelectCameraControl.output;
edon
node eq_AIDASystem_Functions_SF4_ControlDroneNavigation
flow
Position:Functions_BasicFunctions_BasicFunctionStatus:in;
Time:Functions_BasicFunctions_BasicFunctionStatus:in;
PositionConsign:Functions_BasicFunctions_BasicFunctionStatus:out;
SpeedConsign:Functions_BasicFunctions_BasicFunctionStatus:out;
FlightPlan:Functions_BasicFunctions_BasicFunctionStatus:in;
APEngagement:Functions_BasicFunctions_ModeSelection:out;
IndicatedMode:Functions_BasicFunctions_ModeSelection:out;
PilotManualControl:Functions_BasicFunctions_ModeSelection:in;
FlightPlanProgress:Functions_BasicFunctions_BasicFunctionStatus:out;
AutomaticPayloadControl:Functions_BasicFunctions_BasicFunctionStatus:out;
ManualConsigns:Functions_BasicFunctions_BasicFunctionStatus:in;
sub
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 = SF43_SelectControlMode.APEngagement,
IndicatedMode = SF43_SelectControlMode.IndicatedMode,
FlightPlanProgress = SF42_RunAutomaticControl.FlightPlanProgress,
AutomaticPayloadControl = SF42_RunAutomaticControl.AutomaticPayloadControl,
SF42_RunAutomaticControl.FlightPlan = SF41_AcquireAndStoreFlightPlan.output,
SF42_RunAutomaticControl.Position = Position,
SF42_RunAutomaticControl.PilotControlConsigns = SF44_AcquirePilotControlConsignAndMode.AcquiredPilotControlConsigns,
SF42_RunAutomaticControl.Time = Time,
SF42_RunAutomaticControl.FlightPlanInterruption = SF43_SelectControlMode.FlightPlanInterruption,
SF44_AcquirePilotControlConsignAndMode.PilotControlMode = PilotManualControl,
SF43_SelectControlMode.PilotManualControl = SF44_AcquirePilotControlConsignAndMode.AcquiredPilotControlMode,
SF43_SelectControlMode.ManualConsigns = ManualConsigns,
SF43_SelectControlMode.MissionCompleted = SF42_RunAutomaticControl.MissionCompleted,
SF41_AcquireAndStoreFlightPlan.input = FlightPlan;
edon
node eq_AIDASystem_Functions_SF1_ControlDroneHelixes_2
flow
MotorRatesMeasured^MotorRate1:Functions_BasicFunctions_BasicFunctionStatus:out;
MotorRatesMeasured^MotorRate2:Functions_BasicFunctions_BasicFunctionStatus:out;
MotorRatesMeasured^MotorRate3:Functions_BasicFunctions_BasicFunctionStatus:out;
MotorRatesMeasured^MotorRate4:Functions_BasicFunctions_BasicFunctionStatus:out;
MotorRate:Functions_BasicFunctions_BasicFunctionStatus:in;
ThrustAndTorque1:Functions_BasicFunctions_BasicFunctionStatus:out;
ThrustAndTorque2:Functions_BasicFunctions_BasicFunctionStatus:out;
ThrustAndTorque3:Functions_BasicFunctions_BasicFunctionStatus:out;
ThrustAndTorque4:Functions_BasicFunctions_BasicFunctionStatus:out;
MotorDisabled^Motor1:bool:in;
MotorDisabled^Motor2:bool:in;
MotorDisabled^Motor3:bool:in;
MotorDisabled^Motor4:bool: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
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 = MotorDisabled^Motor4,
SF14_ControlHelix4.MotorRate = MotorRate,
SF13_ControlHelix3.MotorDisabled = MotorDisabled^Motor3,
SF13_ControlHelix3.MotorRate = MotorRate,
SF12_ControlHelix2.MotorDisabled = MotorDisabled^Motor2,
SF12_ControlHelix2.MotorRate = MotorRate,
SF11_ControlHelix1.MotorDisabled = MotorDisabled^Motor1,
SF11_ControlHelix1.MotorRate = MotorRate;
edon
node eq_AIDASystem_Functions_SF2_ControlDroneAttitudeAndPosition
flow
icone:[1,3]:private;
Altitude:Functions_BasicFunctions_BasicFunctionStatus:in;
Attitude:Functions_BasicFunctions_BasicFunctionStatus:in;
Position:Functions_BasicFunctions_BasicFunctionStatus:in;
Speed:Functions_BasicFunctions_BasicFunctionStatus:in;
PositionConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
SpeedConsign:Functions_BasicFunctions_BasicFunctionStatus:in;
APEngagement:Functions_BasicFunctions_ModeSelection:in;
MotorRate:Functions_BasicFunctions_BasicFunctionStatus:out;
DetectControlDronePosition:Functions_BasicFunctions_BasicFunctionStatus:out;
Consigns^AltitudeManualConsign:Functions_BasicFunctions_BasicFunctionStatus:out;
Consigns^YawManualConsign:Functions_BasicFunctions_BasicFunctionStatus:out;
Consigns^PitchRollManualConsign:Functions_BasicFunctions_BasicFunctionStatus:out;
Consigns^AltitudeAndAttitudeAPConsign:Functions_BasicFunctions_BasicFunctionStatus:out;
PilotOrders:Functions_BasicFunctions_Presence:in;
ManualConsigns:Functions_BasicFunctions_BasicFunctionStatus:out;
sub
SF22_AcquirePilotOrders:Functions_BasicFunctions_InOutPresentFunction;
SF231_ComputeYawConsign:Functions_BasicFunctions_InOutFunction;
SF241_ComputeAltitudeConsign:Functions_BasicFunctions_InOutFunction;
SF21_ControlPosition:eq_AIDASystem_Functions_SF21_ControlPosition;
SF232_5_ControlAttitude:eq_AIDASystem_Functions_SF232_5_ControlAttitude;
SF242_3_ControlAltitude:eq_AIDASystem_Functions_SF242_3_ControlAltitude;
SF25_AllNeeded:Functions_BasicOperators_AND;
SF25_ControlThrust:Functions_BasicFunctions_InOutFunction;
assert
MotorRate = SF25_ControlThrust.output,
icone = (if (MotorRate = OK) then 1 else (if (MotorRate = LOST) then 3 else 2)),
DetectControlDronePosition = SF21_ControlPosition.AttitudeThrustAPConsign,
Consigns^AltitudeManualConsign = SF241_ComputeAltitudeConsign.output,
Consigns^YawManualConsign = SF231_ComputeYawConsign.output,
Consigns^PitchRollManualConsign = SF22_AcquirePilotOrders.output,
Consigns^AltitudeAndAttitudeAPConsign = SF21_ControlPosition.AttitudeThrustAPConsign,
ManualConsigns = SF22_AcquirePilotOrders.output,
SF22_AcquirePilotOrders.input = PilotOrders,
SF231_ComputeYawConsign.input = SF22_AcquirePilotOrders.output,
SF241_ComputeAltitudeConsign.input = SF22_AcquirePilotOrders.output,
SF21_ControlPosition.Position = Position,
SF21_ControlPosition.Speed = Speed,
SF21_ControlPosition.Attitude = Attitude,
SF21_ControlPosition.PositionConsign = PositionConsign,
SF21_ControlPosition.SpeedConsign = SpeedConsign,
SF232_5_ControlAttitude.Attitude = Attitude,
SF232_5_ControlAttitude.AttitudeAPConsign = SF21_ControlPosition.AttitudeThrustAPConsign,
SF232_5_ControlAttitude.PitchRollConsign = SF22_AcquirePilotOrders.output,
SF232_5_ControlAttitude.YawConsign = SF231_ComputeYawConsign.output,
SF232_5_ControlAttitude.APEngagement = APEngagement,
SF242_3_ControlAltitude.Altitude = Altitude,
SF242_3_ControlAltitude.Attitude = Attitude,
SF242_3_ControlAltitude.AltitudeConsign = SF241_ComputeAltitudeConsign.output,
SF242_3_ControlAltitude.T_AP = SF21_ControlPosition.AttitudeThrustAPConsign,
SF242_3_ControlAltitude.APEngagement = APEngagement,
SF25_AllNeeded.input_1 = SF242_3_ControlAltitude.T,
SF25_AllNeeded.input_2 = SF232_5_ControlAttitude.P,
SF25_ControlThrust.input = SF25_AllNeeded.output;
edon
node eq_AIDASystem_Functions_SF3_ComputeDronePositionAndSpeed
flow
icone:[1,2]:private;
Altitude:Functions_BasicFunctions_BasicFunctionStatus:out;
Attitude:Functions_BasicFunctions_BasicFunctionStatus:out;
Position:Functions_BasicFunctions_BasicFunctionStatus:out;
Speed:Functions_BasicFunctions_BasicFunctionStatus:out;
Time:Functions_BasicFunctions_BasicFunctionStatus:out;
sub
SF34_ComputePositionAndTime:Functions_BasicFunctions_SourceFunction;
SF31_ComputeAttitude:Functions_BasicFunctions_SourceFunction;
SF33_ComputeDroneSpeed:eq_AIDASystem_Functions_SF33_ComputeDroneSpeed;
SF32_ComputeAltitude:Functions_BasicFunctions_InOutFunction;
assert
icone = case {
(((((SF31_ComputeAttitude.status = OK) and (SF32_ComputeAltitude.status = OK)) and (SF34_ComputePositionAndTime.status = OK)) and (SF33_ComputeDroneSpeed.SF331_FilmGround.status = OK)) and (SF33_ComputeDroneSpeed.SF332_ComputeSpeed.status = OK)) : 1,
else 2
},
Altitude = SF32_ComputeAltitude.output,
Attitude = SF31_ComputeAttitude.output,
Position = SF34_ComputePositionAndTime.output,
Speed = SF33_ComputeDroneSpeed.Speed,
Time = SF34_ComputePositionAndTime.output,
SF33_ComputeDroneSpeed.Altitude = SF32_ComputeAltitude.output,
SF32_ComputeAltitude.input = SF31_ComputeAttitude.output;
edon
node main
sub
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;
assert
SF6.iFlightPlanProgress = SF4.FlightPlanProgress,
SF6.iFlightPlan = EXT_Database_UploadPredefinedFlightZoneBoarders.output,
SF6.iDroneControlMode = SF4.IndicatedMode,
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 = SF4.APEngagement,
SF7.Attitude = SF3.Attitude,
SF7.Altitude = SF3.Altitude,
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,
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,
SF4.Position = SF3.Position,
SF4.Time = SF3.Time,
SF4.FlightPlan = SF6.oFlightPlan,
SF4.PilotManualControl = EXT_PilotDetection.PilotSelectedMode,
SF4.ManualConsigns = SF2.ManualConsigns,
SF1.MotorRate = SF2.MotorRate,
SF1.MotorDisabled^Motor1 = SF7.MotorDisabled^Motor1,
SF1.MotorDisabled^Motor2 = SF7.MotorDisabled^Motor2,
SF1.MotorDisabled^Motor3 = SF7.MotorDisabled^Motor3,
SF1.MotorDisabled^Motor4 = SF7.MotorDisabled^Motor4,
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;
extern
nodeproperty <global projectName> = "AIDASystem/AIDASystem/AIDA0_4_4";
nodeproperty <global projectVersion> = "1";
nodeproperty <global projectConfig> = "default";
nodeproperty <global currentDate> = "2018-10-08 08:54:11";
edon