SPiiPlus Setup Guide (V5-20)
SPiiPlus Setup Guide (V5-20)
Version 5.20
V e r s i o n 5 . 2 0 , October 30, 2006
COPYRIGHT
Copyright ® 1999 - 2004 ACS MotionControl Ltd.
Changes are periodically made to the information in this document. Changes are published as release
notes and are be incorporated into future revisions of this document.
No part of this document may be reproduced in any form without prior written permission from ACS
MotionControl.
TRADEMARKS
ACS MotionControl, PEG and SPii are trademarks of ACS MotionControl Ltd.
Visual Basic and Windows are trademarks of Microsoft Corporation.
Any other companies and product names mentioned herein may be the trademarks of their respective
owners.
Website: http://www.AcsMotionControl.com
Information: [email protected]
Tech Support: [email protected]
Page Change
Chapter 5.4 timing diagrams moved to the ACSPL+ Command Reference
Appendices describing Cogging Compensation and Control Loops removed from
the document.
Table of Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Organization of this Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Related SPiiPlus Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 The SPiiPlus Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Conventions Used in this Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Required Knowledge for Using This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 SPiiPlus Hardware Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 SPiiPlus Software Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 Using Programming Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4 Communication Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1 Communication with the Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.1.1 How to Communicate with the Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.1.2 Communicating with the Simulator Via Ethernet . . . . . . . . . . . . . . . . . . . . . . . 14
4.2 Communication via PCI Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.1 Configuring the Host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.2 Establishing PCI Bus Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3 Serial RS-232/422 Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3.1 Troubleshooting a Serial Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.4 Ethernet Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.5 Network Ethernet Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5.1 Verifying TCP/IP Support on the Host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5.2 Changing the Controller TCP/IP Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5.3 Establishing Ethernet Network Communication with the Controller . . . . . . . . . 21
4.5.4 Troubleshooting Ethernet Network Connections . . . . . . . . . . . . . . . . . . . . . . . . 22
4.6 Ethernet Point-to-Point Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.6.1 Configuring the Host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.6.2 Establishing Ethernet Point-to-Point Communication . . . . . . . . . . . . . . . . . . . . 24
4.6.3 Configuring the Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.6.4 Troubleshooting Ethernet Point-to-Point Connection . . . . . . . . . . . . . . . . . . . . 25
5 Axis Configuration and Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.1 Selecting Axis Setup Initial Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2 User Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2.1 User Units of Measure (EFAC Variable) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2.2 Updating Other Variables with a Changed EFAC Value . . . . . . . . . . . . . . . . . . 29
5.2.3 Verifying User Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3 Protections and Faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3.1 Emergency Stop Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3.2 Axis Limit Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.3.3 Axis Following Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.3.4 State Transition Delays for Following Error Thresholds . . . . . . . . . . . . . . . . . . 36
5.3.5 Maximum Velocity And Acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.3.6 Axis Maximum Current (Torque) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.3.7 Safety Faults Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
List of Tables
Table 1 Related SPiiPlus Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Table 2 Collateral Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Table 3 Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Table 4 Digital Outputs for Brake Control in SPiiPlus PCI. . . . . . . . . . . . . . . . . . . . . . . 42
Table 5 Digital Outputs for Brake Control in SPiiPlus CM or SPiiPlus SA. . . . . . . . . . . 42
Table 6 Dual Loop Axis Pairs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Table 7 HSSI Modules and HSSI Channel Resources Consumed . . . . . . . . . . . . . . . . 47
Table 8 HSSI Axis Allocations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Table 9 Third Party Supported Drives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Table 10 Stepper Motor Feedback Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Table 11 Programmable encoder sampling rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Table 12 Recommended Digital Encoder Input Frequencies (E_FREQ) . . . . . . . . . . . . 56
Table 13 E_FREQ and PEG Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Table 14 Analog Feedback per Axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Table 15 Limiting Factors for Velocity Loop Tuning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Table 16 Three-phase Motor Specifications - Linear Motor. . . . . . . . . . . . . . . . . . . . . . 128
Table 17 Three-phase Motor Specifications - Rotary Motor . . . . . . . . . . . . . . . . . . . . . 129
Table 18 Motor Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
List of Figures
Figure 1 Main Panel – Firmware Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Figure 2 Stop Programs and Motors Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Figure 3 SPiiPlus MMI Communication Dialog - Simulator. . . . . . . . . . . . . . . . . . . . . . . 14
Figure 4 SPiiPlus MMI Communication Dialog - PCI . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Figure 5 RS-232 Serial Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Figure 6 RS-422 Serial Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Figure 7 SPiiPlus MMI Communication Dialog - Serial. . . . . . . . . . . . . . . . . . . . . . . . . . 18
Figure 8 Types of Ethernet Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Figure 9 Communication Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Figure 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Figure 11 Communication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Figure 12 TCP/IP Properties Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Figure 13 Microsoft TCP/IP Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Figure 14 Communication Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Figure 15 Initial Value Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Figure 16 EFAC Parameter Message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Figure 17 Safety Monitor Example with Inverted Emergency Stop Input . . . . . . . . . . . . . 40
Figure 18 Dual Loop Control Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Figure 19 A Quad B Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Figure 20 Pulse-Direction Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Figure 21 Up-Down Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Figure 22 AC Servo Bias Adjustment Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Figure 23 Current Loop Adjustment Dialog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Figure 24 Typical Current Loop Adjustment Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Figure 25 Commutation Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Figure 26 Commutation Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Figure 27 Preferences Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Figure 28 Generate Startup Program Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Figure 29 Open Loop Verification Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Figure 30 Feedback Configuration Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Figure 31 Position and Velocity Loops Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Figure 32 Position & Velocity Loop Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Figure 33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Figure 34 Example of Good Velocity Loop Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Figure 35 Typical Position Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Figure 36 In Pos Generation Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Figure 37 Motor Position Profile - General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Figure 38 Motor Position Profile - Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Figure 39 Configurator Dialog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Figure 40 Save to Flash Dialog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Figure 41 Copy Axis Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Figure 42 Communication Viewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Figure 43 Protection Status Message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Figure 44 Communication Viewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Figure 45 Protection Status Message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Figure 46 Homing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Figure 47 NanoMotion Tab in Position and Velocity Loops Dialog Box . . . . . . . . . . . . . 104
Figure 48 Dead Zone Mechanism. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Figure 49 Improved Settling Time Using Zero Velocity Feed Forward . . . . . . . . . . . . . . 106
Figure 50 Settling with SLZFF=0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
1 Introduction
This guide describes how to configure and adjust SPiiPlus motion control products to work with
supported types of motors and feedback devices.
This guide applies for the following SPiiPlus motion control product lines:
• SPiiPlus PCI-4/8 controllers
• SPiiPlus SA stand-alone controllers
• SPiiPlus CM control modules (controllers with integrated drives)
Note
The term “controller” is used in this guide whenever information
applies for both controllers and control modules. If information applies
to only one of these product groups, the group is stated explicitly.
This guide describes the procedures for setting up SPiiPlus controllers as summarized below:
Note
Highlights an essential operating or maintenance procedure,
condition, or statement
Model
Model Dependent Text Here!
CAUTION
Caution describes a condition that may result in damage to
equipment.
Note
ACS MotionControl recommends using the most updated SPiiPlus tools
and documentation.
CAUTION
The SPiiPlus MMI, MultiDebugger and the firmware version should
all come from same SPiiPlus ADK CD installation version.
3.1 Installation
1. Insert the SPiiPlus ADK installation CD into the PC.
2. Follow on-screen installation instructions.
3. If an earlier version of SPiiPlus ADK is already installed, it is recommended to select a
Repair installation.
Note
First time installation includes LabView® runtime version. A reboot of
the PC is required to complete the SPiiPlus software installation.
Note
For the simulator to be accessible to a host application, a copy of the
simulator executable file, sb4.exe, must be in the same folder as the
application executable file.
4 Communication Setup
The chapter covers:
• Communicating with the SPiiPlus Simulator
• Communicating with the physical motion control product via PCI Bus (SPiiPlus PCI only),
RS-232 serial connection, or Ethernet (option). The Ethernet connection can be either point-
to-point (PC direct to controller) or network (PC via LAN or other network to controller).
The supported connection types vary according to the motion control product model and
options ordered.
Communication setup for each type of channel is described here using the Communication
dialog box of the SPiiPlus MMI software tool. The Communication dialog box configures the
controller's communication settings.
Once you have made the required hardware connection (except in the case of the Simulator) and
configured the channel as described below, click Connect to establish communication.
If communication is successful, the following occur:
• In the Communication dialog box, the communication indicator turns green.
• SPiiPlus PCI-4/8 only: Green LED on controller board will flicker during communication.
• In the SPiiPlus MMI Main Panel, the Firmware field displays the controller firmware
version and the active communication channel.
• The Stop Programs and Motors window opens. The window remains open for as long as
SPiiPlus MMI is open.
4. In C:\SB4\BAT, create the text file sbauto.bt.The text file has the following string: set
network=1.
5. Execute the simulator by selecting Start | Run and entering the following command with the
latest simulator path. For example:
C:\Program Files\ACS MotionControl\SPiiPlus 5.00\BIN\sb4.exe" f c:\sb4 tcpd
The simulator finds the network settings of the host and displays them on the console.
• From the host application - choose and Ethernet connection with TCP/IP address
displayed on the console.
Model
PC SPiiPlus
RS-232
Rx Rx
Tx Tx
GND GND
PC Control
Module
RS-422
Rx+ Tx+
Rx- Tx-
Tx+ Rx+
Tx- Rx-
Gnd Shield
Networked Ethernet
Communication
SPiiPlus Controller or
Network Control Module
Point-To-Point Ethernet
Communication
SPiiPlus Controller or
Control Module
Note
Ethernet communication is an ordering option and is not available for
all products. While the physical Ethernet port may be present on the
controller, it will not work unless the controller was ordered with the
correct firmware!
There will be a list of the network protocols that are installed on your PC. Depending on
your version of Windows, the list may be called: “network components” (95/98) “network
protocols” (NT), “connection uses the following items” (XP), etc.
2. Verify that TCP/IP Protocol is in the list. If it isn't, ask your network administrator to install
it.
3. Verify that the TCP/IP Protocol is selected and click OK.
Figure 10
6. Click Yes. The SPiiPlus MMI saves the new TCP/IP address in the controller non-volatile
(flash) memory.
7. The new TCP/IP address is not active immediately. To make the new value active, you must
restart the controller by clicking Application | Restart (#HWRES) on the MMI Main
Panel.
8. Proceed to establish Ethernet network communication.
Select Network
connection
Figure 11 Communication
2. Enter the Remote Address, which is the TCP/IP address that you configured in the
controller (factory default: 10.0.0.100).
3. In the Connection field select Network.
4. Click Connect to establish the network communication channel with the SPiiPlus Ethernet
port.
5. Click Close to exit the Communication dialog box.
Note
Ethernet Point-to-Point Communication requires a 10/100BASE-T
Crossover cable.
Note
The IP Address for the PC has to be different than that of the controller.
Note
For an axis that has not been adjusted or where it is preferable to start
from scratch, select Load default values.
Note
The user units can be defined at any time in the configuration and
adjustment process. It is generally recommended to define them at the
beginning. This way setting values for configuration and protection
variables will be easier and less prone to errors.
CAUTION
EFAC variable relates with many other configuration variables.
While changing the EFAC variable via the MMI | Configurator, all
relevant configuration variables are being updated automatically.
Therefore, we recommend to change the EFAC variable only via
the Configurator and not from other places like Terminal or any
application program.
Note
For sin-cos encoders (note: support for these is an ordering option), the
internal multiplier is user-configured. The controller's internal encoder
multiplier is derived from the E_SCMUL variable, which defines the
multiplier as a power of 2. (MMI | Setup | Configurator | Encoder
Parameters.)
Load Motor
Notes
1. These procedures are applicable only if the motor can be moved by
hand.
2. If the feedback counting direction is the reverse of what you expect,
(for example the count is positive when the motor rotates
counterclockwise whereas you expect a negative count), the count
can be inverted – see Open Loop and Index Verification, Page 80
You must verify that the emergency stop circuit and the
controller's emergency stop logic are working correctly before
initiating any motor movement!
For information about the emergency stop hardware connection, refer to the controller's
hardware guide.
2. Open the SPiiPlus MMI and establish communication (see Chapter 4, Communication
Setup) with to the controller via any communication channel.
3. From the Main Window click Safety Monitor.
4. In the Safety Monitor window, locate the Emergency Stop Input indicator.
9. From the Main window, open the Adjuster from the Setup menu.
10. Select an axis and click Safety Parameters.
11. In the Safety Parameters window, in the System Faults group, locate the Emergency
Stop line.
12. In the Emergency Stop line, select the associated S_FMASK and S_FDEF bits. (The
S_FMASK bit determines that the controller will check periodically for the emergency stop
fault, the S_FDEF bit determines that if the emergency stop fault is detected, the default
handling process will automatically be applied.)
14. In the Safety Parameters window, in the Emergency Stop line, observe the associated
S_FAULT indicator. (S_FAULT reports the existence of the associated fault).
15. In the Safety Parameters window, if the S_FAULT indicator for Emergency Stop is red,
select the associated S_SAFINI bit and verify that as a result, the S_FAULT indicator is
now gray. (S_SAFINI inverts the logic of the system fault inputs. For example, if a fault
signal is wired so that the high signal state indicates the fault, when the corresponding
S_SAFINI bit is set, the low signal state will indicate the fault.)
3. In the Motor Faults group, clear the FMASK bits for the Right Limit and Left Limit. (The
default value for these bits is 1, which would cause the controller to poll the limit switch
inputs for faults generated by nonexistent switches.)
If your application does include physical limit switches, you must verify that the controller
properly identifies the left (counting down) and right (counting up) limit switch signals. The
following sections describe how to do so.
Note
The names of variables used with axis level variables, such as limits,
are the same as those used with system level variables, such as
emergency stop. The difference is that the system variables begin with
“S_”. For example, FMASK is the axis-level variable related to
S_FMASK!
FDEF bit determines that if the limit fault is detected, the default handling process will
automatically be applied.)
Note
The axis is moved manually in the following procedure. If that isn't possible,
it is recommended to wait till the motor is configured and then to jog the
motor to the desired software limit position.
1. Open MMI | Motion Manager and move the physical axis manually to the zero position.
2. In the Motion Manager window, click Zero Feedback Position.
3. Move the axis manually to the left (counting down) until you reach the position that you
want to define as the software left limit.
4. In the Motion Manager window, find the Feedback Position (FPOS) and record it.
5. Open MMI | Setup | Adjuster.
6. Select the axis and click Safety Parameters.
7. In the Safety Parameters window, in the Software Left Limit field, enter the position that
you recorded in step.
8. Move the axis manually to the right (counting up) until you reach the position that you want
to define as the software right limit.
9. In the Motion Manager window, again find and record the Feedback Position (FPOS).
10. In the Safety Parameters window, in the Software Right Limit field, enter the new
feedback position that you recorded.
Note
It is recommended to assign high following error fault thresholds for
the duration of the configuration and adjustment process. This will
accommodate the process while maintaining a measure of safety.
V
PE > ERRI PE > ERRA PE > ERRV PE > ERRA PE > ERRI
DELV DELI
t
:
In the Safety Parameters window, enter the DELI and DELV values.
CAUTION
The maximum velocity variable (XVEL) is used as a scale factor for
other adjustment variables. Therefore, it is important to define a
proper value for it. Defining a value that is not reasonable for the
feedback characteristics and required velocity of your application
will lead to poor adjustment results.
Note
When working with third party drives the controller converts the
current command to 10V ptp.
The current limits are defined as a percentage of the maximum current (torque) command.
3. Enter the Idle (XCURI) limit. It is recommended to set this value at the minimum current
level required by the motor to keep the axis in position. The value should not exceed the
XCURV value.
4. Enter the Motion (XCURV) limit state according to the formula: XCURV = [allowed
motor peak current / drive peak current] x 100. Refer to the drive and motor specifications
for these peak values.
5. Enter the RMS (XRMS) limit according to the formula: XRMS = [allowed motor nominal
current / drive peak current] x 100. Refer to the drive and motor specifications for these
values.
6. Enter the RMS Time Constant in msec (XRMST). This is the time interval for checking
whether an overcurrent fault has occurred (meaning that XRMS has been exceeded).
The overcurrent fault activation time is according to the following formula:
fault activation = -ln(1-(XRMS/DCOM)^2)*XRMST
For example: if XRMS=50, DCOM = 100 and XRMST = 3300 msec
fault activation = -ln (0.75)*3300 = 950msec
For example, in the Safety Monitor window, shown in Figure 17, the Emergency Stop Input
is red, indicating the physical input is high. However, the Emergency Stop Fault is green (fault
not active). This result occurs because the S_SAFINI.#ES bit has been set, causing the
controller to invert the logic of the Emergency Stop input.
Model
SPiiPlus PCI: Brake activation is done via a digital output that is
reconfigured to perform that task.
SPiiPlus CM: Brake activation is done via a dedicated brake output
without any need for configuration.
In addition, you can define delays for these operations. For example, you may want the
controller to wait 50ms once the drive is enabled before releasing the brake.
Refer to the ACSPL+ Command & Variable Reference for enable command timing diagrams
using positive and negative BOFFTIME values, and disable command timing diagrams using
positive and negative BONTIME values.
CAUTION
The controller is designed to work with a normally-applied brake:
meaning that the brake will be released when the signal is 1.
4. Enter a value for the Brake Off Time (BOFFTIME). This value determines how long to
wait (milliseconds) after enabling the drive before deactivating the brake.
5. Enter a value for the Brake On Time (BONTIME). This value determines how long to wait
(milliseconds) after activating the brake before disabling the drive.
6. SPiiPlus PCI only: It is necessary to configure a digital output as the brake output. The
output will carry the command to activate (output signal: 0) or deactivate (output signal: 1)
the brake. The output will not be available for other digital output purposes while assigned
to the brake. The command syntax is:
Note
This output assignment must be declared every time the controller is
powered up.
Model
To set a digital output to work as a general purpose output after it
was defined to control a mechanical brake:
In SPiiPlus PCI: In the MMI | Configurator | Motor Flags
(MFLAGS) dialog box, unselect the Mechanical Brake bit (23).
Send the setconf (29, output number, 0) command.
In SPiiPlus CM or SA: In the MMI | Configurator | Motor Flags
(MFLAGS) dialog box, unselect the Mechanical Brake bit (23).
2. To re-define a virtual axis as a normal axis, run a program with the following ACSPL+
commands:
Note
Do not mix a virtual axis with a dummy axis (MFLAGS bit 0). Setting
an axis as a dummy will:
1. Free both of the analog outputs of the axis for general purpose use.
2. ENABLE command for the axis drive is blocked.
B e lt
Gear
M o to r
#2
P o s itio n lo o p
V e lo c ity lo o p
fe e d b a c k
fe e d b a c k
#1 M o v in g
th e lo a d
Note
In single loop control, the feedback position is represented by the FPOS
variable.
In dual loop control, the load (position loop) feedback position is
represented by FPOS and the motor (velocity) feedback position by
F2POS.
For example, in the MMI | Terminal, the command:
?X_FPOS,?X_F2POS
Model
SPiiPlus CM includes integrated digital drives with fixed axis assignments.
For these drives, the Drive tab in the Axis Setup window is irrelevant
(because the values are already defined in the controller).
channel is divided into four registers. The number of registers consumed by the HSSI module(s)
connected to the channel, depends on the module type, seeTable 7.
The HSSI channel number and register that the controller allocates to the drive command
depend on the axis, as described in Table 8.
4. Open the Tools (menu)| HSSI Manager. This window is used to establish communication
between the controller and the module(s) at the other end of each HSSI communication
channel.
5. Click Reconnect. The controller automatically detects all connected HSSI modules and
starts communicating with them.
Model
SPiiPlus PCI-4/8 does not support drives with single-ended current
command inputs.
5. Create a new motors database file. The same database file is used for all the axes.
6. In the Motor tab fields, select/enter the following:
a) Name: motor manufacturer and model name.
b) Topology: Rotary or Linear.
c) Type: DC Brush or DC Brushless
d) Nominal Current [A]: refer to motor's specifications.
e) Description: other relevant information.
7. In Edit Database menu select Motor| Add Item to save the new motor description.
Note
The controller's PEG output and Mark input features (see descriptions
in SPiiPlus ACSPL+ Programmer's Guide) are only available for
stepper motors if at least one of the following bits is set: MFLAGS.5 or
MFLAGS.6.
The controller supports drives for pulse–direction (P-D) stepper motor. Up to half the number
of axes supported by the controller can be stepper motors. Only the X, Y, Z and T axes can be
used for stepper motor control.
Stepper motor control is open loop only. However a feedback device can be used with a stepper
motor for reading the position (it will not affect the control of the motor).
The configuration of MFLAGS bits 4, 5, and 6 determines the stepper motor feedback
configuration.
6. Define the Pulse Width (STEPW) per the stepper drive specifications. Verify the Pulse
Width length per the following equation:
For a rotary axis:
1000
(Maximum planned velocity (RPM)/60)
STEPW <
Number of SPiiPlus pulses to make one rotation
1000
Maximum planned velocity (meter/sec)
STEPW <
Number of SPiiPlus pulses to move 1 meter
Advanced
This topic is for users who are familiar with SPiiPlus ACSPL+
programming.
When the stepper axis is equipped with a feedback device, the controller can correct the position
reached at the end of each motion to the desired position.
Such an implementation can be done by running the following program continuously:
In this case, change the DesiredPosition value to initiate the stepper motion.
Note
The controller also supports Netzer Precision absolute encoders, see
Page 112.
Advanced
This chapter about encoder clock and timing is informative for
advanced users.
The encoder is represented in the controller as a synchronous state machine that is activated by
a clock, with programmable frequency in the SPii processor:
Table 11 Programmable encoder sampling rates
E_FREQ variable Encoder maximum sampling rate
2 5MHz
20 40MHz
60 120MHz
Notes
1. The clock frequency (E_FREQ) can be selected for the X, Y, Z, and
T axes only. Each of these axes is paired in the controller with a
second axis (X with A, Y with B, Z with C, and T with D).
When the frequency is set for the primary axis (X, Y, Z, T), the same
frequency is automatically applied to its secondary axis.
2. For a Sin-Cos encoder, the clock frequency (E_FREQ) is
automatically set to 2 (5MHz) which applies automatically to the
related secondary axis as well.
The maximum rate of A quad B counting, pulse-direction counting, and up-down counting that
the SPiiPlus can handle is equal to half the frequency of the clock. This means that the
maximum rate of a digital encoder channel can be 60MHz, 20MHz (default) or 2.5MHz.
The encoder signals are filtered by a three-stage digital filter. The higher the clock frequency,
the less filtering is done. For a 5 MHz clock, an input signal that is not stable for at least 600
nanoseconds (3 clock cycles), is considered to be noise and is ignored. For a 120MHz clock,
signals that are not stable for 25 nanoseconds are considered noise and ignored.
An edge separation between the two encoder input channels must be at least 1 clock cycle. If
the separation is less, it is considered a simultaneous transition, which is results in a miscount
and an encoder fault.
The frequency of the encoder clock also affects Position Event Generator (PEG) accuracy. PEG
is a controller feature where position events trigger output pulses with sub microsecond delay.
• Up – Down Timing
8 clocks minimum
1 clock minimum
4 clocks minimum
A
channel
B
channel
4 clocks minimum
CLK
UP
DOWN
1 clock minimum
Figure 21 Up-Down Timing
j) **Counts per mm/inch (**if Topology value is Linear): The product of the Lines x
External Multiplier x Internal Multiplier.
k) Description: other relevant information.
6. From the Edit Database menu, select Encoder| Add Item to save the new encoder
description.
Model
SPiiPlus PCI requires jumper configuration for sin-cos encoder
operation. Refer to the SPiiPlus PCI Hardware Guide.
Note
Support for sin-cos feedback is optional and must be included in the
product order. If the controller doesn’t support sin-cos feedback, the
following error message will be displayed when you click Calculate
Parameters and Close.
d) *Lines Per Revolution (*if Topology value is Rotary): Enter a value or select from the
list. According to the encoder's specifications.
e) **Lines (*if Topology value is Linear): Select the units: per mm or per inch then enter
a value or select from the list –refer to the encoder's specifications.
f) Internal Multiplier Factor: Select the multiplication factor to achieve the feedback
resolution you require. A high multiplication factor can be used to achieve higher
feedback resolution and better dynamic performance. However, the quality of the sin and
cosine input signals are limiting factors. It is recommended to start with a low
multiplication factor and increase it until the required resolution is achieved with minimal
degradation in performance (for example, increased position error).
Note
The controller supports sin-cos encoder input rates of up to 250,000
sine/cosine periods per second.
g) *Counts per revolution (*if Topology value is Rotary): The product of the Lines Per
Revolution x Internal Multiplier.
h) **Counts per mm/inch (**if Topology value is Linear): The product of the Lines x
Internal Multiplier.
i) Description: other relevant information.
6. From the Edit Database menu, select Encoder| Add Item to save the new encoder
description.
Note
While having an interpolated position with a sin-cos encoder, the Index,
PEG and MARK position will NOT be based on the exact interpolated
position of the axis but only on fix x4 interpolated factor.
Note
Bias adjustment for a of DC brush motor drive is also supported, see
“Open Loop and Index Verification” on Page 80.
4. Use two voltmeters. Connect the first between phases R and S and the second between S
and T.
Model
SPiiPlus CM: Current loop adjustment is required for the integrated digital
drives of the SPiiPlus CM.
For all other drive types, there is no current loop adjustment and this
chapter is irrelevant.
6.1 Overview
SPiiPlus CM control modules comprise a controller and integrated digital drives. The current
control of these internal drives must be adjusted by the user.
7. Increase the proportional Gain (SLIKP) until the response waveform approximates a
square and a small overshoot appears.
8. Increase the Integrator Gain (SLIKI) by hundreds, until you get a narrow overshoot of
10% to 20%.
9. Continue steps 7 and 8 till the motor response is satisfactory. Typical current loop
adjustment results are shown in Figure 24.
Note
During current loop adjustment, a relatively strong noise may emanate
from the Control Module. This sound is normal.
7.1 Commutation
To understand how the controller provides software commutation for DC brushless (AC Servo)
motors, it helps to first look at hardware commutation in DC brush motors.
In a DC brush motor, a fixed magnetic field created by permanent magnets in the stator interacts
with the armature current flowing in the rotor winding. The interaction of the current-carrying
conductors with the magnetic field produces a torque (or force in the case of a linear motor).
This torque/force is at its maximum value when the magnetic field vector is perpendicular to
the resultant current vector.
The mechanical commutator of a DC brush motor distributes the motor current among the
windings such that the resultant current vector remains perpendicular to the magnetic field
vector at any position and speed. This process is referred to as commutation.
In a DC brushless/AC servo motor, an electronic drive takes the place of the mechanical
commutator, keeping the resultant current vector perpendicular to the magnetic field vector by
controlling the phase currents.
There are two types of drives for 3-phase DC brushless/AC servo motors:
1. 1 Input Drive. This drive receives a single current command from the controller (10V ptp),
reflecting the desired current amplitude, and takes care of the commutation by itself. From
the controller point of view, this case does not differ from that of a DC brush motor – so
there is no controller (software) commutation.
2. 2 Input Drive. The drive receives two current commands from the controller, reflecting
desired current for two of the motor phases. In this case the controller is responsible for
commutation.
The desired current for two of the motor phases will be:
IA = I * cos (φ)
IB = I * cos (φ+ 120º)
where I is the amplitude of the current command and is the commutation angle (also referred
to as commutation phase) measured in electrical degrees.
The third phase current is dependent on the first two phase currents:
IC = -(IA + IB)
The three-phase currents generate a resultant current vector.
The commutation angle is dependent on the motor position:
φ= k * CP + θ
where CP is the motor position, k is a conversion factor between position units and electrical
degrees, and θ is an offset.
The k factor is a constant that depends on the (rotary) motor’s number of poles (or linear motor's
magnetic pitch) and the encoder resolution. The SPiiPlus MMI Adjuster calculates k
according to the motor and encoder variables that you specified in “Axis Configuration and
Setup” on Page 26).
The θ offset keeps the resultant current vector perpendicular to the magnetic field. This offset
is determined by the controller during the commutation setup process. During this process a
current vector is generated, according to an arbitrary commutation phase φ0. A position CP0
where the magnetic field of the motor aligns with this current vector is called a detent point.
The offset θ can be calculated at the detent point as:
θ = φ0 – K * CP0 + 90°
Once this relation is known, the current vector can be kept perpendicular to the magnetic field,
thereby achieving maximum motor performance (maximum torque/current ratio).
Since the commutation angle,φ, depends on the motor position, the offset has to be determined
only once for an absolute encoder but after every power-up for an incremental encoder – since
the motor position is not known.
Therefore, when working with an incremental encoder and a DC brushless motor, commutation
setup must be executed after every powerup.
Commutation Terminology:
Commutation Adjustment – Commutation process carried out with the SPiiPlus MMI
Adjuster as part of setting up the controller.
Commutation Startup Program – ACSPL+ program that can be generated automatically
during the Commutation Adjustment. The program is used to retrieve commutation. It can be
executed after every powerup (once the system has been setup). The startup program can be
based either on bringing the motor to a detent point (usually involves movement) or on
automatic commutation (commut command), which is fast commutation retrieval using a
closed-loop algorithm (and involving almost no motor movement).
After Each
Powerup
After each powerup the commutation should be retrieved. This can be done by a COMMUT
command from the current motor position or by a commutation startup program that retrieves
the commutation offset at the index/other absolute position.
Model
SPiiPlus CM: Current loop adjustment must be done before starting
Commutation Adjustment Setup.
Note
In both Commutation Adjustment and Commutation Startup programs
that are NOT based on automatic commutation the motor is moved by
moving the current vector, which pulls the rotor with it.
When the current vector is aligned with the magnetic field during
commutation, the motor can jump. The maximum jump is one
magnetic pitch (180 electrical degrees) of the motor in either direction.
If the motor bumps into an obstacle, the commutation setup algorithm
will attempt recovery. The recovery may involve additional abrupt
moves.
To prevent possible damage or injury, it is recommended that the
motor be initially positioned at least one magnetic pitch away from
any obstacles.
Note
The following considerations must be taken into account:
• Due to friction and load, a low excitation current may result in poor
alignment between the current vector and the magnetic field,
resulting in unsatisfactory commutation. It is recommended to set
the excitation current high enough to generate torque/force that is at
least four times higher than the friction and load. For a rotary motor,
Torquemax = KT x Iexcitation.
• On the other hand, too high an excitation current with a low friction
system (inadequate damping) may result in excessive oscillation
and even in mechanical damage.
6. Enter a Search Velocity. This determines the velocity of the current vector during the
commutation process. During this process the motor position follows the current vector in
order to align the magnetic axes. It is recommended to set a velocity lower than one
magnetic pitch per second and higher than one fifth of a magnetic pitch per second.
7. Enter a Settling Time. This determines the time assigned to the motor for settling at detent
points.
8. Enter an Commutation Adjustment Offset. This determines the initial value of the
commutation phase. It therefore determines the initial orientation of the current vector and
the initial detent point. By properly setting this offset you can avoid initial jump in a system
with a predefined startup position. For other systems, the offset can be used to determine a
specific target position for the initial jump.
9. Select a Commutation Scheme. In all the schemes except the powerup position scheme,
the following steps are performed:
a) Settle at a first detent point.
b) Move the current vector to identify the phase sequence. Correct for wrong polarity
automatically.
c) If the feedback indicates that the motor has moved less than 50% of the expected distance,
it is assumed to have run into an obstacle and the program tries to recover in the opposite
direction.
d) Retrieve the commutation phase according to the selected scheme. Considerations when
selecting a Commutation Scheme:
• Based on detent point (first scheme): If the feedback device has no index, this is the only
scheme that can be used. If the feedback device does have an index it is recommended
to use one of the “index” schemes so that the index can be used as an absolute reference
point for commutation phase retrieval at subsequent powerups.
• Based on index (six schemes): Saves the value of the commutation phase at the index
position. This value can be used at subsequent system powerups to achieve the same
commutation result. Six variations of this scheme are available:
• First index in positive direction
• First index in negative direction
CAUTION
Deviation between defined and measured pitch does not necessarily
indicate poor commutation quality. For example, incorrect definitions of
feedback variables may be compensated for by high friction, thus the
deviation may be low but the commutation will be poor.
13. Click OK and in the Commutation dialog box, click Start Commutation Program. If the
commutation process finishes successfully, bit 9 (Commutation OK) of MFLAGS is set.
Note
If changes are made to the motor, encoder, or their wiring, then full
adjustment procedure including Commutation Adjustment must be
repeated.
CAUTION
.Automatic Commutation will perform well only if the axis has been
configured and the position and velocity loops have been adjusted.
Guide).
Use a Startup Program generated with Automatic Commutation selected.
Note
Commutation adjustment must be carried out after the very first
controller startup (and after any change to motor, encoder, or their
wiring). The startup program is used after all subsequent powerups.
The startup program follows the same scheme that was used for the Commutation Adjustment
but with only the following steps:
1. Find a detent point.
2. (If the commutation phase was saved in Commutation Adjustment): Move to the index and
read the commutation phase for that point from the controller flash memory.
Normally the phase sequence and motor and encoder variables do not change after
Commutation Adjustment so they are not addressed by the startup program.
Usually the startup programs are based on bringing the motor to a detent point (which involves
a movement of the motor. Nevertheless, there is an option to generate start up programs based
on Automatic Commutation, see Section 7.2.2, Page 74. This option affects the execution of
the Commutation Schemes as follows:
• Detent point scheme: Movement of the axis is minimal.
• Index scheme: The axis moves to the index in closed-loop (commutated) motion.
• Powerup position scheme: not affected.
Note
In single loop control, commutation retrieval is based on the primary
index (IND variable), while in dual loop control it is based on the
secondary index (E2IND).
Advanced
The startup program includes a local variable (SP_Fail_Code) that
stores a termination code in the event that the program fails. You can
check SP_Fail_Code to investigate the cause of a failure.
To check the code, open MMI | Terminal and enter the
command?<buffer_number>: SP_Fail_Code. Then look the code
up in the following table.
For example, assuming that the startup program is in buffer 1, enter the
command:?1: SP_Fail_Code.
Note
This chapter applies only for servo motors (DC brush or AC servo/DC
brushless).
Open loop verification should be performed to verify proper operation of the following:
• Feedback device count is in the expected direction and is correlated with the drive command
• Index signal is latched.
• Drive and motor hardware is connected.
2. Click Enable to enable the drive. Verify that the indicator turns green and the button
changes to Disable (which is now the operation that it triggers).
Verify that the velocity gauge indicator moves to the right (same direction as you moved the
slider). If the velocity arrow moves in the opposite direction, click Feedback
Configuration and select Invert Drive Output.
6. Verify that the Feedback Position increases positively when the motor direction is positive
(in the context of the end-application) – otherwise click Feedback Configuration and
select Invert Encoder Direction.
7. Verify that the Last Index field is updated every time the motion passes the encoder index.
In a rotary motor with one index, the difference between two consecutive index readings
should equal the number of counts per revolution (assuming that the user units are counts).
8. For DC brush motor only: If there is bias (an offset) in the drive (motor moves while the
controller command is zero), then with Driver Output Range (%) set to zero, use the DAC
Offset (SLIOFFFS) field to compensate.
9.1 Overview
SPiiPlus MMI provides a window with a soft oscilloscope for adjusting the position loop and
velocity loop. The Position & Velocity Loops window includes tabs for variables that are
specific to dedicated features (for example, notch filter) or special capabilities (for example,
support for Nanomotion piezo ceramic motors). Since adjustment of the position and velocity
loops is dependant on the EFAC and XVEL variables, these variable values are displayed for
reference (read-only). EFAC can be modified from the Axis Setup window (see Section 5.2,
on Page 26) and XVEL from the Safety Parameters window (see Section 5.3.5, on Page 37).
CAUTION
Trying to adjust the position and velocity loops when the XVEL or
EFAC variables are not set right will produce poor results. Verify
that these variables are defined correctly (to fit your application/
requirements) before starting to adjust the loops.
Note
The PIV control algorithm enables you to adjust each loop separately.
Figure 33
3. In the Motion Limited By field, select a limiting factor described in Table 15. The
selection determines which other Velocity Loop Tuning fields are displayed.
For the next two steps, refer to the motion profile displayed in the Scope window.
12. In the Position & Velocity Loop window, double the Velocity Gain until the profile
approximates a square with a small overshoot.
13. Increase the Integrator Gain by hundreds, until you get a narrow overshoot of 10-20% in
the waveform.
Note
It is recommended that the Integrator Bandwidth not exceed 50Hz.
(Integrator Gain)/20 = Integrator Bandwidth
Note
The theoretical Acceleration Feedforward can be calculated as:
ACC_FF=[2^16 x 10^7 x EFAC / ACC] x.0.1
9. To improve the adjusting results, you may change the Velocity Gain, Integrator Gain or
Low Pass Filter Bandwidth. You can also activate a notch filter, see Using the Notch
Filter, Page 91. A typical position loop profile is shown below.
Advanced
The Scope Autoset button select the RPOS, FPOS and PE variables of
the axis. Advanced users can also monitor the DOUT variable in
channel #4. It will provide an indication about the command to the
drive at any stage of the motion. The DOUT full range is between
(-32,768) to (32,767) which is translated in the range of 10V ptp analog
output command to the drive.
Advanced
This topic is for users who are familiar with SPiiPlus ACSPL+
programming.
Note
The motor must be disabled while the notch filter is enabled.
1. Verify that the notch filter is disabled (on the Notch tag, the Enable Notch check box is
cleared, meaning that MFLAGS bit 14 is zero).
2. Use a spectrum analyzer to measure the mechanical resonance frequency.
3. Select the Notch Filter check box and for the Notch Frequency, enter the frequency that
you have measured.
4. Set the Notch Width to 5%-10% of the notch frequency and the attenuation to 5.
5. Run a motion profile, and watch the feedback velocity response on the Scope.
6. Optimize the oscillation by changing the width and the attenuation of the filter.
Maximum allowed attenuation is 20. Maximum allowed width is 33% of the notch
frequency.
10 Motion Defaults
Shown in detail in
next figure
Position
S )
PO
(R
n S)
tio PO
si (F
Po n
e tio
nc si
fe
re Po
Re a ck
e db
Fe
Motion
Complete
Event
Position
TARGRAD
Target variable
position (user units)
SETTLE
Feedback variable
Position (msec)
Advanced
This topic is for users who are familiar with SPiiPlus ACSPL+
programming
Up to this point, the controller has been in configuration mode, meaning that it can be written
to. Changing the controller mode to protected limits changes that can be made to controller
variables. Protected mode can be useful once you have completed configuration and
adjustment and want to protect the controller from changes that could be caused
unintentionally. In protected mode, the following cannot be performed:
• Changes to configuration and adjustment variables
• Modifications to user programs.
• Operations that affect the flash memory (for example, the immediate commands: #SAVE
and #LOAD).
3. Verify that Protected Mode is active by opening SPiiPlus MMI | Application | Protection
Status.
12 Homing Programs
When an incremental feedback device (for example, incremental encoder or analog input) is
used, the absolute position of the axis is unknown after powerup. In such cases, a homing
procedure is used.
The goal of the homing procedure is to find the absolute position of the axis based on an
accurate reference point, typically an index signal or a hard stop. The absolute position of the
axis is assigned to the position counter.
The homing procedure is as follows:
1. After powerup, move from current position in positive/negative direction to the end of travel
(usually a limit switch or a hard stop).
2. Move backward to the first index.
3. Set the reference position (RPOS) to the position of the index.
4. Move to zero (or any position).
0
Load
Left Right
Lim it Encoder Index Lim it
Switch Switch
Figure 46 Homing
Notes
1. If the axis is equipped with a DC Brushless motor, then the homing
program should also include a commutation startup program, see
“Commutation Startup Program” on Page 76.
2. The controller's programming language (ACSPL+) supports
designating the axis by name or by number. This makes it possible
to execute homing for all the axes using a simple loop.
STOP
Note
This chapter discusses Nanomotion piezo ceramic motors driven by
ab1,ab2 and ab4 amplifiers. When adjusting a motor driven by the ab5
amplifier, adjust the motor as a regular DC motor (do not enable
MFLAGS bit 7).
Model
Support for Nanomotion piezo ceramic motors is only available in
SPiiPlus PCI controllers.
from below.
14.1 Overview
Netzer Precision Motion Sensors Ltd. (http://www.netzerprecision.com/) develops and
produces advanced absolute sin-cos encoders. This technical application note describes how to
use the SPiiPlus motion controller with sin-cos feedback from a rotary or linear Netzer Electric
Encodertm.
Note
The following description relates to rotary encoders. In the case of
linear encoders, substitute distance for revolution. For example,
instead of the ECR (electrical cycle per revolution) use electrical cycles
per distance (mm or inch).
• Motor Type: For every type of motor, including (AC servo/DC brushless motors).
• Execution: After every powerup.
During the program’s execution, the motor is disabled. The program retrieves the absolute
position of the axis. If the controller’s software commutation capability is used (AC servo/DC
brushless motors), the program also retrieves the commutation phase (according to the absolute
position and the SLCORG variable).
For example, if the C/F select wire is connected to digital output #0:
• OUT0.0 = 0 sets the encoder to coarse mode
• OUT0.0 = 1 sets the encoder to fine mode
Switching between the two modes is done with OUT0.0 in the appended programs.
Note
The resulting Counts per Revolution = ECRs × 2 E _ SCMUL . For
example, with a rotary motor where the encoder has 8 ECRs in fine
mode and the multiplier is 12, we get 32,768 counts per revolution (8 x
212). Maximum resolution can be achieved with multiplier = 16, which
yields 524,288 counts per revolution.
9. If software commutation is required (AC servo/DC brushless motor), open SPiiPlus MMI
| Adjuster | Commutation | Preferences. (The following are required only once, at initial
setup).
a) Verify that A Detent Point is selected for the Retrieve Commutation Phase at field.
b) In the Commutation dialog box, select Start Commutation Program to perform
commutation.
c) Execute the ACSPL+ program: Netzer_Startup.prg.
10. The Position_Retrieval.prg program is set to work with a rotary motor. In the case
of a linear motor, change the ENC_RES variable to equal the total encoder length in fine
mode (counts). Run Position_Retrieval.prg.
11. The program has an offset variable ABS_OFFS, which enables you to define any point as
a zero position. For example, when the feedback position = 1000, setting ABS_OFFS =
1000 and running the program again, while the motor is standing still, will define the current
position as zero.
12. Save all variables and Position_Retrieval.prg to the controller flash memory.
13. Complete all other adjustment steps and again save all variables to the flash memory.
14.2.4 Netzer_Startup.prg
14.2.5 Position_Retrieval.prg
!**************************************************************************
! POSITION RETRIEVAL
!**************************************************************************
AXIS = 0
OUT0.0=0 ! Operate in coarse mode
WAIT 500
DISABLE(AXIS)
WAIT 500
! Convert absolute position to user units:
! In case of rotary motor ENC_RES = SLCPRD(AXIS)
! In case of linear motor ENC_RES = counts per total encoder length (in fine
mode)
ENC_RES = SLCPRD(AXIS) ! Change in case of linear motor
ABS_FPOS = (ABS_POS/POW(2,16)-FLOOR(ABS_POS/POW(2,16)))*ENC_RES*EFAC(AXIS)
! ABS_OFFS is an offset in absolute position
! Set it to define required "zero position"
ABS_OFFS = 0
SET FPOS(AXIS) = ABS_FPOS - ABS_OFFS
!**************************************************************************
! COMMUTATION RETRIEVAL
! This section is relevant only to software commutated brushless motor and
can be omitted in case of DC brush motor or hardware commutation.
!**************************************************************************
15.1 Overview
Gantry motion systems incorporate two or more motors, which work simultaneously to move
an axis. Gantry axes provide flexible and efficient solutions for a wide range of applications
like: inspection systems, materials handling, pick and place, machine loading and unloading
etc.
Typical GantryFigure 52 illustrates a typical gantry system with two motors (X1, X2) that
move a single axis (X):
until:
• A different connect relation is defined
• The controller is shutdown
• HWRESET/RESET commands are executed
The following block diagram demonstrates the axis profile generation for gantry with two
motors:
more axes (one master motor and two or more slave motors).
Preparation for gantry implementation comprises the following steps:
1. Gantry axes setup, configuration and adjustment
2. Gantry axes commutation and homing
Once these steps have been accomplished the system is ready for normal gantry operation.
Meaning, the user needs to refer to the master axis only and the slaved axis will be operated
automatically.
DISABLE(M_AXIS);DISABLE(S_AXIS)
!------ Configuration variables ---------------------
ERRI(S_AXIS)=ERRI(M_AXIS)
ERRV(S_AXIS)=ERRV(M_AXIS)
ERRA(S_AXIS)=ERRA(M_AXIS)
CERRI(S_AXIS)=CERRI(M_AXIS)
CERRV(S_AXIS)=CERRV(M_AXIS)
CERRA(S_AXIS)=CERRA(M_AXIS)
DELI(S_AXIS)=DELI(M_AXIS)
DELV(S_AXIS)=DELV(M_AXIS)
SLLIMIT(S_AXIS)=SLLIMIT(M_AXIS)
SRLIMIT(S_AXIS)=SRLIMIT(M_AXIS)
XVEL(S_AXIS)=XVEL(M_AXIS)
XACC(S_AXIS)=XACC(M_AXIS)
VELBRK(S_AXIS)=VELBRK(M_AXIS)
XRMS(S_AXIS)=XRMS(M_AXIS)
XRMST(S_AXIS)=XRMST(M_AXIS)
XCURI(S_AXIS)=XCURI(M_AXIS)
XCURV(S_AXIS)=XCURV(M_AXIS)
5. Open MMI | Adjuster | Position and Velocity Loop: adjust the maser axis normally. The
slaved axis parameters will be set identically (by the autoroutines in the program) to the
master axis.
Model
Dynamic braking is supported only by SPiiPlus CM only (for X, Y
or A axis).
Dynamic braking is used to decelerate or eliminate motion of the axis while the drive is
disabled. For example the dynamic brake can decelerate the motion in a case where a critical
fault has disabled the drive during motion. Dynamic braking is executed by short-circuiting the
motor phases in the drive. In the case of a three-phase motor, this is done by simultaneously
activating the three lower transistors in the drive, as shown in Figure 54:
Three phase
motor coils
a
b
c
CAUTION
Before implementing dynamic braking, follow the procedures described in
this chapter to prevent any damage to the control module, the motor, or the
rest of the system. In addition, we recommend measuring the actual
developed current during maximum deceleration using the MMI | Tools |
SPii Scope.
Note
All of the following formulas are designed for Star Connection
configurations, only.
The equation for maximum current calculation during braking process is for a linear motor is:
(1)
K E ⋅Vmax
I DB _ max =
3⋅ Z
where:
K E ⋅ ω max
I DB _ max =
3⋅ Z
where:
ω max
f =
(NP / 2)
for the rotary motor where NP is the number of poles
2
⎛ V ⎞
Z = R + (ω ⋅ L ) = R + (2 ⋅ π ⋅ f ⋅ L ) = R + ⎜ π ⋅ max ⋅ L ⎟
2 2 2 2 2
⎝ Pitch ⎠
Z = R 2 + (ω ⋅ L ) = R 2 + (2 ⋅ π ⋅ f ⋅ L ) =
2 2
2 2
⎛ ω max ⎞ ⎛ ω ⎞
= R + ⎜⎜ 2 ⋅ π ⋅
2
⋅ L ⎟⎟ = R 2 + ⎜⎜ max ⋅ L ⎟⎟
⎝ 2 ⋅ π ⋅ ( NP / 2 ) ⎠ ⎝ (NP / 2) ⎠
K E ⋅ Vmax
I DB _ max =
2
⎛ V ⎞
3 ⋅ R + ⎜ π ⋅ max ⋅ L ⎟
2
⎝ Pitch ⎠
K E ⋅ ω max
I DB _ max =
2
⎛ ω ⎞
3 ⋅ R + ⎜⎜ 2 ⋅ π ⋅ max ⋅ L ⎟⎟
2
⎝ (NP / 2) ⎠
In addition you should verify that the drive can withstand the heat dissipation.
Assuming 2V drop on each transistor, the maximum allowed power dissipation on one
transistor is 2 × I × 1 sec
peak
Thus, in order to protect the drive, you must verify that the following relation is complied with:
•
2
(
In the case of a DC motor: 1 Jω 2 + Mv 2 − ΔP ≤ 4 × I
peak )
where J [ kgm2] is the total rotating inertia, M [kg] is the total moving mass, ω [rad/sec] is the
angular velocity of the inertia and v[m/sec]is the linear velocity of the mass.
Both ω and v should be taken at the moment of activating the dynamic brake and are directly
related to the user-determined VELBRK variable. Upon disable, dynamic braking starts only
when the velocity is lower than this variable. ΔP is the power loss on the motor itself. It is
recommended to disregard this element, thus ensuring that the total dissipated energy is lower
than the allowed value of the drive.
R
• Tmax = KT I max ≈ KT I max for a DC brushless motor
Z
Tmax = K T I max
• , for a DC motor
where K T is the motor torque/ force constant.
2 2
⎛ V ⎞ ⎛ 1 ⎞
Impedance is Z = R + ⎜ π ⋅ max ⋅ L ⎟ = 1.2 2 + ⎜ π ⋅
2
−3
⋅ 0.4 ⋅10 −3 ⎟ = 1.2
⎝ Pitch ⎠ ⎝ 15 ⋅10 ⎠
K E ⋅Vmax 15 ⋅1
Maximum current during braking process is I DB _ max = = = 7.2 [A]
3⋅ Z 3 ⋅1.2
This current is lower that the allowed 20A of the drive.
It is also lower that the 18.4A current of the motor, so the motor can easily withstand the current
and resulting heat dissipation.
2
Impedance is Z = R + ⎛⎜ ω max ⋅ L ⎞⎟ = 1.32 + ⎛⎜ 392.7 ⋅ 2.1 ⋅10 −3 ⎞⎟ = 1.3 Ω
2
2
⎜ ( NP / 2 ) ⎟
⎝ ⎠ ⎝ 6/2 ⎠
12.8
The braking torque will be ≈ 0.14 ⋅ = 1.3 [N x m]
2
VELBRK should be
1.5 ×1000 × 250 × 256 = 96 ×106 [counts / sec]
Kinetic energy is
CAUTION
Before operating the Dynamic Brake, verify that no damage will
happen due to the dynamic Brake – see Dynamic Brake - Safety
Verification (page 125)
Note
For safety reasons, the default value for VELBRK is zero for all axes.
6. Dynamic braking will be activated automatically when the following two conditions are
met:
• FVEL<axis> is less than VELBRK<axis>
• the axis drive is disabled
Cursor X1 Cursor X2