Load a relative move of 10 units Trigger the motion. Load a relative move of 10 units Load a relative move of 20 units Trigger the motion

Similar documents
Comms. Serial Communication

Motion Control Products Application note Connecting to e100 products from a remote location AN

Motion Control Products Application note Implementing safety functions on ABB servo drives

AN Capture position, encoder or stepper values via simple to use high speed latching features

Motion Control Products Application note Connecting CP600 to motion products via Modbus TCP

AN Connecting NextMoveESB to a MicroFlex Drive in Speed Mode

Please refer to application note AN00129 for further details on HCP2 configuration in ABB motion control products.

AN Use Beckhoff TwinCAT System Manager to configure EtherCAT masters for control of ABB MicroFlex e150 servo drives

Motion Control Products Application note Ethernet POWERLINK routing using the MotiFlex e180

Mint User Manuals Errata

Motion Control Products Application note Ethernet POWERLINK routing using motion drives

Mach4 CNC Controller Mill Programming Guide Version 1.0

Inclusion of Modbus protocol support as standard makes integration of ABB products with any other Modbus RTU/TCP device as simple as possible

Motion Control Products Application note Dual encoder feedback control on motion drives

Path Objects. Introduction. Methods. Data Types. Create, Delete, Validate Methods. Configuration and Information Methods. Relational Methods

Motion Control Products Application note Connecting CP600 to motion products via Modbus RTU

Motion Control Products Application note Connecting CP600 to motion products via Modbus RTU

AN : Getting started with e100

UItiMotion. Paul J. Gray, Ph.D. Manager Path Planning Front-End Design R&D

WMX Parameter Manual

G & M Code REFERENCE MANUAL. Specializing in CNC Automation and Motion Control

Developing Motion Systems in Measurement Studio for Visual Basic

Mach4 CNC Controller Mill Programming Guide Version 1.1 Build 3775

DISTANCE-TIME GRAPHS Plotting distance against time can tell you a lot about motion. Let's look at the axes:

CHAPTER 12. CNC Program Codes. Miscellaneous CNC Program Symbols. D - Tool Diameter Offset Number. E - Select Work Coordinate System.

Mach4 CNC Controller Lathe Programming Guide Version 1.0

Addendum for Acromill 15.00

In combination with the NextMove e100 they provide an ideal solution to many machine applications and are ideal components for machine builders.

SINUMERIK 810D / 840D SHOPTURN. A. Grözinger: Demo Workpiece

Following Statements FOL. Descriptor. These statements are designed to be used with the Model 4000-CFM Option.

Part Programming Manual MACHINEMATE

Motion Control Products Application note How to display a page to indicate communication error

Positioning Controller

CIRCULAR INTERPOLATION COMMANDS

Advanced Motion Solutions Using Simple Superposition Technique

Range Imaging Through Triangulation. Range Imaging Through Triangulation. Range Imaging Through Triangulation. Range Imaging Through Triangulation

CNC 8055 MC EXAMPLES MANUAL REF Ref. 0601

Linear Interpolation and Dwell Cycle. Dr. Belal Gharaibeh

Automation solutions Drives, PLC, motion, motors and safety

^1 EZ-QMAC Setup Software

Galil Motion Control. DMC - 42x0. Datasheet

^2 Turbo PMAC / PMAC2

DIFFERENCES FROM SERIES 0i-C

MELDAS, MELDASMAGIC, and MELSEC are registered trademarks of Mitsubishi Electric Corporation. The other company names and product names are

Motion Graphs. Plotting distance against time can tell you a lot about motion. Let's look at the axes:

GE Fanuc Automation. Series 16i / 18i / 21i Model TA Manual Guide. Computer Numerical Control Products. Operator's Manual

Mach4 Lathe G-Code and M-Code Reference

Technological Data. How Can the Technological Data Coupling Be Used with the Drive? (Available for SIMOTION SCOUT V3.2 or later)

