Overview
A modular XPlanar control component function block with minimal overhead built on the XPlanar Standard and XPlanar Utility libraries that can easily scale to custom and/or larger projects. This function block can be used within the SPT PackML framework or any other architecture.
For screenshots and notes on getting started please refer to the following document. SPT_XPlanar Startup Notes.pdf
For and example project refer to the following repository https://github.com/Beckhoff-USA-Community/SPT_XPlanar_Demo
Class Diagram
classDiagram
FB_Component_XPlanar o--|> FB_XPlanarMover
ip --> I_XPlanarMover
FB_XPlanarMover ..|> I_XPlanarMover
FB_Component_XPlanar o--> FB_XPlanarTrackSegment
FB_XPlanarTrackSegment ..|> I_XPlanarTrack
ip --> I_XPlanarTrack
FB_XPlanarStation ..|> I_XPlanarStation
ip --> I_XPlanarStation
I_XPlanarMover o--|> I_XPlanarStation
class FB_Component_XPlanar{
BOOL BuildTracks()
BOOL CheckMovers()
BOOL CheckTilePower()
BOOL DisableMovers()
BOOL EnableGroup()
BOOL EnableMovers(AddToGroup)
BOOL EnableTracks(AddToGroup)
BOOL MoverRedetect()
BOOL Recover()
BOOL Reset()
CreateEvents()
HMICommunication()
Monitoring()
CyclicLogic()
}
class I_XPlanarMover{
UDINT DestinationID
REFERENCE_TO ST_MoveDynamics MoveDynamics
STRING MoverID
UDINT MoverIndex
I_XPlanarMoverStandard std
UDINT TrackID
BOOL Index(LREAL:Distance)
BOOL JoinTrack(UDINT:TrackID)
BOOL LeaveTrack(LREAL:DestinationX, LREAL:DestinationY)
BOOL SendToStation(UDINT:StationID)
BOOL Spin(UDINT:NumOfTurns)
BOOL SquareUp()
BOOL Tilt(LREAL:APosition, LREAL:BPosition)
BOOL VerticalMove(LREAL:Position)
BOOL Reset()
BOOL ClearCmd()
}
class FB_XPlanarMover{
CyclicLogic()
HMICommunication()
}
class I_XPlanarStation{
BOOL AllowQueing
BOOL CanReleaseMover
BOOL HasMover
BOOL MoverReady
BOOL StationComplete
UDINT NextStationID
UDINT StationID
UDINT TrackID
UDINT Size
REFERENCE_TO ARRAY[1..MOVER_COUNT] OF I_Mover
REFERENCE_TO PositionXYC Position
I_Process ProcessInterface
I_Mover CurrentMover
BOOL Execute()
}
class FB_XPlanarStation{
BOOL Prepare()
CyclicLogic()
Execute()
}
class I_XPlanarTrack{
BOOL Error
STRING ErrorInfo
UDINT ID
UDINT MoverCount
LREAL TrackLength
I_TrackStandard ref
REFERENCE_TO FB_TrackTable TrackTable
MC_PLANAR_TRACK_OPERATION_MODE OpMode
BOOL Clear()
}
class FB_XPlanarTrackSegment{
BOOL Build()
BOOL Clear()
CyclicLogic()
}
class ip{
Tracks : ARRAY[1..Tc3_XPlanarComponent.Params_XPlanar.maxTrackCount] of I_Track
Movers : ARRAY[1..Tc3_XPlanarComponent.Params_XPlanar.moverCount] of I_Mover
Stations : ARRAY[1..Tc3_XPlanarComponent.Params_XPlanar.maxNumStations] of I_Station
}