Skip to content

Overview

Integration of Beckhoff Kinematic Transformation TF511x into SPT-Framework.

Implementation of kinematic possible from DOF=2 to DOF=6.

The Kinematic implementation consists of 3 Parts:

Kinematic Group - Connects ACS (Physical drives, J1,J2,..) through the Kinematic transformation Objects to the MCS (virtual drives X,Y,Z,...)

Component Kinematic Base - The Kinematic base component contains the framework implementation in addition to basic functions of the kinematic. Here is also where the connected Kinematic is defined e.g. Delta or Scara.

Kinematic Motion Amp - Amp (Advanced Motion Package) Implements extended motion functions for the selected kinematic - uses the Beckhoff Amp for XYZ+(A or B or C) coordinated movements.

Warning

This Object is limited to DOF=4. For DOF>4 Object Camming has to be used.

Info

DOF = Degrees of Freedom

AMP = Advanced Motion Package

CM = Coordinated Motion

ACS = Axis Coordinate System (Joint 1, Joint 2,..)

MCS = Machine Coordinate System (X,Y,Z,Rotation Axis 1,..)

Kinematic Motion Camming - The introduction of Camming TF5050 - Tc2_MC2_Camming enables the Coordinated motion of all ACS Joint axes and the coordinated Motion of MCS for DOF>=5 incl. 6-Axis-Kinematics.

Class Diagram

classDiagram
    FB_KinematicCamming <|.. I_KinematicCamming
    FB_ComponentKinematicMotionCamming <|.. I_KinematicCamming
    FB_ComponentKinematicMotionCamming *-- FB_KinematicCamming
    FB_ComponentKinematicBase <|-- FB_KinematicGroup
    FB_ComponentKinematicBase <|.. I_Kinematic
    FB_ComponentKinematicBase *-- FB_KinematicAxisRef
    FB_KinematicAxisRef <|.. I_KinematicAxisRef
    FB_KinematicGroup <|.. I_KinematicGroup
    FB_KinematicGroup <|-- FB_ComponentBase
    FB_ComponentKinematicMotionCamming <|-- FB_ComponentKinematicBase
    FB_ComponentKinematicMotionAmp <|-- FB_ComponentKinematicBase
    FB_KinematicMotionAmpBase <|-- FB_CyclicFB
    FB_KinematicMotionAmpBase <|.. I_KinematicCm
    FB_ComponentKinematicMotionAmp <|.. I_KinematicCm
    FB_ComponentKinematicMotionAmp *-- FB_KinematicMotionAmpBase
    class I_KinematicAxisRef{
        DegreesOfFreedomConfigured
        AcsAxis 
        McsAxis 
    }
    class FB_KinematicGroup{
            KinematicAxisIds

            ResetKinGroup()
        }
    class I_KinematicGroup{
        <<Interface>>
        KinematicStatus
        KinMetaInfo
        OidKinTrafo

        SetKinematicParameter()

        BuildKinGroup()
        DissolveKInGroup()
    }
    class FB_ComponentKinematicBase{
            iAxisRef : I_KinematicAxisRef;
        }
    class I_Kinematic{
        <<Interface>>
            Override
            Enabled
            InPosition
            Moving
            ActPosition
            DegreesOfFreedomConfigured

            Disable()
            Enable()
            JogCartesianAxis(Axisx,Forward,Backward,JogMode)
            JogJoint(Jointx,Forward,Backward,JogMode)
            Stop()
        }
    class I_KinematicCm{
        <<Interface>>

        CmIdentGroup
        CmState

        DisableCmGroup()
        EnableCmGroup()
        StartMovePath()
        BuildCmGroup()
        UngroupCmGroup()
        ClearPath()

    }
    class FB_KinematicMotionAmpBase{
        CmAxisCount
        CmAxisRef
        CmIdentGroup

        AddCircularMoveToPath()
        AddLinearMoveToPath()
        Reset()
        SetOverride()
        Stop()
    }
    class FB_ComponentKinematicMotionAmp{
        ChangeOccurred
        Points

        MoveToPointCartesian()
        AddCircularMoveToPath()
        AddLinearMoveToPath()
        GetPoint()
        SetPoint()
    }
    class I_KinematicCamming{
        CammingActive

        CamClearPath()
        CamIn()
        CamOut()
        CamStartMovePath()
    }
    class FB_KinematicCamming{
        CamAxisCount
        CamAxisRef

        CamAddPointToPath()
        Disable()
        Enable()
        Reset()
        SetOverride()
        Stop()
    }
    class FB_ComponentKinematicMotionCamming{
        ChangeOccurred
        Points

        CamAddPointToPath()
        GetPoint()
        SetPoint()
    }

