You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1432 lines
60 KiB
1432 lines
60 KiB
6 years ago
|
/* 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
|
||
|
|