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.