Changed from ISA88 to PackML

- Added PackML Base FB's
- Added Unit Tests for PackML Base State Machine
- Added Robot job numbers according to new interface
- Added PLC job number for robot to call according to new interface
- Change Robot to PackML interface
This commit is contained in:
2026-01-23 22:55:49 +01:00
parent 2d11c43579
commit 3946e45c65
26 changed files with 1615 additions and 421 deletions

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="E_PackMLCmd" Id="{3ba7a228-f199-4355-be17-fd46fc967487}">
<Declaration><![CDATA[{attribute 'qualified_only'}
{attribute 'strict'}
{attribute 'to_string'}
TYPE E_PackMLCmd :
(
UNDEFINED := 0,
RESET := 1,
START := 2,
STOP := 3,
HOLD := 4,
UNHOLD := 5,
SUSPEND := 6,
UNSUSPEND := 7,
ABORT := 8,
CLEAR := 9,
COMPLETE := 10
) DINT;
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="E_PackMLState" Id="{563a2f85-ab5d-400a-a6dd-3d1839155f82}">
<Declaration><![CDATA[{attribute 'qualified_only'}
{attribute 'strict'}
{attribute 'to_string'}
TYPE E_PackMLState :
(
UNDEFINED := 0,
CLEARING := 1,
STOPPED := 2,
STARTING := 3,
IDLE := 4,
SUSPENDED := 5,
EXECUTE := 6,
STOPPING := 7,
ABORTING := 8,
ABORTED := 9,
HOLDING := 10,
HELD := 11,
UNHOLDING := 12,
SUSPENDING := 13,
UNSUSPENDING := 14,
RESETTING := 15,
COMPLETING := 16,
COMPLETE := 17
) DINT := STOPPED;
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="E_PackMLUnitMode" Id="{56f8b8e3-48e3-4607-ac73-c965d4d0058d}">
<Declaration><![CDATA[{attribute 'qualified_only'}
{attribute 'strict'}
{attribute 'to_string'}
TYPE E_PackMLUnitMode :
(
INVALID := 0,
PRODUCTION := 1,
MAINTENANCE := 2,
MANUAL := 3,
CHANGE_OVER := 4,
CLEAN := 5,
SET_UP := 6,
EMPTY_OUT := 7
) DINT := PRODUCTION;
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,225 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<POU Name="FB_PackMLGeneric" Id="{f562a10e-01bc-407d-9fc0-2837d13c10b1}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_PackMLGeneric IMPLEMENTS I_UnitState
VAR_INPUT
// Mode from superior unit
eModeCmd : E_PackMLUnitMode;
// Command for new state from superior unit
eCmd : E_PackMLCmd;
END_VAR
VAR_OUTPUT
// Current mode of unit
eMode : E_PackMLUnitMode;
// Current state of unit
eState : E_PackMLState;
// xInvalidModeCmd : BOOL;
END_VAR
VAR
// State machine handler
_fbStateMachine : FB_PackMLStateMachine;
// Internal unit state
_eState : E_PackMLState;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[_fbStateMachine(
eMode:= eMode,
eCmd:= eCmd,
eState=> _eState,
xError=> );
// Call state method according to current state
CASE _eState OF
E_PackMLState.CLEARING:
M_Clearing();
E_PackMLState.STOPPED:
M_Stopped();
E_PackMLState.STARTING:
M_Starting();
E_PackMLState.IDLE:
M_Idle();
E_PackMLState.SUSPENDED:
M_Suspended();
E_PackMLState.EXECUTE:
M_Execute();
E_PackMLState.STOPPING:
M_Stopping();
E_PackMLState.ABORTING:
M_Aborting();
E_PackMLState.ABORTED:
M_Aborted();
E_PackMLState.HOLDING:
M_Holding();
E_PackMLState.HELD:
M_Held();
E_PackMLState.UNHOLDING:
M_Unholding();
E_PackMLState.SUSPENDING:
M_Suspending();
E_PackMLState.UNSUSPENDING:
M_Unsuspending();
E_PackMLState.RESETTING:
M_Resetting();
E_PackMLState.COMPLETING:
M_Completing();
E_PackMLState.COMPLETE:
M_Complete();
ELSE
;
END_CASE
// Copy internal flags to output
eState := _eState;]]></ST>
</Implementation>
<Method Name="M_Aborted" Id="{db1a684f-e4e1-4d89-a3aa-9b9dfde0508c}">
<Declaration><![CDATA[METHOD M_Aborted
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
</Method>
<Method Name="M_Aborting" Id="{928ad614-a3a7-4c6c-b1bc-55ae54e4c95f}">
<Declaration><![CDATA[METHOD M_Aborting
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_Clearing" Id="{1716cf1b-94c6-4995-8b3f-c7ebcf5727d3}">
<Declaration><![CDATA[METHOD M_Clearing
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_Complete" Id="{33df5dea-d83b-48e1-8898-d7c8e1f031bd}">
<Declaration><![CDATA[METHOD M_Complete
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
</Method>
<Method Name="M_Completing" Id="{341608cb-1218-481f-929c-cb79602c11ab}">
<Declaration><![CDATA[METHOD M_Completing
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_Execute" Id="{2a469169-0eb2-43c9-be21-48909285ee44}">
<Declaration><![CDATA[METHOD M_Execute
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_Held" Id="{05b040b0-b1b9-4afd-81d0-88fc1f1a7f9b}">
<Declaration><![CDATA[METHOD M_Held
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
</Method>
<Method Name="M_Holding" Id="{519b03b3-2409-4b45-818f-535b3e16b22e}">
<Declaration><![CDATA[METHOD M_Holding
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_Idle" Id="{aa784f5c-7adf-4c9f-a414-65b10afd2772}">
<Declaration><![CDATA[METHOD M_Idle
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
</Method>
<Method Name="M_Resetting" Id="{4050ed6f-edbe-4c3e-ac42-919a37a47ea9}">
<Declaration><![CDATA[METHOD M_Resetting
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_Starting" Id="{0059e7f6-5f2a-40e4-9d9b-652f221495a9}">
<Declaration><![CDATA[METHOD M_Starting
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_StateComplete" Id="{0cf3625e-8009-4108-a9f4-d98c991f9930}">
<Declaration><![CDATA[METHOD M_StateComplete
]]></Declaration>
<Implementation>
<ST><![CDATA[_fbStateMachine.M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_Stopped" Id="{9f8a09cf-f3be-4d60-b5e4-cd9572fae88c}">
<Declaration><![CDATA[METHOD M_Stopped
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
</Method>
<Method Name="M_Stopping" Id="{193565ef-cf20-428c-b726-e7c1b61375c5}">
<Declaration><![CDATA[METHOD M_Stopping
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_Suspended" Id="{222c3ad7-f7d5-4773-8e98-863345472053}">
<Declaration><![CDATA[METHOD M_Suspended
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
</Method>
<Method Name="M_Suspending" Id="{0f5d52e2-2a54-4ea9-a0c4-7f08229c4f21}">
<Declaration><![CDATA[METHOD M_Suspending
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_Unholding" Id="{662dd054-329b-4e57-ba77-486f92af795a}">
<Declaration><![CDATA[METHOD M_Unholding
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
<Method Name="M_Unsuspending" Id="{80fb11c4-916a-4f8f-9cf9-b9a2d51524a1}">
<Declaration><![CDATA[METHOD M_Unsuspending
]]></Declaration>
<Implementation>
<ST><![CDATA[M_StateComplete();]]></ST>
</Implementation>
</Method>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,244 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<POU Name="FB_PackMLStateMachine" Id="{784ceb84-1721-424f-89d1-422a24198e57}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_PackMLStateMachine
VAR_INPUT
eMode : E_PackMLUnitMode;
eCmd : E_PackMLCmd;
END_VAR
VAR_OUTPUT
eState : E_PackMLState;
eCurrentMode : E_PackMLUnitMode;
xError : BOOL;
END_VAR
VAR
// Internal mode
_eMode : E_PackMLUnitMode;
// Internal state
_eState : E_PackMLState;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Check for mode switch
IF eMode <> _eMode THEN
// Only allow mode switch in stopped state
// or in aborted state when target mode ist manual mode
IF (_eState = E_PackMLState.STOPPED) OR (_eState = E_PackMLState.ABORTED AND eMode = E_PackMLUnitMode.MANUAL) THEN
_eMode := eMode;
END_IF
END_IF
// Base state machine
CASE _eState OF
E_PackMLState.STOPPING:
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.STOPPED:
IF eCmd = E_PackMLCmd.RESET THEN
_eState := E_PackMLState.RESETTING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.RESETTING:
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.IDLE:
IF eCmd = E_PackMLCmd.START THEN
_eState := E_PackMLState.STARTING;
END_IF
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.STARTING:
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.EXECUTE:
IF eCmd = E_PackMLCmd.SUSPEND THEN
_eState := E_PackMLState.SUSPENDING;
END_IF
IF eCmd = E_PackMLCmd.HOLD THEN
_eState := E_PackMLState.HOLDING;
END_IF
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.SUSPENDING:
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.SUSPENDED:
IF eCmd = E_PackMLCmd.UNSUSPEND THEN
_eState := E_PackMLState.UNSUSPENDING;
END_IF
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.UNSUSPENDING:
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.HOLDING:
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.HELD:
IF eCmd = E_PackMLCmd.UNHOLD THEN
_eState := E_PackMLState.UNHOLDING;
END_IF
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.UNHOLDING:
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.COMPLETING:
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.COMPLETE:
IF eCmd = E_PackMLCmd.RESET THEN
_eState := E_PackMLState.RESETTING;
END_IF
IF eCmd = E_PackMLCmd.STOP THEN
_eState := E_PackMLState.STOPPING;
END_IF
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
E_PackMLState.ABORTED:
IF eCmd = E_PackMLCmd.CLEAR THEN
_eState := E_PackMLState.CLEARING;
END_IF
E_PackMLState.CLEARING:
IF eCmd = E_PackMLCmd.ABORT THEN
_eState := E_PackMLState.ABORTING;
END_IF
ELSE
;
END_CASE
// Copy internal state value to fb output
eState := _eState;
eCurrentMode := _eMode;]]></ST>
</Implementation>
<Method Name="M_StateComplete" Id="{e2f1bae5-5059-4baa-8ba2-8dfa58d439e5}">
<Declaration><![CDATA[METHOD M_StateComplete
VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[CASE _eState OF
E_PackMLState.STOPPING:
_eState := E_PackMLState.STOPPED;
E_PackMLState.RESETTING:
_eState := E_PackMLState.IDLE;
E_PackMLState.STARTING:
_eState := E_PackMLState.EXECUTE;
E_PackMLState.EXECUTE:
_eState := E_PackMLState.COMPLETING;
E_PackMLState.SUSPENDING:
_eState := E_PackMLState.SUSPENDED;
E_PackMLState.UNSUSPENDING:
_eState := E_PackMLState.EXECUTE;
E_PackMLState.HOLDING:
_eState := E_PackMLState.HELD;
E_PackMLState.UNHOLDING:
_eState := E_PackMLState.EXECUTE;
E_PackMLState.COMPLETING:
_eState := E_PackMLState.COMPLETE;
E_PackMLState.ABORTING:
_eState := E_PackMLState.ABORTED;
E_PackMLState.CLEARING:
_eState := E_PackMLState.STOPPED;
END_CASE
eState := _eState;]]></ST>
</Implementation>
</Method>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<Itf Name="I_UnitState" Id="{cdb705eb-8c7b-4a1b-b75d-2d038b2142ed}">
<Declaration><![CDATA[INTERFACE I_UnitState
]]></Declaration>
<Method Name="M_Aborted" Id="{60879075-982d-46e3-879f-28a027152492}">
<Declaration><![CDATA[METHOD M_Aborted
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Aborting" Id="{a7f0b039-d3ad-461a-85a2-ba36dbff9c79}">
<Declaration><![CDATA[METHOD M_Aborting
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Clearing" Id="{6299cd97-9cf1-4270-94b0-c0bcc4e1099d}">
<Declaration><![CDATA[METHOD M_Clearing
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Complete" Id="{b3cf5b7a-9a5a-43fd-b325-d4fd150ef337}">
<Declaration><![CDATA[METHOD M_Complete
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Completing" Id="{7c1cb77d-7ca4-41f6-bf62-9389baa6ee7f}">
<Declaration><![CDATA[METHOD M_Completing
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Execute" Id="{03ab6d64-3e16-414d-9136-f9b18ea617be}">
<Declaration><![CDATA[METHOD M_Execute
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Held" Id="{68deb94e-e48b-464f-9c76-8d9ed1bf2546}">
<Declaration><![CDATA[METHOD M_Held
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Holding" Id="{559633b5-914c-40d3-8d33-7376565527fb}">
<Declaration><![CDATA[METHOD M_Holding
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Idle" Id="{67e5973f-2505-422d-bb50-93ce0b57a267}">
<Declaration><![CDATA[METHOD M_Idle
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Resetting" Id="{d1009681-05ba-46d8-97a6-e3edaa95ef55}">
<Declaration><![CDATA[METHOD M_Resetting
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Starting" Id="{a747e482-f90e-45e5-98dc-79e29c5eb846}">
<Declaration><![CDATA[METHOD M_Starting
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Stopped" Id="{4639d90c-8eac-499e-a39a-e21317512d84}">
<Declaration><![CDATA[METHOD M_Stopped
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Stopping" Id="{81d1ced0-30b6-4a0e-b4f0-f2f5159fb0a2}">
<Declaration><![CDATA[METHOD M_Stopping
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Suspended" Id="{d84aeac6-2d41-4eb9-bcab-6c5cf55f051b}">
<Declaration><![CDATA[METHOD M_Suspended
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Suspending" Id="{74fa6a0f-a468-4665-8e53-35af4d69eb0e}">
<Declaration><![CDATA[METHOD M_Suspending
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Unholding" Id="{2cbdd1fc-df75-4e65-b402-0f80d7393bf2}">
<Declaration><![CDATA[METHOD M_Unholding
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Unsuspending" Id="{b50ba50d-d8d9-4340-8bf8-95a965e5f0da}">
<Declaration><![CDATA[METHOD M_Unsuspending
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
</Itf>
</TcPlcObject>

View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<Itf Name="I_UnitStateActing" Id="{c702df5f-1a22-4aea-b488-0fb9e9d6d715}">
<Declaration><![CDATA[INTERFACE I_UnitStateActing
]]></Declaration>
<Method Name="M_Aborting" Id="{7c2f68db-46da-431c-ae3a-645172f1883b}">
<Declaration><![CDATA[METHOD M_Aborting
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Clearing" Id="{9d54d966-edc5-4f21-bd4e-93594fa24900}">
<Declaration><![CDATA[METHOD M_Clearing
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Completing" Id="{58605d4f-0a0c-4fdd-9d50-28facf47e281}">
<Declaration><![CDATA[METHOD M_Completing
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Execute" Id="{ab83a18f-a5bc-4b8f-b1f3-7186449d2761}">
<Declaration><![CDATA[METHOD M_Execute
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Holding" Id="{75e803d4-1308-483e-b7e2-17e7d4b226d0}">
<Declaration><![CDATA[METHOD M_Holding
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Resetting" Id="{0e18ccba-b77b-4b73-8769-7ee43b60219b}">
<Declaration><![CDATA[METHOD M_Resetting
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Starting" Id="{58fc3d45-f33e-4dd2-bcd8-33e9912df38b}">
<Declaration><![CDATA[METHOD M_Starting
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Stopping" Id="{2552a9a7-c44e-4a0f-b543-d0ead71abcad}">
<Declaration><![CDATA[METHOD M_Stopping
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Suspending" Id="{4a4db317-bf30-420e-8759-cbe6735e3cbf}">
<Declaration><![CDATA[METHOD M_Suspending
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Unholding" Id="{0552e45c-941b-4643-88d7-3142a7e014c8}">
<Declaration><![CDATA[METHOD M_Unholding
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Unsuspending" Id="{9b9d5dbc-614c-4f59-9357-18a6be86205d}">
<Declaration><![CDATA[METHOD M_Unsuspending
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
</Itf>
</TcPlcObject>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<Itf Name="I_UnitStateWaiting" Id="{39625219-05f8-4347-91c2-8778ac2bbe52}">
<Declaration><![CDATA[INTERFACE I_UnitStateWaiting
]]></Declaration>
<Method Name="M_Aborted" Id="{e9883017-eee3-45b6-a539-97564bed85bd}">
<Declaration><![CDATA[METHOD M_Aborted
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Complete" Id="{e5ea1a66-0ad7-44f0-8155-f8f6e9fb0869}">
<Declaration><![CDATA[METHOD M_Complete
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Held" Id="{22f78e55-8e74-4d03-b949-ddbec289c616}">
<Declaration><![CDATA[METHOD M_Held
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Idle" Id="{a4192dfa-4513-4296-9d67-360bb2fdd051}">
<Declaration><![CDATA[METHOD M_Idle
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Stopped" Id="{8609190c-90f0-46f9-b5b0-5dddabdfa3b1}">
<Declaration><![CDATA[METHOD M_Stopped
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
<Method Name="M_Suspended" Id="{eeb60c98-c52b-43d3-9d93-2abce6744a61}">
<Declaration><![CDATA[METHOD M_Suspended
VAR_INPUT
END_VAR
]]></Declaration>
</Method>
</Itf>
</TcPlcObject>