Baldor - Dodge - Reliance
Baldor
  Product Quick Search
Baldor
Our job is making yours easier. Worldwide.
HomeLocate DistributorContact UsSite Map
blank.gif
Products Support News/Events About Baldor Investor Relations

Select
Product Category



Example MintMT Application  

This Mint example demonstrates a simple tool changer which determines the shortest path to the next tool. The tool is selected from the digital inputs.

'=======================================================================
' File Name: tool_picker.mnt 

' Baldor 2001 

' Description: 
' Example program showing how an axis may be used to move to a range 
' of discrete positions using the smallest move possible. 
'=======================================================================


'Constant declarations
Const _nNoOfTools = 12 'Number of tools in the machine
Const _nDistanceBetweenTools = 1000 'Distance between each tool (counts) 
Const _mkToolMask = 01111 'Mask for digital inputs 0-3

'Macro declarations
Define ipTrigger = INX.4 'Define the trigger input
Define opInMotion = OUTX.1 'Output for in motion flag to PLC

'Clear any outstanding errors and enable the drive
CANCEL
DRIVEENABLE = 1

'Number of encoder counts per rev of the tool changer
ENCODERWRAP.0 = _nNoOfTools * _nDistanceBetweenTools

'Wait here in a loop to allow the program to run
Loop 
  Pause ipTrigger              'Wait for a trigger to activate
  subPickTool IN & _mkToolMask 'Pick tool based on digital inputs 0-3
  Pause !ipTrigger             'Wait for trigger to deactivate
End Loop

End

'Place the drive configuration parameters here 
'This will be called on program start-up 
Startup


  SCALE = 1         'Assume scaling is in counts
  INPUTMODE = 0     'Setup the I/O - all level triggered
  HOMEINPUT.0 = 5   'The digital input used to mark the home position
  HOMESPEED.0 = 500
  HOMEBACKOFF.0 = 2 'Back-off at half the home speed


End Startup

'This subroutine serves two purposes, firstly to home the tool picker
'when a tool index of zero is supplied, and secondly to pick tools
'when supplied with a non-zero tool index.

Sub subPickTool(ByVal nToolIndex As Integer)
Dim nDistanceToMove

'Check that the tool index is within range
If nToolIndex > _nNoOfTools Then Exit Sub

opInMotion = 1 'Turn on the "in motion" signal

If nToolIndex = 0 Then


  HOME.0 = _hmNEGATIVE_SWITCH 
  Pause IDLE.0
  POS.0 = 0
  ENCODER.0 = 0


Else


  nDistanceToMove = (nToolIndex * _nDistanceBetweenTools) - ENCODER.0


  'The required move distance need never be greater than half a
  'revolution, so add or subtract 1/2 a tool revolution

  If nDistanceToMove > (_nDistanceBetweenTools * _nNoOfTools) / 2 Then
     nDistanceToMove = _

          nDistanceToMove - (_nDistanceBetweenTools * _nNoOfTools)
  Else If nDistanceToMove < -(_nDistanceBetweenTools * _nNoOfTools) / 2 _

  Then
     nDistanceToMove = _

          nDistanceToMove + (_nDistanceBetweenTools * _nNoOfTools)
  End If

  'Perform a relative move to the tool location and wait for completion
  MOVER.0 = nDistanceToMove
  GO.0 : PAUSE IDLE.0
End If

opInMotion = 0 'Turn off the "in motion" signal

End Sub 


'Onerror handler
'Should handle following errors, etc.

Event OnError
Print "Error ", Err, " on line ", Erl
End
End Event