Started input station

This commit is contained in:
2026-03-04 10:20:36 +01:00
parent 070822e497
commit 64f561b0c5
8 changed files with 519 additions and 134 deletions

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<POU Name="FB_Input" Id="{c744c235-1c8f-4f37-9688-5e65df67766f}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Input EXTENDS FB_PackMLGeneric
VAR_INPUT
stRecipe : ST_Input_Recipe;
END_VAR
VAR_OUTPUT
END_VAR
VAR
_fbTrayFeeder : FB_TrayFeeder(sIPAddr := '192.168.1.10', udiPort := 5000);
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
<Method Name="FB_init" Id="{bbceb3b3-f8a1-472a-b29a-eebb04390aa6}">
<Declaration><![CDATA[//FB_Init ist immer implizit verfügbar und wird primär für die Initialisierung verwendet.
//Der Rückgabewert wird nicht ausgewertet. Für gezielte Einflussnahme können Sie
//die Methoden explizit deklarieren und darin mit dem Standard-Initialisierungscode
//zusätzlichen Code bereitstellen. Sie können den Rückgabewert auswerten.
METHOD FB_Init: BOOL
VAR_INPUT
bInitRetains: BOOL; // TRUE: Die Retain-Variablen werden initialisiert (Reset warm / Reset kalt)
bInCopyCode: BOOL; // TRUE: Die Instanz wird danach in den Kopiercode kopiert (Online-Change)
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[// Config state machine
_stSMConfig.xAbortingDisabled := TRUE;
_stSMConfig.xStoppingDisabled := TRUE;
_stSMConfig.xStartingDisabled := TRUE;
_stSMConfig.xSuspendingDisabled := TRUE;
_stSMConfig.xSuspededDisabled := TRUE;
_stSMConfig.xUnsuspendingDisabled := TRUE;
_stSMConfig.xHoldingDisabled := TRUE;
_stSMConfig.xUnholdingDisabled := TRUE;
_stSMConfig.xCompletingDisabled := TRUE;
]]></ST>
</Implementation>
</Method>
<Method Name="M_Clearing" Id="{a25e8d48-9658-4773-bf5a-5804033c1e57}">
<Declaration><![CDATA[METHOD PROTECTED M_Clearing
]]></Declaration>
<Implementation>
<ST><![CDATA[CASE _iSSM OF
// Check if there are sub units still in aborting
0:
// IF _fbTrayFeeder.stStatus.eStateCurrent = E_PackMLState.ABORTING THEN
//
// END_IF
// Check if
END_CASE]]></ST>
</Implementation>
</Method>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="ST_Input_Recipe" Id="{353ac92e-9d95-44a0-8ac7-6590259664c1}">
<Declaration><![CDATA[TYPE ST_Input_Recipe :
STRUCT
// Tray type
iTrayIdx : INT := -1;
// Number of parts to make
uiPartsToMake : UINT := 0;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="E_TrayFeeder_JobType" Id="{d6a9a552-c90e-4d94-ad43-94290ba0d53d}">
<Declaration><![CDATA[{attribute 'qualified_only'}
{attribute 'strict'}
{attribute 'to_string'}
TYPE E_TrayFeeder_JobType :
(
ALL := 0,
ONE_TRAY,
NUMBER
);
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="ST_TrayFeeder_Recipe" Id="{7b125673-00fb-47ea-a840-6619678735ac}">
<Declaration><![CDATA[TYPE ST_TrayFeeder_Recipe :
STRUCT
// Tray type index
iTrayIdx : INT := -1;
// How many parts to make
eJobType : E_TrayFeeder_JobType := E_TrayFeeder_JobType.ALL;
// Tray number in tray feeder
iTrayNr : INT := -1;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -41,6 +41,9 @@ VAR
// Trigger change recipe
_rtChangeRecipeRequest : R_TRIG;
// Internal PackMLs buffer
_stStatus : ST_PMLs;
// State state machine variable
_iSSM : INT := 0;
END_VAR
@@ -74,19 +77,19 @@ _fbStateMachine(
eMode:= _eMode,
eCmd:= _eCmd,
stConfig := _stSMConfig,
eState=> stStatus.eStateCurrent,
eCurrentMode => stStatus.eUnitModeCurrent,
eState=> _stStatus.eStateCurrent,
eCurrentMode => _stStatus.eUnitModeCurrent,
xError=> );
// Reset state state machine
IF _eLastState <> stStatus.eStateCurrent THEN
IF _eLastState <> _stStatus.eStateCurrent THEN
_iSSM := 0;
_eLastState := stStatus.eStateCurrent;
_eLastState := _stStatus.eStateCurrent;
END_IF
// Call state method according to current state
CASE stStatus.eStateCurrent OF
CASE _stStatus.eStateCurrent OF
E_PackMLState.CLEARING:
M_Clearing();
@@ -143,9 +146,13 @@ CASE stStatus.eStateCurrent OF
;
END_CASE
A_HandleHMIOutput();]]></ST>
A_HandleHMIOutput();
// Copy ouput buffers
stStatus := _stStatus;]]></ST>
</Implementation>
<Folder Name="Commands" Id="{11740802-7551-418d-83f3-5b2d5c93c299}" />
<Folder Name="Properties" Id="{71c1b935-7017-4f1f-b047-e556465667b8}" />
<Folder Name="States" Id="{2cf25144-1e5c-4db8-ba57-9d98461c53ce}" />
<Action Name="A_HandleHMIInput" Id="{723844ed-d531-4820-b577-cf5a7662c8f5}">
<Implementation>
@@ -273,101 +280,101 @@ IF (NOT __ISVALIDREF(stPackMLHMIInterface)) THEN
END_IF
// Handle manual mode button
stPackMLHMIInterface.stBtnManualMode.xRelease := (stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (stStatus.eStateCurrent = E_PackMLState.ABORTED);
IF stStatus.eUnitModeCurrent = E_PackMLUnitMode.MANUAL THEN
stPackMLHMIInterface.stBtnManualMode.xRelease := (_stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (_stStatus.eStateCurrent = E_PackMLState.ABORTED);
IF _stStatus.eUnitModeCurrent = E_PackMLUnitMode.MANUAL THEN
stPackMLHMIInterface.stBtnManualMode.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnManualMode.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle production mode button
stPackMLHMIInterface.stBtnProdMode.xRelease := (stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (stStatus.eStateCurrent = E_PackMLState.ABORTED);
IF stStatus.eUnitModeCurrent = E_PackMLUnitMode.PRODUCTION THEN
stPackMLHMIInterface.stBtnProdMode.xRelease := (_stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (_stStatus.eStateCurrent = E_PackMLState.ABORTED);
IF _stStatus.eUnitModeCurrent = E_PackMLUnitMode.PRODUCTION THEN
stPackMLHMIInterface.stBtnProdMode.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnProdMode.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle clear button
stPackMLHMIInterface.stBtnClear.xRelease := (stStatus.eStateCurrent = E_PackMLState.ABORTED);
IF stStatus.eStateCurrent = E_PackMLState.CLEARING THEN
stPackMLHMIInterface.stBtnClear.xRelease := (_stStatus.eStateCurrent = E_PackMLState.ABORTED);
IF _stStatus.eStateCurrent = E_PackMLState.CLEARING THEN
stPackMLHMIInterface.stBtnClear.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnClear.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle reset button
stPackMLHMIInterface.stBtnReset.xRelease := (stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (stStatus.eStateCurrent = E_PackMLState.COMPLETED);
IF stStatus.eStateCurrent = E_PackMLState.RESETTING THEN
stPackMLHMIInterface.stBtnReset.xRelease := (_stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (_stStatus.eStateCurrent = E_PackMLState.COMPLETED);
IF _stStatus.eStateCurrent = E_PackMLState.RESETTING THEN
stPackMLHMIInterface.stBtnReset.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnReset.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle start button
stPackMLHMIInterface.stBtnStart.xRelease := (stStatus.eStateCurrent = E_PackMLState.IDLE);
IF stStatus.eStateCurrent = E_PackMLState.STARTING THEN
stPackMLHMIInterface.stBtnStart.xRelease := (_stStatus.eStateCurrent = E_PackMLState.IDLE);
IF _stStatus.eStateCurrent = E_PackMLState.STARTING THEN
stPackMLHMIInterface.stBtnStart.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnStart.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle abort button
stPackMLHMIInterface.stBtnAbort.xRelease := (stStatus.eStateCurrent <> E_PackMLState.ABORTED) AND (stStatus.eStateCurrent <> E_PackMLState.ABORTING);
IF stStatus.eStateCurrent = E_PackMLState.ABORTING THEN
stPackMLHMIInterface.stBtnAbort.xRelease := (_stStatus.eStateCurrent <> E_PackMLState.ABORTED) AND (_stStatus.eStateCurrent <> E_PackMLState.ABORTING);
IF _stStatus.eStateCurrent = E_PackMLState.ABORTING THEN
stPackMLHMIInterface.stBtnAbort.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnAbort.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle hold button
stPackMLHMIInterface.stBtnHold.xRelease := (stStatus.eStateCurrent = E_PackMLState.EXECUTE) OR (stStatus.eStateCurrent = E_PackMLState.SUSPENDED);
IF stStatus.eStateCurrent = E_PackMLState.HOLDING THEN
stPackMLHMIInterface.stBtnHold.xRelease := (_stStatus.eStateCurrent = E_PackMLState.EXECUTE) OR (_stStatus.eStateCurrent = E_PackMLState.SUSPENDED);
IF _stStatus.eStateCurrent = E_PackMLState.HOLDING THEN
stPackMLHMIInterface.stBtnHold.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnHold.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle stop button
stPackMLHMIInterface.stBtnStop.xRelease := (stStatus.eStateCurrent <> E_PackMLState.ABORTED)
AND (stStatus.eStateCurrent <> E_PackMLState.ABORTING)
AND (stStatus.eStateCurrent <> E_PackMLState.CLEARING)
AND (stStatus.eStateCurrent <> E_PackMLState.STOPPING)
AND (stStatus.eStateCurrent <> E_PackMLState.STOPPED);
stPackMLHMIInterface.stBtnStop.xRelease := (_stStatus.eStateCurrent <> E_PackMLState.ABORTED)
AND (_stStatus.eStateCurrent <> E_PackMLState.ABORTING)
AND (_stStatus.eStateCurrent <> E_PackMLState.CLEARING)
AND (_stStatus.eStateCurrent <> E_PackMLState.STOPPING)
AND (_stStatus.eStateCurrent <> E_PackMLState.STOPPED);
IF stStatus.eStateCurrent = E_PackMLState.STOPPING THEN
IF _stStatus.eStateCurrent = E_PackMLState.STOPPING THEN
stPackMLHMIInterface.stBtnStop.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnStop.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle suspend button
stPackMLHMIInterface.stBtnSuspend.xRelease := (stStatus.eStateCurrent = E_PackMLState.EXECUTE);
IF stStatus.eStateCurrent = E_PackMLState.SUSPENDING THEN
stPackMLHMIInterface.stBtnSuspend.xRelease := (_stStatus.eStateCurrent = E_PackMLState.EXECUTE);
IF _stStatus.eStateCurrent = E_PackMLState.SUSPENDING THEN
stPackMLHMIInterface.stBtnSuspend.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnSuspend.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle unhold button
stPackMLHMIInterface.stBtnUnhold.xRelease := (stStatus.eStateCurrent = E_PackMLState.HELD);
IF stStatus.eStateCurrent = E_PackMLState.UNHOLDING THEN
stPackMLHMIInterface.stBtnUnhold.xRelease := (_stStatus.eStateCurrent = E_PackMLState.HELD);
IF _stStatus.eStateCurrent = E_PackMLState.UNHOLDING THEN
stPackMLHMIInterface.stBtnUnhold.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnUnhold.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle unsuspend button
stPackMLHMIInterface.stBtnUnsuspend.xRelease := (stStatus.eStateCurrent = E_PackMLState.SUSPENDED);
IF stStatus.eStateCurrent = E_PackMLState.UNSUSPENDING THEN
stPackMLHMIInterface.stBtnUnsuspend.xRelease := (_stStatus.eStateCurrent = E_PackMLState.SUSPENDED);
IF _stStatus.eStateCurrent = E_PackMLState.UNSUSPENDING THEN
stPackMLHMIInterface.stBtnUnsuspend.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnUnsuspend.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
END_IF
// Handle complete button
stPackMLHMIInterface.stBtnComplete.xRelease := (stStatus.eStateCurrent = E_PackMLState.EXECUTE) OR (stStatus.eStateCurrent = E_PackMLState.HELD) OR (stStatus.eStateCurrent = E_PackMLState.SUSPENDED);
IF stStatus.eStateCurrent = E_PackMLState.UNSUSPENDING THEN
stPackMLHMIInterface.stBtnComplete.xRelease := (_stStatus.eStateCurrent = E_PackMLState.EXECUTE) OR (_stStatus.eStateCurrent = E_PackMLState.HELD) OR (_stStatus.eStateCurrent = E_PackMLState.SUSPENDED);
IF _stStatus.eStateCurrent = E_PackMLState.UNSUSPENDING THEN
stPackMLHMIInterface.stBtnComplete.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
ELSE
stPackMLHMIInterface.stBtnComplete.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
@@ -375,7 +382,7 @@ END_IF
// Copy mode and state
stPackMLHMIInterface.eCurrentMode := _eMode;
stPackMLHMIInterface.eCurrentState := stStatus.eStateCurrent;]]></ST>
stPackMLHMIInterface.eCurrentState := _stStatus.eStateCurrent;]]></ST>
</Implementation>
</Action>
<Method Name="M_Aborted" Id="{db1a684f-e4e1-4d89-a3aa-9b9dfde0508c}" FolderPath="States\">
@@ -398,7 +405,7 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF (stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (stStatus.eStateCurrent = E_PackMLState.ABORTED) THEN
<ST><![CDATA[IF (_stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (_stStatus.eStateCurrent = E_PackMLState.ABORTED) THEN
_eMode := E_PackMLUnitMode.MANUAL;
END_IF]]></ST>
</Implementation>
@@ -409,7 +416,7 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF (stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (stStatus.eStateCurrent = E_PackMLState.ABORTED) THEN
<ST><![CDATA[IF (_stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (_stStatus.eStateCurrent = E_PackMLState.ABORTED) THEN
_eMode := E_PackMLUnitMode.PRODUCTION;
END_IF]]></ST>
</Implementation>
@@ -427,7 +434,7 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF (stStatus.eStateCurrent <> E_PackMLState.ABORTED) AND (stStatus.eStateCurrent <> E_PackMLState.ABORTING) THEN
<ST><![CDATA[IF (_stStatus.eStateCurrent <> E_PackMLState.ABORTED) AND (_stStatus.eStateCurrent <> E_PackMLState.ABORTING) THEN
_eCmd := E_PackMLCmd.ABORT;
M_CmdAbort := TRUE;
ELSE
@@ -440,7 +447,7 @@ END_IF]]></ST>
]]></Declaration>
<Implementation>
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.ABORTED THEN
<ST><![CDATA[IF _stStatus.eStateCurrent = E_PackMLState.ABORTED THEN
_eCmd := E_PackMLCmd.CLEAR;
M_CmdClear := TRUE;
ELSE
@@ -454,7 +461,7 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.EXECUTE THEN
<ST><![CDATA[IF _stStatus.eStateCurrent = E_PackMLState.EXECUTE THEN
_eCmd := E_PackMLCmd.COMPLETE;
M_CmdComplete := TRUE;
ELSE
@@ -468,7 +475,7 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF (stStatus.eStateCurrent = E_PackMLState.EXECUTE) OR (stStatus.eStateCurrent = E_PackMLState.SUSPENDED) THEN
<ST><![CDATA[IF (_stStatus.eStateCurrent = E_PackMLState.EXECUTE) OR (_stStatus.eStateCurrent = E_PackMLState.SUSPENDED) THEN
_eCmd := E_PackMLCmd.HOLD;
M_CmdHold := TRUE;
ELSE
@@ -482,7 +489,7 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF (stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (stStatus.eStateCurrent = E_PackMLState.COMPLETED) THEN
<ST><![CDATA[IF (_stStatus.eStateCurrent = E_PackMLState.STOPPED) OR (_stStatus.eStateCurrent = E_PackMLState.COMPLETED) THEN
_eCmd := E_PackMLCmd.RESET;
M_CmdReset := TRUE;
ELSE
@@ -496,7 +503,7 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.IDLE THEN
<ST><![CDATA[IF _stStatus.eStateCurrent = E_PackMLState.IDLE THEN
_eCmd := E_PackMLCmd.START;
M_CmdStart := TRUE;
ELSE
@@ -510,11 +517,11 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF (stStatus.eStateCurrent <> E_PackMLState.ABORTED)
AND (stStatus.eStateCurrent <> E_PackMLState.ABORTING)
AND (stStatus.eStateCurrent <> E_PackMLState.CLEARING)
AND (stStatus.eStateCurrent <> E_PackMLState.STOPPING)
AND (stStatus.eStateCurrent <> E_PackMLState.STOPPED)
<ST><![CDATA[IF (_stStatus.eStateCurrent <> E_PackMLState.ABORTED)
AND (_stStatus.eStateCurrent <> E_PackMLState.ABORTING)
AND (_stStatus.eStateCurrent <> E_PackMLState.CLEARING)
AND (_stStatus.eStateCurrent <> E_PackMLState.STOPPING)
AND (_stStatus.eStateCurrent <> E_PackMLState.STOPPED)
THEN
_eCmd := E_PackMLCmd.STOP;
M_CmdStop := TRUE;
@@ -529,7 +536,7 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.EXECUTE THEN
<ST><![CDATA[IF _stStatus.eStateCurrent = E_PackMLState.EXECUTE THEN
_eCmd := E_PackMLCmd.SUSPEND;
M_CmdSuspend := TRUE;
ELSE
@@ -543,7 +550,7 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF (stStatus.eStateCurrent = E_PackMLState.HELD) THEN
<ST><![CDATA[IF (_stStatus.eStateCurrent = E_PackMLState.HELD) THEN
_eCmd := E_PackMLCmd.UNSUSPEND;
M_CmdUnhold := TRUE;
ELSE
@@ -557,7 +564,7 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF (stStatus.eStateCurrent = E_PackMLState.SUSPENDED) THEN
<ST><![CDATA[IF (_stStatus.eStateCurrent = E_PackMLState.SUSPENDED) THEN
_eCmd := E_PackMLCmd.UNSUSPEND;
M_CmdUnsuspend := TRUE;
ELSE
@@ -566,10 +573,10 @@ END_IF]]></ST>
</Implementation>
</Method>
<Method Name="M_Completed" Id="{33df5dea-d83b-48e1-8898-d7c8e1f031bd}" FolderPath="States\">
<Declaration><![CDATA[METHOD PROTECTED M_Completed
<Declaration><![CDATA[METHOD PROTECTED M_Completed : BOOL
]]></Declaration>
<Implementation>
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.EXECUTE THEN
<ST><![CDATA[IF _stStatus.eStateCurrent = E_PackMLState.EXECUTE THEN
_eCmd := E_PackMLCmd.COMPLETE;
M_Completed := TRUE;
ELSE
@@ -679,5 +686,65 @@ _fbStateMachine.M_StateComplete();]]></ST>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Property Name="P_IsAborting" Id="{2b0946af-b14d-4d2e-990d-b07d1895ea11}" FolderPath="Properties\">
<Declaration><![CDATA[PROPERTY PUBLIC P_IsAborting : BOOL]]></Declaration>
<Get Name="Get" Id="{70c3f60f-0f05-4a00-a64d-b39e6fe8aed2}">
<Declaration><![CDATA[VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF _stStatus.eStateCurrent = E_PackMLState.ABORTING THEN
P_IsAborting := TRUE;
ELSE
P_IsAborting := FALSE;
END_IF]]></ST>
</Implementation>
</Get>
</Property>
<Property Name="P_IsClearing" Id="{944646f8-7122-4c20-a9f8-47665b03c3a6}" FolderPath="Properties\">
<Declaration><![CDATA[PROPERTY PUBLIC P_IsClearing : BOOL]]></Declaration>
<Get Name="Get" Id="{a9daac25-4395-40d2-b9b1-1febd61f0c04}">
<Declaration><![CDATA[VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF _stStatus.eStateCurrent = E_PackMLState.CLEARING THEN
P_IsClearing := TRUE;
ELSE
P_IsClearing := FALSE;
END_IF]]></ST>
</Implementation>
</Get>
</Property>
<Property Name="P_IsResetting" Id="{87063e57-8128-494e-93a1-c43385c51aa1}" FolderPath="Properties\">
<Declaration><![CDATA[PROPERTY PUBLIC P_IsResetting : BOOL]]></Declaration>
<Get Name="Get" Id="{0dce300e-62cf-49c8-a396-770e6fb91489}">
<Declaration><![CDATA[VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF _stStatus.eStateCurrent = E_PackMLState.RESETTING THEN
P_IsResetting := TRUE;
ELSE
P_IsResetting := FALSE;
END_IF]]></ST>
</Implementation>
</Get>
</Property>
<Property Name="P_IsStopping" Id="{46829e26-3c3f-4a9e-ad8b-51b2c66f4c40}" FolderPath="Properties\">
<Declaration><![CDATA[PROPERTY PUBLIC P_IsStopping : BOOL]]></Declaration>
<Get Name="Get" Id="{36bdb17b-1165-46ad-8819-9201a1893683}">
<Declaration><![CDATA[VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF _stStatus.eStateCurrent = E_PackMLState.STOPPING THEN
P_IsStopping := TRUE;
ELSE
P_IsStopping := FALSE;
END_IF]]></ST>
</Implementation>
</Get>
</Property>
</POU>
</TcPlcObject>

View File

@@ -143,6 +143,12 @@
<Compile Include="01_Stationen\HVTester\POUs\FB_HVTester.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\Input\FB_Input.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\Input\ST_Input_Recipe.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\Kuka_Robot\E_KukaRobot_JobNumberRobot.TcDUT">
<SubType>Code</SubType>
</Compile>
@@ -194,9 +200,6 @@
<Compile Include="01_Stationen\TrayFeeder\E_TrayFeederState.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\TrayFeeder\E_TrayFeeder_JobType.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\TrayFeeder\FB_StringRingbufferOwn.TcPOU">
<SubType>Code</SubType>
</Compile>
@@ -215,9 +218,6 @@
<Compile Include="01_Stationen\TrayFeeder\ST_TrayFeederStatus.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\TrayFeeder\ST_TrayFeeder_Recipe.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="Debug_Visu\Visualization.TcVIS">
<SubType>Code</SubType>
<DependentUpon>Visualization Manager.TcVMO</DependentUpon>
@@ -368,6 +368,8 @@
<Folder Include="01_Stationen\MediaStation" />
<Folder Include="01_Stationen\MediaStation\DUTs" />
<Folder Include="01_Stationen\MediaStation\POUs" />
<Folder Include="01_Stationen\Input" />
<Folder Include="01_Stationen\Output" />
<Folder Include="01_Stationen\Stammdaten" />
<Folder Include="01_Stationen\NIO" />
<Folder Include="01_Stationen\TrayFeeder" />

File diff suppressed because one or more lines are too long

View File

@@ -1,18 +1,22 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.5.2 Chrome/142.0.7444.265 Electron/39.6.1 Safari/537.36" version="29.5.2" pages="4">
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.5.2 Chrome/142.0.7444.265 Electron/39.6.1 Safari/537.36" version="29.5.2" pages="5">
<diagram name="Complete_SM" id="ftpb_kXLDtCrtDVQ6dMH">
<mxGraphModel dx="2946" dy="1201" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<mxGraphModel dx="1203" dy="1022" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="6Bvch9Cb6EAJBDMYLGmc-1" edge="1" parent="1" source="QfHmVZ-q5NNlDkDn7R8m-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=665;exitDy=440;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--51">
<mxCell id="ETDFhSajcz1UCc398qXm-1" edge="1" parent="1" source="QfHmVZ-q5NNlDkDn7R8m-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.96;exitY=0.823;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--51">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="685" y="510" />
<mxPoint x="720" y="510" />
<mxPoint x="826" y="540" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="QfHmVZ-q5NNlDkDn7R8m-1" parent="1" style="shape=corner;whiteSpace=wrap;html=1;dx=490;dy=440;rounded=1;movable=0;resizable=0;rotatable=0;deletable=0;editable=0;locked=1;connectable=0;fillColor=#f9f7ed;strokeColor=#36393d;" value="" vertex="1">
<mxCell id="ETDFhSajcz1UCc398qXm-2" connectable="0" parent="ETDFhSajcz1UCc398qXm-1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Abort" vertex="1">
<mxGeometry relative="1" x="0.4401" as="geometry">
<mxPoint x="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="QfHmVZ-q5NNlDkDn7R8m-1" parent="1" style="shape=corner;whiteSpace=wrap;html=1;dx=490;dy=440;rounded=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;fillColor=#f9f7ed;strokeColor=#36393d;" value="" vertex="1">
<mxGeometry height="535" width="840" x="20" y="60" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--59" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;strokeColor=#36393d;movable=0;resizable=0;rotatable=0;deletable=0;editable=0;locked=1;connectable=0;" value="" vertex="1">
@@ -21,6 +25,11 @@
<mxCell id="MSPdzodM52y7OSiT-G8--41" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--40">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-4" connectable="0" parent="MSPdzodM52y7OSiT-G8--41" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Reset" vertex="1">
<mxGeometry relative="1" x="-0.3184" y="-1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--4" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#dae8fc;strokeColor=#000000;strokeWidth=3;" value="Stopped" vertex="1">
<mxGeometry height="40" width="80" x="80" y="520" as="geometry" />
</mxCell>
@@ -44,18 +53,33 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-3" connectable="0" parent="MSPdzodM52y7OSiT-G8--58" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="SC" vertex="1">
<mxGeometry relative="1" x="-0.051" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--50" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Clearing" vertex="1">
<mxGeometry height="40" width="80" x="400" y="520" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--53" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="MSPdzodM52y7OSiT-G8--52">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-1" connectable="0" parent="MSPdzodM52y7OSiT-G8--53" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="SC" vertex="1">
<mxGeometry relative="1" x="-0.2" y="2" as="geometry">
<mxPoint x="-4" y="8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--51" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Aborting" vertex="1">
<mxGeometry height="40" width="80" x="680" y="520" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--54" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="MSPdzodM52y7OSiT-G8--50">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-2" connectable="0" parent="MSPdzodM52y7OSiT-G8--54" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Clear" vertex="1">
<mxGeometry relative="1" x="-0.0833" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--52" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#dae8fc;strokeColor=#000000;strokeWidth=3;" value="Aborted" vertex="1">
<mxGeometry height="40" width="80" x="560" y="520" as="geometry" />
</mxCell>
@@ -73,24 +97,44 @@
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-10" connectable="0" parent="MSPdzodM52y7OSiT-G8--49" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Complete" vertex="1">
<mxGeometry relative="1" x="-0.3933" y="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--48" parent="1" style="rounded=1;whiteSpace=wrap;html=1;movable=0;resizable=0;rotatable=0;deletable=0;editable=0;locked=1;connectable=0;fillColor=#f9f7ed;strokeColor=#36393d;" value="" vertex="1">
<mxGeometry height="280" width="160" x="340" y="120" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--47" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1.008;exitY=0.098;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;" target="MSPdzodM52y7OSiT-G8--32">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-8" connectable="0" parent="MSPdzodM52y7OSiT-G8--47" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Hold" vertex="1">
<mxGeometry relative="1" x="-0.3659" y="2" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--44" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;strokeColor=#36393d;movable=0;resizable=0;rotatable=0;deletable=0;editable=0;locked=1;connectable=0;" value="" vertex="1">
<mxGeometry height="160" width="120" x="360" y="220" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--11" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--9">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-7" connectable="0" parent="MSPdzodM52y7OSiT-G8--11" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Start" vertex="1">
<mxGeometry relative="1" x="0.0583" y="2" as="geometry">
<mxPoint x="-1" y="-8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--2" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#dae8fc;strokeColor=#000000;strokeWidth=3;" value="Idle" vertex="1">
<mxGeometry height="40" width="80" x="80" y="240" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--8" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-6" connectable="0" parent="MSPdzodM52y7OSiT-G8--8" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="SC" vertex="1">
<mxGeometry relative="1" x="-0.15" y="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--7" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Resetting" vertex="1">
<mxGeometry height="40" width="80" x="80" y="320" as="geometry" />
</mxCell>
@@ -103,18 +147,33 @@
<mxCell id="MSPdzodM52y7OSiT-G8--21" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="MSPdzodM52y7OSiT-G8--18">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-9" connectable="0" parent="MSPdzodM52y7OSiT-G8--21" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Suspend" vertex="1">
<mxGeometry relative="1" x="0.3278" y="2" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--3" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;strokeWidth=3;" value="Execute" vertex="1">
<mxGeometry height="40" width="80" x="380" y="240" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--25" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--24">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-12" connectable="0" parent="MSPdzodM52y7OSiT-G8--25" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Unsuspend" vertex="1">
<mxGeometry relative="1" x="0.0722" y="2" as="geometry">
<mxPoint x="3" y="8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--14" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#dae8fc;strokeColor=#000000;" value="Suspended" vertex="1">
<mxGeometry height="40" width="80" x="380" y="320" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--19" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--14">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-11" connectable="0" parent="MSPdzodM52y7OSiT-G8--19" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="SC" vertex="1">
<mxGeometry relative="1" x="-0.2611" y="-1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--18" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Suspending" vertex="1">
<mxGeometry height="40" width="80" x="520" y="320" as="geometry" />
</mxCell>
@@ -127,30 +186,55 @@
<mxCell id="MSPdzodM52y7OSiT-G8--27" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--22">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-13" connectable="0" parent="MSPdzodM52y7OSiT-G8--27" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="SC" vertex="1">
<mxGeometry relative="1" x="-0.0667" y="-2" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--24" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Unsuspending" vertex="1">
<mxGeometry height="40" width="80" x="240" y="320" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--29" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--33">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-15" connectable="0" parent="MSPdzodM52y7OSiT-G8--29" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Unhold" vertex="1">
<mxGeometry relative="1" x="0.0444" y="-2" as="geometry">
<mxPoint x="2" y="2" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--30" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#dae8fc;strokeColor=#000000;" value="Held" vertex="1">
<mxGeometry height="40" width="80" x="380" y="140" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--31" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--30">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-16" connectable="0" parent="MSPdzodM52y7OSiT-G8--31" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="SC" vertex="1">
<mxGeometry relative="1" x="-0.0667" y="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--32" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Holding" vertex="1">
<mxGeometry height="40" width="80" x="520" y="140" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--34" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--22">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-14" connectable="0" parent="MSPdzodM52y7OSiT-G8--34" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="SC" vertex="1">
<mxGeometry relative="1" x="-0.6727" y="2" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--33" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Unholding" vertex="1">
<mxGeometry height="40" width="80" x="240" y="140" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--39" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--38">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-17" connectable="0" parent="MSPdzodM52y7OSiT-G8--39" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="SC" vertex="1">
<mxGeometry relative="1" x="-0.275" y="-3" as="geometry">
<mxPoint y="-3" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--36" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Completing" vertex="1">
<mxGeometry height="40" width="80" x="600" y="240" as="geometry" />
</mxCell>
@@ -161,6 +245,11 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="3qxDnlXEpMbsiZk2aYTf-5" connectable="0" parent="MSPdzodM52y7OSiT-G8--43" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Reset" vertex="1">
<mxGeometry relative="1" x="0.2966" y="-1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--38" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#dae8fc;strokeColor=#000000;" value="Completed" vertex="1">
<mxGeometry height="40" width="80" x="720" y="240" as="geometry" />
</mxCell>
@@ -185,6 +274,192 @@
</root>
</mxGraphModel>
</diagram>
<diagram name="Input" id="ebfDIam5yr3Cwv1Ygk9-">
<mxGraphModel dx="1443" dy="1226" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-0" />
<mxCell id="nfqM1zEYWtwfhvRV8Snf-1" parent="nfqM1zEYWtwfhvRV8Snf-0" />
<mxCell id="nfqM1zEYWtwfhvRV8Snf-2" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=665;exitDy=440;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-14">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="685" y="510" />
<mxPoint x="720" y="510" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-3" parent="nfqM1zEYWtwfhvRV8Snf-1" style="shape=corner;whiteSpace=wrap;html=1;dx=490;dy=440;rounded=1;movable=0;resizable=0;rotatable=0;deletable=0;editable=0;locked=1;connectable=0;fillColor=#f9f7ed;strokeColor=#36393d;" value="" vertex="1">
<mxGeometry height="535" width="840" x="20" y="60" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-4" parent="nfqM1zEYWtwfhvRV8Snf-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;strokeColor=#36393d;movable=0;resizable=0;rotatable=0;deletable=0;editable=0;locked=1;connectable=0;" value="" vertex="1">
<mxGeometry height="400" width="800" x="40" y="80" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-5" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-51">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-6" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#dae8fc;strokeColor=#000000;strokeWidth=3;" value="Stopped" vertex="1">
<mxGeometry height="40" width="80" x="80" y="520" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-7" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-18">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-8" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#ffcccc;strokeColor=#36393d;" value="Stopping" vertex="1">
<mxGeometry height="40" width="80" x="240" y="520" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-9" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-10" parent="nfqM1zEYWtwfhvRV8Snf-1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="30" width="30" x="105" y="670" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-11" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-18">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="440" y="580" />
<mxPoint x="200" y="580" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-12" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Clearing" vertex="1">
<mxGeometry height="40" width="80" x="400" y="520" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-13" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="nfqM1zEYWtwfhvRV8Snf-16">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-14" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#ffcccc;strokeColor=#36393d;" value="Aborting" vertex="1">
<mxGeometry height="40" width="80" x="680" y="520" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-15" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="nfqM1zEYWtwfhvRV8Snf-12">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-16" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#dae8fc;strokeColor=#000000;strokeWidth=3;" value="Aborted" vertex="1">
<mxGeometry height="40" width="80" x="560" y="520" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-17" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-18" parent="nfqM1zEYWtwfhvRV8Snf-1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="20" width="20" x="190" y="530" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-19" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.3;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" target="nfqM1zEYWtwfhvRV8Snf-8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-20" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-47">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-21" parent="nfqM1zEYWtwfhvRV8Snf-1" style="rounded=1;whiteSpace=wrap;html=1;movable=0;resizable=0;rotatable=0;deletable=0;editable=0;locked=1;connectable=0;fillColor=#f9f7ed;strokeColor=#36393d;" value="" vertex="1">
<mxGeometry height="280" width="160" x="340" y="120" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-22" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1.008;exitY=0.098;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;" target="nfqM1zEYWtwfhvRV8Snf-43">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-23" parent="nfqM1zEYWtwfhvRV8Snf-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;strokeColor=#36393d;movable=0;resizable=0;rotatable=0;deletable=0;editable=0;locked=1;connectable=0;" value="" vertex="1">
<mxGeometry height="160" width="120" x="360" y="220" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-24" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-29">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-25" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#dae8fc;strokeColor=#000000;strokeWidth=3;" value="Idle" vertex="1">
<mxGeometry height="40" width="80" x="80" y="240" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-26" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-25">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-27" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Resetting" vertex="1">
<mxGeometry height="40" width="80" x="80" y="320" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-28" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-37">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-29" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Starting" vertex="1">
<mxGeometry height="40" width="80" x="200" y="240" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-30" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="nfqM1zEYWtwfhvRV8Snf-35">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-31" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;strokeWidth=3;" value="Execute" vertex="1">
<mxGeometry height="40" width="80" x="380" y="240" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-32" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-39">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-33" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#ffcccc;strokeColor=#36393d;" value="Suspended" vertex="1">
<mxGeometry height="40" width="80" x="380" y="320" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-34" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-33">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-35" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#ffcccc;strokeColor=#36393d;" value="Suspending" vertex="1">
<mxGeometry height="40" width="80" x="520" y="320" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-36" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-31">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-37" parent="nfqM1zEYWtwfhvRV8Snf-1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="20" width="20" x="310" y="250" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-38" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-37">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-39" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#ffcccc;strokeColor=#36393d;" value="Unsuspending" vertex="1">
<mxGeometry height="40" width="80" x="240" y="320" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-40" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-45">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-41" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#dae8fc;strokeColor=#000000;" value="Held" vertex="1">
<mxGeometry height="40" width="80" x="380" y="140" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-42" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-41">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-43" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#ffcccc;strokeColor=#36393d;" value="Holding" vertex="1">
<mxGeometry height="40" width="80" x="520" y="140" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-44" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-37">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-45" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#ffcccc;strokeColor=#36393d;" value="Unholding" vertex="1">
<mxGeometry height="40" width="80" x="240" y="140" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-46" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-49">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-47" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#ffcccc;strokeColor=#36393d;" value="Completing" vertex="1">
<mxGeometry height="40" width="80" x="600" y="240" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-48" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-51">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="760" y="440" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-49" parent="nfqM1zEYWtwfhvRV8Snf-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;fillColor=#cce5ff;strokeColor=#36393d;" value="Completed" vertex="1">
<mxGeometry height="40" width="80" x="720" y="240" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-50" edge="1" parent="nfqM1zEYWtwfhvRV8Snf-1" source="nfqM1zEYWtwfhvRV8Snf-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="nfqM1zEYWtwfhvRV8Snf-27">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-51" parent="nfqM1zEYWtwfhvRV8Snf-1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="20" width="20" x="110" y="430" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-52" parent="nfqM1zEYWtwfhvRV8Snf-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#36393d;" value="Deaktivated" vertex="1">
<mxGeometry height="60" width="120" x="960" y="220" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-53" parent="nfqM1zEYWtwfhvRV8Snf-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#cce5ff;strokeColor=#36393d;" value="Waiting state" vertex="1">
<mxGeometry height="60" width="120" x="960" y="60" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-54" parent="nfqM1zEYWtwfhvRV8Snf-1" style="rounded=1;whiteSpace=wrap;html=1;" value="Acting state" vertex="1">
<mxGeometry height="60" width="120" x="960" y="140" as="geometry" />
</mxCell>
<mxCell id="nfqM1zEYWtwfhvRV8Snf-55" parent="nfqM1zEYWtwfhvRV8Snf-1" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=3;" value="Required state" vertex="1">
<mxGeometry height="60" width="120" x="960" y="297.5" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram name="Meca500" id="M--t5QDrnY7-0U1K8J5A">
<mxGraphModel dx="2946" dy="1201" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>