State Diagrams

Joint Operations

stateDiagram-v2
    [*] --> Robot

    Robot --> Enabled : Enable()
    Enabled --> Robot : Disable()
    Enabled --> JointMoving : JogJointAxis()
Cartesian Operations with Advanced Motion Package for DOF=2 to DOF=4
stateDiagram-v2
    [*] --> Robot

    Robot --> Enabled_JointMode_ACS : Enable()
    Enabled_JointMode_ACS --> Robot : Disable()


    Robot --> Enabled_CartesianMode_MCS : Enable()

    Enabled_JointMode_ACS --> Enabled_CartesianMode_MCS : BuildKinGroup()
    Enabled_CartesianMode_MCS --> Enabled_JointMode_ACS : DissolveKinGroup()

    Enabled_CartesianMode_MCS --> Robot : Disable()

    Enabled_CartesianMode_MCS --> CartesianAxisMoving : JogCartesianAxis()

    Enabled_CartesianMode_MCS --> CartesianModeCoordinatedMotionXYZC : BuildCmGroup() & EnableCmGroup()
    CartesianModeCoordinatedMotionXYZC --> Enabled_CartesianMode_MCS : DisableCmGroup() & UngroupCmGroup()

    CartesianModeCoordinatedMotionXYZC --> PreparedPath : AddLinearMoveToPath() OR AddCircularMoveToPath()

    PreparedPath --> CartesianModeCoordinatedMotionXYZC: ClearPath()

    PreparedPath --> Moving : StartMovePath()
    Moving --> PreparedPath : Stop()

Joint/Cartesian Operations Camming for DOF=2 to DOF=6

stateDiagram-v2
    [*] --> Robot

    Robot --> Enabled_JointMode_ACS : Enable()
    Enabled_JointMode_ACS --> Robot : Disable()


    Robot --> Enabled_CartesianMode_MCS : Enable()

    Enabled_JointMode_ACS --> Enabled_CartesianMode_MCS : BuildKinGroup()
    Enabled_CartesianMode_MCS --> Enabled_JointMode_ACS : DissolveKinGroup()

    Enabled_CartesianMode_MCS --> Robot : Disable()

    Enabled_CartesianMode_MCS --> CartesianAxisMoving : JogCartesianAxis()


    Enabled_JointMode_ACS --> CammingActive_JointMode_ACS : CamAddPointToPath() & CamIn()
    CammingActive_JointMode_ACS --> Enabled_JointMode_ACS : CamOut() & ClearPath()

    Enabled_CartesianMode_MCS --> CammingActive_CartesianMode_MCS : CamAddPointToPath() & CamIn()
    CammingActive_CartesianMode_MCS --> Enabled_CartesianMode_MCS : CamOut() & ClearPath()

    CammingActive_CartesianMode_MCS --> MCS_Moving : CamStartMovePath()
    MCS_Moving --> CammingActive_CartesianMode_MCS : Stop()

    CammingActive_JointMode_ACS --> ACS_Moving : CamStartMovePath()
    ACS_Moving --> CammingActive_JointMode_ACS : Stop()

Open Objects

The Kinematic Objects are by design fully accessible for the numerous applications possible with the Beckhoff Package.
This requires manual handling of the CM/AMP-States along with the Kinematic States by the user. You can see this in the states-diagrams above.

**This Boot or shutdown sequences can be programmed by extension of the Object in a separate Method if desired. ** E.g. PackML implementation.