Motion Control Products Application note MotiFlex e180 PROFINET configuration AN

4 Interpolated Position Mode

Xbox gamepad CNC pendant user manual

The probe unit is controlled via an AX5000 configuration dialog. In multi-channel devices a probe unit is available for each channel.

ADVANCED TECHNIQUES APPENDIX A

Service & Support. How can a Simple Palletizer be realized with the FB 488 MC_MovePath Technology Function? Technology CPU.

Motion Analysis. Motion analysis. Now we will talk about. Differential Motion Analysis. Motion analysis. Difference Pictures

5-Axis Flex Track Drilling Systems on Complex Contours: Solutions for Position Control

Application Case. Application: Delta s AC Servo System on Robot Arms for CNC Machine Tools. Issued by Solution Center Date March 2013 Pages 5

RobWin7 instruction manual

CSC227: Operating Systems Fall Chapter 1 INTERRUPTS. Dr. Soha S. Zaghloul

Sphero Lightning Lab Cheat Sheet

HAAS AUTOMATION, INC.

SOFTWARE. CAD / CAM software. Interpreter software. Programming software. Software and control organization... D-2

Motion Graphs. Plotting position against time can tell you a lot about motion. Let's look at the axes:

Application Note #3412

Century Star Turning CNC System. Programming Guide

Keypad Lay-out. Copyright 2008 Optimal Engineering Systems, Inc

Mach3. Mach3 Gcode Manual Ultimate Screen Reference Guide

DCP - Interface. Dynavert L. Technical Description July 2010 (Draft) Dynavert

Position-Control Module for MICREX-SX Series

What's New in VisualCAM 2019 for SOLIDWORKS

Using Capacitance Probes to Measure the Limit of Machine Contouring Performance

Warranty. Student Workbook for Three-Axis Systems

SOFTWARE KR C... User Programming. KUKA System Software (KSS) Release 4.1. Issued: 14 Jul 2003 Version: 03. ProgAnwenderR en.

High Precision Drive Synchronisation with CANopen

Technical Document:QCI-TD044. QuickSilver Controls, Inc. Interpolated Motion

PROBLEMS AND EXERCISES PROBLEMS

RMCWin. WalkThrough. This document is intended for walking through RMCWin with customers over the telephone/internet.

Reference: KUKA KR User Manual

General Description. Galil Controllers

Graph Matching OBJECTIVES MATERIALS. Lab Activity #3(50 pts)

DELTA TAU Data Systems, Inc.

Predictable pointer acceleration

Software designed to work seamlessly with your CNC Masters machine. Made to work with Windows PC. Works with standard USB

Lesson 4 Introduction To Programming Words

What's New in RhinoCAM 2019

Touch Control Panels. Precision Built Solutions

Using LoggerPro. Nothing is more terrible than to see ignorance in action. J. W. Goethe ( )

Conversational Programming for 6000M, 5000M CNC

NcStudio Programming Manual

GRBL Configuration Explained

KOLLMORGEN. SERVOSTAR CD. SERCOS IDN Manual M-SS rev. F. Solutions by D A N A H E R M O T I O N

Modbus User Manual APPLIED MOTION PRODUCTS, INC. Modbus is a registered trademark of Schneider Electric, licensed to the Modbus Organization, Inc.

6000i CNC User s Manual

Turning ISO Dialect T

IEEM 215. Manufacturing Processes I Introduction to the ARIX CNC milling machine

Section 20: Graphics

CNC 8055 T. Error solution. Ref.1705

COPYCAT NEW FANGLED SOLUTIONS 2/6/2009

Dave s Phenomenal Maya Cheat Sheet Polygon Modeling Menu Set By David Schneider

3000M CNC Programming and Operations Manual for Two-Axis Systems

Transcription:

