0.001mm FUNCTION_BLOCK FINAL FB_KukaRobot EXTENDS FB_PackMLGeneric VAR_INPUT xConfirmAlarms : BOOL; END_VAR VAR_OUTPUT xReady : BOOL; xError : BOOL; END_VAR VAR // 0 - Nicht aus // 1 - Enable // 2 - Enable move // 3 - Conf_Mess (Reset) _uCtrl AT %Q* : U_KukaRobot_Ctrl; // 0 -> Robot job to do // 1 -> PLC job which is finished _uJobs AT %Q* : U_KukaRobot_Jobs; // 0 - Greifer nummer // 1 - Drehteller Nummer // 2 - Position Heizplatte // 3 - Position Kuehlplatte _abToolsAndPositions AT %Q* : ARRAY[0..3] OF BYTE; // Positions in um _diOffsetPosX AT %Q* : DINT; _diOffsetPosY AT %Q* : DINT; _diThickness AT %Q* : DINT; // Inputs _uState AT %I* : U_KukaRobot_State; _dwErrorBits AT %I* : DWORD; _awJobStatesFromRobot AT %I* : ARRAY[0..1] OF WORD; _dwJobForPLC AT %I* : DWORD; _abMirrorToolsAndPositions AT %I* : ARRAY[0..3] OF BYTE; // Position mirrors _diMirrorOffsetPosX AT %I* : DINT; _diMirrorOffsetPosY AT %I* : DINT; _diMirrorThickness AT %I* : DINT; // Motortemperaturen _asiMotorTemps1To4 AT %I* : ARRAY[0..3] OF SINT; _asiMotorTemps5To8 AT %I* : ARRAY[0..3] OF SINT; _eRobotJob : E_KukaRobot_JobNumberRobot; _ePlcJob :E_KukaRobot_JobNumerPLC; _xRobotReady : BOOL; _xError : BOOL; // ====== // Alarms // ====== _fbAlarmNotInExtMode : FB_AlarmMessage(stEventEntry := TC_EVENTS.RobotEvents.RobotNotInExtMode, xWithConfirmation := FALSE); _fbAlarmEStopActive : FB_AlarmMessage(stEventEntry := TC_EVENTS.RobotEvents.RobotEStopActive, xWithConfirmation := FALSE); _fbAlarmOperatorSafetyNotOk : FB_AlarmMessage(stEventEntry := TC_EVENTS.RobotEvents.OperatorSafetyNotOk, xWithConfirmation := FALSE); END_VAR ]]>