Home|Services|Programming

Address:

Unit 6,
Lawson Hunt Industrial Park
Guildford Road
Broadbridge Heath
Horsham
West Sussex
RH12 3JR
UNITED KINGDOM


Telephone +44 (0)1403 755800
Fax +44 (0)1403 755810



Ixthus
B & L
Variohm Eurosensor
Variohm Holdings
shutterstock 503131 pink

Latest News

The Next Generation Controller Has Arrived!

Introducing the FlexDC Motion Controller-Nanomotion's New High Performance Single/Multi-Axis Controller Driver....

Read more

Neat and Complete X-Y Positioning and Control Solution from Heason

Heason Technology, the leading precision motion specialists have combined positioning mechanics, integrated stepper motor/drives a...

Read more

Nanomotion's Z-Axis Auto Focus Stage

High performance miniature motorised translation stage combines ceramic motor, encoder, precision bearings and counterbalance....

Read more

Higher Speed, Smoother Motion.

Anthony Best Dynamics turned to leading independent precision motion specialists Heason Technology for rotary actuators as its cus...

Read more

Programming


Motion Control Application & HMI Programming

shutterstock 519884 square

Heason Technology has a wealth of experience programming motion controllers and HMI's for custom applications.  Our System Analysis are highly experienced at defining the machine's functional requirements and preparing detailed top-down operational specifications capturing all essential aspects of functionallity; including:

  • Motion Control
  • IO Operation & Interaction
  • Operator Control
  • Diagnostics
  • Operational Statistics

Heason Technology uses proven structured design methologies for software development ensuring throughly proven and reliable code.

Software deliverables normally include complied machine code, commented source code and a full documentation pack plus detailed code "hand-over" briefings allowing customers and/or end-user to take program "ownership" and, if required, responsbility for on-going future code development.

*

Example MintMT Application Code

chip

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

The complete application description is available for download by clicking here.

*

NextMoveESB

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

' 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

*

Freephone 0800 374903

Call Heason now to discuss your motion programming requirements

*