Motion Control Products Application note Using the move buffer AN00117-003 One of the powerful features of Mint is the move buffer. The move buffer allows multiple moves to be loaded in advance and triggered on demand. It allows many axes to be synchronised together and complex interpolated move types to be performed. Moves can be contoured together to make smooth paths, and feedrate control allows these moves to be performed with differing speeds and accelerations. Moves can also be blended together in order to reduce motion time. The move buffer can even inform a Mint program when it needs restocking Loading and triggering moves When a move command is issued, the move is stored in, and executed from, the move buffer. To start the move off, called triggering, the GO keyword is one method that can be used. For example: Trigger the motion For some move types, it is possible to load more than one move at once. For example: MOVER(0) = 20 Load a relative move of 20 units Trigger the motion Here, two moves are loaded into the buffer and then triggered. The GO keyword will trigger all moves currently loaded in the move buffer so it only needs to be called once. The axis will move forward 10 units and stop. The axis will then move forward another 20 units. The GO keyword can also be used to synchronise motion on multiple axes. For example, the following code will start motion on axes 0 and 1 simultaneously: on axis 0 MOVER(1) = 20 Load a relative move of 20 units on axis 1 Trigger the motion on axes 0 and 1 Sometimes it is inconvenient to trigger every move as it is loaded into the move buffer. The TRIGGERMODE keyword can be used to enable automatic triggering. This means that a move begins to execute as soon as it is loaded into the move buffer. ABB Motion control products 1

TRIGGERMODE(0) = _trauto Enable automatic triggering MOVER(0) = 20 Load and start a relative move of 20 units There are many other ways to trigger moves that have been loaded into the move buffer (e.g. it is possible to trigger motion on an axis when an encoder passes a particular value). Please refer to the TRIGGERMODE keyword in the Mint help system for further details. Sizing the move buffer Each axis has its own move buffer which can be set to a user defined size. For some move types, many moves can be loaded in advance, for others, only one move can be loaded. Mint will only halt program execution when it reaches a command that affects the move buffer, such as trying to load a move when the move buffer is full. It is important to make sure that your code will always trigger motion before the move buffer becomes full otherwise program execution (in that particular task) will halt. The following code segment shows this behaviour: Insufficient move buffer size MOVEBUFFERSIZE(0) = 2 MOVEA(0) = 10 MOVEA(0) = 20 Execution would halt here MOVEA(0) = 30 Sufficient move buffer size MOVEBUFFERSIZE(0) = 3 MOVEA(0) = 10 MOVEA(0) = 20 MOVEA(0) = 30 Where the move buffer size is set to two, after two moves have been loaded, program execution will pause (within the task) until a space in the buffer becomes available to load the third move. Where the move buffer size is set to three, the program flow is not halted. A large move buffer size is required when moves are to be contoured together, so that the axes do not start and stop between each move. Increasing the move buffer size does increase memory usage and will slow Mint slightly. The move buffer size should be set in the Startup block of the Mint program before any axes are enabled. As well as there being a limit on the move buffer size per axis, there is also a limit for the total move buffer size for the controller as a whole (e.g. a NextMove e100 should be limited to 400 move buffer spaces in total). Restocking the move buffer Where moves are repeatedly loaded, it may not be practical to allocate the move buffer large enough to contain all the moves. The number of free spaces in the buffer can be read with the MOVEBUFFERFREE keyword. In the following example, moves are loaded using the Comms array. Position is written out to a keypad so program execution cannot be allowed to stop. Loop Wait until data valid flag (Comms location 1) and there is space in the buffer If (COMMS(1) = 1) And (MOVEBUFFERFREE(0) > 0) Then MOVER(0) = COMMS(2) Load move with data (Comms location 2) COMMS(1) = 0 Indicate to host that move is loaded EndIf Print #3, Pos =, POS(0) Keypad is assigned to terminal 3 End Loop Automatically restocking the move buffer (NextMove, MotiFlex e180 and MicroFlex e190) To lessen the work involved in checking and keeping the move buffer stocked with moves, Mint can generate an event when the number of free spaces in the move buffer reaches a threshold. Moves can be loaded from the event handler and then program execution will resume as normal. ABB Motion control products 2

