spec

Software for Diffraction

isel

isel iMC-M/iMC-MP 4-Axis Motor Controllers

DESCRIPTION

spec supports the isel Germany AG model iMC-M/iMC-MP 4-axis motor controllers over a serial interface. See www.isel.com for details on the hardware.

This motor controller is designed for CNC automated control of machine tools and lacks a few features normally available with the motor controllers that spec supports. The isel controller has the following special needs:

  • When the controller is actively moving a motor, either via positioning or homing commands, it does not respond to any commands, such as the command to read the current position. To display a motor position during a move, spec estimates the current position based on the motor speed and elapsed time.
  • The base rate and acceleration values are shared by all motors on the controller. spec only uses the values for those parameters assigned to motor zero (axis X) of each controller. The powder-mode scans, which use the move_cnt function to program the powder-mode motor with special values for "powder_base" and "powder_acceleration" will not program those parameters for other than motor zero.
  • The controller has four axes, but the first three need to be used in sequence. That is, in order to use axis Y, axis X must also be used. The fourth axis (A) can be used regardless of whether any of the first three axes are used.
  • The controller requires a home search be done after the controller is powered up or reset and after an axis hits a limit switch. spec does not do the searches automatically, but prompts the user to do a search when necessary before moving a motor.

CONFIGURATION

Choose controller type "Isel iMC-XX (Serial)" on the Devices screen. The hardware default baud rate is 19200. Choose controller type "ISEL" on the Motor screen.

Although the controller protocol requires a controller number in the command, and although the protocol includes a command to assign the controller a number, only one controller can be connected to a serial line -- there is no daisy chaining. Thus, the controller number has no useful purpose. spec addresses each isel controller as number zero. Do not change the firmware controller number!

INITIALIZATION SEQUENCE

If the nonstandard optional motor parameter "init_sequence" is set in the config file for motor zero (axis X) of a particular isel controller, spec will send that string (adding appropriate prefixes and terminators) during hardware initialization. (Non-standard optional parameters are set from the configuration editor by typing a p from the motor screen.) The string can be made up of a sequence of the following commands:

IFsx,sy,sz,sa Steps to release the reference switch
IEbits End switch on/off and active level
Iecode Invert end switch
IDcode Invert axis direction
IRcode Invert reference directions
ITcode Set axis type to rotational

where sx, sy, sz and sa are the number of steps needed to release the reference or end switches; where bits codes the end switch function according to the following table:

Bit Axis Function
0 X End switch 1 enabled
1 X End switch 2 enabled
2 X End switch 1 active high
3 X End switch 2 active high
4 Y End switch 1 enabled
5 Y End switch 2 enabled
6 Y End switch 1 active high
7 Y End switch 2 active high
8 Z End switch 1 enabled
9 Z End switch 2 enabled
10 Z End switch 1 active high
11 Z End switch 2 active high
12 A End switch 1 enabled
13 A End switch 2 enabled
14 A End switch 1 active high
15 A End switch 2 active high

with the indicated function corresponding to a bit value of one; and where code codes the axes according to the following table:

Bit Axis
0 X
1 Y
2 Z
3 A

The number of arguments for IF should match the number of axes chosen in the configuration.

The bits and code values must be sent as decimal integers and not use hexadecimal coding.

Each of these commands set the corresponding values for all the configured axes on the controller. Each command should be separated from the next with a semicolon (;).

To repeat, since each command configures all the axes on the controller, the "init_sequence" parameter is only sent if it is associated with motor zero (axis X).

PARAMETERS

motor_par(mne, "brake", 0|1)
Enables or disables the power that energizes the brake for all motors on the controller. An argument of 0 disables the brake power. An argument of 1 enables power to the brake.
motor_par(mne, "send", cmd)

Sends the string cmd to the isel controller associated with motor mne. Note, spec will add the controller number and other command delimiters as needed. For example, to restore default controller parameters, one would use

motor_par(mne, "send", "IX")

spec will then send the string "@0IX\r" to the controller.

motor_par(mne, "read", cmd)

Sends the string cmd to the isel controller associated with motor mne, and returns the reply. Note, spec will add the controller number and other command delimiters as needed. For example, the following can be used to read the status inputs:

p motor_par(mne, "read", "b1")