Summary of Contents for Galil Motion Control DMC-1600 Series
Page 1
USER MANUAL DMC-1600 Manual Rev. 1.0h By Galil Motion Control, Inc. Galil Motion Control, Inc. 270 Technology Way Rocklin, California 95765 Phone: (916) 626-0101 Fax: (916) 626-0102 Internet Address: support@galilmc.com URL: www.galilmc.com Rev 8/2011...
Page 2
Using This Manual Your DMC-1600 motion controller has been designed to work with both servo and stepper type motors. Installation and system setup will vary depending upon whether the controller will be used with stepper motors or servo motors. To make finding the appropriate instructions faster and easier, icons will be next to any information that applies exclusively to one type of system.
Contents Contents Chapter 1 Overview Introduction ..........................1 Overview of Motor Types......................2 Standard Servo Motor with +/- 10 Volt Command Signal .......... 2 Brushless Servo Motor with Sinusoidal Commutation..........2 Stepper Motor with Step and Direction Signals ............2 DMC-1600 Functional Elements ....................
Page 4
Example 3 - Multiple Axes..................25 Example 4 - Independent Moves ................25 Example 5 - Position Interrogation................25 Example 6 - Absolute Position .................. 26 Example 7 - Velocity Control..................26 Example 8 - Operation Under Torque Limit ............. 26 Example 9 - Interrogation..................
Chapter 1 Overview Introduction The DMC-1600 series motion control cards install directly into a compact PCI bus. This controller series offers many enhanced features including high speed communications, non- volatile program memory, fast encoder speeds, and improved cabling for EMI reduction.
Overview of Motor Types The DMC-1600 can provide the following types of motor control: 1. Standard servo motors with +/- 10 volt command signals 2. Brushless servo motors with sinusoidal commutation 3. Step motors with step and direction signals 4. Other actuators such as hydraulics - For more information, contact Galil. The user can configure each axis for any combination of motor types, providing maximum flexibility.
DMC-1600 Functional Elements The DMC-1600 circuitry can be divided into the following functional groups as shown in Figure 1.1 and discussed below. WATCHDOG TIMER ISOLATED LIMITS AND HOME INPUTS MAIN ENCODERS 68331 HIGH-SPEED 2ND FIFO AUXILIARY ENCODERS MICROCOMPUTER MOTOR/ENCODER WITH INTERFACE +/- 10 VOLT OUTPUT FOR 2 Meg RAM...
handling circuitry. The secondary channel can be enabled where data is placed into the DMC- 1600 FIFO buffer. General I/O The DMC-1600 provides interface circuitry for 8 bidirectional, optoisolated inputs, 8 TTL outputs and 8 analog inputs with 12-Bit ADC (16-bit optional). The general inputs can also be used as high speed latches for each axes.
Encoder An encoder translates motion into electrical pulses which are fed back into the controller. The DMC-1600 accepts feedback from either a rotary or linear encoder. Typical encoders provide two channels in quadrature, known as CHA and CHB. This type of encoder is known as a quadrature encoder.
Page 14
THIS PAGE LEFT BLANK INTENTIONALLY 6 • Chapter 1 Overview DMC-1600...
Flash EEPROM Master Reset & UPGRD jumpers U9/U2 INCOM & LSCOM jumpers. Used for bypassing opto-isolation for the limit, home, and abort switches and the digital inputs IN1 - IN8. See section “Bypassing Opto-Isolation”, Chap3. Motorola 68331 microprocessor Jumpers used for configuring stepper motor operation on axes X-W GL-1800 custom gate array 100-pin high density connector (Axes X-W)
Installing the DMC-1600 Installation of a complete, operational DMC-1600 system consists of 9 steps. Step 1. Determine overall motor configuration. Step 2. Install Jumpers on the DMC-1600. Step 3. Install the communications software. Step 4. Install the DMC-1600 in the PC. Step 5.
Further instruction for sinusoidal commutation connections are discussed in Step 6. Stepper Motor Operation: To configure the DMC-1600 for stepper motor operation, the controller requires a jumper for each stepper motor and the command, MT, must be given. The installation of the stepper motor jumper is discussed in the following section entitled "Installing Jumpers on the DMC-1600".
Step 3. Install the Communications Software After applying power to the computer, you should install the Galil software that enables communication between the controller and PC. Using Dos: Using the Galil Software CD-ROM, go to the directory DMCDOS. Type “INSTALL” at the DOS prompt and follow the directions.
After providing the setup information, the terminal should indicate, “Attempting to connect to controller”, followed by the colon “:” being sent. This indicates a successful connection. Note: The BIOS for your PC when using DOS should be set for Non-Plug and Play OS for successful communication.
Example: Sinusoidal Commutation Configuration using a DMC-1640 BAXY This command causes the controller to be reconfigured as a DMC-1620 controller. The X and Y axes are configured for sinusoidal commutation. The first phase of the X axis will be the motor command X signal.
Page 22
The standard configuration of the AEN signal is TTL active high. In other words, the AEN signal will be high when the controller expects the amplifier to be enabled. The polarity and the amplitude can be changed if you are using the ICM-1900 interface board.
Hall sensors are only used with sinusoidal commutation and are not necessary for proper operation. The use of hall sensors allows the controller to automatically estimate the commutation phase upon reset and also provides the controller the ability to set a more precise commutation phase. Without hall sensors, the commutation phase must be determined manually.
Page 24
To limit the maximum voltage signal to your amplifier, the DMC-1600 controller has a torque limit command, TL. This command sets the maximum voltage output of the controller and can be used to avoid excessive torque or speed when initially setting up a servo system.
Page 25
Sometimes the feedback polarity is correct (the motor does not attempt to run away) but the direction of motion is reversed with respect to the commanded motion. If this is the case, reverse the motor leads AND the encoder signals. If the motor moves in the required direction but stops short of the target, it is most likely due to insufficient torque output from the motor command signal ACMD.
Page 26
AUX encoder AUX encoder 100 pin high density connector Reset Switch Error LED input connector input connector AMP part # 2-178238-9 DB25 female 26 pin header Filter Chokes DC Power Supply DC Servo Motor Figure 2-2 - System Connections with the AMP-1900Amplifier. Note: this figure shows a Galil Motor and Encoder which uses a flat ribbon cable for connection to the AMP-1900 unit.
Page 27
AUX encoder AUX encoder Reset Switch input connector input connector 100 pin high density connector Error LED DB25 female 26 pin header AMP part # 2-178238-9 -MAX ADG202 -MBX Motor Command -INX buffer circuit +5 VDC +INX +MBX 7407 +MAX Amp enable buffer circuit Encoder Wire Connections...
Step 8b. Connect Sinusoidal Commutation Motors When using sinusoidal commutation, the parameters for the commutation must be determined and saved in the controller’s non-volatile memory. The servo can then be tuned as described in Step 9. Step A. Disable the motor amplifier Use the command, MO, to disable the motor amplifiers.
Page 29
BSX = 2,700 will test the X axis with a voltage of 2 volts, applying it for 700 millisecond for each phase. In response, this test indicates whether the DAC wiring is correct and will indicate an approximate value of BM. If the wiring is correct, the approximate value for BM will agree with the value used in the previous step.
Page 30
Warning: This command must move the motor to find the zero commutation phase. This movement is instantaneous and will cause the system to jerk. Larger applied voltages will cause more severe motor jerk. The applied voltage will typically be sufficient for proper operation of the BZ command. For systems with significant friction, this voltage may need to be increased and for systems with very small motors, this value should be decreased.
Step 8c. Connect Step Motors In Stepper Motor operation, the pulse output signal has a 50% duty cycle. Step motors operate open loop and do not require encoder feedback. When a stepper is used, the auxiliary encoder for the corresponding axis is unavailable for an external connection. If an encoder is used for position feedback, connect the encoder to the main encoder input corresponding to that axis.
a few times, and get varying responses, especially with reversing polarity, it indicates system vibration. When this happens, simply reduce KD. Next you need to increase the value of KP gradually (maximum allowed is 1023). You can monitor the improvement in the response with the Tell Error instruction KP 10 (CR) Proportion gain TE X (CR)
Example 3 - Multiple Axes Objective: Move the four axes independently. Instruction Interpretation PR 500,1000,600,-400 Distances of X,Y,Z,W SP 10000,12000,20000,10000 Slew speeds of X,Y,Z,W AC 100000,10000,100000,100000 Accelerations of X,Y,Z,W DC 80000,40000,30000,50000 Decelerations of X,Y,Z,W BG XZ Start X and Z motion BG YW Start Y and W motion Example 4 - Independent Moves...
Example 6 - Absolute Position Objective: Command motion by specifying the absolute position. Instruction Interpretation DP 0,2000 Define the current positions of X,Y as 0 and 2000 PA 7000,4000 Sets the desired absolute positions BG X Start X motion BG Y Start Y motion After both motions are complete, the X and Y axes can be command back to zero: Move to 0,0...
Example 9 - Interrogation The values of the parameters may be interrogated. Some examples … Instruction Interpretation KP ? Return gain of X axis. KP ,,? Return gain of Z axis. KP ?,?,?,? Return gains of all axes. Many other parameters such as KI, KD, FA, can also be interrogated. The command reference denotes all commands which can be interrogated.
DP 0 Define current position as zero V1=1000 Set initial value of V1 #Loop Label for loop PA V1 Move X motor V1 counts BG X Start X motion AM X After X motion is complete WT 500 Wait 500 ms TP X Tell position X V1=V1+1000...
V1 = _TPX Determine distance to zero PR -V1/2 Command X move 1/2 the distance Start X motion After X moved WT 500 Wait 500 ms Report the value of V1 JP #C, V1=0 Exit if position=0 JP #B Repeat otherwise Label #C End of Program To start the program, command...
Page 38
(-4000,4000) (0,4000) R=2000 (-4000,0) (0,0) local zero Figure 2-4 Motion Path for Example 16 30 • Chapter 2 Getting Started DMC-1600...
Page 39
THIS PAGE LEFT BLANK INTENTIONALLY Chapter 2 Getting Started • 31 DMC-1600...
Chapter 3 Connecting Hardware Overview The DMC-1600 provides optoisolated digital inputs for forward limit, reverse limit, home, and abort signals. The controller also has 8 optoisolated, uncommitted inputs (for general use) as well as 8 TTL outputs and 8 analog inputs configured for voltages between +/- 10 volts. The DMC-1610, 1620, 1630 and 1640 controllers have an additional 64 I/O which can be connected to OPTO 22 racks.
switch can be printed to the screen with the command, MG _LFx or MG _LFx. This prints the value of the limit switch operands for the 'x' axis. The logic state of the limit switches can also be interrogated with the TS command. For more details on TS see the Command Reference. Home Switch Input Homing inputs are designed to provide mechanical reference points for a motion control application.
commands immediately, whereas the limit switch response causes the controller to make a decelerated stop. NOTE: The effect of an Abort input is dependent on the state of the off-on-error function for each axis. If the Off-On-Error function is enabled for any given axis, the motor for that axis will be turned off when the abort signal is generated.
The optoisolated inputs are connected in the following groups Group (Controllers with 1- 4 Axes) Group (Controllers with 5 - 9 Axes) Common Signal IN1-IN8, ABORT IN1-IN16, ABORT INCOM FLX,RLX,HOMEX FLX,RLX,HOMEX,FLY,RLY,HOMEY LSCOM FLY,RLY,HOMEY FLZ,RLZ,HOMEZ,FLW,RLW,HOMEW FLZ,RLZ,HOMEZ FLE,RLE,HOMEE,FLF,RLF,HOMEF FLW,RLW,HOMEW FLG,RLG,HOMEG,FLH,RLH,HOMEH LSCOM FLSX HOMEX RLSY FLSY...
(For Voltages > +28V) (For Voltages < -28V) LSCOM LSCOM 2.2K 2.2K Supply Isolated Isolated Supply Configuration to source current at the LSCOM Configuration to sink current at the LSCOM terminal and sink current at switch inputs terminal and source current at switch inputs Figure 3-2.
OE1command (Enable Off-On-Error) is given and the position error exceeds the error limit. As shown in Figure 3-4, AEN can be used to disable the amplifier for these conditions. The standard configuration of the AEN signal is TTL active high. In other words, the AEN signal will be high when the controller expects the amplifier to be enabled.
Chapter 4 - Software Tools and Communications Introduction ® Galil software is available for PC computers running Microsoft Windows to communicate with DMC-1600 controllers. Standard Galil communications software utilities are available for Windows operating systems, which includes SmartTERM and WSDK. These software packages operate under Windows 98SE, ME, NT4.0, 2000, and XP, and include the necessary drivers.
SmartTERM WSDK Application Level Galil ActiveX Controls (DMCShell.ocx, DMCReg.ocx, DMCTerm.ocx, etc.) DMC32.dll DMCBUS32.dll Galil API Level GLWDMPCI.sys. Driver Level DMC-1600 FIFO, IRQ Hardware Interface Figure 1 - Software Communications Hierarchy Galil SmartTERM SmartTERM is Galil’s basic communications utility that allows the user to perform basic tasks such as sending commands directly to the controller, editing, downloading, and executing DMC programs, uploading and downloading arrays, and updating controller firmware.
Page 48
Figure 4.1 - Galil SmartTERM layout The following SmartTERM File menu items describe basic features of the application. Launches a file-open dialog box that Download File... selects a file (usually a DMC file) to be downloaded to the controller. This command uses the DL command to download the file, clearing all programs in the controller's RAM.
Page 49
Opens the "Download Array" dialog Download Array... box that allows an array in the controller's RAM to be defined and populated with data. The dialog box uses the DMC32.dll 's DMCArrayDownload function to download the array. The controller's firmware must be recent enough to support the QD command.
Page 50
instances of the application can be open at once. Causes the currently open connection to a Disconnect from Controller Galil Motion Controller to be closed. Opens the "Edit Registry" dialog box, Controller Registration... which allows the Galil Registry entries to be edited or new entries for non Plug-and- Play controllers to be created or deleted.
Page 51
displayed for the currently connected controller. The dialog automatically configures itself to display the data record for each type of Galil Motion Controller. The Options menu command causes the Options Options dialog to be displayed. The Options dialog box allows several application options to be set.
Figure 4.2 - Data Record Display for a DMC-1840 The Data Record display is user customizable so that all, or just parts, of the record can be displayed. To modify the display, right click on an object to access the options. For detailed information about the features of the Galil DMC SmartTERM including the Data Record, please consult Help Topics under the Help menu.
Page 53
to the device by the driver when a card is installed as per the installation procedure outlined in Ch.2. However, some advanced settings are available to modify the communications methods and data record access. These settings are accessed through the Galil Registry Editor after the card is properly installed.
Page 54
Figure 4.4 - General Communications Parameters Dialog Advanced communications settings are available under the Communications Method tab to allow different methods of communications to be utilized (shown in Fig 4.5). The version 7 (and higher) drivers and .DLL’s allow for three different methods of communications: Interrupt, Stall, and Delay.
Page 55
Interrupt Communications Method The interrupt method overall is the most efficient of the three methods. The software communications method uses a hardware interrupt to notify the application that a response or unsolicited data is available. This allows for greater efficiency and response time, since the drivers do not have to “poll”...
Figure 4.7 - DMC-1600 Data Record Parameters Windows Servo Design Kit (WSDK) The Galil Windows Servo Design Kit includes advanced tuning and diagnostic tools that allows the user to maximize the performance of their systems, as well as aid in setup and configuration of Galil controllers. WSDK is recommended for all first time users of Galil controllers.
Figure 4.8- WSDK Main Screen Creating Custom Software Interfaces Galil provides programming tools so that users can develop their own custom software interfaces to a Galil controller. These tools include the ActiveX Toolkit and DMCWin. ActiveX Toolkit Galil's ActiveX Toolkit is useful for the programmer who wants to easily create a custom operator interface to a Galil controller.
Page 58
• a terminal control for sending commands and editing programs • a polling window for displaying responses from the controller such as position and speed • a storage scope control for plotting real time trajectories such as position versus time or X versus Y •...
Page 59
rc = DMCOpen(1, hWnd, &hDmc); if (rc == DMCNOERROR) char szBuffer[64]; // Move the X axis 1000 counts rc = DMCCommand(hDmc, "PR1000;BGX;", szBuffer, sizeof(szBuffer)); // Disconnect from controller number 1 as the last action rc = DMCClose(hDmc); return 0; Galil Communications API with Visual Basic Declare Functions To use the Galil communications API functions, add the module file included in the C:\ProgramFiles\Galil\DMCWIN\VB directory named DMCCOM40.BAS.
m_nController = 1 m_nRetCode = DMCOpen(m_nController, 0, m_hDmc) End Sub Private Sub Form_Unload(Cancel As Integer) m_nRetCode = DMCClose(m_hDmc) End Sub Where: ‘m_nController’ is the number for the controller in the Galil registry. ‘m_hDmc’ is the DMC handle used to identify the controller. It is returned by DMCOpen. ‘m_nRetCode’...
Command Format and Controller Response Instructions may be sent in Binary or ASCII format. Binary communication allows for faster data processing since the controller does not have to first decode the ASCII characters. ASCII Command mode In the ASCII mode, instructions are represented by two characters followed by the appropriate parameters. Each instruction must be terminated by a carriage return or semicolon.
Page 62
For example, the command STS commands motion to stop on the S axis vector motion. The third byte for the equivalent binary command would then be 01. Byte 4 specifies the axis # or data field as follows Bit 7 = H axis or 8 data field Bit 6 = G axis or 7 data field...
Controller Event Interrupts and User Interrupts The DMC-1600 provides a hardware interrupt line that will, when enabled, interrupt the PC bus, which will allow the controller to notify the host application of particular events occurring on the controller. Interrupts free the host from having to poll for the occurrence of certain events such as motion complete or excess position error.
Page 64
Input 4 Input 5 Input 6 Input 7 Input 8 User Interrupts (UI command) The DMC-1600 also provides 16 User Interrupts which can be sent by executing the command UIn, where n is an integer between 0 and 15. The UI command does not require the EI command. UI commands are useful in DMC programs to let the host application know that certain points within the DMC program have occurred.
Hardware Level Communications This section of the chapter describes in detail the structures used to communicate with the controller at the register interface level. The information in this section is intended for advanced programmers with extensive knowledge of ISA and PCI bus operation. For main bi-directional communication, the DMC-1600 features a 512 character write FIFO buffer, and a 512 character read buffer.
Page 66
Write Procedure - To send data to the DMC-1800, read the control register at address N+4 and check bit 0. If bit 0 is zero, the DMC-1600 FIFO buffer is not full and a character may be written to the WRITE register at address N. If bit 0 is one, the buffer is full and any additional data will be lost.
Enabling and Reading IRQ’s In order to service interrupts from the IRQ line, the IRQ control register (Status Byte) must first be enabled. This is done by setting bit 6 of the control register (N+4) equal to “1”. When interrupted, first the interrupt routine must verify that the interrupt originated from the DMC-1600 controller.
Page 68
general output block 4 (outputs 33-40) general output block 5 (outputs 41-48) general output block 6 (outputs 49-56) general output block 7 (outputs 57-64) general output block 8 (outputs 65-72) general output block 9 (outputs 73-80) error code general status 24-25 segment count of coordinated move for S plane 26-27...
Page 69
w,d axis switches w,d axis stop code 128-131 w,d axis reference position 132-135 w,d axis motor position 136-139 w,d axis position error 140-143 w,d axis auxiliary position 144-147 w,d axis velocity 148-149 w,d axis torque 150-151 w,d axis analog input 152-153 e axis status e axis switches...
252-255 h axis auxiliary position 256-259 h axis velocity 260-261 h axis torque 262-263 h axis analog input Note: UB = Unsigned Byte, UW = Unsigned Word, SW = Signed Word, SL = Signed Long Word Explanation of Status Information and Axis Switch Information General Status Information (1 Byte) BIT 7 BIT 6...
Page 71
due to final ST or decel. Limit Switch Notes Regarding Velocity, Torque and Analog Input Data The velocity information that is returned in the data record is 64 times larger than the value returned when using the command TV (Tell Velocity). See command reference for more information about TV. The torque information is represented as a number in the range of +/-32544.
Chapter 5 Command Basics Introduction The DMC-1600 provides over 100 commands for specifying motion and machine parameters. Commands are included to initiate action, interrogate status and configure the digital filter. These commands can be sent in ASCII or binary. In ASCII, the DMC-1600 instruction set is BASIC-like and easy to use. Instructions consist of two uppercase letters that correspond phonetically with the appropriate function.
specified for an axis, the previous value is maintained. The space between the data and instruction is optional. To view the current values for each command, type the command followed by a ? for each axis requested. PR 1000 Specify X only as 1000 PR ,2000 Specify Y only as 2000 PR ,,3000...
Command Syntax - Binary Some commands have an equivalent binary value. Binary communication mode can be executed much faster than ASCII commands. Binary format can only be used when commands are sent from the PC and cannot be embedded in an application program. Binary Command Format All binary commands have a 4 byte header and are followed by data fields.
03 E8 represents 1000 FE OE represents -500 Example The command ST XYZS would be A1 00 01 07 where A1 is the command number for ST 00 specifies 0 data fields 01 specifies stop the coordinated axes S 07 specifies stop X (bit 0), Y (bit 1) and Z (bit 2) 2 Binary command table Command Command...
reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved reserved Controller Response to DATA The DMC-1600 returns a : for valid commands. The DMC-1600 returns a ? for invalid commands. For example, if the command BG is sent in lower case, the DMC-1600 will return a ?.
Format (PF), Variable Format (VF) and Leading Zeros (LZ) command. See Chapter 7 and the Command Reference. Summary of Interrogation Commands Report Command Position Report Latch ∧ ∧ Firmware Revision Information Stop Code Tell Status Tell Error Code Tell Dual Encoder Tell Error Tell Input Tell Position...
All of the command operands begin with the underscore character (_). For example, the value of the current position on the X axis can be assigned to the variable ‘V’ with the command: V=_TPX The Command Reference denotes all commands which have an equivalent operand as "Used as an Operand".
Page 79
THIS PAGE LEFT BLANK INTENTIONALLY Chapter 5 Command Basics • 71 DMC-1600...
Chapter 6 Programming Motion Overview The DMC-1600 provides several modes of motion, including independent positioning and jogging, coordinated motion, electronic cam motion, and electronic gearing. Each one of these modes is discussed in the following sections. The DMC-1610 is a single axis controller and uses X-axis motion only. Likewise, the DMC-1620 uses X and Y, the DMC-1630 uses X,Y and Z, and the DMC-1640 uses X,Y,Z and W.
Third axis must remain tangent to 2-D motion path, such as Coordinated motion with tangent axis specified knife cutting. VS,VA,VD Electronic gearing where slave axes are scaled to master axis Electronic Gearing which can move in both directions. GM (if gantry) Master/slave where slave axes must follow a master such as Electronic Gearing conveyer speed.
The Begin (BG) command can be issued for all axes either simultaneously or independently. XYZ or W axis specifiers are required to select the axes for motion. When no axes are specified, this causes motion to begin on all axes. The speed (SP) and the acceleration (AC) can be changed at any time during motion, however, the deceleration (DC) and position (PR or PA) cannot be changed until motion is complete.
Page 83
Operand Summary - Independent Axis OPERAND DESCRIPTION _ACx Return acceleration rate for the axis specified by ‘x’ _DCx Return deceleration rate for the axis specified by ‘x’ _SPx Returns the speed for the axis specified by ‘x’ _Pax Returns current destination if ‘x’ axis is moving, otherwise returns the current commanded position if in a move.
VELOCITY (COUNTS/SEC) X axis velocity profile 20000 Y axis velocity profile 15000 Z axis velocity profile 10000 5000 TIME (ms) Figure 6.1 - Velocity Profiles of XYZ Notes on fig 6.1: The X and Y axis have a ‘trapezoidal’ velocity profile, while the Z axis has a ‘triangular’...
DC x,y,z,w Specifies deceleration rate IP x,y,z,w Increments position instantly IT x,y,z,w Time constant for independent motion smoothing JG +/-x,y,z,w Specifies jog speed and direction ST XYZW Stops motion Parameters can be set with individual axes specifiers such as JGY=2000 (set jog speed for Y axis to 2000) or ACYH=400000 (set acceleration for Y and H axes to 400000).
incremental distances for each axis. An unlimited number of incremental segments may be given in a continuous move sequence, making the linear interpolation mode ideal for following a piece- wise linear path. There is no limit to the total move length. The LM command selects the Linear Interpolation mode and axes for interpolation.
Page 87
LI 0,5000 Specify second linear segment End linear segments VS 4000 Specify vector speed Begin motion sequence AV 4000 Set trippoint to wait until vector distance of 4000 is reached VS 1000 Change vector speed AV 5000 Set trippoint to wait until vector distance of 5000 is reached VS 4000 Change vector speed Program end...
Command Summary - Linear Interpolation COMMAND DESCRIPTION LM xyzw Specify axes for linear interpolation LM abcdefgh (same) controllers with 5 or more axes Returns number of available spaces for linear segments in DMC-1600 sequence buffer. Zero means buffer full. 512 means buffer empty. LI x,y,z,w <...
Page 89
VS 100000 Specify vector speed VA 1000000 Specify vector acceleration VD 1000000 Specify vector deceleration Begin sequence Note that the above program specifies the vector speed, VS, and not the actual axis speeds VZ and VW. The axis speeds are determined by the DMC-1600 from: The resulting profile is shown in Figure 6.2.
30000 27000 POSITION W 3000 4000 36000 40000 POSITION Z FEEDRATE TIME (sec) VELOCITY Z-AXIS TIME (sec) VELOCITY W-AXIS TIME (sec) Figure 6.2 - Linear Interpolation Example - Multiple Moves This example makes a coordinated linear move in the XY plane. The Arrays VX and VY are used to store 750 incremental distances which are filled by the program #LOAD.
N=10 Initialize position increment #LOOP LOOP VX [COUNT]=N Fill Array VX VY [COUNT]=N Fill Array VY N=N+10 Increment position COUNT=COUNT+1 Increment counter JP #LOOP,COUNT<750 Loop if array not full Label LM XY Specify linear mode for XY COUNT=0 Initialize array counter #LOOP2;JP#LOOP2,_LM= If sequence buffer full, wait JS#C,COUNT=500...
Specifying Vector Segments The motion segments are described by two commands; VP for linear segments and CR for circular segments. Once a set of linear segments and/or circular segments have been specified, the sequence is ended with the command VE. This defines a sequence of commands for coordinated motion.
Page 93
previous segments, as needed to meet the final speed requirement, under the given values of VA and VD. Note, however, that the controller works with one > m command at a time. As a consequence, one function may be masked by another. For example, if the function >100000 is followed by >5000, and the distance for deceleration is not sufficient, the second condition will not be met.
End vector Disengage knife PA 3000,0,_TN Move X and Y to starting position, move Z to initial tangent position BG XYZ Start the move to get into position AM XYZ When the move is complete Engage knife WT50 Wait 50 msec for the knife to engage Do the circular cut After the coordinated move is complete Disengage knife...
Page 95
When AV is used as an operand, _AV returns the distance traveled along the sequence. The operands _VPX and _VPY can be used to return the coordinates of the last point specified along the path. Example: Traverse the path shown in Fig. 6.3. Feed rate is 20000 counts/sec. Plane of motion is XY VM XY Specify motion plane VS 20000...
Electronic Gearing This mode allows up to 8 axes to be electronically geared to some master axes. The masters may rotate in both directions and the geared axes will follow at the specified gear ratio. The gear ratio may be different for each axis and changed during motion. The command GAX yzw or GA ABCDEFGH specifies the master axes.
Page 97
Begin motion Example - Electronic Gearing Objective: Run two geared motors at speeds of 1.132 and -0.045 times the speed of an external master. The master is driven at speeds between 0 and 1800 RPM (2000 counts/rev encoder). Solution: Use a DMC-1630 controller, where the Z-axis is the master and X and Y are the geared axes.
Electronic Cam The electronic cam is a motion control mode which enables the periodic synchronization of several axes of motion. Up to 7 axes can be slaved to one master axis. The master axis encoder must be input through a main encoder port. The electronic cam is a more general type of electronic gearing which allows a table-based relationship between the axes.
Page 99
EP m,n where m is the interval width in counts, and n is the starting point. For the given example, we can specify the table by specifying the position at the master points of 0, 2000, 4000 and 6000. We can specify that by EP 2000,0 Step 4.
Page 100
where x,y,z,w are the master positions at which the corresponding slaves must be engaged. If the value of any parameter is outside the range of one cycle, the cam engages immediately. When the cam is engaged, the slave position is redefined, modulo one cycle. Step 7.
The instruction EAX defines X as the master axis. The cycle of the master is 2000. Over that cycle, Y varies by 1000. This leads to the instruction EM 2000,1000. Suppose we want to define a table with 100 segments. This implies increments of 20 counts each. If the master points are to start at zero, the required instruction is EP 20,0.
Page 102
This is done with the program: Instruction Interpretation Label #RUN Enable cam starting position PA,500 Y speed SP,5000 Move Y motor After Y moved Wait for start signal Engage slave EG,1000 Wait for stop signal AI - 1 Disengage slave EQ,1000 The following example illustrates a cam program with a master axis, Z, and two slaves, X and Y.
The above example shows how the ECAM program is structured and how the commands can be given to the controller. The next page provides the results captured by the WSDK program. This shows how the motion will be seen during the ECAM cycles. The first graph is for the X axis, the second graph shows the cycle on the Y axis and the third graph shows the cycle of the Z axis.
Page 104
Point 1 X=0 at T=0ms Point 2 X=48 at T=4ms Point 3 X=288 at T=12ms Point 4 X=336 at T=28ms The same trajectory may be represented by the increments Increment 1 DX=48 Time=4 DT=2 Increment 2 DX=240 Time=8 DT=3 Increment 3 DX=48 Time=16 DT=4...
Additional Commands The command, WC, is used as a trippoint "When Complete". This allows the DMC-1600 to use the next increment only when it is finished with the previous one. Zero parameters for DT followed by zero parameters for CD exit the contour mode. If no new data record is found and the controller is still in the contour mode, the controller waits for new data.
Page 106
Figure 6.7 - Velocity Profile with Sinusoidal Acceleration The DMC-1600 can compute trigonometric functions. However, the argument must be expressed in degrees. Using our example, the equation for X is written as: X = 50T - 955 sin 3T A complete program to generate the contour movement in this example is given below. To generate an array, we compute the position value at intervals of 8 ms.
Page 107
D=C+1 DIF[C]=POS[D]-POS[C] Compute the difference and store C=C+1 JP #C,C<15 End first program #RUN Program to run motor Contour Mode 4 millisecond intervals CD DIF[C] Contour Distance is in DIF Wait for completion C=C+1 JP #E,C<15 Stop Contour End the program Teach (Record and Play-Back) Several applications require teaching the machine a motion trajectory.
Page 108
C=C+1 Increment index JP #L,C<500 Repeat until done #PLAYBCK Begin Playback Specify contour mode Specify time increment Initialize array counter Loop counter CD XPOS[I];WC Specify contour data I=I+1 Increment array counter JP #B,I<500 Loop until done DT 0;CD0 End contour mode End program For additional information about automatic array capture, see Chapter 7, Arrays.
VD 68000000 Maximum Deceleration VS 125664 VS for 20 Hz CR 1000, -90, 3600 Ten cycles Stepper Motor Operation When configured for stepper motor operation, several commands are interpreted differently than from servo mode. The following describes operation with stepper motors. Specifying Stepper Motor Operation In order to command stepper motor operation, the appropriate stepper mode jumpers must be installed.
Second, the profiler generates pulses as prescribed by the motion profile. The pulses that are generated by the motion profiler can be monitored by the command, RP (Reference Position). RP gives the absolute value of the position as determined by the motion profiler. The command, DP, can be used to set the value of the reference position.
Low Current Stepper Mode (toggles amp enable line when holding position) Motor Type (2,-2,2.5 or -2.5 for stepper motors) Report Commanded Position Report number of step pulses generated by controller Tell Position of Encoder Operand Summary - Stepper Motor Operation OPERAND DESCRIPTION _DEx...
A pulse is defined by the resolution of the step drive being used. Therefore, one pulse could be a full step, a half step or a microstep. When a Galil controller is configured for step motor operation, the step pulse output by the controller is internally fed back to the auxiliary encoder register.
Page 113
WT50; Allow slight settle time YS1; Enable SPM mode Half-Stepping Drive, X axis: #SETUP OE1; Set the profiler to stop axis upon error KS16; Set step smoothing MT-2; Motor type set to stepper YA2; Step resolution of the half-step drive YB200;...
Page 114
SHX; Enable axis WT100; Allow slight settle time Perform motion #MOTION SP512; Set the speed PR1000; Prepare mode of motion BGX; Begin motion #LOOP;JP#LOOP; Keep thread zero alive for #POSERR to run in REM When error occurs, the axis will stop due to OE1. In REM #POSERR, query the status YS and the error QS, correct, REM and return to the main code.
Perform motion #MOTION; SP16384; Set the speed PR10000; Prepare mode of motion BGX; Begin motion JS#CORRECT; Move to correction #MOTION2 SP16384; Set the speed PR-10000; Prepare mode of motion BGX; Begin motion JS#CORRECT; Move to correction JP#MOTION #CORRECT; Correction code spx=_SPX #LOOP;...
Reverse pulse & direction Reversed pulse & direction For example, to configure the main encoder for reversed quadrature, m=2, and a second encoder of pulse and direction, n=4, the total is 6, and the command for the X axis is CE 6 Additional Commands for the Auxiliary Encoder The command, DE x,y,z,w, can be used to define the position of the auxiliary encoders.
Page 117
the KP (proportional) and KI (integral) terms to the position error, based on the load encoder, and applies the KD (derivative) term to the motor encoder. This method results in a stable system. The dual loop method is activated with the instruction DV (Dual Velocity), where 1,1,1,1 activates the dual loop for the four axes and 0,0,0,0...
Motion Smoothing The DMC-1600 controller allows the smoothing of the velocity profile to reduce the mechanical vibration of the system. Trapezoidal velocity profiles have acceleration rates which change abruptly from zero to maximum value. The discontinuous acceleration results in jerk which causes vibration. The smoothing of the acceleration profile leads to a continuous acceleration profile and reduces the mechanical shock and vibration.
ACCELERATION VELOCITY VELOCITY ACCELERATION VELOCITY Figure 6.8 - Trapezoidal velocity and smooth velocity profiles Homing The Find Edge (FE) and Home (HM) instructions may be used to home the motor to a mechanical reference. This reference is connected to the Home input line. The HM command initializes the motor to the encoder index pulse in addition to the Home input.
Page 120
1. Upon begin, motor accelerates to the slew speed. The direction of its motion is determined by the state of the homing input. A zero (GND) will cause the motor to start in the forward direction; +5V will cause it to start in the reverse direction. The CN command is used to define the polarity of the home input.
Page 121
MOTION BEGINS TOWARD HOME DIRECTION POSITION MOTION REVERSE TOWARD HOME DIRECTION POSITION MOTION TOWARD INDEX DIRECTION POSITION INDEX PULSES POSITION HOME SWITCH POSITION Figure 6.9 - Motion intervals in the Home sequence Chapter 6 Programming Motion • 113 DMC-1600...
High Speed Position Capture (The Latch Function) Often it is desirable to capture the position precisely for registration applications. The DMC-1600 provides a position latch feature. This feature allows the position of the main or auxiliary encoders of X,Y,Z or W to be captured within 25 microseconds of an external low input signal. Faster latch times are available to <1 usec.
Page 123
DMC-1660 375 usec DMC-1670 500 usec DMC-1680 500 usec In order to run the DMC-1600 motion controller in fast mode, the fast firmware must be uploaded. This can be done through the Galil terminal software such as DMCTERM and WSDK. The fast firmware is included with the controller utilities.
Chapter 7 Application Programming Overview The DMC-1600 provides a powerful programming language that allows users to customize the controller for their particular application. Programs can be downloaded into the DMC-1600 memory freeing the host computer for other tasks. However, the host computer can send commands to the controller at any time, even while a program is being executed.
Puts Editor at end of last program :ED 5 Puts Editor at line 5 :ED #BEGIN Puts Editor at label #BEGIN Line numbers appear as 000,001,002 and so on. Program commands are entered following the line numbers. Multiple commands may be given on a single line as long as the total number of characters doesn't exceed 80 characters per line.
Program Flow instructions to form the complete program. Program Flow instructions evaluate real-time conditions, such as elapsed time or motion complete, and alter program flow accordingly. Each DMC-1600 instruction in a program must be separated by a delimiter. Valid delimiters are the semicolon (;) or carriage return.
#ININT Label for Input Interrupt subroutine #LIMSWI Label for Limit Switch subroutine #POSERR Label for excess Position Error subroutine #MCTIME Label for timeout on Motion Complete trip point #CMDERR Label for incorrect command subroutine Commenting Programs Using the command, NO The DMC-1600 provides a command, NO, for commenting programs.
REM VECTOR SPEED IS 10000 VP -4000,0 REM BOTTOM LINE CR 1500,270,-180 REM HALF CIRCLE MOTION VP 0,3000 REM TOP LINE CR 1500,90,-180 REM HALF CIRCLE MOTION REM END VECTOR SEQUENCE REM BEGIN SEQUENCE MOTION REM END OF PROGRAM These REM statements will be removed when this program is downloaded to the controller. Executing Programs - Multitasking The DMC-1600 can run up to 8 independent programs simultaneously.
#TASK2 Task2 label XQ #TASK1,1 Execute Task1 #LOOP2 Loop2 label PR 1000 Define relative distance Begin motion After motion done WT 10 Wait 10 msec JP #LOOP2,@IN[2]=1 Repeat motion unless Input 2 is low Halt all tasks The program above is executed with the instruction XQ #TASK2,0 which designates TASK2 as the main thread (i.e.
Page 130
Stop Code Command The status of motion for each axis can be determined by using the stop code command, SC. This can be useful when motion on an axis has stopped unexpectedly. The command SC will return a number representing the motion status. See the command reference for further information. RAM Memory Interrogation Commands For debugging the status of the program memory, array memory, or variable memory, the DMC- 1600 has several useful commands.
?003 PR5000 Error on Line 3 :TC1 Tell Error Code ?7 Command not valid Command not valid while running while running. :ED 3 Edit Line 3 003 AMX;PR5000;BGX Add After Motion Done <cntrl> Q Quit Edit Mode :XQ #A Execute #A Program Flow Commands The DMC-1600 provides instructions to control program flow.
Page 132
DMC-1600 Event Triggers Command Function AM X Y Z W or S Halts program execution until motion is complete on the specified axes or motion sequence(s). AM with no (A B C D E F G H) parameter tests for motion complete on all axes. This command is useful for separating motion sequences in a program.
Event Trigger Examples: Event Trigger - Multiple Move Sequence The AM trippoint is used to separate the two PR moves. If AM is not used, the controller returns a ? for the second PR command because a new PR cannot be given until motion is complete. #TWOMOVE Label PR 2000...
Page 134
Event Trigger - Start Motion on Input This example waits for input 1 to go low and then starts motion. Note: The AI command actually halts execution of the program until the input occurs. If you do not want to halt the program sequences, you can use the Input Interrupt function (II) or use a conditional jump on an input, such as JP #GO,@IN[1] = -1.
Event Trigger - Multiple Move with Wait This example makes multiple relative distance moves by waiting for each to be complete before executing new moves. #MOVES Label PR 12000 Distance SP 20000 Speed AC 100000 Acceleration Start Motion AD 10000 Wait a distance of 10,000 counts SP 5000 New Speed...
Page 136
Command Format - JP and JS FORMAT: DESCRIPTION JS destination, logical condition Jump to subroutine if logical condition is satisfied JP destination, logical condition Jump to location if logical condition is satisfied The destination is a program line number or label where the program sequencer will jump if the specified condition is satisfied.
JP #TEST, (V1<V2) & (V3<V4) In this example, this statement will cause the program to jump to the label #TEST if V1 is less than V2 and V3 is less than V4. To illustrate this further, consider this same example with an additional condition: JP #TEST, ((V1<V2) &...
Page 138
Using the IF and ENDIF Commands An IF conditional statement is formed by the combination of an IF and ENDIF command. The IF command has as its arguments one or more conditional statements. If the conditional statement(s) evaluates true, the command interpreter will continue executing commands which follow the IF command.
Example using IF, ELSE and ENDIF: #TEST Begin Main Program "TEST" II,,3 Enable input interrupts on input 1 and input 2 MG "WAITING FOR INPUT 1, INPUT 2" Output message #LOOP Label to be used for endless loop JP #LOOP Endless loop End of main program #ININT...
#L;PR V1,V1;BGX Define X,Y; Begin X AMX;BGY;AMY After motion on X, Begin Y End subroutine Stack Manipulation It is possible to manipulate the subroutine stack by using the ZS command. Every time a JS instruction, interrupt or automatic routine (such as #POSERR or #LIMSWI) is executed, the subroutine stack is incremented by 1.
Page 141
#LOOP;EN. Motion commands, such as JG 5000 can still be sent from the PC even while the "dummy" applications program is being executed. Edit Mode 000 #LOOP Dummy Program 001 JP #LOOP;EN Jump to Loop 002 #LIMSWI Limit Switch Label 003 MG "LIMIT OCCURRED"...
Page 142
#ININT Input Interrupt STXW;AM Stop Motion #TEST;JP #TEST, @IN[1]=0 Test for Input 1 still low JG 30000,,,6000 Restore Velocities BGXW Begin motion Return from interrupt routine to Main Program and do not re-enable trippoints Example - Motion Complete Timeout #BEGIN Begin main program TW 1000 Set the time out to 1000 ms...
_ED2 Retry failed command (operand contains the location of the failed command) _ED3 Skip failed command (operand contains the location of the command after the failed command) The operands are used with the XQ command in the following format: XQ _ED2 (or _ED3),_ED1,1 Where the “,1”...
Division & Logical And (Bit-wise) Logical Or (On some computers, a solid vertical line appears as a broken line) Parenthesis The numeric range for addition, subtraction and multiplication operations is +/- 2,147,483,647.9999. The precision for division is 1/65,000. Mathematical operations are executed from left to right. Calculations within a parentheses have precedence.
This program will accept a string input of up to 6 characters, parse each character, and then display each character. Notice also that the values used for masking are represented in hexadecimal (as denoted by the preceding ‘$’). For more information, see section Sending Messages.
Variables For applications that require a parameter that is variable, the DMC-1600 provides 254 variables. These variables can be numbers or strings. A program can be written in which certain parameters, such as position or speed, are defined as variables. The variables can later be assigned by the operator or determined by program calculations.
VAR="CAT" Assign the string, CAT, to VAR Assigning Variable Values to Controller Parameters Variable values may be assigned to controller parameters such as SP or PR. PR V1 Assign V1 to PR command SP VS*2000 Assign VS*2000 to SP command Displaying the Value of Variables at the Terminal Variables may be sent to the screen using the format, variable =.
Special Operands (Keywords) The DMC-1600 provides a few additional operands which give access to internal variables that are not accessible by standard DMC-1600 commands. KEYWORD FUNCTION _BGn *Returns a 1 if motion on axis ‘n’ is complete, otherwise returns 0. *Returns serial # of the board.
Assignment of Array Entries Like variables, each array element can be assigned a value. Assigned values can be numbers or returned values from instructions, functions and keywords. Array elements are addressed starting at count 0. For example the first element in the POSX array (defined with the DM command, DM POSX[7]) would be specified as POSX[0].
Delim specifies whether the array data is separated by a comma (delim=1) or a carriage return (delim=0). The file is terminated using <control>Z, <control>Q, <control>D or \. Automatic Data Capture into Arrays The DMC-1600 provides a special feature for automatic capture of data such as position, position error, inputs or torque.
Example - Recording into An Array During a position move, store the X and Y positions and position error every 2 msec. #RECORD Begin program DM XPOS[300],YPOS[300] Define X,Y position arrays DM XERR[300],YERR[300] Define X,Y error arrays RA XPOS[],XERR[],YPOS[],YERR[] Select arrays for capture RD _TPX,_TEX,_TPY,_TEY Select data types PR 10000,20000...
In this example, the message “Enter Length” is displayed on the computer screen. The controller waits for the operator to enter a value. The operator enters the numeric value which is assigned to the variable, LENX. Cut-to-Length Example In this example, a length of material is to be advanced a specified distance. When the motion is complete, a cutting head is activated to cut the material.
Page 153
In addition to variables, functions and commands, responses can be used in the message command. For example: MG "Analog input is", @AN[1] MG "The Value of KDX is ", _KDX Formatting Messages String variables can be formatted using the specifier, {Sn} where n is the number of characters, 1 thru 6.
Summary of Message Functions: FUNCTION DESCRIPTION " " Surrounds text string {Fn.m} Formats numeric values in decimal n digits to the right of the decimal point and m digits to the left {$n.m} Formats numeric values in hexadecimal {^n} Sends ASCII character specified by integer n Suppresses carriage return/line feed {Sn} Sends the first n characters of a string variable, where n is 1 thru 6.
Page 155
where m is the number of digits to the left of the decimal point (0 thru 10) and n is the number of digits to the right of the decimal point (0 thru 4) A negative sign for m specifies hexadecimal format.
Formatting Variables and Array Elements The Variable Format (VF) command is used to format variables and array elements. The VF command is specified by: VF m.n where m is the number of digits to the left of the decimal point (0 thru 10) and n is the number of digits to the right of the decimal point (0 thru 4).
The DMC-1600 position parameters such as PR, PA and VP have units of quadrature counts. Speed parameters such as SP, JG and VS have units of counts/sec. Acceleration parameters such as AC, DC, VA and VD have units of counts/sec 2 . The controller interprets time in milliseconds. All input parameters must be converted into these units.
Sets outputs 2 and 3 of output port to high. All other bits are 0. (2 1 + 2 2 = 6) Clears all bits of output port to zero OP 255 Sets all bits of output port to one. (2 0 + 2 1 + 2 2 + 2 3 + 2 4 + 2 5 + 2 6 + 2 7 ) The output port is useful for setting relays or controlling external switches and events during a motion sequence.
parameter o is an interrupt mask. If m and n are unused, o contains a number with the mask. A 1 designates that input to be enabled for an interrupt, where 2 0 is bit 1, 2 1 is bit 2 and so on. For example, II,,5 enables inputs 1 and 3 (2 0 + 2 2 = 5).
AC 80000;DC 80000 Acceleration #Loop VP=@AN[1]*1000 Read analog input and compute position PA VP Command position Start motion After completion JP #Loop Repeat Example - Position Follower (Continuous Move) Method: Read the analog input, compute the commanded position and the position error. Command the motor to run at a speed in proportions to the position error.
Label Wait for input 1 PR 6370 Distance SP 3185 Speed Start Motion After motion is complete Set output bit 1 WT 20 Wait 20 ms Clear output bit 1 WT 80 Wait 80 ms JP #A Repeat the process START PULSE I1 MOTOR VELOCITY OUTPUT PULSE...
Page 162
1 in/sec = 40,000 count/sec 5 in/sec = 200,000 count/sec an acceleration rate of 0.1g equals 0.1g = 38.6 in/s2 = 1,544,000 count/s 2 Note that the circular path has a radius of 2" or 80000 counts, and the motion starts at the angle of 270°...
VP -37600,-16000 Return XY to start VS 200000 Figure 7.2 - Motor Velocity and the Associated Input/Output signals Speed Control by Joystick The speed of a motor is controlled by a joystick. The joystick produces a signal in the range between -10V and +10V.
The program reads the input voltage periodically and assigns its value to the variable VIN. To get a speed of 200,000 ct/sec for 10 volts, we select the speed as Speed = 20000 x VIN The corresponding velocity for the motor is assigned to the VEL variable. Instruction VIN=@AN[1] VEL=VIN*20000...
Page 165
The basic dilemma is where to mount the sensor. If you use a rotary sensor, you get a 4 micron backlash error. On the other hand, if you use a linear encoder, the backlash in the feedback loop will cause oscillations due to instability. An alternative approach is the dual-loop, where we use two sensors, rotary and linear.
Chapter 8 Hardware & Software Protection Introduction The DMC-1600 provides several hardware and software features to check for error conditions and to inhibit the motor on error. These features help protect the various system components from damage. WARNING: Machinery in motion can be dangerous! It is the responsibility of the user to design effective error handling and safety protection as part of the machine.
Input Protection Lines Abort - A low input stops commanded motion instantly without a controlled deceleration. For any axis in which the Off-On-Error function is enabled, the amplifiers will be disabled. This could cause the motor to ‘coast’ to a stop. If the Off-On-Error function is not enabled, the motor will instantaneously stop and servo at the current position.
BG XYZ Begin (motion stops at forward limits) Off-On-Error The DMC-1600 controller has a built in function which can turn off the motors under certain error conditions. This function is know as ‘Off-On-Error”. To activate the OE function for each axis, specify 1 for X,Y,Z and W axis.
Page 169
limit. X,Y,Z, or W following LR or LF specifies the axis. The CN command can be used to configure the polarity of the limit switches. Limit Switch Example: #A;JP #A;EN Dummy Program #LIMSWI Limit Switch Utility V1=_LFX Check if forward limit V2=_LRX Check if reverse limit JP#LF,V1=0...
Chapter 9 Troubleshooting Overview The following discussion may help you get your system to work. Potential problems have been divided into groups as follows: 1. Installation 2. Communication 3. Stability and Compensation 4. Operation The various symptoms along with the cause and the remedy are described in the following tables. Installation SYMPTOM CAUSE...
Communication SYMPTOM CAUSE REMEDY Using the Galil provided terminal, Address selection in Check address jumper positions, cannot communicate with communication does not match and change if necessary. The controller. jumpers. addresses 1000 or 816 are recommended. Note -- for address 1000, jumper A2 and A4 .
Chapter 10 Theory of Operation Overview The following discussion covers the operation of motion control systems. A typical motion control system consists of the elements shown in Fig 10.1. COMPUTER CONTROLLER DRIVER ENCODER MOTOR Figure 10.1 - Elements of Servo Systems The operation of such a system can be divided into three levels, as illustrated in Fig.
Page 173
The highest level of control is the motion program. This can be stored in the host computer or in the controller. This program describes the tasks in terms of the motors that need to be controlled, the distances and the speed. LEVEL MOTION PROGRAMMING...
X VELOCITY Y VELOCITY X POSITION Y POSITION TIME Figure 10.3 - Velocity and Position Profiles Operation of Closed-Loop Systems To understand the operation of a servo system, we may compare it to a familiar closed-loop operation, adjusting the water temperature in the shower. One control objective is to keep the temperature at a comfortable level, say 90 degrees F.
The analogy between adjusting the water temperature and closing the position loop carries further. We have all learned the hard way, that the hot water faucet should be turned at the "right" rate. If you turn it too slowly, the temperature response will be slow, causing discomfort. Such a slow reaction is called overdamped response.
CONTROLLER DIGITAL Σ MOTOR FILTER ENCODER Figure 10.4 - Functional Elements of a Motion Control System Motor-Amplifier The motor amplifier may be configured in three modes: 1. Voltage Drive 2. Current Drive 3. Velocity Loop The operation and modeling in the three modes is as follows: Voltage Drive The amplifier is a voltage source with a gain of Kv [V/V].
Page 177
Then the corresponding time constants are T m = 0.04 sec T e = 0.002 sec Assuming that the amplifier gain is Kv = 4, the resulting transfer function is P/V = 40/[s(0.04s+1)(0.002s+1)] Current Drive The current drive generates a current I, which is proportional to the input voltage, V, with a gain of Ka.
VOLTAGE SOURCE +1)(ST CURRENT SOURCE VELOCITY LOOP Figure 10.6 - Mathematical model of the motor and amplifier in three operational modes Encoder The encoder generates N pulses per revolution. It outputs two signals, Channel A and B, which are in quadrature. Due to the quadrature relationship between the encoder channels, the position resolution is increased to 4N quadrature counts/rev.
The DAC or D-to-A converter converts a 16-bit number to an analog voltage. The input range of the numbers is 65536 and the output voltage range is +/-10V or 20V. Therefore, the effective gain of the DAC is K= 20/65536 = 0.0003 [V/count] Digital Filter The digital filter has three element in series: PID, low-pass and a notch filter.
C = 1 a = 250 rad/s and the equivalent continuous filter, G(s), is G(s) = [16 + 0.144s + 1000/s} ∗ 250/ (s+250) The notch filter has two complex zeros, Z and z, and two complex poles, P and p. The effect of the notch filter is to cancel the resonance affect by placing the complex zeros on top of the resonance poles.
Page 181
K a = 4 [Amp/V] K d = 0.0003 [V/count] Encoder K f = 4N/2π = 318 [count/rad] 2000/(s+2000) Digital Filter KP = 12.5, KD = 245, T = 0.001 Therefore, D(z) = 1030 (z-0.95)/Z Accordingly, the coefficients of the continuous filter are: P = 50 D = 0.98 The filter equation may be written in the continuous equivalent form:...
Magnitude 2000 W (rad/s) Figure 10.8 - Bode plot of the open loop transfer function For the given example, the crossover frequency was computed numerically resulting in 200 rad/s. Next, we determine the phase of A(s) at the crossover frequency. A(j200) = 390,000 (j200+51)/[(j200) 2 .
Page 183
J = 2.10 -4 kg.m 2 System moment of inertia R = 2 Ω Motor resistance K a = 2 Amp/Volt Current amplifier gain N = 1000 Counts/rev Encoder line density The DAC of the DMC-1600 outputs +/-10V for a 14-bit command of +/-8192 counts. The design objective is to select the filter parameters in order to close a position loop with a crossover frequency of ω...
Page 184
A(s) = L(s) G(s) then it follows that G(s) must have magnitude of |G(j500)| = |A(j500)/L(j500)| = 160 and a phase arg [G(j500)] = arg [A(j500)] - arg [L(j500)] = -135° + 194° = 59° In other words, we need to select a filter function G(s) of the form G(s) = P + sD so that at the frequency ω...
Page 185
Equivalent Filter Form DMC-1600 Digital D(z) =[K(z-A/z) + Cz/(z-1)]∗ (1-B)/(Z-B) D(z) = [4 KP + 4 KD(1-z -1 ) + KI/2(1-z -1 )] ∗(1-B)/(Z-B) Digital ⋅ KP, KD, KI, PL K = (KP + KD) A = KD/(KP+KD) C = KI/2 B = PL G(s) = (P + Ds + I/s) ∗...
Appendices Electrical Specifications Servo Control ACMD Amplifier Command: +/-10 Volts analog signal. Resolution 16-bit DAC or .0003 Volts. 3 mA maximum A+,A-,B+,B-,IDX+,IDX- Encoder and Auxiliary TTL compatible, but can accept up to +/-12 Volts. Quadrature phase on CHA,CHB. Can accept single-ended (A+,B+ only) or differential (A+,A-,B+,B-).
Notes: X,Y,Z,W are interchangeable designations for A,B,C,D axes. For A Description of the Connectors of the Extended I/O, see section below, "Extended I/O of the DMC-1600 Controller”. Pin-Out Description for DMC-1600 Outputs Analog Motor Command +/- 10 Volt range signal for driving amplifier. In servo mode, motor command output is updated at the controller sample rate.
Page 190
Inputs Encoder, A+, B+ Position feedback from incremental encoder with two channels in quadrature, CHA and CHB. The encoder may be analog or TTL. Any resolution encoder may be used as long as the maximum frequency does not exceed 12,000,000 quadrature states/sec. The controller performs quadrature decoding of the encoder signals resulting in a resolution of quadrature counts (4 x encoder cycles).
High Density connector. Rev A&B DMC-16x0 controllers used a 100 pin HD connector. Configuring the I/O of the DMC-1600 The 64 extended I/O points of the DMC-1600 series controller can be configured in blocks of 8. The extended I/O is denoted as bits 17-80 and blocks 2-9.
Saving the State of the Outputs in Non-Volatile Memory The configuration of the extended I/O and the state of the outputs can be stored in the EEPROM with the BN command. If no value has been set, the default of CO 0 is used (all blocks are inputs).
100. Note for Interfacing to External I/O Racks The extended I/O connector can be made compatible with external I/O mounting racks such as Grayhill 70GRCM32-HL and OPTO-22 G4PB24 by using the CB-50-80 and a 80 pin high density cable. By connecting the CB-50-80, the user will be provided with 2 50pin IDC connectors which are directly compatible with specific I/O mounting racks.
Jumper Description for DMC-1600 JUMPER LABEL FUNCTION (IF JUMPERED) JP20 For each axis, the SM jumper selects the SM magnitude mode for servo motors or selects stepper motors. If you are using stepper motors, SM must always be jumpered. The Analog motor command is not valid with SM jumpered.
Accessories and Options DMC-1610 1- axis motion controller DMC-1620 2- axes motion controller DMC-1630 3- axes motion controller DMC-1640 4- axes motion controller Cable-1600-1M 100-pin high density cable, 1 meter Cable-1600-4M 100-pin high density cable, 4 meter CB-50-100 50-pin to 100-pin converter board, includes two 50-pin ribbon cables Starter Kit Includes DMC-1600, ICM-1900 or AMP 19X0, cable, utilities,...
111 or 77h ICM-1900 Interconnect Module The ICM-1900 interconnect module provides easy connections between the DMC-1600 series controllers and other system elements, such as amplifiers, encoders, and external switches. The ICM- 1900 accepts the 100-pin main cable and 25-pin auxiliary cable and breaks them into screw-type terminals. Each screw terminal is labeled for quick connection of system elements.
Page 199
-AAX X Auxiliary encoder A- +ABX X Auxiliary encoder B+ -ABX X Auxiliary encoder B- +AAY Y Auxiliary encoder A+ -AAY Y Auxiliary encoder A- +ABY Y Auxiliary encoder B+ -ABY Y Auxiliary encoder B- +AAZ Z Auxiliary encoder A+ -AAZ Z Auxiliary encoder A- +ABZ...
Page 200
FLSZ Z axis forward limit switch input HOMEY Y axis home input RLSY Y axis reverse limit switch input FLSY Y axis forward limit switch input HOMEX X axis home input RLSX X axis reverse limit switch input FLSX X axis forward limit switch input +VCC + 5 Volts Signal Ground...
Page 201
-MAY Y Main encoder A- +MBY Y Main encoder B+ -MBY Y Main encoder B- +INY Y Main encoder Index + -INY Y Main encoder Index - +MAZ Z Main encoder A+ -MAZ Z Main encoder A- +MBZ Z Main encoder B+ -MBZ Z Main encoder B- +INZ...
7 amps continuous, 10 amps peak; 20 to 80V • Available with 1, 2, 3, or 4 amplifiers • Connects directly to DMC-1600 series controllers • Screw-type terminals for easy connection to motors, encoders, and switches • Steel mounting plate with 1/4” keyholes...
Coordinated Motion - Mathematical Analysis The terms of coordinated motion are best explained in terms of the vector motion. The vector velocity, Vs, which is also known as the feed rate, is the vector sum of the velocities along the X and Y axes, Vx and Vy.
Page 204
The first line describes the straight line vector segment between points A and B. The next segment is a circular arc, which starts at an angle of 180° and traverses -90°. Finally, the third line describes the linear segment between points C and D. Note that the total length of the motion consists of the segments: Linear 10000 units...
Page 205
The acceleration time, T a , is given by 100000 0 05 2000000 The slew time, Ts, is given by 35708 − − 100000 The total motion time, Tt, is given by = 0 407 The velocities along the X and Y axes are such that the direction of motion follows the specified path, yet the vector velocity fits the vector speed and acceleration requirements.
DMC-1600/DMC-1000 Comparison BENEFIT DMC-1600 DMC-1000 Two communication channels-MAIN & Higher Speed communication Frees host Only one channel- FIFO Secondary FIFO Easy to install – self-configuring Plug and Play No Plug and Play Programs don’t have to be downloaded from Non-Volatile Program Storage No storage for programs PC but can be stored on controller Can capture and save array data...
List of Other Publications "Step by Step Design of Motion Control Systems" by Dr. Jacob Tal "Motion Control Applications" by Dr. Jacob Tal "Motion Control by Microprocessors" by Dr. Jacob Tal Training Seminars Galil, a leader in motion control with over 200,000 controllers working worldwide, has a proud reputation for anticipating and setting the trends in motion control.
The warranty period for controller boards is 1 year. The warranty period for all other products is 180 days. In the event of any defects in materials or workmanship, Galil Motion Control will, at its sole option, repair or replace the defective product covered by this warranty without charge. To obtain...
Need help?
Do you have a question about the DMC-1600 Series and is the answer not in the manual?
Questions and answers