Main code block Loop End Loop Event MOVEBUFFERLOW Wait until data valid flag (Comms location 1) If (COMMS(1) = 1) Then MOVER(0) = COMMS(2) Load move with data (Comms location 2) COMMS(1) = 0 Indicate to host that move is loaded EndIf End Event Startup code executed when the controller is powered up Startup Setup the move buffer MOVEBUFFERSIZE(0) = 20 Create 10 spaces in the move buffer MOVEBUFFERLOW(0) = 5 Create event when there are more than 5 spaces End Startup Keeping track of moves (NextMove, MotiFlex e180 and MicroFlex e190) To keep track of moves in the buffer, it is possible to attach an identifier to each move as it is loaded and to read the identifier of the currently executing move. For example: MOVEBUFFERSIZE(0) = 20 Create 20 spaces in the move buffer MOVEBUFFERID(0) = 1 Set the ID to be stored in the buffer to 1 MOVER(0) = 20 Load and start a relative move of 20 units MOVEBUFFERID(0) = 2 Set the ID to be stored in the buffer to 2 Load and start a relative move of 10 units Pause MOVEBUFFERID(0) = 2 Wait until the second move starts to execute OUTX(0) = _ON Turn on digital output 0 Once motion has finished, it is possible to read the ID of the last move executed using the MOVEBUFFERIDLAST keyword. Interpolated (multi - axis) motion (multi-axis products only) NextMove can perform the following multi-axis interpolated moves: VECTORA/VECTORR, CIRCLEA/CIRCLER and HELIXA/HELIXR. When a multi-axis move is loaded, the first axis specified is known as the master axis. The SPEED, ACCEL, DECEL, ACCELJERK and DECELJERK parameters set for the master axis are used for the motion path of the interpolated move. For NextMove ESB-2 it is important to set the move buffer size for all of the axes involved in a multi-axis move. If using NextMove e100 then it is only necessary to set the move buffer size for the master axis (thereby reducing the total number of move buffer spaces consumed). ESB: MOVEBUFFERSIZE([0,1]) = 4; Create 4 spaces in the move buffer for axis 0 and 1 e100: MOVEBUFFERSIZE(0) = 4 Create 4 spaces in the move buffer for axis 0 VECTORA(0,1) = 10, 10 Load an absolute vector move to position 10, 10 VECTORA(0,1) = 20, 10 Load an absolute vector move to position 20, 10 VECTORA(0,1) = 10, 0 Load an absolute vector move to position 10, 0 VECTORA(0,1) = 0, 0 Load an absolute vector move to position 0, 0 Note that to trigger motion on multi-axis moves it is only necessary to trigger the master axis. ABB Motion control products 3

Y Axis 10 10 20 X Axis Creating contoured paths (NextMove, MotiFlex e180 and MicroFlex e190) In a contoured move a series of moves are joined together (i.e. merged) so that they are performed with a constant path velocity. For example, the following plots show the effect of contouring: CONTOURMODE(0) = _ctmcontour_off CONTOURMODE(0) = _ctmcontour_on When a move is loaded into the buffer, the contour mode is stored as well, allowing some moves to be loaded with contouring turned on and others with it turned off. For example: MOVEBUFFERSIZE(0) = 5 CONTOURMODE(0) = _ctmcontour_on CONTOURMODE(0) = _ctmcontour_off CONTOURMODE(0) = _ctmcontour_on Create 5 spaces in the move buffer Turn contouring on Turn contouring off Turn contouring on ABB Motion control products 4

