Skip to content

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
    }