This commit is contained in:
2026-02-11 16:32:03 +01:00
parent 69ef2c6904
commit d6a4fc6e42
6 changed files with 194 additions and 51 deletions

View File

@@ -2,7 +2,7 @@
<TcModuleClass> <TcModuleClass>
<DataTypes> <DataTypes>
<DataType> <DataType>
<Name GUID="{339BB0B6-ADBA-4B47-8EE3-13A207970890}">KukaRobot</Name> <Name GUID="{41663E72-28F8-4E92-AC1A-8F6F55BA9D6D}">KukaRobot</Name>
<DisplayName TxtId=""><![CDATA[NewEventClass_DisplayText]]></DisplayName> <DisplayName TxtId=""><![CDATA[NewEventClass_DisplayText]]></DisplayName>
<EventId> <EventId>
<Name Id="1">NotInExtMode</Name> <Name Id="1">NotInExtMode</Name>
@@ -29,6 +29,111 @@
<DisplayName TxtId=""><![CDATA[Robot drives enable timeout]]></DisplayName> <DisplayName TxtId=""><![CDATA[Robot drives enable timeout]]></DisplayName>
<Severity>Error</Severity> <Severity>Error</Severity>
</EventId> </EventId>
<EventId>
<Name Id="16">VacuumGripper2NotDisabled</Name>
<DisplayName TxtId=""><![CDATA[Vacuum gripper 2 could not be disabled]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="6">KukaSystemError</Name>
<DisplayName TxtId=""><![CDATA[Kuka system error]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="7">UnsafePosition</Name>
<DisplayName TxtId=""><![CDATA[Robot not in safe position]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="8">UndefinedJobNumber</Name>
<DisplayName TxtId=""><![CDATA[Job number not defined]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="9">JobNotPossible</Name>
<DisplayName TxtId=""><![CDATA[Job not possible]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="10">WrongJobGripperNumber</Name>
<DisplayName TxtId=""><![CDATA[Wrong job gripper number]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="11">PLCJobError</Name>
<DisplayName TxtId=""><![CDATA[PLC job not executed]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="12">LostVacuumJobAborted</Name>
<DisplayName TxtId=""><![CDATA[Vacuum lost, job aborted]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="13">NoVacuumGripper1</Name>
<DisplayName TxtId=""><![CDATA[Vacuum gripper 1 not established]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="14">NoVacuumGripper2</Name>
<DisplayName TxtId=""><![CDATA[Vacuum gripper 2 not established]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="15">VacuumGripper1NotDisabled</Name>
<DisplayName TxtId=""><![CDATA[Vacuum gripper 1 could not be disabled]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="17">ToolChangerNotClosed</Name>
<DisplayName TxtId=""><![CDATA[Tool changer could not be closed]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="18">ToolChangerNotOpen</Name>
<DisplayName TxtId=""><![CDATA[Tool changer could not be opened]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="19">WrongXCoord</Name>
<DisplayName TxtId=""><![CDATA[Wrong X coordinate]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="20">WrongYCoord</Name>
<DisplayName TxtId=""><![CDATA[Wrong Y coordinate]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="21">WrongThickness</Name>
<DisplayName TxtId=""><![CDATA[Wrong thickness]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="22">WrongGripperNumber</Name>
<DisplayName TxtId=""><![CDATA[Wrong gripper number]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="23">WrongChuckNumber</Name>
<DisplayName TxtId=""><![CDATA[Wrong chuck number]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="24">WrongPlaceHotplate</Name>
<DisplayName TxtId=""><![CDATA[Wrong place number hotplate]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="25">WrongPlaceCoolplate</Name>
<DisplayName TxtId=""><![CDATA[Wrong place coolplate]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="26">ImplausibleGripperSignals</Name>
<DisplayName TxtId=""><![CDATA[Implausible gripper signals]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<Hides> <Hides>
<Hide GUID="{456A0777-3241-483C-B513-164C5A2791FC}"/> <Hide GUID="{456A0777-3241-483C-B513-164C5A2791FC}"/>
<Hide GUID="{8667E78C-B458-4844-A8FF-6F6F9FAB3AD8}"/> <Hide GUID="{8667E78C-B458-4844-A8FF-6F6F9FAB3AD8}"/>
@@ -37,6 +142,25 @@
<Hide GUID="{F663CA49-4C12-4553-8D89-6771B31CACAF}"/> <Hide GUID="{F663CA49-4C12-4553-8D89-6771B31CACAF}"/>
<Hide GUID="{50756BBB-BCBF-4D48-B02D-A67D3118B1C3}"/> <Hide GUID="{50756BBB-BCBF-4D48-B02D-A67D3118B1C3}"/>
<Hide GUID="{BDB0FE5C-F185-4694-A82E-41F8D3A78B4B}"/> <Hide GUID="{BDB0FE5C-F185-4694-A82E-41F8D3A78B4B}"/>
<Hide GUID="{339BB0B6-ADBA-4B47-8EE3-13A207970890}"/>
<Hide GUID="{63A9F042-8C78-4480-8165-A1F02C1E8329}"/>
<Hide GUID="{1C0DDD31-BB83-48E3-BBAD-09C5C7E5C36B}"/>
<Hide GUID="{81B08264-3E36-46C7-B5D6-5BEA71F2D229}"/>
<Hide GUID="{CEE5A46D-258E-4698-81AE-27AD8A205863}"/>
<Hide GUID="{FC0B4053-3B55-47DE-AA54-453D89F452C2}"/>
<Hide GUID="{4C1816BA-F7B2-4E4B-9441-88CA54BF8331}"/>
<Hide GUID="{901D4897-8A53-421C-8751-7C21384EAE7F}"/>
<Hide GUID="{18824BFA-66EB-4C51-BCEB-C4FC0D8759BE}"/>
<Hide GUID="{AC854569-C563-402F-A24C-919C4980BD89}"/>
<Hide GUID="{45C0A4B3-77DB-4B68-B356-B82AB730CFE4}"/>
<Hide GUID="{4D41903F-1C22-439D-B927-F935A0D758D7}"/>
<Hide GUID="{CF892B76-9002-40B4-B5B9-BE336E9969FB}"/>
<Hide GUID="{3C6F1E48-473D-4785-90F2-9D39F352F8E0}"/>
<Hide GUID="{CCB3B9B4-0466-4933-BE4B-8F17179F7BB6}"/>
<Hide GUID="{7719E5BE-8AD7-47BA-A3DD-87285696CD79}"/>
<Hide GUID="{29E3A83B-DAF1-4873-919F-E7C8F007ACAD}"/>
<Hide GUID="{FA039875-23CD-4325-8CA9-B14FADA92FFA}"/>
<Hide GUID="{96196A41-758B-4248-8C31-DA1C8BC623CC}"/>
</Hides> </Hides>
</DataType> </DataType>
</DataTypes> </DataTypes>

View File

@@ -172,6 +172,7 @@ M_HandlePLCJobs();
xReady := _xRobotReady; xReady := _xRobotReady;
xError := _xError;]]></ST> xError := _xError;]]></ST>
</Implementation> </Implementation>
<Folder Name="StateMachine" Id="{66d46722-f002-4d97-ae1f-63dcdad370cb}" />
<Method Name="FB_Init" Id="{71a3f6f0-d3bb-4348-acc7-be533d7488d2}"> <Method Name="FB_Init" Id="{71a3f6f0-d3bb-4348-acc7-be533d7488d2}">
<Declaration><![CDATA[//FB_Init ist immer implizit verfügbar und wird primär für die Initialisierung verwendet. <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 //Der Rückgabewert wird nicht ausgewertet. Für gezielte Einflussnahme können Sie
@@ -191,7 +192,7 @@ _stSMConfig.xCompletedDisabled := TRUE;
_stSMConfig.xAbortingDisabled := TRUE;]]></ST> _stSMConfig.xAbortingDisabled := TRUE;]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Aborted" Id="{0c0c17ce-5c1c-4640-9d39-f25b22309d5d}"> <Method Name="M_Aborted" Id="{0c0c17ce-5c1c-4640-9d39-f25b22309d5d}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Aborted <Declaration><![CDATA[METHOD PROTECTED M_Aborted
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
@@ -208,7 +209,7 @@ stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumerPLC.NO_JOB;]]></ST> stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumerPLC.NO_JOB;]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Clearing" Id="{e6152288-8c7d-4b38-bfbc-4f861d76ccc5}"> <Method Name="M_Clearing" Id="{e6152288-8c7d-4b38-bfbc-4f861d76ccc5}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Clearing <Declaration><![CDATA[METHOD PROTECTED M_Clearing
VAR_INST VAR_INST
_tonWait : TON; _tonWait : TON;
@@ -226,7 +227,7 @@ END_IF
]]></ST> ]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Execute" Id="{bc86876c-a8db-4285-b95c-7c6858a2ca66}"> <Method Name="M_Execute" Id="{bc86876c-a8db-4285-b95c-7c6858a2ca66}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Execute <Declaration><![CDATA[METHOD PROTECTED M_Execute
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
@@ -299,14 +300,14 @@ THEN
END_IF]]></ST> END_IF]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Held" Id="{22ddbad0-0b66-427e-a2aa-f177f8adbc94}"> <Method Name="M_Held" Id="{22ddbad0-0b66-427e-a2aa-f177f8adbc94}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Held <Declaration><![CDATA[METHOD PROTECTED M_Held
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[]]></ST> <ST><![CDATA[]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Holding" Id="{ff8c2c8e-1fe0-4c63-ad7b-790d72bd9217}"> <Method Name="M_Holding" Id="{ff8c2c8e-1fe0-4c63-ad7b-790d72bd9217}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Holding <Declaration><![CDATA[METHOD PROTECTED M_Holding
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
@@ -318,14 +319,14 @@ END_IF
]]></ST> ]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Idle" Id="{025437ab-beb0-4ad6-bdc3-468dec599ff4}"> <Method Name="M_Idle" Id="{025437ab-beb0-4ad6-bdc3-468dec599ff4}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Idle <Declaration><![CDATA[METHOD PROTECTED M_Idle
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[_stJobParams := stJobParams;]]></ST> <ST><![CDATA[_stJobParams := stJobParams;]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Resetting" Id="{dfe4d36a-80aa-4364-bfd8-6ddd41636d59}"> <Method Name="M_Resetting" Id="{dfe4d36a-80aa-4364-bfd8-6ddd41636d59}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Resetting <Declaration><![CDATA[METHOD PROTECTED M_Resetting
VAR_INST VAR_INST
_tonTimeout : TON; _tonTimeout : TON;
@@ -412,7 +413,7 @@ CASE _iSSM OF
END_CASE]]></ST> END_CASE]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Starting" Id="{011f85d8-1225-4288-876f-918df6e4f235}"> <Method Name="M_Starting" Id="{011f85d8-1225-4288-876f-918df6e4f235}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Starting <Declaration><![CDATA[METHOD PROTECTED M_Starting
VAR_INST VAR_INST
_tonTimeout : TON; _tonTimeout : TON;
@@ -512,7 +513,7 @@ END_CASE
]]></ST> ]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Stopped" Id="{50813767-4bd7-4147-b5dc-1bbd18ae1555}"> <Method Name="M_Stopped" Id="{50813767-4bd7-4147-b5dc-1bbd18ae1555}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Stopped <Declaration><![CDATA[METHOD PROTECTED M_Stopped
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
@@ -525,21 +526,21 @@ stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
_ePlcJob := E_KukaRobot_JobNumerPLC.NO_JOB;]]></ST> _ePlcJob := E_KukaRobot_JobNumerPLC.NO_JOB;]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Suspended" Id="{c2db015c-1cd0-491a-8ce6-6c0bffba7631}"> <Method Name="M_Suspended" Id="{c2db015c-1cd0-491a-8ce6-6c0bffba7631}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Suspended <Declaration><![CDATA[METHOD PROTECTED M_Suspended
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[]]></ST> <ST><![CDATA[]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Suspending" Id="{5b0e5227-d5bb-40c6-a1b8-8e81b852b9b9}"> <Method Name="M_Suspending" Id="{5b0e5227-d5bb-40c6-a1b8-8e81b852b9b9}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Suspending <Declaration><![CDATA[METHOD PROTECTED M_Suspending
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[]]></ST> <ST><![CDATA[]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Unholding" Id="{786f4949-9630-4ace-9e30-65bea4e87cb2}"> <Method Name="M_Unholding" Id="{786f4949-9630-4ace-9e30-65bea4e87cb2}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Unholding <Declaration><![CDATA[METHOD PROTECTED M_Unholding
VAR_INST VAR_INST
_tonTimeout : TON; _tonTimeout : TON;
@@ -609,7 +610,7 @@ CASE _iSSM OF
END_CASE]]></ST> END_CASE]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Unsuspending" Id="{d7ce33fd-cd94-44f1-9289-25a3ab3829eb}"> <Method Name="M_Unsuspending" Id="{d7ce33fd-cd94-44f1-9289-25a3ab3829eb}" FolderPath="StateMachine\">
<Declaration><![CDATA[METHOD PROTECTED M_Unsuspending <Declaration><![CDATA[METHOD PROTECTED M_Unsuspending
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>

View File

@@ -225,7 +225,7 @@ _xRunSMAgain := FALSE;
_iState := 40; _iState := 40;
END_IF END_IF
// Didnt receive command ack in time // Didn't receive command ack in time
// So resend the command if max retries are not reached // So resend the command if max retries are not reached
IF _tonReceiveTimeout.Q THEN IF _tonReceiveTimeout.Q THEN
_xEnableReceiveTimeout := FALSE; _xEnableReceiveTimeout := FALSE;
@@ -235,7 +235,7 @@ _xRunSMAgain := FALSE;
IF _uiRetries > MAX_RETRIES THEN IF _uiRetries > MAX_RETRIES THEN
_iState := 90; _iState := 90;
ELSE ELSE
// Retry by sendind command again // Retry by sending command again
_iState := 20; _iState := 20;
END_IF END_IF
END_IF END_IF
@@ -368,6 +368,7 @@ _iCmdLength := LEN(sCmd);
// start sendind command state machine // start sendind command state machine
_xSendCmd := TRUE; _xSendCmd := TRUE;
_xBusy := TRUE;
M_SendCmd := TRUE;]]></ST> M_SendCmd := TRUE;]]></ST>
</Implementation> </Implementation>

View File

@@ -12,10 +12,6 @@ VAR
_udiPort : UDINT; _udiPort : UDINT;
_fbProtocolHandler : FB_TFProtocol; _fbProtocolHandler : FB_TFProtocol;
_xTest : BOOL;
_xSendResult : BOOL;
_sCmd : STRING := 'STAT-FEED:';
END_VAR END_VAR
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
@@ -31,12 +27,6 @@ _fbProtocolHandler(
xBusy=> , xBusy=> ,
xError=> ); xError=> );
IF _xTest THEN
_xTest := FALSE;
_xSendResult := _fbProtocolHandler.M_SendCmd(sCmd := _sCmd);
END_IF
// Call isa88 base state machine // Call isa88 base state machine
SUPER^();]]></ST> SUPER^();]]></ST>
</Implementation> </Implementation>
@@ -63,9 +53,44 @@ _stSMConfig.xStoppingDisabled := TRUE;
_stSMConfig.xCompletingDisabled := TRUE; _stSMConfig.xCompletingDisabled := TRUE;
_stSMConfig.xCompletedDisabled := TRUE; _stSMConfig.xCompletedDisabled := TRUE;
_stSMConfig.xHeldDisabled := TRUE;
_stSMConfig.xSuspededDisabled := TRUE;
_stSMConfig.xAbortingDisabled := TRUE;]]></ST> _stSMConfig.xAbortingDisabled := TRUE;]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Method Name="M_Resetting" Id="{d821c17b-c2d1-4267-b49d-1f82be218ca5}">
<Declaration><![CDATA[METHOD PROTECTED M_Resetting
]]></Declaration>
<Implementation>
<ST><![CDATA[CASE _iSSM OF
// Check state of connection
0:
IF _fbProtocolHandler.xConnected THEN
_iSSM := 10;
ELSE
_eCmd := E_PackMLCmd.STOP;
END_IF
// Send reset command
10:
IF _fbProtocolHandler.M_SendCmd('SYST-RESE') THEN
_iSSM := 20;
ELSE
_eCmd := E_PackMLCmd.STOP;
END_IF
// Wait for reset command to be finished
20:
IF (NOT _fbProtocolHandler.xBusy) AND (NOT _fbProtocolHandler.xError) THEN
M_StateComplete();
END_IF
IF _fbProtocolHandler.xError THEN
_eCmd := E_PackMLCmd.STOP;
END_IF
END_CASE]]></ST>
</Implementation>
</Method>
</POU> </POU>
</TcPlcObject> </TcPlcObject>

File diff suppressed because one or more lines are too long

View File

@@ -19,14 +19,6 @@
</OwnerB> </OwnerB>
</OwnerA> </OwnerA>
</UnrestoredVarLinks> </UnrestoredVarLinks>
<UnrestoredVarLinks ImportTime="2026-02-05T10:33:22">
<OwnerA Name="InputDst" Prefix="TIPC^PLC^PLC Instance" Type="1">
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
<Link VarA="PRG_Main._fbAligner.diXOffset" TypeA="UDINT" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000008}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7" RestoreInfo="TypeMismatch" OldTypeA="UDINT" OldGuidA="{18071995-0000-0000-0000-000000000008}" NewTypeA="DINT" NewGuidA="{18071995-0000-0000-0000-000000000009}"/>
<Link VarA="PRG_Main._fbAligner.diYOffset" TypeA="UDINT" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000008}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8" RestoreInfo="TypeMismatch" OldTypeA="UDINT" OldGuidA="{18071995-0000-0000-0000-000000000008}" NewTypeA="DINT" NewGuidA="{18071995-0000-0000-0000-000000000009}"/>
</OwnerB>
</OwnerA>
</UnrestoredVarLinks>
<Contexts> <Contexts>
<Context> <Context>
<Id>0</Id> <Id>0</Id>