When a move is loaded, the state of contouring controls whether the end of that move will be a stop point. In the example above, the third move was loaded with contouring off, making the end of that move a stop point. When interpolated moves are loaded with contouring turned on, the path speed is kept constant across multiple vectors. This means that the axis components of a move may not be continuous in velocity. There will be a clunk at vector boundaries. To avoid jarring the machine, the angle between vectors should be kept small. Mint can automatically look out for sharp angle changes using inter-vector angle control. The inter-vector angle is defined as the angle between two vectors or arcs. Inter-vector angle Inter-vector angle If the angle between two vectors exceeds the threshold set with CONTOURPARAMETER(axis,0), then a stop point will be created, otherwise the axes will continue to give a constant path speed. Example for NextMove ESB-2: MOVEBUFFERSIZE([0,1]) = 5; Create 5 spaces in the move buffer CONTOURMODE([0,1]) = _ctmcontour_on + _ctmvector_angle_on; Turn contouring on with inter-vector angle control CONTOURPARAMETER([0,1],0) = 10; Set threshold to 10 degrees. VECTORR(0,1) = 10, 10 CIRCLER(0,1) = -5, 5, 180 VECTORR(0,1) = -10, 0 Y Axis 20 10-10 10 X Axis ABB Motion control products 5

The axes will automatically stop between the arc and the second vector since the angle between these two vectors exceeds the threshold of 10 degrees. The velocity traces of X and Y are shown below: When performing a series of contoured moves, it is important to maintain as much distance as possible in the move buffer. If the move distance remaining in the move buffer ever drops to less than the distance required to decelerate the axis to a stop, then the axes will start to decelerate. Once the deceleration has started, the axes will come to a stop before starting again, even if more moves are loaded into the buffer. The SUSPEND keyword can be used to pause motion in the move buffer as well as to single step through individual moves in the move buffer. Feedrate control (NextMove, MotiFlex e180 and MicroFlex e190) As moves are being executed from the move buffer, if any of the motion profile parameters are changed (SPEED/FEEDRATE, ACCEL, DECEL, ACCELJERK and DECELJERK), the change will have an immediate effect on the move in progress. Feedrate control allows these profile parameters to be loaded into the move buffer with each move. For example, in a routing application, some moves may be required to move at a different speed. The following example for NextMove ESB-2 moves around a square with rounded corners. The corner sections are performed at a slower speed than the straights: MOVEBUFFERSIZE([0,1]) = 10; Create 10 spaces in the move buffer CONTOURMODE([0,1]) = _ctmcontour_on + _ctmvector_angle_on; Turn contouring on with inter-vector angle control CONTOURPARAMETER([0,1],0) = 10; Set threshold to 10 degrees. FEEDRATEMODE([0,1]) = _frfeedrate; Store feedrate in the move buffer VECTORA(0,1) = 20, 0 CIRCLEA(0,1) = 20, 5, 90 VECTORA(0,1) = 25, 25 CIRCLEA[0,1] = 20, 25, 90 VECTORA(0,1) = 5, 30 CIRCLEA(0,1) = 5, 25, 90 VECTORA(0,1) = 0, 5 CIRCLEA(0,1) = 5, 5, 90 In this example, FEEDRATEMODE is set to _frfeedrate which means store feedrate in the move buffer. Other bits in the FEEDRATEMODE keyword allow ACCEL and DECEL and ACCELJERK and DECELJERK to be stored in the move buffer. ABB Motion control products 6

