Home > Anaheim > Stepper > Anaheim Stepper CLCI2000 Users Guide

Anaheim Stepper CLCI2000 Users Guide

    Download as PDF Print this page Share this page

    Have a look at the manual Anaheim Stepper CLCI2000 Users Guide online for free. It’s possible to download the document as PDF or print. UserManuals.tech offer 523 Anaheim manuals and user’s guides for free. Share the user manual or guide on Facebook, Twitter or Google+.

    							8 DIRECTION SIGNALS
    This output is TTL/CMOS compatible.  The source current rating (Voh = 2.7 V) is 12mA. The sink current rating (Vol =
    0.5 V) is 9mA.  The Direction signal is +5VDC for + or clockwise motion, and 0VDC for - or counterclockwise motion.
    SOFT LIMIT
    This input will cause the motor to ramp down to the base speed.  This input contains a 2.5K pullup resistor to +5VDC.
    It should be activated by connecting it to the 0VDC pin, or a logic level that can sink 2.0mA at TTL levels.
    HOME LIMIT
    This is similar to the Hard Limit.  It will cause the motor to stop without ramping down.  This input contains a 2.5K pullup
    resistor to +5VDC.  It should be activated by connecting it to the 0VDC pin, or a logic level that can sink 2.0mA at TTL
    levels.  See the Command Dictionary Section for more information.
    PIN DESCRIPTIONPINFUNCTIONDESCRIPTION
    FUNCTION
    1 +5VDC 5 VOLT DC OUTPUT20C:SOFT-C: - SOFT LIMIT SWITCH
    2 OUT6 OUTPUT 621C:HOME+C: + HOME LIMIT SWITCH
    3 OUT7 OUTPUT 722C:HOME-C: - HOME LIMIT SWITCH
    4 OUT8 OUTPUT 823C:HARD+C: + HARD LIMIT SWITCH
    5 OUT9 OUTPUT 924C:HARD-C: - HARD LIMIT SWITCH
    6 OUT10 OUTPUT 10250 VDCO VOLT DC REFERENCE
    7 0VDC 0 VOLT DC 26D:CLOCKD: CLOCK
    8 IN6 INPUT 627D:DIRD: DIRECTION
    9 IN7 INPUT 728D:EAD: ENCODER CHANNEL A
    10 IN8 INPUT 829D:EBD: ENCODER CHANNEL B
    11 IN9 INPUT 930D:EZD: ENCODER CHANNEL Z
    12 IN10 INPUT 1031D:SOFT+ D: + SOFT LIMIT SWITCH
    13 C:CLOCK C: CLOCK32D:SOFT-D: - SOFT LIMIT SWITCH
    14 C:DIR C: DIRECTION33D:HOME+D: + HOME LIMIT SWITCH
    15 C:EA C: ENCODER CH. A34D:HOME-D: - HOME LIMIT SWITCH
    16 C:EB C: ENCODER CH. B35D:HARD+D: + HARD LIMIT SWITCH
    17 C:EZ C: ENCODER CH. Z36D:HARD-D: - HARD LIMIT SWITCH
    18 C:SOFT+ C: + SOFT LIMIT SWITCH370 VDC0 VOLT DC REFERENCE
    19 NC NO CONNECTION
    DB37 PINOUT FOR AXES C & D
    HARD LIMIT
    When a hard limit switch is encountered, all motion will stop in the given direction.  Keep in mind that the motor may
    overshoot when this is used.  The position given by the position register may not reflect where the motor ended up
    stopping due to the overshoot.  If an encoder is used, the encoder will reflect the actual motor position.  This input
    contains a 2.5K pullup resistor to +5VDC.  It should be activated by connecting it to the 0VDC pin, or a logic level that
    can sink 2.0mA at TTL levels. 
    						
    							9 ENCODER INPUTS
    A Rotary Encoder is a device that measures rotation of a shaft.  The encoder can be mounted on the step motor shaft,
    or for even greater accuracy, it can be mounted on the shaft of the load.  The encoder sends signals in a format called
    quadrature to the controller which will take this data and use it to verify the motor position.  The encoder has four or five
    wires:  Power, Ground, Phase A, Phase B, and a Marker Pulse .  The encoder can be used to form a closed loop system
    which will ensure the motor position.  The guaranteed accuracy of the system will then be determined by the resolution
    of the encoder.  Anaheim Automation stocks a 400 line encoder.  This will produce 1600 counts per revolution, which
    results in accuracies of better than 0.225E.
    INPUTS
    These are general purpose inputs that can be used to integrate sensors, logic, switches, or a number of other things that
    will be used in coordinating the motion.  They may be used to initiate a machine cycle, or allow for operator intervention,
    for sensing a machine condition such as out of material, or to wait for a particular temperature to be reached.  These
    inputs contain  2.5K pullups resistor to +5VDC, and are activated when they reach a TTL/CMOS Low Level, or 0VDC.
    OUTPUTS
    These are Open-Collector Darlington type outputs.  They may be used to operate coolant valves, air cylinders, relays,
    solenoids, external logic, or, with the right interfacing, any electrically controlled device.  The Outputs will go to the 0.7
    VDC level, and can sink a total of 500mA.  The Maximum Voltage that can be applied to the Outputs is 50 VDC.  (See
    Specification Section on page 3 for more information.) 
    						
    							10 PROGRAMMING WITH ANAHEIM AUTOMATION LIBRARIES
    Anaheim Automation has written Libraries that can be used to control the CLCI2000 Series Indexer Board in many
    different languages.  These languages include QuickBASIC, VisualBasic, C, and any Windows programming language.
    There are two different libraries written for the BASIC languages, one library for the C users, and one library for the
    windows users (this Windows Library must be requested).  The Libraries contain all the code necessary to control the
    motion with the Indexer Board.  
    PROGRAMMING WITH QUICKBASIC OR VISUALBASIC FOR DOSProgramming the CLCI2000 Using Quick Basic is very easy.  A Library with various Subroutines and Functions has been
    written to make the process of controlling your Step Motor Driver as painless as possible.  ANAHEIM AUTOMATIONs
    Subroutine and Function Library CLCISUB1.BAS is found on the CLCI2000 SERIES DISK.  To use this library in
    QuickBASIC, go to the Menu Selection File, and Choose Load File.  To use this library in VISUAL BASIC go to the Menu
    Selection File, and Choose Add File.  Be sure to have the file in the appropriate location.  When you use one of the
    Subroutines or Functions, be sure to DECLARE that Sub or Function.  You may want to copy all of the DECLARE
    statements from the top of the CLCISUB1.BAS programs to the top of your Program.  Refer to your QuickBASIC
    technical manual for further explanations.
    The way to program a move in QuickBASIC is as simple as this.  
    Lets say you would like these (motion) parameters.
    Base Speed: 400 steps/sec
    Max Speed: 5,000 steps/sec
     Ramp: 200,000 steps/sec^2
    To move 1000 steps in the clockwise direction, the code for this in QuickBASIC would be:
    MOTION ADR, AXIS, 400, 5000, 200000
    INDEX ADR, AXIS, 1000
    GO.CW ADR, AXIS
    That is all there is to it.  Using English-Like commands, you can easily control your step motors.
    SPEED CONSIDERATIONSThe time that it takes to process a command is sometimes very critical to a design.  The majority of the time involved
    in communication to the CLCI2000 Series Indexer is due to the time the programming language takes to communicate
    with the PC expansion bus.  Some languages are faster than others.  For example, code written in Microsoft QuickBASIC
    will run slower than that same code written in Microsoft C.
    To get a feel for the time that is involved in communicating from the board to the PC here is an example.  The time it
    took a 486 computer running at 33MHz to Read the Position from the CLCI2000 Series Indexer running with uncompiled
    code under QuickBASIC was 285usec.  The same code was run after it was compiled, and it took only 153usec. To Set
    the Position under these same conditions, it took 341usec uncompiled, and 269usec compiled. 
    						
    							11 CLCISUB1.BAS LIBRARY
    The CLCISUB1.BAS Library is for use with QuickBASIC, VisualBasic for DOS, or any other similar BASIC based
    programming languages.  This Library is set up to run CLCI2000 Series Indexers at any open addresses.  The following
    is a command list for all the usable Subroutines and Functions in this Library.  This is a comprehensive list that will allow
    complete control of the CLCI2000 Series Index Boards.  To use these commands you need to LOAD the file
    CLCISUB1.BAS into your main program and DECLARE the Subroutines and Functions you wish to use.  That is all there
    is to it.  Refer to your QuickBASIC or VisualBasic manual for more details.  
    In all the below descriptions, these general guidelines apply:
    The ADDRESS is the setting on the 5 pin dip switch (see Installation).  This is always given in the Hexadecimal format.
    For a setting of 11000, or a Base Address of 300, the correct format would be (&H300, ...) 
    The AXIS# applies to the axis for that particular board (1, 2, 3, or 4)
    BUSY  (ADDRESS, AXIS#)This Function will return a 1 if the axis is Busy (clock pulses are being generated).  It will return a 0 if there is no motion
    at all.  This is a good Input to use to wait until the motion has stopped before going on in the program.
    GET.BASE (BASE, MAX, RAMP)  
    Because the motor speeds are created by a digital device, the resolution is limited to the clock oscillator that is used -
    in this case it is 9.8304 MHz. The result is a speed that is very close to the one desired - usually within a fraction of a
    percent.  This Function will return the actual Base Speed obtainable with the given parameters.  This is used to find out
    the exact Base Speed that will be used for the specified numbers.  For example, if the desired Base Speed was 500,
    Max Speed was 10,000, and Ramp was 2,000, the resulting Base Speed would actually be: 499.7963 Hz.
    GET.MAX (BASE, MAX, RAMP)  
    Because the motor speeds are created by a digital device, the resolution is limited to the clock oscillator that is used -
    in this case it is 9.8304 MHz. The result is a speed that is very close to the one desired - usually within a fraction of a
    percent.  This Function will return the actual Max Speed obtainable with the given parameters.  This is used to find out
    the exact Max Speed that will be used for the specified numbers.  For example, if the desired Base Speed was 500,  Max
    Speed was 10,000, and Ramp was 2,000, the resulting Base Speed would actually be: 9999.593 Hz.
    GET.RAMP (BASE, MAX, RAMP)  
    Because the motor speeds are created by a digital device, the resolution is limited to the clock oscillator that is used -
    in this case it is 9.8304 MHz. The result is a Ramp that is very close to the one desired - usually within a fraction of a
    percent.  This Function will return the actual Ramp obtainable with the given parameters.  This is used to find out the
    exact Ramp that will be used for the specified numbers.  For example, if the desired Base Speed was 500,  Max Speed
    was 10,000, and Ramp was 2,000, the resulting Ramp would actually be: 2000.784 Hz/Second.
    GET.INPUT (ADDRESS, INPUT#)  
    This Function will return the values for INPUT 1.  A 1 means that the input is active, or at a TTL state of 0VDC.  A 0
    means that the input is at a TTL state of +5VDC or there is no connection to the input.
    GO.CCW   ADDRESS, AXIS#This Subroutine will Index in the counterclockwise direction.  The distance that the motor will move depends on the
    distance set by the A.INDEX.NUMBER command.  The motion starts at Base Speed and Ramps up to Max Speed,
    sustains the Max Speed, and then finishes the move by ramping down to Base Speed and stopping.
    GO.CW   ADDRESS, AXIS#This Subroutine will Index in the clockwise direction.  The distance that the motor will move depends on the distance set
    by the A.INDEX.NUMBER command.  The motion starts at Base Speed and Ramps up to Max Speed, sustains the Max
    Speed, and then finishes the move by ramping down to Base Speed and stopping.
    HARD.INPUT.CCW  (ADDRESS, AXIS#)  
    This Function will return the value of the -Hard Limit Switch.  If the Limit Switch is ACTIVE or 0VDC, the Function will
    return a 1.  If the Limit Switch is NOT ACTIVE, the function will return a 0.
    HARD.INPUT.CW (ADDRESS, AXIS#)   
    						
    							12 This Function will return the value of the +Hard Limit Switch.  If the Limit Switch is ACTIVE or 0VDC, the function will
    return a 1.  If the Limit Switch is NOT ACTIVE, the function will return a 0.
    HOME.CCW  ADDRESS, AXIS#This Subroutine will HOME (sometimes called SLEW) the motor in the counterclockwise direction.  The motion begins
    at Base Speed, ramps up to Max Speed and continues moving in that direction until the software instructs it to do
    something different, or a hardware Limit Switch is activated.
    HOME.CW   ADDRESS, AXIS#This Subroutine will HOME (sometimes call SLEW) the motor in the clockwise direction.  The motion begins at Base
    Speed, ramps up to Max Speed and continues moving in that direction until the software instructs it to do something
    different, or a hardware Limit Switch is activated.
    HOME.INPUT  ADDRESS, AXIS#This Function will return the value for the Home Limit Switch.  The Particular switch is determined by which Home Limit
    Switch you chose with the OUTPUTS Subroutine.  The default value for this is the -Home Limit Switch.  This will return
    a 1 if the Home Limit Switch is active (0VDC), and a 0 if the switch is not active.
    INDEX  ADDRESS, AXIS#, NUMBERThis Subroutine will set the Index Number Register.  This command is used in conjunction with the GO.CW and GO.CCW
    Command.  The number in this register will not change  until the next INDEX or  POSITION Command is issued.  A
    typical motor that is Half-stepped will go one revolution in 400 steps.
    INITIALIZE  ADDRESS, AXIS#This Subroutine will set the all axes with initial settings.  This must be done at the beginning of every program to ensure
    that all the default setting are made, and that all the outputs are off.  The commands below are executed for each axis:
    INDEX  1000
    MOTION  200, 4000,  200000
    LIMIT.CONTROL  1, 1, 1
    SET.ENCODER  0
    OUTPUT  0, 0, 0, 0, 0, 1, 1
    LIMIT.CONTROL  ADDRESS, AXIS#, SOFT, MARK, HOMEThis Subroutine will either Activate or Deactivate the board features: SOFT LIMIT SWITCHES, ENCODER MARKER
    PULSE, OR HOME LIMIT SWITCH.  A 1 will activate the feature, and a 0 will deactivate the feature.  This command
    is useful for Homing Routines and other routines that are used to ramp down to base speed or to stop the motor.  The
    Marker pulse is generally turned off until the  rotary system is on the correct revolution to activate the pulse.
    MOTION  ADDRESS, AXIS#, BASE, MAX, RAMP  
    This Subroutine will set the Base Speed, Max Speeds, and Acceleration.  All three values must be entered.  The Base
    Speed is the speed at which the motor starts its motion.  For Half-step applications, motors can sometimes start as high
    as 2,000 Hz.  A Half-step speed of 400 will turn 1 revolution per second.  It is normally desirable to start the motor as fast
    as possible.  This will decrease the total time it takes to make the move.  The Max Speed is the speed at which the motor
    will reach its top speed.  For Half-step applications, motors can handle speeds as high as 20,000 Hz.  A Max Speed of
    20,000 will turn the motor 50 revolutions per second.  The Ramp time is the rate or increase in the speed when the
    motion is going from Base Speed to Max Speed.  This value is in Hz/Sec*Sec.  A ramp value of 1,000 will increase the
    speed 1,000 Hz every second.
    ONE.AT.MAX.CCW  ADDRESS, AXIS#This Subroutine will go one step at the maximum speed in the CCW Direction.  This is an easy way to Jog the motor.
    ONE.AT.MAX.CW  ADDRESS, AXIS#This Subroutine will go one step at the maximum speed in the CW Direction.  This is an easy way to Jog the motor.
    ORIGIN.INDEX.CCW  ADDRESS, AXIS#  
    This Subroutine will move in the CCW Direction at base speed until the Encoder Marker is active.  When the Encoder
    Marker is active the motion will stop.  This is a good way to home the motor to a rotary position using the encoders 
    						
    							13 marker pulse.  The marker pulse must be enabled by the LIMIT.CONTROL Command for this Command to work
    properly.
    ORIGIN.INDEX.CW  ADDRESS, AXIS#  
    This Subroutine will move in the CW Direction at base speed until the Encoder Marker is active.  When the Encoder
    Marker is active the motion will stop.  This is a good way to home the motor to a rotary position using the encoders
    marker pulse.  The marker pulse must be enabled by the LIMIT.CONTROL Command for this Command to work
    properly.
    POSITION  ADDRESS, AXIS#, VALUEThis Subroutine will go to the position specified.  This routine reads the current position and calculates the distance
    required to move.  It affects the Index Register which is changed by the A.INDEX Command.  The Position can range
    from 0 to 16,777,215.   Negative numbers cannot be used with this command.   Be sure to stay within the specified range.
    RAMP.TO.BASE.CCW  ADDRESS, AXIS#This Subroutine will ramp the motor from Max Speed to Base Speed.  The move will be continued at Base Speed.  This
    is a useful command for Homing to a Limit Switch.  
    RAMP.TO.BASE.CW  ADDRESS, AXIS#This Subroutine will ramp the motor from Max Speed to Base Speed.  The move will be continued at Base Speed.  This
    is a useful command for Homing to a Limit Switch.  
    RAMP.TO.STOP.CCW  ADDRESS, AXIS#This Subroutine will ramp the motor from Max Speed to Base Speed and stop.  Be sure to use this command only when
    the motor is turning in the CCW direction.
    RAMP.TO.STOP.CW  ADDRESS, AXIS#This Subroutine will ramp the motor from Max Speed to Base Speed and stop.  Be sure to use this command only when
    the motor is turning in the CW direction.
    READ.ENCODER (ADDRESS, AXIS#)This Function will read the value in the Encoder Register.  The Encoder Register can read a value up to 16,777,215.
    If the number goes beyond this number, the Register will spill over and start back again at 0.  For example, the if the
    encoder sent out 16,777,226 quadrature pulses, the Encoder Register would actually read 10.  This register can be read
    at any time.
    READ.POSITION (ADDRESS, AXIS#)This Function will return the Value in the Position Register.  The Position Register can read a value up to 16,777,215.
    If the number goes beyond this number, the Register will spill over and start back again at 0.  For example, the if the
    number of steps was actually 16,777,226 - the Position Register would actually read 10.  This register can be read at any
    time.
    SET.ENCODER ADDRESS, AXIS#, VALUEThis Subroutine will set the number in the Encoder Register.  The values should range between 0 and 16,777,215.
    SET.OUTPUT1  ADDRESS, OUT5, OUT4, OUT3, OUT2, OUT1, HOME.DIR.1, HOME.DIR.2This Subroutine will set the 5 outputs and the active direction for the Home Limit Switch.  The first five numbers specify
    what the state of the five Outputs will be.  A 1 for the Outputs will turn the Output ON, and a 0 will turn the output OFF.
    The last two numbers will specify which home switch will be chosen HOME.DIR.1 refers to AXIS 1 (also called axis A),
    and HOME.DIR.2 refers to AXIS 2 (Also refered to as Axis B).  Only one home switch may be chosen for each axis at
    a given time.  A 1 will specify that the + or CW direction Home Limit Switch will be chosen.  A 0 will specify that the
    - or CCW direction Home Limit Switch has been chosen.  For Example:
    SET.OUTPUT.1  1,1,1,0,0,1,1
    would set outputs 5,4, and 3 ON, and outputs 2 and 1 Off.  It would also set the +Home Limit Switch for both axis 1 and
    2 to be the Active Switch.
    SET.OUTPUT2  ADDRESS, OUT10, OUT9, OUT8, OUT7, OUT6, HOME.DIR.3, HOME.DIR.4This Subroutine will set the 5 outputs and the active direction for the Home Limit Switch.  The first five numbers specify 
    						
    							14 what the state of the five Outputs will be.  A 1 for the Outputs will turn the Output ON, and a 0 will turn the output OFF.
    The last two numbers will specify which home switch will be chosen HOME.DIR.3 refers to AXIS 3 (also called Axis C),
    and HOME.DIR.4 refers to AXIS 4 (Also refered to as Axis D).  Only one home switch may be chosen for each axis at
    a given time.  A 1 will specify that the + or CW direction Home Limit Switch will be chosen.  A 0 will specify that the
    - or CCW direction Home Limit Switch has been chosen.  For Example:
    SET.OUTPUT.2  1,1,1,0,0,1,1
    would set outputs 5,4, and 3 ON (at a 0 VDC level), and outputs 2 and 1 Off (at an OPEN level).  It would also set the
    +Home Limit Switch for both axis 3 and 4 to be the Active Switch.
    SET.POSITION  ADDRESS, AXIS#, VALUEThis Subroutine will set the number in the Position Register.  The values should range between 0 and 16,777,215.
    SLEW.AT.BASE.CCW (ADDRESS, AXIS#)This Subroutine will SLEW the motor at Base Speed in the counterclockwise direction and continues moving in that
    direction until the software instructs it to do something different, or a hardware Limit Switch is activated.
    SLEW.AT.BASE.CW (ADDRESS, AXIS#)This Subroutine will SLEW the motor at Base Speed in the clockwise direction and continues moving in that direction
    until the software instructs it to do something different, or a hardware Limit Switch is activated.
    SOFT.INPUT.CCW (ADDRESS, AXIS#)This Function will return the value for the -Soft Limit Switch.  A 1 will mean that the switch is active, and a 0 will mean
    the switch is not active.
    SOFT.INPUT.CW (ADDRESS, AXIS#)This Function will return the value for the +Soft Limit Switch.  A 1 will mean that the switch is active, and a 0 will mean
    the switch is not active.
    STOP.MOTION  ADDRESS, AXIS#This Subroutine will immediately stop the pulses.
    WAIT.FOR.STOP (ADDRESS, AXIS#)This Subroutine will pause the execution of the program until the Axis has completed its motion.
    NOTE:  THERE ARE OTHER SUBROUTINES AND FUNCTIONS THAT ARE CONTAINED IN THIS FILE THAT
    SHOULD NOT BE USED OR MODIFIED IN ANY WAY -  THEY ARE USED INTERNALLY BY THE ABOVE
    SUBROUTINES AND FUNCTIONS, AND ANY ALTERATION MIGHT PRODUCE UNEXPECTED RESULTS.  
    						
    							15 SAMPLE #1 (PROGRAM SAMPLE1.BAS ON THE CLCI2000 DISK)
    This is a sample program written for a single axis.  If Input #1 is active, then the motor will move in the
    clockwise direction 5000 steps.  If input #2 is active then the motor will move in the counterclockwise direction
    4000 steps.  It continues this loop indefinitely.
    PROGRAM FOR QUICKBASIC OR VISUALBASIC USING CLCISUB1.BAS
    DECLARE ()...this representation is for all the declare statements
    ADDR = &H300sets up the variable for the board address
    AXIS = 1sets up the variable for axis 1
    INITIALIZE ADDR,AXISinitializes axis1 
    MOTION ADDR,AXIS,500,10000,230000sets up the base speed, max
    speed, and ramp values
    TOP.OF.LOOP:
      IF GET.INPUT(ADDR,1) = 1 THENlooks at input #1
    INDEX ADDR,AXIS,5000sets up the index number
    GO.CW ADDR,AXISindexes the motor
    WAIT.FOR.STOP ADDR,AXISwaits until the motor has stopped
      END IF
      IF GET.INPUT.2 = 1 THENlooks at input #2
    INDEX ADDR,AXIS,4000sets up the index number
    GO.CCW ADDR,AXISindexes the motor
    WAIT.FOR.STOP ADDR,AXISwaits until the motor has stopped
      END IF
    GOTO TOP.OF.LOOP 
    						
    							16 SAMPLE #2 (PROGRAM SAMPLE2.BAS ON THE CLCI2000 DISK)
    This sample shows two different homing routines that can be used to home the motors.  The first routine callled
    Home Type 0, uses two switches - the first switch causes the motor to ramp down to base speed, and the second
    switch causes the motor to stop.  The second routine, Home Type 1, uses only 1 switch -  when the switch is
    activated the motor will ramp down to base speed, the mechanics need to be made in such a way that the switch
    will be deactivated when it reaches base speed.  When base speed is reached, the motor will reverse direction
    and will stop once the switch is activated once again.
    PROGRAM FOR QUICKBASIC OR VISUALBASIC USING CLCISUB1.BAS
    DECLARE ()...this representation is for all the declare statements
    ADDR = &H300                            sets up the variable for the board address
    AXIS = 1                                sets up the variable for axis 1
    INITIALIZE ADDR, AXIS                   initializes axis 1
    MOTION ADDR, AXIS, 500, 10000, 23000    sets up the base speed, max speed, and acceleration
    HOME.TYPE.1:
         home type 1 requires the switch to be activated and then deactivated (passed)
         while decelerating.  The motor will then stop and reverse direction.  When the
         switch is then activated, the motor will stop.
       LIMIT.CONTROL ADDR, AXIS, 0, 0, 0       soft is not active, mark is not active, home is not active
       SET.OUTPUT1 ADDR, 0, 0, 0, 0, 0, 1, 0   sets the HOME.DIR.1 to CW and all outputs off
       IF HOME.INPUT(ADDR, AXIS) = 1 THEN END   if we are already on the limit switch
       HOME.CW ADDR, AXIS                      this will home the motor in the CW direction
       WHILE HOME.INPUT(ADDR, AXIS) = 0
       WEND
       RAMP.TO.STOP.CW ADDR, AXIS
       WAIT.FOR.STOP ADDR, AXIS
       LIMIT.CONTROL ADDR, AXIS, 0, 0, 1       soft is not active, mark is not active, home is active
       SLEW.AT.BASE.CCW ADDR, AXIS
       WHILE BUSY(ADDR, AXIS) = 1
       WEND
       LIMIT.CONTROL ADDR, AXIS, 0, 0, 0       soft is not active, mark is not active, home is not active
    RETURN
    HOME.TYPE.0:
        home type 0 requires two switches - a soft limit switch, and a home limit
        switch.  When the soft limit switch is activated, the software will ramp
        the motor down to base speed.  The motor will continue traveling until the
        home limit switch is activated.
      LIMIT.CONTROL ADDR, AXIS, 0, 0, 1       soft is not active, mark is not active, home is active
      SET.OUTPUT1 ADDR, 0, 0, 0, 0, 0, 1, 0   sets the HOME.DIR.1 to CW and all outputs off
      HOME.CW ADDR, AXIS                      this will home the motor in the CW direction
      WHILE SOFT.INPUT.CW(ADDR, AXIS) = 0
      WEND
      RAMP.TO.BASE.CW ADDR, AXIS
      END 
    						
    							17 CLCISUBS.CPP PROGRAM FUNCTION DEFINITIONS
    The CLCISUBS.CPP Library is for use with C or C++ programming languages.  It can also be used with other versions
    of C or C++ with little or no modifications to the code.  This Library is set up to run CLCI2000 Series Indexers at any
    open address.  The following is a command list for all the usable Functions in this Library.  This is a comprehensive list
    that will allow complete control of the CLCI2000 Series Index Boards.  Refer to your programming manual for information
    on how to load this Library.
    In all the below descriptions, these general guidelines apply:
    The ADDRESS is the setting on the 5 pin dip switch (see Installation).  This is always given in the Hexadecimal format.
    For a setting of 11000, or a Base Address of 300, the correct format would be (0x300, ...) 
    The AXIS applies to the axis for that particular board (1, 2, 3, or 4)
    BUSY  (ADDRESS, AXIS)
    This will return a 1 if the axis is Busy (clock pulses are being generated).
    GET_INPUT (ADDRESS, INPUT#)
    This will return the value for the Specified input number 1 through 10.  A return of a 1 will specify that the input is active
    (0VDC), and a 0 will specify that the input is not active (an open circuit).
    GO_CCW  (ADDRESS, AXIS)  
    This will Index in the clockwise direction.
    GO_CW  (ADDRESS, AXIS)
    This will Index in the counterclockwise direction.
    HARD_INPUT_CCW  (ADDRESS, AXIS)  
    This will return the value of the -Hard Limit Switch.  If the Limit Switch is ACTIVE or 0VDC, the Function will return a 1.
    If the Limit Switch is NOT ACTIVE, the function will return a 0.
    HARD_INPUT_CW (ADDRESS, AXIS)  
    This will return the value of the +Hard Limit Switch.  If the Limit Switch is ACTIVE or 0VDC, the function will return a 1.
    If the Limit Switch is NOT ACTIVE, the function will return a 0.
    HOME_CCW (ADDRESS, AXIS)
    This will HOME (sometimes called SLEW) the motor in the counterclockwise direction.
    HOME_CW  (ADDRESS, AXIS) 
     This will HOME (sometimes call SLEW) the motor in the clockwise direction.
    HOME_INPUT  (ADDRESS, AXIS)  
    This will return the value of the +Home Limit or -Home Lime (determined by the LIMIT_CONTROL).  If the Limit Switch
    is Active, the function will return a 1.  If the Limit Switch is NOT ACTIVE, the function will return a 0.
    INDEX (ADDRESS, AXIS, NUMBER)  
    This will set the Index Number Register.
    INITIALIZE (ADDRESS, AXIS)  
    This will set the axis with initial settings.  This must be done at the beginning of every program to ensure that the all the
    default setting are made.
    LIMIT_CONTROL (ADDRESS, AXIS, SOFT, MARK, HOME)  
    This will either Activate or Deactivate the board features: SOFT LIMIT SWITCHES, ENCODER MARKER PULSE, OR
    HOME LIMIT SWITCH.  A 1 will activate the feature, and a 0 will deactivate the feature.
    MOTION (ADDRESS, AXIS, BASE, MAX, RAMP)  
    This will set the Base Speed, Max Speeds, and Acceleration.  All three values must be entered. 
    						
    All Anaheim manuals Comments (0)

    Related Manuals for Anaheim Stepper CLCI2000 Users Guide