Page 1
Artisan Technology Group is your source for quality new and certified-used/pre-owned equipment SERVICE CENTER REPAIRS WE BUY USED EQUIPMENT • FAST SHIPPING AND DELIVERY Experienced engineers and technicians on staff Sell your excess, underutilized, and idle used equipment at our full-service, in-house repair center We also offer credit for buy-backs and trade-ins •...
If found to be defective during the warranty period, the product will either be repaired or replaced at Newport’s option. To exercise this warranty, write or call your local Newport office or repre- sentative, or contact Newport headquarters in Irvine, California. You will be given prompt assistance and return instructions.
EC DECLARATION OF CONFORMITY We declare that the accompanying product, identified with the " " mark, meets the intent of the Electromagnetic Compatibility Directive, 89/336/EEC and Low Voltage Directive 73/23/EEC. Compliance was demonstrated to the following specifications: EN50081-1 EMISSIONS: Radiated and conducted emissions per EN55011, Group 1, Class A EN50082-1 IMMUNITY: Electrostatic Discharge per IEC 1000-4-2, severity level 3...
2.2 PC Hardware and Software Requirements ........2-2 2.3 Equipment Controls and Indicators ..........2-2 2.4 Installation and Connection .............. 2-5 2.4.1 Installing the ESP6000 Controller Card and Software Driver ............... 2-5 2.4.2 Installing Windows Software ..........2-9 2.4.3 Verifying Communication Between the ESP6000 Card and the PC ................
Page 7
4.1.3 Operation ................. 4-1 4.1.3.1 File Menu ..............4-3 4.1.3.1.1 Reset System ......... 4-3 4.1.3.1.2 Save ............4-3 4.1.3.1.3 Advanced ..........4-3 4.1.3.1.4 Demo Mode ........... 4-3 4.1.3.1.5 Exit ............4-4 4.1.3.2 Setup Menu ..............4-4 4.1.3.2.1 Motion ............ 4-5 4.1.3.2.2 Faults ............
Page 12
Figure 4.1-18 — Position Status Menu ..........................4-14 Figure 4.1-19 — Help Menu ..............................4-14 Figure 4.1-20 — About Screen ............................4-15 Figure 4.2-1 — Servo Tuning Main Screen ........................4-16 Figure 5.4-1 — VI Front Panel ............................5-105 Figure 6.1-1 —Typical Motion Control System ........................6-1 Figure 6.2-1 —...
Scope This manual provides descriptions and operating procedures for the Enhanced System Performance (ESP) motion system, consisting of the ESP6000 controller card, UniDrive6000 universal motor driver, and various stages. Safety considerations, conventions and definitions, and a system overview are provided in Section 1, Introduction.
Shooting). There are no user-serviceable parts inside the UniDrive. – Do not make modifications or parts substitutions. – Return equipment to Newport Corporation for service and repair. – Do not touch, directly or with other objects, live circuits inside the unit.
WARNING This product operates with voltages that can be lethal. Pushing objects of any kind into cabinet slots or holes, or spilling any liquid on the product, may touch hazardous voltage points or short out parts. WARNING Opening or removing covers will expose you to hazardous voltages. observe the following precautions: •...
Page 18
This symbol indicates the principal on/off switch is in the on position. This symbol indicates the principal on/off switch is in the off position. A terminal which is used to connect instrument to earth ground. This symbol informs operator to read instructions in the operator manual before proceeding.
Positioner — used interchangeably with stage and motion device Stage — used interchangeably with motion device and positioner UniDrive6000 — the universal motor driver used with the ESP6000 con- troller card Section 1 — Introduction 1 - 5...
The Enhanced System Performance (ESP) architecture consists of the ESP6000 controller card, UniDrive6000 universal motor driver, and ESP- compatible stages. The ESP6000 controller card (see Figure 1.4-1) is designed for convenient installation in the user’s own PC. The ESP 6000’s Windows-based setup utility provides a full range of functions for configuring and operating from one to six axes.
– Configured for any combination of motor type (DC/stepper) or size – Feed-forward servo algorithm for smooth and precise motion – Multi-axis synchronization – Powerful motion programming capabilities in Visual Basic/C, and LabVIEW languages. Extensive set of Newport Corporation-provided commands. – User-selectable displacement units Section 1 — Introduction 1 - 7 Artisan Technology Group - Quality Instrumentation ...
1.4.2.2 UniDrive6000 Universal Motor Driver Number Of Motion Axes: – 1 to 6, in any combination or order of DC and stepper motors Stage Compatibility: – ESP-compatible (Smart-Stage) devices, non-ESP compatible Newport stages, other stages DC Motor Control: – 4 Amps, 60 Volts Stepper Motor Control: –...
Further inspection of equipment should be made with the following precautions: – Do not remove the ESP6000 controller card from the anti-static ship- ping bag until you are ready to begin installation. – Avoid touching components on the ESP6000 controller card.
10. 3 1/2″ floppy disk drive (for installation only) Equipment Controls and Indicators Controls and indicators for the ESP6000 controller card and UniDrive6000 are shown in Figures 2.3-1 and 2.3-2, and defined in Tables 2.3-1 and 2.3-2, respectively. Refer to Appendix C for connector orientations.
Table 2.3-1 — ESP6000 Controls And Indicators Reference Designation Nomenclature Description Reset LED state controlled by ‘watchdog’ timer and PCI interface. LED OFF indicates board is in reset state. Possible causes for reset state include: 1. Normal power-on reset 2. Application Programmer Interface (API) initialization command 3.
Universal Motor Driver UniDrive6000 POWER STATUS STOP ALL AXIS 1 AXIS 2 AXIS 3 AXIS 4 AXIS 5 AXIS 6 STATUS NO DRIVER MOTOR ON POWER ON MOTOR OFF POWER FAULT FAULT FRONT AXIS POWER CONTROLLER SUPPLY CONTROLLER INPUT LINE CAUTION: VOLTAGE SELECT...
Installation and Connection 2.4.1 Installing the ESP6000 Controller Card and Software Driver Power down the computer. Refer to the computer user manual for procedures. WARNING This product operates with voltages that can be lethal. Pushing objects of any kind into cabinet slots or holes, or spilling any liquid on the product, may touch hazardous voltage points or short out parts.
PCI card slot, and remove the panel. Due to varying card guide configurations of computers, it may be neces- sary to remove the bracket at the end of the ESP6000 card in order to install the card. Make a visual determination before attempting to con- tinue installation.
Push down gently until the edge connector on the bottom of the ESP6000 card mates with the connector at the bottom of the computer chassis. Install the retaining screw into the bracket at the top of the ESP6000 card. Re-attach the enclosure and plug in the computer AC power cord.
Copy Manufacturer’s Files From: [A:\ Figure 2.4-4 — Install From Disk Message (Representative Screen Only) Insert the disk labeled ESP6000 Windows 95 Device Driver into the com- puter floppy disk drive and select OK. Another Windows 95 prompt appears (see Figure 2.4-5).
The Windows Interface Software disk set (which includes software utili- ties, DLL, and language libraries) can be installed any time after the ESP6000 controller card and driver software have been installed. From the Windows 95 desk-top, press the start button and select SETTINGS and then CONTROL PANEL.
Select ADD/REMOVE PROGRAMS from the Control Panel menu. The Add/ Remove Programs Properties menu appears (see Figure 2.4-8). Figure 2.4-8 — Add/Remove Programs Properties Menu Select the Install/Uninstall tab from the Add/Remove Programs Properties menu, then select INSTALL. The Install Program From Floppy Disk Or CD- ROM screen appears (see Figure 2.4-9).
Figure 2.4-9 — Install Program From Floppy Disk Or CD-ROM Screen Insert the disk labeled ESP6000 Windows Interface Software Disk 1 of 4 into the floppy drive and select NEXT. The Run Installation Program screen appears (Figure 2.4-10). Verify that the path appears as shown in the screen and select FINISH.
Select NEXT. The Installing message screen appears (see Figure 2.4-14). Figure 2.4-14 — Installing Message Screen When installation of the first disk is complete, the Insert New Disk message screen appears (see Figure 2.4-15) prompting the user to insert disk 2. Follow the prompts for disks 2, 3, and 4.
Select FINISH to return to the Control panel menu. Figure 2.4-16 — ESP Installation Completed Screen 2.4.3 Verifying Communication Between the ESP6000 Card and the PC The ESP 6000 software performs a verification each time the system is booted-up. An ESP Initialization message screen appears that indicates the ESP6000 controller card status, the UniDrive axes configured, and ESP-compatible stages found during initialization (see Figure 2.4-17).
If the ESP6000 controller card is not present or communicating then an error message appears (see Figure 2.4-18). Figure 2.4-18 — ESP6000 Error Message Screen 2.4.4 Selecting The UniDrive6000 Line Voltage Unplug the UniDrive6000 AC power cord from the power source, and disconnect it from any equipment.
AXIS POWER CONTROLLER SUPPLY LINE VOLTAGE CAUTION: SELECT NO USER SERVICEABLE 90-120V OR PARTS INSIDE. REFER 200-240V SERVICING TO QUALIFIED 230V 115V 50/60 Hz SERVICE PERSONNEL. MAX 4 AMP WARNING: FOR CONTINUED PROTECTION AGAINST FIRE RISK, REPLACE ONLY WITH FUSE 115V OF SPECIFIED RATING.
(encoder, limits, and home signals). The cable is termi- nated with a standard 25-pin D-Sub connector. CAUTION Make sure the UniDrive6000 and ESP6000 are powered off. CAUTION Position stage(s) on a flat, stable surface before connection to a rack-mounted UniDrive Carefully connect one end of the cable to the stage and the other end to a driver axis on the UniDrive6000 (see Figure 2.4-20).
With the UniDrive6000 and personal computer powered off, attach the supplied 100-pin cable to the connector labeled CONTROLLER INPUT at the rear of the UniDrive6000. Next attach the cable to the ESP6000 card connector at the rear of the personal computer (see Figure 2.4-21). Con- nector orientation is shown in Appendix C.
General Description The following paragraphs cover procedures for operation after all equip- ment has been connected, and both the ESP6000 controller card driver and setup utility have been installed (see the System Setup section). Informa- tion includes how to power up the UniDrive and stage motor(s), activate home and jog motions, and to shut down the system.
Figure 3.2-1 — Motion Drop-Down Menu Select ENABLE. The Motor Power menu appears (see Figure 3.2-2). Figure 3.2-2 — Motor Power Menu Select numbered axes buttons one-by-one to turn on the motors you have connected to the specific axes, or select ALL ON to enable all motors. Buttons for enabled and connected motors will illuminate green, and the axis LED on the UniDrive will turn green to indicate a motor-on condition.
Homing a Stage From the Motion drop-down menu, select HOME. The Home Stages screen appears (see Figure 3.3-1) Figure 3.3-1 — Home Stages Menu Select an axis and search mode (Home Switch Only or Home Switch & Index), enter the number of units in the Home Speed input box, and Select START to home the stage(s).
From the Motion drop-down menu, select JOG (See Figure 3.2-1) or select the JOG button from the tool bar. The Jog menu appears (see Figure 3.4-1). Figure 3.4-1 — Jog Menu NOTE Enable stage(s) motor power before jogging. 3 - 4 Artisan Technology Group - Quality Instrumentation ...
Next select SPEED from the Jog menu (see Figure 3.4-2), then select the X or Y axis option from the Speed drop-down menu. The Set X/Y Speed menu appears (see Figure 3.4-3). Figure 3.4-2 — Speed Menu Figure 3.4-3 — Set X(Y) Speed Menu Enter a value in the New Speed text box and select OK.
NOTE You cannot designate both the X and Y axes for the same stage axis number. Press an X or Y arrow key to move a stage. Press and quickly release the arrow key for one-count (single) motions. Press and hold down an arrow key for continuous movement, and release the arrow key to stop movement.
4.1.3 Operation At start up the program will load the Dynamic Link Library (DLL) and initialize the ESP6000 controller card. When the system is ready to oper- ate a message window will identify ESP-compatible stages and motor drivers, and indicate that initialization status.
Table 4.1-1 — Stage (Motor) Type Settings Motor Micro-Step Full-Step Motor Type Current Factor Resolution —- —- Stepper —- Table 4.1-2 — Stage (Motor) Trajectory Settings Characteristic Nominal Maximum Resolution/Units —- Speed Acceleration Deceleration Jerk NOTE Save configuration input on a systematic basis to ensure operating parameters are not lost.
Figure 4.1-2 — File Menu 4.1.3.1.1 Reset System Select RESET SYSTEM to perform a hardware reset of the ESP6000 control- ler card and UniDrive (if attached). The user will be prompted to verify the selection. After a hardware reset the ESP6000 will search for ESP- compatible stages and configure the UniDrive accordingly.
4.1.3.1.5 Exit Select EXIT to leave the ESP6000 utility and return to the Windows desktop. 4.1.3.2 Setup Menu The Setup Menu consists of a series of drop-down menus, as shown in Figure 4.1-3. Menu functions are described in the following paragraphs.
4.1.3.2.1 Motion The Motion drop-down menu includes a Setup Resolution sub-menu and a Motion Setup sub-menu. The Setup Resolution sub-menu enables a user to set resolution and user units by specifying unit of measure and input value. The Motion Setup sub-menu defines trajectory and PID parameters. Select MOTION and then RESOLUTION to access the Setup Resolution sub-menu (see Figure 4.1-4).
Figure 4.1-5 — Motion Setup PID Tab Figure 4.1-6 — Motion Setup Trajectory Tab Refer to Servo Tuning, Section 7, for tuning guidelines before entering values. Select the appropriate axis and enter parameters to set trajectory and PID. 4 - 6 Artisan Technology Group - Quality Instrumentation ...
Default settings for ESP-compatible devices can be modified from the PID and trajectory tabs. Select Save from the Tool Bar to save the parameters to ESP6000 controller non-volatile flash EPROM memory. 4.1.3.2.2 Faults The Faults menu includes a Setup Faults sub-menu which enables a user to indicate a selection of events to be triggered if specified faults occur.
4.1.3.2.3 Hardware The Hardware menu includes a Setup Hardware sub-menu to configure hardware. Select HARDWARE to access the Setup Hardware sub-menu. The Setup Hardware sub-menu includes tabs for defining amplifier I/O, analog I/O, digital I/O, servo DAC offset, and travel limit parameters. The tabs are shown in Figures 4.1-8 through 4.1-12 and described in the following paragraphs.
Use the Amplifier I/O tab to configure a non-ESP compatible motor ampli- fier. Select the axis and motor type, then designate settings. Set Amplifier Fault in the applicable Setup Faults sub-menu tab before selecting the Amplifier Fault Input option. Figure 4.1-9 — Setup Hardware Analog I/O Tab Use the Analog I/O tab to select gain and range settings for the analog-to- digital conversion.
Use the Digital I/O tab to define port direction. Select bits in the Bit Settings sub-panel to designate the bits for output (red illumination indicates a HIGH logic level). Figure 4.1-11 — Setup Hardware Servo DAC Offset Tab Use the Servo DAC Offset tab to designate voltage (±1 volt maximum) offset on the servo digital-to-analog outputs for each axis.
4.1.3.2.4 Firmware The Hardware menu includes a Setup Firmware sub-menu for downloading firmware to the ESP6000 controller card in the event that it becomes necessary (e.g., future upgrades). Select FIRMWARE to begin the process of erasing existing firmware and downloading new firmware on the ESP6000 controller card.
4.1.3.3 Motion Menu The Motion Menu consists of a series of drop-down menus, as shown in Figure 4.1-14. Menu functions are described in the following paragraphs. Figure 4.1-14 — Motion Menu 4.1.3.3.1 Stop Select STOP to make the Stop Motion message screen appear (see Figure 4.1-15).
Figure 4.1-16 — Cycle Motors Sub-Menu Select the appropriate axis, the absolute position displacements in user units, and enter a dwell time (desired waiting period between positions) for each movement. There is no constraint for dwell. Select the stop-light icon to stop and start the motion. 4.1.3.3.5 Enable Select ENABLE to power on stage motors.
4.1.3.4.1 Position Select POSITION to determine axis-by-axis position expressed in terms of user units. The Position Status sub-menu appears (see Figure 4.1-18). Figure 4.1-18 — Position Status Menu Select a single axis or multiple axis to display information. Axes 7 and 8 should be considered “virtual axes”...
At boot-up, the program will load the Dynamic Link Library (DLL) and will attempt to establish communication with the ESP6000 controller card. If communication does not occur, the program will assume the ESP6000 card was not initialized, and will initiate a reset sequence and initialize the ESP6000 card (but not the personal computer) and the UniDrive6000.
Figure 4.2-1 — Servo Tuning Main Screen Default settings are provided for ESP-compatible stages, but settings for non-ESP-compatible stages must be individually configured by the user. To get detailed information about the functionality and usage of the tuning software utility, click the right mouse button on the desired object and select DESCRIPTION.
The ESP6000 controller card and device driver must be installed correctly before programming can begin. The Dynamic Link Library (DLL) provides communication to the ESP6000 controller card via the PCI bus. When the system is initialized the DLL will make a call to the device driver to open communications.
Table 5.2-2 — API Function Categories Category Initialization Configuration Motion Trajectory Motion-Related Servo Data Acquisition Digital I/O System Commands 5.3.1 Command Summary Commands are categorized by function in Table 5.3-1. Table 5.3-1 — Commands Function Command Page Initialization esp_init_system(void) ............... 5-8 esp_open_system(void) ..............
Page 69
Function Command Page Configuration (Cont.) esp_get_ampio_config(long axis, long *config) ......5-20 esp_set_feedback_config(long axis, long config) ......5-22 esp_get_feedback_config(long axis, long *config) ....... 5-22 esp_set_e_stop_config(long axis, long config) ......5-24 esp_get_e_stop_config(long axis, long *config) ......5-24 esp_set_dac_offset(long axis, float offset) ........5-25 esp_get_dac_offset(long axis, float *offset) ........
Page 74
20 seconds to completely upload and parse all ESP-compat- ible stage data and configure UniDrive axes. The esp_init_system() API function must be the first ESP function called in any application. All motors are turned OFF and ESP6000 hardware is reset after an esp_init_system() function call. Returns: ESPOK, ESPERROR...
#include “esp6000.h” Synopsis: int esp_open_system(void) Arguments: None Library Location: \esp6000.dll Description: esp_open_system() initializes the ESP6000 PCI bus communication, but does not invoke a board hardware reset. Returns: ESPOK, ESPERROR Hint: Always evaluate returned value from esp_open_system() Usage Example: # include <stdio.h>...
This is necessary because the ESP6000 needs to apply different control algorithms for different motor types. For example, DC servos are controlled via digital-to-analog converter (DAC) whereas stepper motors are positioned via digital rate multiplier.
Library Location: \esp6000.dll Description: esp_get_sys_config() reports the present ESP system stage/driver configuration. After each system reset or initialization the ESP6000 detects the presence of UniDrive6000 driver channels and ESP-compatible stages connected. BIT# VALUE DEFINITION axis-1 UniDrive6000 not detected...
Page 80
Report ESP System Configuration (Continued) Usage Example: #include “esp6000.h” main() long error, servotick, systconfig; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Get ESP System Configuration */ esp_get_sys_config(&sysconfig); /* print present system configuration */ printf(“Configuration = %x \r\n”, sysconfig);...
Set System Configuration Register esp_get_sys_fault_config Report System Configuration Register Synopsis: #include “esp6000.h” int esp_set_sys_fault_config(long config) int esp_get_sys_fault_config(long *config) Arguments: long config configuration register Library Location: \esp6000.dll Description: esp_set_sys_fault_config() is used to configure system fault checking, event handling, and general setup for all axes.
Page 82
ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Disable Motor Power & Flag Interlock Error */ status = esp_set_sys_fault_config(0x0b); See Also: 5-16 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Set Amplifier I/O Configuration Register esp_get_ampio_config Report Amplifier I/O Configuration Register Synopsis: #include “esp6000.h” int esp_set_ampio_config(long axis, long config) int esp_get_ampio_config(long axis, long *config) Arguments: long axis axis number from 1 to 6 long config configuration register Library Location: \esp6000.dll...
Page 87
Returns: ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Disable Motor & Flag Error On Amp Fault */ esp_set_ampio_config(1,0x0b); See Also: Section 5 — Programming 5-21 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Set Amplifier Input Configuration Register esp_get_feedback_config Report Amplifier Input Configuration Register Synopsis: #include “esp6000.h” int esp_set_feedback_config(long axis, long config) int esp_get_feedback_config(long axis, long *config) Arguments: long axis axis number from 1 to 6 long config configuration register Library Location: \esp6000.dll...
Page 89
Returns: ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Set Flag On Feedback Error */ esp_set_feedback_config(1,0x09); See Also: Section 5 — Programming 5-23 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Returns: ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Set Axis 1 DAC Offset */ esp_set_dac_offset(1, -0.075); /* Save Offset To Non-volatile Memory */ esp_save_parameters(); See Also: esp_save_parameters() Section 5 — Programming 5-25 Artisan Technology Group - Quality Instrumentation ...
Page 92
Library Location: \esp6000.dll Description: esp_save_parameters() API function call causes the ESP6000 to save present param- eters to non-volatile flash EPROM memory. Parameters saved to flash EPROM are automatically restored to working registers after system initialization or reset. NOTE Saved axis settings are automatically overwritten when a different ESP-compatible stage is detected in the same axis channel.
Report Hardware Status For All Axes #include “esp6000.h” Synopsis: int esp_get_hardware_status(long *hardstat1, long *hardstat2) Arguments: long hardstat1 general hardware status register 1 long hardstat2 general hardware status register 2 Library Location: \esp6000.dll Description: (Register #1) esp_get_hardware_status() is used to get general hardware status for all axes. This routine allows you to observe the various digital input signals as they appear to the controller.
Page 94
esp_get_hardware_status Report Hardware Status For All Axes (Continued) axis 4 amplifier fault input low axis 4 amplifier fault input high axis 5 amplifier fault input low axis 5 amplifier fault input high axis 6 amplifier fault input low axis 6 amplifier fault input high reserved reserved reserved...
Page 95
• • reserved reserved Returns: ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() { long stat1, stat2; if (!esp_init_system()) exit(-1); /* Get Board Hardware Status */ esp_get_hardware_status(&stat1, &stat2); printf(“Hardware Status = %x,%x /n/r”, stat1, stat2) See Also: Section 5 — Programming 5-29 Artisan Technology Group - Quality Instrumentation ...
Remember to specify position parameter in user units (e.g., millimeters) Usage Example: #include “esp6000.h” main() long error, servotick; double position; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* enable motor power */ esp_enable_motor(2); /* move axis 2 to absolute position -3.0 */ esp_move_absolute(2,-3.0);...
Page 99
Hint: Usage Example: #include “esp6000.h” main() long error, servotick; double position; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* enable motor power */ esp_enable_motor(2); /* move axis 2 to absolute position -3.0 */ esp_move_absolute(2,-3.0); while (!esp_move_done(2)); /* Wait 2.5 seconds */ esp_delay(2.5);...
ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Enable Axis 2 Motor Power */ esp_enable_motor(2); /* Set Axis Home Speed */ esp_set_home_speed(2,20.0); /* Begin Home Search On Axis 2 */ esp_find_home(2,1);...
Page 103
Hint: Usage Example: #include “esp6000.h” main() long error, servotick; double position; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* enable motor power */ esp_enable_motor(2); /* move axis 2 to absolute position -3.0 */ esp_move_absolute(2,-3.0); while (!esp_move_done(2)); /* check error status */ esp_get_error_num(&error,&ServoTick) ;...
Page 104
Query for possible motion/system errors after homing. Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Enable Axis 2 Motor Power */ esp_enable_motor(2); /* Set Axis Home Speed */ esp_set_home_speed(2,20.0); /* Begin Home Search On Axis 2 */ esp_find_home(2,1);...
Page 105
Report Motion Status For All Axes #include “esp6000.h” Synopsis: int esp_get_motion_status(long *mstat) Arguments: long mstat motion status register Library Location: \esp6000.dll Description: esp_get_motion_status() is used to report motion status for all axes. esp_get_motion_status() API call reports all axes’ motion status in binary format where axis-1 corresponds to bit-0 and axis-6 bit-5.
Report Motion Status For All Axes (Continued) Usage Example: #include “esp6000.h” main() long error, servotick, mstat; double position; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* enable motor power */ esp_enable_motor(1); esp_enable_motor(2); /* move axis 2 to absolute position -3.0 */ esp_move_absolute(1,+5.0);...
Stop Specified Axes #include “esp6000.h” Synopsis: int esp_stop(long axis) Arguments: long axis axis number from 1-6, axis = 0 stops all axes Library Location: \esp6000.dll Description: esp_stop() causes all axes in motion to immediately decelerate using deceleration rate previously set by esp_set_decel() function call.
Stop All Axes #include “esp6000.h” Synopsis: int esp_stop_all(void) Arguments: none Library Location: \esp6000.dll Description: esp_ stop() causes all axes in motion to immediately decelerate using deceleration rate previously set by esp_set_decel() function call. Returns: ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h”...
Page 110
Set Axis Trajectory Mode esp_get_traj_mode Report Axis Trajectory Mode Setting Synopsis: #include “esp6000.h” int esp_set_traj_mode(long axis, long mode) int esp_get_traj_mode(long axis, long *mode) Arguments: long axis axis number from 1-6 long mode possible trajectory modes are: TRAPEZOID, TRAPSTEP, SCURVE, SLAVEP,...
Page 111
Report Axis Trajectory Mode Setting (Continued) Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* set S-Curve trajectory mode */ esp_set_traj_mode(1, SCURVE); /* set axis 1 trajectory parameters */ esp_set_speed(1, 30.0); esp_set_accel(1, 200.0);...
Page 112
Returns: ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* set axis 1 trajectory parameters */ esp_set_speed(1, 30.0); esp_set_accel(1, 200.0); esp_set_decel(1, 150.0); /* check error status */ esp_get_error_num(&error,&ServoTick) ; if (error) printf(“Error %d Reported!\r\n”, error);...
Page 113
Returns: ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* set axis 1 trajectory parameters */ esp_set_max_speed(1, 100.0); esp_set_max_accel(1, 500.0); esp_set_max_jerk(1,100.0); /* check error status */ esp_get_error_num(&error,&ServoTick) ; if (error) printf(“Error %d Reported!\r\n”, error);...
Page 114
Hint: Acceleration typically equal to deceleration. Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* set axis 1 trajectory parameters */ esp_set_speed(1, 30.0); esp_set_accel(1, 200.0); esp_set_decel(1, 150.0); /* check error status */ esp_get_error_num(&error,&ServoTick) ;...
Page 115
Deceleration typically is set equal to acceleration. Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* set axis 1 trajectory parameters */ esp_set_speed(1, 30.0); esp_set_accel(1, 200.0); esp_set_decel(1, 150.0); /* check error status */ esp_get_error_num(&error,&ServoTick) ;...
Page 116
Returns: ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* set axis 1 trajectory parameters */ esp_set_max_speed(1, 100.0); esp_set_max_accel(1, 500.0); esp_set_max_jerk(1,100.0); /* check error status */ esp_get_error_num(&error,&ServoTick) ; if (error) printf(“Error %d Reported!\r\n”, error);...
Page 117
Returns: ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* set S-Curve trajectory mode */ esp_set_traj_mode(1, SCURVE); /* set axis 1 trajectory parameters */ esp_set_speed(1, 30.0); esp_set_accel(1, 200.0); esp_set_decel(1, 150.0);...
Page 118
Returns: ESPOK, ESPERROR Hint: Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* set axis 1 trajectory parameters */ esp_set_max_speed(1, 100.0); esp_set_max_accel(1, 500.0); esp_set_max_jerk(1,100.0); /* check error status */ esp_get_error_num(&error,&ServoTick) ; if (error) printf(“Error %d Reported!\r\n”, error);...
During first time system testing set home speed to 1/10 of maximum speed. Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Enable Axis 2 Motor Power */ esp_enable_motor(2); /* Set Axis Home Speed */ esp_set_home_speed(2,20.0);...
Most applications never need to change ESP-compatible default values. Usage Example: #include “esp6000.h” main() long error, servotick; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* set axis 1 speed parameters */ esp_set_speed(1, 30.0); esp_set_startstop_speed(1, 0.02); /* check error status */ esp_get_error_num(&error,&ServoTick) ;...
Set Axis Jog Mode Speed esp_get_jog_speed Report Axis Jog Mode Speed Setting Synopsis: #include “esp6000.h” int esp_set_jog_speed(long axis, float speed) int esp_get_jog_speed(long axis, float *speed) Arguments: long axis axis number from 1-6 float speed target jog speed and direction <= maximum speed (in user units/second) Library Location: \esp6000.dll...
Hint: Usage Example: #include “esp6000.h” main() long error, servotick; double position; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* enable motor power */ esp_enable_motor(2); /* move axis 2 to absolute position -3.0 */ esp_move_absolute(2,-3.0); while (!esp_move_done(2)); /* check error status */ esp_get_error_num(&error,&ServoTick) ;...
Page 125
Hint: Usage Example: #include “esp6000.h” main() long error, servotick; double position; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* enable motor power */ esp_enable_motor(2); /* move axis 2 to absolute position -3.0 */ esp_move_absolute(2,-3.0); while (!esp_move_done(2)); /* check error status */ esp_get_error_num(&error,&ServoTick) ;...
Report Motor ON/OFF status #include “esp6000.h” Synopsis: int esp_get_motor_onoff_status(long *onoff) Arguments: long *onoff motor ON/OFF status where bits 0 - 5 correspond to axes 1-6 Library Location: \esp6000.dll Description: esp_get_motor_onoff_status() reports all axes motor on/off status in binary format where axis-1 corresponds to bit-0 and axis-6 bit-5.
Page 127
Report Motor ON/OFF status (Continued) Usage Example: #include “esp6000.h” main() long error, servotick, onoff; if(!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* enable motor power */ esp_enable_motor(2); esp_get_motor_onoff_status(&onoff); /* test for exis 2 enabled */ if(onoff& 0x02) printf(“Axis 2 Motor Enabled! \r\n”);...
Assign Master/Slave Axes esp_get_master_slave Report Master/Slave Axes Assignment Synopsis: #include “esp6000.h” int esp_set_master_slave(long master, long slave) int esp_get_master_slave(long *master, long slave) Arguments: long master master axis number from 1-8 (Note: axes 7 and 8 refer to auxiliary counters) long slave...
Set Master/Slave Ratio esp_get_master_slave_ratio Report Master/Slave Ratio Synopsis: #include “esp6000.h” int esp_set_master_slave_ratio(long slave, float ratio) int esp_get_master_slave_ratio(long slave, float ratio) Arguments: long slave slave axis number from 1-6 float ratio master/slave ratio Library Location: \esp6000.dll Description: esp_set_master_slave_ratio() sets master-to-slave gear ratio. The sign of the ratio determines direction of gearing.
Set Master Initial Position esp_get_master_initial_position Report Master Initial Position Synopsis: #include “esp6000.h” int esp_set_master_initial_position(long master, double position) int esp_get_master_ initial_position(long master, double position) Arguments: long slave master axis number from 1-8 double position master initial position (in user units) Library Location: \esp6000.dll...
Set Slave Initial Position esp_get_slave_initial_position Report Slave Initial Position Synopsis: #include “esp6000.h” int esp_set_slave_initial_position(long slave, double position) int esp_get_slave_ initial_position(long slave, double position) Arguments: long slave slave axis number from 1-6 double position slave initial position (in user units) Library Location: \esp6000.dll...
MILLIRADIAN (10), MICRORADIAN (11) NOTE ESP6000 motion UNITS are treated as labels only for user convenience. No conversion is performed when units of measurement are changed from one unit to another. Users will have to re-enter all affected motion parameters (e.g., speed) when units are changed.
Set Motor Following Error Threshold esp_get_following_error Report Motor Following Error Threshold Setting Synopsis: #include “esp6000.h” int esp_set_following_error(long axis, double ferr) int esp_get_following_error(long axis, double *ferr) Arguments: long axis axis number from 1-6 double ferr maximum motor following error threshold in user units Library Location: \esp6000.dll...
Position count is normally set to zero (0) after a home search. Usage Example: #include “esp6000.h” main() long error, servotick; double position; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* report axis 1 position count */ esp_get_position(1,&position); • • • /* zero axis 1 position count */ esp_set_position(1, 0.0);...
Description: esp_set_microstep_factor() provides the controller with the step motor microstepping factor used on the motor driver. This API function call enables the ESP6000 to properly calculate the number of step pulses to output in order to achieve desired encoder-based position.
\esp6000.dll Description: esp_set_fullstep_resolution() provides the controller with the step motor fullstep resolution in user units. This API function call enables the ESP6000 to properly calcu- late the number of step pulses to output in order to achieve desired encoder-based position.
/* set velocity feedforward */ esp_set_vel_feedforward(1,75); /* set acceleration feedforward */ esp_set_acc_feedforward(1,100); /* transfer PID to working registers */ esp_update_filter(); /* save parameters to ESP6000 Flash EPROM */ esp_save_parameters(); /* check error status */ esp_get_error_num(&error,&ServoTick) ; if (error) printf(“Error %d Reported!”, error); See Also:...
/* set velocity feedforward */ esp_set_vel_feedforward(1,75); /* set acceleration feedforward */ esp_set_acc_feedforward(1,100); /* transfer PID to working registers */ esp_update_filter(); /* save parameters to ESP6000 Flash EPROM */ esp_save_parameters(); /* check error status */ esp_get_error_num(&error,&ServoTick) ; if (error) printf(“Error %d Reported!”, error); See Also: esp_set_vel_feedforward, esp_update_filter() Section 5 —...
Page 150
/* transfer PID to working registers */ esp_update_filter(); /* save parameters to ESP6000 Flash EPROM */ esp_save_parameters(); /* check error status */ esp_get_error_num(&error,&ServoTick) ; if (error) printf(“Error %d Reported!”, error); See Also: esp_set_kd(), esp_set_kp(), esp_set_ki(), esp_set_il(), esp_update_filter() 5-84 Artisan Technology Group - Quality Instrumentation ...
Data Acquisition Section 5 — Programming 5-85 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Page 152
Set Analog-To-Digital Converter Input Gain esp_get_adc_gain Report Analog-To-Digital Converter Input Gain Setting Synopsis: #include “esp6000.h” int esp_set_adc_gain(long gain) int esp_get_adc_gain(long *gain) Arguments: long gain ADC gain (V1_25, V2_5, V5, V10) 0 - 3 (corresponding to gain of 1, 2, 4, or 8 respectively) Library Location: \esp6000.dll...
Set Analog-To-Digital Converter Input Range esp_get_adc_range Report Analog-To-Digital Range Setting Synopsis: #include “esp6000.h” int esp_set_adc_range(long range) int esp_get_adc_range(long *range) Arguments: long range ADC range 0 or 1 (UNIPOLAR or BIPOLAR respectively) Library Location: \esp6000.dll Description: esp_set_adc_range() will set the range of all eight (8) ADC channels whereas esp_get_adc_range() will retrieve the current setting.
Page 154
Read Analog-To-Digital Converter Channel #include “esp6000.h” Synopsis: int esp_get_adc(long channel, float *volts, long *timestamp) Arguments: long channel ADC input channel 1 - 8 long data address of variable where ADC data is to be stored long timestamp current servo counter value at time of acquisition Library Location: \esp6000.dll...
Page 155
Read All Analog-To-Digital Converter Channels #include “esp6000.h” Synopsis: int esp_get_all_adc(float *DataArray, long *timestamp) Arguments: float DataArray address of array where ADC data is to be stored long timestamp current servo counter value at time of acquisition Library Location: \esp6000.dll Description: esp_get_all_adc() reads all analog-to-digital converter channels 1-8.
\esp6000.dll Description: esp_set_daq_mode() API function call is used to set Data Acquisition (DAQ) mode. ESP6000 DAQ modes facilitate the capture of any combination of 16-bit, 8-channel analog-to-digital input and 8-quadrature encoded position data. Other commands like esp_get_daq_data() retrieve stored information.
Usage Example: #include “esp6000.h” main() long error, servotick; long Num, DaqStat, Mode, count; float DataArray[512]; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Set ADC Gain and Range*/ esp_set_adc_gain(V10); esp_set_adc_range(BIPOLAR); /* Set Acquisition Mode */ esp_set_daq_mode(1, 1, 1, 1, 2, 512);...
Page 158
Usage Example: #include “esp6000.h” main() long error, servotick; long Num, DaqStat, Mode, count; float DataArray[512]; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Set ADC Gain and Range*/ esp_set_adc_gain(V10); esp_set_adc_range(BIPOLAR); /* Set Acquisition Mode */ esp_set_daq_mode(1, 1, 1, 1, 2, 512);...
Page 159
Usage Example: #include “esp6000.h” main() long error, servotick; long Num, DaqStat, Mode, count; float DataArray[512]; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Set ADC Gain and Range*/ esp_set_adc_gain(V10); esp_set_adc_range(BIPOLAR); /* Set Acquisition Mode */ esp_set_daq_mode(1, 1, 1, 1, 2, 512);...
Page 160
Usage Example: #include “esp6000.h” main() long error, servotick; long Num, DaqStat, Mode, count; float DataArray[512]; if (!esp_init_system()) printf(“ESP6000 Not Initialized! \r\n”); exit(-1); /* Set ADC Gain and Range*/ esp_set_adc_gain(V10); esp_set_adc_range(BIPOLAR); /* Set Acquisition Mode */ esp_set_daq_mode(1, 1, 1, 1, 2, 512);...
Page 161
Report Data Acquisition Results #include “esp6000.h” Synopsis: int esp_get_daq_data(long *DataArray, long *Num, long *DaqStat) Arguments: long DataArray address of array where ADC data is to be stored long Num number of elements returned in array (512 maximum) long DaqStat data acquisition status.
Set Digital I/O Port A,B, & C Direction esp_get_portabc_dir Report Digital I/O Port A,B, & C Direction Setting Synopsis: #include “esp6000.h” int esp_set_portabc_dir(long a, long b, long c) int esp_get_portabc_dir(long *a, long *b, long *c) Arguments: long a, b, c...
Set Digital I/O Port A esp_get_dio_porta Report Digital I/O Port A Status Synopsis: #include “esp6000.h” int esp_set_dio_porta(long data) int esp_get_dio_porta(long *data) Arguments: long data digital I/O Port A Library Location: \esp6000.dll Description: esp_set_dio_porta() writes specified value to digital I/O port A located on both auxiliary I/O and digital I/O connectors on the controller card.
Write To Digital I/O Port B esp_get_dio_portb Report Digital I/O Port B Status Synopsis: #include “esp6000.h” int esp_set_dio_portb(long data) int esp_get_dio_portb(long *data) Arguments: long data digital I/O Port B Library Location: \esp6000.dll Description: esp_set_dio_portb() writes specified value to digital I/O Port B located on both auxiliary I/O and digital I/O connectors on the controller card.
Write To Digital I/O Port C esp_get_dio_portc Report Digital I/O Port C Status Synopsis: #include “esp6000.h” int esp_set_dio_portc(long data) int esp_get_dio_portc(long *data) Arguments: long data digital I/O Port C Library Location: \esp6000.dll Description: esp_set_dio_portc() writes specified value to digital I/O Port C located on both auxiliary I/O and digital I/O connectors on the controller card.
\esp6000.dll Description: esp_get_error_num() API function call reports ESP6000 error messages complete with error number and timestamp. The ESP6000 queues error messages in a 10-word FIFO buffer. The timestamp enables users to know the exact time of error posting. NOTE ESP6000 uses a 10-word FIFO buffer to queue error messages.
\esp6000.dll Description: esp_get_error_string() API function call reports ESP6000 error messages complete with error string, error number, and timestamp. The ESP6000 queues error messages in a 10-word FIFO buffer. The timestamp enables users to know the exact time of error posting.
Page 174
Report ESP6000 Firmware and DLL Version #include “esp6000.h” Synopsis: int esp_get_version(char *FirmwareVer, char *DllVer) Arguments: char *FirmwareVer pointer to start of character string containing firmware version number char *DllVer pointer to start of character string containing DLL version number Library Location: \esp6000.dll...
ESP6000 controller card. A complete list of “C” function prototypes are available in the esp6000.h header file. This file should be included in all your “C” source code. 5.4.1.2 Examples There are several examples included in the install disk in the “\newport\esp6000\vc”...
5.4.3.2 Example(s) All VI’s have two modes of operation, simulated (default) and real execu- tion. VI’s automatically return to simulated mode after execution. If applicable, a single VI may include both read (default) and set parameter functionality . VI’s automatically return to read mode after execution. Input parameters are displayed on the left side of the panel and output parameters on the right side.
Page 177
Errors encountered are stored in the order received along with a ‘servo tick’ time-stamp. The default servo tick resolution is 409msec. Most ESP6000 API function calls return a value, -1 (error exists) or 0 (no error exists), which indicate whether an error has been detected or not.
Section 6 Motion Control Tutorial Motion Systems A typical motion control system is shown in Figure 6.1-1. Controller X-Y Stage Driver Figure 6.1-1—Typical Motion Control System Its major components are: Controller an electronic device that receives motion commands from a user directly or via a computer, verifies the real stage position and generates the necessary control signals.
The chances are that you are less interested in how the components look or what their individual specifications are, but want to be sure that they perform reliably together according to your needs. We mentioned this to make a point: A component is only as good as the system lets (or helps) it to be.
To summarize, the Following Error is the instantaneous difference between the actual position as reported by the position feedback device and the ideal position, as seen by the controller. A negative following error means that the load is trailing the ideal stage. 6.2.2 Error Error has the same definition as the Following Error with the exception that the ideal trajectory is not compared to the position feedback device...
Resolution is the smallest motion that the controller attempts to make. For all DC motor and all standard stepper motor driven stages supported by the ESP6000 controller card, this is also the resolution of the encoder. Keeping in mind that the servo loop is a digital loop, the Resolution can be also viewed as the smallest position increment that the controller can handle.
6.2.6 Minimum Incremental Motion The Minimum Incremental Motion is the smallest motion that a device can reliably make, measured with an external precision measuring device. The controller can, for instance, execute a motion equal to the Resolution (one encoder count) but in reality, the load may not move at all. The cause for this is in the mechanics.
One way to solve the problem is to take a large number of measurements (a few hundred at minimum) for each motion step size and present them in a format that an operator can use to determine the Minimum Incremental Motion by its own standards.
Hysteresis Error Position – Figure 6.2-7 — Hysteresis Plot The error plot in reverse direction is identical with the first one but seems to be shifted down by a constant error. This constant error is the Hysteresis of the system. To justify a little more why we call this error Hysteresis, let’s graph the information in a different format (Figure 6.2-8).
Pitch Roll Figure 6.2-9 — Pitch, Yaw, and Roll Motion Axes The problem with this definition is that, though correct, it is difficult to remember. An expanded graphical representation is presented in Figure 6.2-10. Imagine a tiny carriage driven by a giant leadscrew. When the carriage rolls sideways on the lead screw, we call it a Roll.
Usually it represents a lower value than the motor or driver are capable of. In most cases and in particular for the ESP6000 controller card, the default Maximum Velocity should not be increased. The hardware and firmware are tuned for a particular maximum velocity that cannot be exceeded.
Velocity Regulation. Usually only higher-end motion control systems use this technology and the ESP6000 controller card is one of them. Since having a real tachometer is very expensive and in some...
Also, due to the integrated nature of the ESP6000 system, many basic errors can be significantly corrected by another component of the loop. Backlash, Accuracy and Velocity Regulation are just a few examples where the controller can improve motion device performance.
6.3.1 PID Servo Loops The PID term comes from the proportional, integral and derivative gain factors that are at the basis of the control loop calculation. The common equation given for it is: ∫ • + • e K e dt K where K = proportional gain factor = integral gain factor...
PI Loop To eliminate the error at stop and during long constant velocity motions (usually called steady-state error), an integral term can be added to the loop. This term integrates (adds) the error during each every servo cycle and the value, multiplied by the K gain factor, is added to the control signal (Figure 6.3-3).
6.3.2 Feed-Forward Loops As described in the previous paragraph, the main driving force in a PID loop is the proportional term. The other two correct static and dynamic errors associated with the closed loop. Taking a closer look at the desired and actual motion parameters and at the characteristics of the DC motors, some interesting observations can be made.
There is another special note that has to be made about the feed-forward method. The velocity is approximately proportional to the voltage and only for constant loads, but this is true only if the driver is a simple voltage amplifier or current (torque) driver. A special case is when the driver has its own velocity feedback loop from a tachometer (Figure 6.3-7).
(the constant portion of it) can be set by the user before every move command. Advanced controllers like the ESP6000 controller card allow the user to change them even during the motion. However, the ESP6000 controller card always verifies that a parameter change can be safely performed.
First, let’s look at the hardware required to determine the position of a motion device. The most common (and the one supported by the ESP6000 controller card) are incremental encoders. By definition, these are encod- ers that can track only relative movements, not absolute position.
motion origin switch encoder index pulse Figure 6.4-4 — Slow-Speed Origin Switch Search So far, we can label the two motion segments D and E. During D the control- ler is looking for the origin switch transition and during E for the index pulse.
CAUTION The home search routine is a very important procedure for the posi- tioning accuracy of the entire system and it requires full attention from the controller. Do not interrupt or send other commands during execution, unless it is for emergency purposes. Encoders PID closed-loop motion control requires a position sensor.
Figure 6.5-2— Optical Encoder Scale The encoder read head has three major components: a light source, a mask, and a detector (Figure 6.5-3). The mask is a small scale-like piece, having identically spaced transparent and opaque lines. light source detector mask Figure 6.5-3 —...
The detector signal is similar to a sine wave. Converting it to a digital waveform, we get the desired encoder signal. But this is only one phase, only half of the signal needed to get position information. The second channel is obtained the same way but from a mask that is placed 90% out of phase relative to the first one (Figure 6.5-5).
Another way to characterize motors is by the type of motion they provide. The most common ones are rotary but in some applications, linear motors are preferred. Though the ESP6000 controller card can drive both stepper and DC linear motors, the standard stage family supports only rotary motors.
The four phases, from A to D, are energized one at a time (phase A is shown twice). The rotor teeth line up with the first energized phase, A. If the current to phase A is turned off and B is energized next, the closest rotor tooth to phase B will be pulled in and the motor moves one step forward.
1 2 3 4 5 6 7 8 Figure 6.6-5 — Timing Diagram, Half-Stepping Motor Now, what happens if we energize the same two phases simultaneously but with different currents? For example, let’s say that phase A has the full current and phase B only half.
(noise) is decreased. The ESP6000 drivers use the mini-stepping technique to divide the full step in ten mini-steps, increasing the motor’s resolution by a factor of 10. However, mini-stepping comes at a price. First, the driver electronics are significantly more complicated.
The maximum torque is still one full step away from the stable (desired) position. When mini- and micro-stepping motors are used in open-loop applications there is inherent error, but advanced controllers like the ESP6000 can control the stepper motors with closed loop operation to eliminate this problem. Advantages Stepper motors are primarily intended to be used for low-cost, micropro- cessor controlled positioning applications.
Disadvantages Some of the main disadvantages of the stepper motors are: • could loose steps (synchronization) in open loop operation • requires current (dissipates energy) even at stop • Generates higher heat levels than other types of motors • moves from one step to another are made with sudden motions •...
Advantages DC motors are preferred in many applications for the following reasons: • smooth, ripple-free motion at any speed • high torque per volume • no risk of loosing position (in a closed loop) • higher power efficiency than stepper motors •...
Figure 6.7-1 — Simple Stepper Motor Driver This driver works fine for simple, low-performance applications. But if high speeds are required, having to switch the current fast in inductive loads becomes a problem. When voltage is applied to a winding, the current (and thus the torque) approaches its nominal value exponentially (Figure 6.7-2).
nominal current Phase ON Figure 6.7-4 — Motor Pulse with High Voltage Chopper Once the desired current value is reached, a chopper circuit activates to keep the current close to the nominal value. 6.7.2 DC Motor Drivers There are three major categories of DC motor drivers. The simplest one is a voltage amplifier (Figure 6.7-5).
control signal ±10V Figure 6.7-6 — DC Motor Current Driver In this case, the control signal voltage defines the motor current. The driver constantly measures the motor current and always keeps it propor- tional to the input voltage. This type of driver is usually preferred over the stepper motor driver in digital control loops, offering a stiffer response and thus reducing the dynamic following error.
The UniDrive can be configured either as a current driver or a velocity driver. When used with an ESP-compatible stage, the ESP6000 controller card will configure the UniDrive for optimum stage performance.
Section 7 Servo Tuning Tuning Principles The ESP6000 controller uses a PID servo loop with feed-forward. Servo tuning sets the Kp, Ki, and Kd, and feed-forward parameters of the digital PID algorithm, also called the PID filter. Tuning PID parameters requires a reasonable amount of closed-loop system understanding.
This can be done with external monitoring devices but can introduce errors. The ESP6000 controller avoids this problem by providing an internal trace capability. When trace mode is activated, the controller records a number of different parameters. The parameters can include real instantaneous position, desired position, desired velocity, desired acceleration, DAC output value, etc.
Page 213
Following Error Too Large This is the case of a soft PID loop caused by low values for Kp and Kd. It is especially common after performing the procedures described in para- graph 7.2.2. First increase Kp by a factor of 1.5 to 2. Repeat this operation while monitoring the following error until it starts to exhibit excessive ringing characteristics (more than 3 cycles after stop.) To reduce ringing, add some damping by increasing the Kd parameter.
Compare the results and parameters used with the previous iteration. – The ESP6000 controller uses a servo loop based on the PID with velocity and acceleration feed-forward algorithm. – Use the lowest acceleration the application can tolerate. Lower accel- eration generates less overshoot.
A summary of servo parameter functions is listed in Table 7.2-1. Table 7.2-1 — Servo Parameter Functions Parameter Function Value Set Too Low Value Set Too High Determines Servo loop too soft Servo loop too tight stiffness of with high following and/or causing oscillation servo loop errors...
Section 8 Optional Equipment Options for the ESP6000 controller card consist of a terminal block board, three utility interface cables, and the 100-to-100 and 100-to-68 pin interface cables which connect to the UniDrive and Universal Interface Box (UIB), respectively. Each utility interface cable plugs into a connector on the controller card and has an integral faceplate for attaching to an individual PC slot.
For PC-based configurations, the terminal block board can be connected any time after installation of the ESP6000 controller card, controller card driver software, and Windows motion utility software is complete. First power off the PC, then connect the terminal block board and cables/leads and device(s).
8.1.3 Digital I/O Cable The digital I/O cable is a 50-50 ribbon cable designed for use with the ESP6000 controller card. The cable has a 24-channel digital signal capacity for interfacing devices. Refer to the Windows Motion Utility Setup Hard- ware sub-menu, Digital I/O tab to configure devices for use.
8.1.4 Auxiliary I/O Cable The auxiliary I/O cable is a 40-37 ribbon cable designed for accessing signals from the ESP6000 controller card for customer-defined applica- tions/usage. The cable is shown in Figure 8.1-4, connections are listed in Table 8.1-4, and connector pin-outs are provided in Appendix C.
8.1.5 Driver Interface (100-100 pin) Cable The driver interface cable connects the ESP6000 controller card to the UniDrive6000. The cable is shown in Figure 8.1-5 and connector pin-outs and orientation are provided in Appendix C. N97131 Figure 8.1-5 — Driver Interface (100-100 pin) Cable 8.1.6 Motor/Driver (100-68 pin) Cable...
UniDrive6000 8.2.1 Motor Driver Card The UniDrive6000 can be upgraded to operate with up to six stages by installing a separate driver card for each additional stage. Procedures for adding a driver card are provided in the following paragraphs. WARNING Power off all equipment and unplug AC power cord(s) before installing any equipment.
Page 224
Insert the driver card into the black guides (top and bottom) in the slot (see Figure 8.2-2). N97001E Figure 8.2-2 — Driver Card Installation Push gently until the edge connector at the back of the card mates with the motherboard chassis connector. Tighten the thumbscrews on the driver card.
8.2.2 Rack-Mount Ears This option provides a means of mounting the UniDrive6000 in a 19-inch rack. There is no disassembly required for installation. The ears are attached by putting supplied screws through exterior screw-holes and into permanent nuts inside the enclosure. Installation is shown in Figure 8.2-3. N97109 Figure 8.2-3—...
Section 9 Advanced Capabilities Motion Control Software Overview 9.1.1 Introduction The ESP system motion control software provides the core functionality required for motion control applications. The motion control kernel consists of the servo system and the trajectory generator. A set of func- tions provide an Application Programming Interface (API) for configuring and controlling the software modules.
Data Acquisition Overview The ESP 6000 motion system combines high-performance data acquisition capability with control functions on one card, the ESP6000 controller. The controller card provides physical integration of the two functions, elimi- nating the problems normally associated with integrating different circuit boards, enhancing acquisition synchronization, and reducing power and space requirements.
ADC gain and polarity parameters are software-selectable from either API function calls or through the ESP-util.exe Windows setup utility. Gain settings are 1.25, 2.5, 5.0. or 10.0 volts. Users can select either uni-polar (0 to +) or bi-polar (- to +) polarity (range). First the Input-Multiplexer (MUX) automatically selects one of the eight (8) analog voltage inputs based on the API function call channel parameter.
PCI Bus Overview Newport Corporation’s ESP system employs the Compact Peripheral Interconnect Component (PCI) bus for its high-performance motion control and data acquisition applications. The ESP PCI bus structure is described in the following paragraphs.
Table 9.3-1 — PCI Design Goals Feature Description Address spaces Full definition of three address spaces: memory, I/O, and configuration. Auto configuration Full bit-level specification of the configuration registers necessary to support automatic peripheral detection and configuration. Burst read and write transfers Burst mode for all read and write transfers.
Appendix A Error Messages The ESP 6000 system utilizes messages available via API calls to notify the user when an error has occurred. System response is the same for the user whether operating the ESP-util Windows setup software, or for Visual C, Visual Basic, or LabVIEW.
Page 234
A - 2 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Page 235
Appendix A — Error Messages A - 3 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Page 236
A - 4 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Page 237
Appendix A — Error Messages A - 5 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Page 238
A - 6 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Trouble-Shooting Guide Most of the time, a blown fuse or an error reported by the ESP6000 con- troller card is the result of a more serious problem. Fixing the problem should include not only correcting the effect (blown fuse, limit switch, etc.) but also the cause of the failure.
Refer to Appendix G, Factory Service for assistance. NOTE Many other types of problems are detected by the ESP6000 controller card and reported via error messages. Refer to Appendix A for a complete list and descriptions. B - 2...
Fuse Replacement B.2.1 Replacing Fuses On The UniDrive Rear Power Line Panel WARNING Power-down equipment and unplug AC power cord before replacing fuses. At the rear of the UniDrive6000, depress the fuseholder tabs with a small, thin-bladed screwdriver (see Figure B.2-1) and ease the fuseholder out of the AC plug receptacle.
B.2.2 Replacing Fuses On The UniDrive Motor Power Supply Board A defective motor power supply fuse is indicated by the UniDrive Power LED illuminating red. WARNING Power-down equipment and unplug AC power cord before replacing fuses. CAUTION The UniDrive6000 rear power line panel and motor power supply board are sensitive to static electricity.
Page 243
At the rear of the UniDrive, loosen the thumbscrews on the power line panel, and slide the assembly forward on its card guides and out (see Figure B.2-2). N97118D Figure B.2-2 — Rear Power Line Board Removal Appendix B — Troubleshooting B - 5 Artisan Technology Group - Quality Instrumentation ...
Page 244
Slide the power supply board forward on its card guides and out (see Figure B.2–3) N97119B Figure B.2-3 — Power Supply Board Removal B - 6 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Place the power supply board on a flat surface, and rotate the notch in the fuseholder cover until it releases (see Figure B.2-4). FUSEHOLDER N97120A Figure B.2-4 — Power Supply Board Fuse Replacement Remove and inspect the fuse. Replace as needed with 3.15A, 250V fuse (Schurter part number 70353).
Page 246
B - 8 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Appendix C Connector Pin Assignments ESP6000 Controller Card The controller card utilizes four primary connectors. The card interfaces with the UniDrive6000 via a 100-to-100 pin cable or with the Universal Interface Box via a 100-to-68 pin cable. The connector functions are defined in the following paragraphs.
N97104 Figure C.1-3 — JP2/JP4/JP5 Connector Orientation C.1.1 Main I/O (100-Pin) Connector This connector interfaces the ESP6000 controller card to the UniDrive6000 universal motor driver. Connector pin-outs are listed in Table C.1-1, and functionally described in the following paragraphs. C - 2...
Page 251
Cable Interlock Return This is the return for the Cable Interlock input. This signal should be coupled to the Cable Interlock Input at the motor driver (amplifier) side to indicate that the 100-pin connector is properly fastened. Digital Ground Ground reference used for all digital signals. E-Stop Input The Emergency Stop input is pulled-up to +5 volts with a 1KΩ...
HIGH. C.1.2 Motor/Driver Interface (100-to-68 Pin) Cable This cable interfaces the ESP6000 controller card to the Universal Inter- face Box (UIB). Connector pin-outs are listed in Table C.1-2 and functional descriptions are provided in the following paragraphs.
Reset Output From Controller The Reset output is a TTL buffered output which represents ESP6000 hardware reset status of the controller itself. When the controller is held in a reset state this output is a logical LOW.
Table C.1-3 — Digital Connector Pin-Outs JP4 Pins Function DB 50 Pins Port C, Bit-7 Ground Port C, Bit-6 Ground Port C, Bit-5 Ground Port C, Bit-4 Ground Port C, Bit-3 Ground Port C, Bit-2 Ground Port C, Bit-1 Ground Port C, Bit-0 Ground Port B, Bit-7...
Ground reference used for all digital signals. C.1.4 Auxiliary I/O (40-Pin) JP5 Connector This connector provides access to the ESP6000 auxiliary I/O signals. The auxiliary I/O connector provides access to; (a) additional quadrature encoder counters, (b) digital I/O, and (c) E-Stop input. Connector pin-outs are listed in Table C.1-4, and functionally described in the following...
Page 259
Table C.1-4 — Auxiliary Connector Pin-Outs (Continued) JP5 Pins Function DB 37 Pins Digital Ground Unused Unused Unused +5V, 250mA (maximum) +5V supply available from the PC. +12V, 250mA (maximum) +12V supply available from the PC. –12V, 250mA (maximum) –12V supply available from the PC. Axis Ch.
Page 260
Auxiliary Ch. 7 Input B(+) The B(+) input is pulled-up to +5 volts with a 1KΩ resistor. The signal is buffered with a 26LS32 differential receiver. The B(+) quadrature encoded signal originates from external feedback circuitry and is used for position tracking.
32mA (maximum). DSP Reset Output The Reset output is a TTL-buffered output which represents ESP6000 hardware reset status of the controller itself. When the controller is held in a reset state this output is a logical LOW. This output can be used to reset external devices whenever the ESP6000 DSP is reset.
Page 262
Digital Ground Ground reference used for all digital signals. E-Stop Interrupt to DSP This input is normally high. Pulling it low will interrupt the ESP6000 controller card. Reset Output from DSP This signal is a buffered active-low signal connected to the ESP6000 controller card reset signal.
UniDrive6000 Universal Motor Driver C.2.1 Controller Input Connector This connector interfaces the UniDrive6000 to the ESP6000 controller card via a one hundred-pin Newport-supplied cable. Refer to the ESP6000 controller card paragraph in this section for pin-out descriptions. Connec- tor orientation is shown in Figure C.2-1.
Table C.2-1 — Driver Card Connector Pin-Outs Pins Stepper Motor DC Motor Stepper Phase 1 Tacho Generator(+) Stepper Phase 1 Tacho Generator(+) Stepper Phase 2 Tacho Generator(–) Stepper Phase 2 Tacho Generator(–) Stepper Phase 3 DC Motor Phase(+) Stepper Phase 3 DC Motor Phase(+) Stepper Phase 4 DC Motor Phase(–)
Page 265
Stepper Motor Phase 1 Output This output must be connected to Winding A+ lead of a two-phase stepper motor. The voltage seen at this pin is pulse-width modulated with a maximum amplitude of 60V DC. Stepper Motor Phase 2 Output This output must be connected to Winding A- lead of a two-phase stepper motor.
Page 266
Encoder A(–) Input The A(–) input is pulled-up to +5 volts and pulled down to ground with 1KΩ resistors. This facilitates both single- and double-ended signal han- dling into a 26LS32 differential receiver. The A(–) encoder encoded signal originates from the stage position feedback circuitry and is used for position tracking.
UniDrive6000 is going to be incorporated. The various connector functions and signals are defined in the following paragraphs. Connector orientations are shown in Figure C.3-1. PIN 100 PIN 1 A, B PIN 1 MODEL#: ESP6000-INTF BD J13B J14B J15B J16B J12B J11B...
C.3.1 MD4 15-Pin Connector This connector is used for interfacing with the MD4 motor driver. Connec- tor pin-outs are listed in Table C.3-1, and functionally described in the following paragraphs. Table C.3-1 — MD4 Connector Pin-Outs J1-J6 Pins Function Not Connected Enable_1 +P_1 -P_1...
Page 269
+P_1 The Step Output is an open collector (i.e., 7407) output pulled-up to +5 volts with a 1KΩ resistor. This output is used to control the commutation sequence of a step motor. The motor will increment one step for each ‘pulse’...
C.3.2 Eighteen-Lead Connector This connector interfaces the ESP6000 controller card to customer-defined devices. The connector is physically comprised of two banks of leads, upper and lower. Connector pin-outs are listed in Table C.3-2 and C.3-3, and functionally described in the following paragraphs.
Fault_1 - _6 This Amplifier Fault input is pulled-up to +5 volts with a 1KΩ resistor by the controller. The state of this signal is controlled by the motor driver and monitored by the controller. ESP_DAC_1 - 6 ESP_DAC is the controller’s servo control, ±10 volt analog signal output. AGND Servo digital-to-analog converter (DAC) ground.
C.3.4 Nine-Lead Connector This connector provides access to non-motion signals from the ESP6000 controller card. Connector pin-outs are listed in Table C.3-5, and function- ally described in the following paragraphs. Table C.3-5 — Nine-Pin Connector Pin-Outs J9 Leads Function +12V –12V...
RS_A The RS_A input is pulled-up to +5 volts with a 1KΩ resistor. The signal is buffered with a 26LS32 differential receiver. The RS_A encoder encoded signal originates from the stage position feedback circuitry and is used for position tracking. RS_B The RS_B input is pulled-up to +5 volts with a 1KΩ...
Page 275
Appendix D Binary Conversion Table Some of the status reporting commands return an ASCII character that must be converted to binary. To aid with the conversion process, the following table converts all character used and some other common ASCII symbols to decimal and binary. To also help in working with the I/O port related commands, the table is extended to a full byte, all 256 values.
System Upgrades ESP6000 Controller Card E.1.1 Installing New Software Refer to Appendix G, Factory Service to contact Newport Corporation for software upgrades. A new version of the Windows software can be installed any time after the ESP6000 controller card and driver software have been installed. New- version software installations are performed in the same manner as first- time installations.
Page 281
Select the Install/Uninstall tab from the Add/Remove Programs Properties screen, then select ESP-util and ADD/REMOVE. The Select Uninstall Method screen appears (Figure E.1-2) Figure E.1-2 — Select Uninstall Method Screen Select NEXT from the Select Uninstall Method screen. The Perform Uninstall screen appears ( Figure E.1-3).
New firmware installation may be required due to upgrading. Refer to Appendix G, Factory Service to contact Newport Corporation for ordering information. To begin an installation, select FIRMWARE From the ESP6000 Setup Menu (see Figure E.1-4). Figure E.1-4 — ESP6000 Setup Menu The Update Firmware message screen appears (see Figure E.1-5).
Page 283
(see Figure E.1-7). Figure E.1-7 — Firmware Update Screen The Firmware Update screen will display status until downloading is complete, then the user will be returned to the ESP6000 Initialization screen (see Figure E.1-8). Appendix E — System Upgrades E - 5 Artisan Technology Group - Quality Instrumentation ...
Page 284
Figure E.1-8 — ESP6000 Initialization Screen When the screen message indicates that the ESP6000 is initialized, the system is ready for use again. E - 6 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
ESP Configuration Logic Each time a stage or stages are disconnected/re-connected, or the system is powered down and then back up, the ESP6000 controller card verifies the type of stage(s) present and re-configures its own flash memory if necessary (i.e., new stage). The controller card does not modify parameters on ESP-compatible stage memory.
Page 286
F - 2 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Service Form (see next page). Please have the following information available: – Equipment model number (ESP 6000) – Equipment serial number (for either ESP6000 controller card or UniDrive6000 universal motor driver) – Distribution revision number from a floppy disk (see Figure 4.1-20 in the Windows Utilities section) –...
Page 288
G - 2 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Newport Corporation Service Form U.S.A. Office: 714/863-3144 FAX: 714/253-1800 Name RETURN AUTHORIZATION # __________________________ ____________________________________________________________________________________ (Please obtain prior to return of item) Company ______________________________________________________________________________ Address Date ________________________________________________________________________________ ______________________________________________________________ Phone Number Country ________________________________________________________________________________ ______________________________________________ FAX Number P.O. Number _________________________________________________________________________ _________________________________________________ Item(s) Being Returned:...
Page 290
G - 4 Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com...
Page 291
Artisan Technology Group is your source for quality new and certified-used/pre-owned equipment SERVICE CENTER REPAIRS WE BUY USED EQUIPMENT • FAST SHIPPING AND DELIVERY Experienced engineers and technicians on staff Sell your excess, underutilized, and idle used equipment at our full-service, in-house repair center We also offer credit for buy-backs and trade-ins •...