The FEEDRATEMODE keyword also allows some moves to be loaded as fast traverse moves. These moves will respond to the FEEDRATEOVERRIDE keyword which allows the speed of fast traverse moves to be modified, even though the feedrate of that move was specified when the move was loaded. In this example, the first and third moves will be affected by the value of FEEDRATEOVERRIDE but the second move will not. MOVEBUFFERSIZE([0,1]) = 5; Create 5 spaces in the move buffer CONTOURMODE([0,1]) = _ctmcontour_on + _ctmvector_angle_on; Turn contouring on with inter-vector angle control FEEDRATEMODE([0,1]) = _frfeedrate + _froverrideenable; Store feedrate in the move buffer, fast traverse VECTORR(0,1) = 10, 10 FEEDRATEMODE([0,1]) = _frfeedrate; Store feedrate in the move buffer VECTORA(0,1) = 10, 10 FEEDRATEMODE([0,1]) = _frfeedrate + _froverrideenable; Store feedrate in the move buffer, fast traverse VECTORA(0,1) = 10, 10 FEEDRATEOVERRIDE([0,1]) = 150; Set override to 150% The first and third moves will execute at a speed of 30 units/s. Move blending (NextMove ESB-2 only) Move blending allows the execution of two moves to be overlapped, so reducing the time needed to execute the moves and produce a smoother tool path. For example, in a tapping application, the drill must be lowered into the work piece, then raised and moved along to the next drill location. The motion would look like: Slow probe path: Path of probe Edge of work piece VECTORR(0,1) = 0, 10 Move drill down Pause IDLE([0,1]) Wait for axes to be idle OUTX(0) = 1 Turn on Output 0 to start the tap Wait = 250 Wait for 250ms OUTX(0) = 0 Turn off Output 0 VECTORR(0,1) = 0, -10 Move drill up VECTORR(0,1) = 10, 0 Move drill along VECTORR(0,1) = 0, 10 Move drill down Trigger drill movement Pause IDLE([0,1]) Wait for axes to be idle OUTX(0) = 1 Turn on Output 0 to start the tap Wait = 250 Wait for 250ms ABB Motion control products 7

OUTX(0) = 0 Turn off Output 0 VECTORR(0,1) = 0, -10 Move drill up Ideal probe path: Path of probe Edge of work piece To save motion time, the drill could start moving to the next point as it completes the up stroke. This can be achieved by enabling blending. In this example, blending is set to take place automatically at a fixed distance from the end of the move. This is done with the BLENDMODE and BLENDDISTANCE keywords. Blending can be started at any time, causing an immediate overlap of two moves with the BLEND keyword. BLENDMODE([0,1]) = _bmautomatic; Enable automatic blending BLENDDISTANCE([0,1])= 2; Start blending 2 units from end of vector VECTORR(0,1) = 0, 10 Move drill down Pause IDLE([0,1]) Wait for axes to be idle OUTX(0) = 1 Turn on Output 0 to start the tap Wait = 250 Wait for 250ms OUTX(0) = 0 Turn off Output 0 VECTORR(0,1) = 0, -10 Move drill up VECTORR(0,1) = 10, 0 Move drill along VECTORR(0,1) = 0, 10 Move drill down Trigger drill movement Pause IDLE([0,1]) Wait for axes to be idle OUTX(0) = 1 Turn on Output 0 to start the tap Wait = 250 Wait for 250ms OUTX(0) = 0 Turn off Output 0 VECTORR(0,1) = 0, -10 Move drill up Output moves It is sometimes useful to be able to change the state of digital outputs when a move starts to execute. Mint allows digital output moves to be loaded into the move buffer so that they are executed synchronously with the motion. For example: MOVEBUFFERSIZE(0) = 10 Create 10 spaces in the move buffer Relative move of 10 units MOVEOUT(0,0) = 7 Turn on output channels 0, 1 and 2 on bank 0 Relative move of 10 units MOVEOUTX(0,1) = 0 Turn off output channel 1 Relative move of 10 units MOVEPULSEOUTX(0,3) = 100 Turn on output channel 3 for 100ms Relative move of 10 units At the end of the first move, digital outputs 0, 1 and 2 on output bank 0 are activated and all other outputs on bank 0 are deactivated. At the end of the second move, digital output channel 1 is deactivated. At the end of the third move, digital output channel 3 is activated and a timer started. The fourth move is then started. After 100ms, digital output channel 3 is deactivated. ABB Motion control products 8

Contact us For more information please contact your local ABB representative or one of the following: Copyright 2012 ABB. All rights reserved. Specifications subject to change without notice. www.abb.com/drives www.abb.com/drivespartners www.abb.com/plc ABB Motion control products 9