M-Drive motors


The ADC slits at D-line use Intelligent Motor System MDrive23 motors. An MDrive motor has indexer and driver piggy-backed to the stepping motor, and is connected to the computer via a serial line. An RS232 to RS488 adapter is needed and comes with the slit, the RS232 side is connected to the serial port of the control computer. Successive slit units are daisychained ("party line") by modem cables between slit units (D9 connector). Each slit unit comprising motors for each of the four blade has its on power supply (24V, 3A).

config file for slit unit "sg" (guard slits)


Motor and Counter Device Configuration (Not CAMAC)

 MOTORS        DEVICE   ADDR  <>MODE  NUM                                 <>TYPE
    YES    /dev/ttyS0     <>    9600   32       IMS MDrive 17/23/34 (Party Line)


note: NUM was chosen as 32 in order to make all letters of the alphabet available. The present configuration is:
#1:1, ..., #9:9, #10:A, #11:B, ..., #32:W. Drive letters can be assigned from spec using my mdrive_set macro.
Lately I have used 1-4 for the guard slits sg and 5-8 for the beam defining slits sh.


Motor parameters in config

Number: <>Controller       54:MDRIVE_E  55:MDRIVE_E  56:MDRIVE_E  57:MDRIVE_E
Unit/[Module/]Channel             0/18         0/19         0/20         0/21
Name                               sgf          sgr          sgt          sgb
Mnemonic                           sgf          sgr          sgt          sgb
<>Spectrometer                  common       common       common       common
Steps per degree/mm             3225.2       3225.2      -3225.2      -3225.2
Sign of user * dial                  1            1            1            1
Backlash [steps]                   200          200         -200         -200
Steady-state rate [Hz]            2000         2000         2000         2000
Base rate [Hz]                     200          200          200          200
Acceleration time [msec]           125          125          125          125
Motor accumulator               -34792        18066       -27118        22326
Restrictions <>                   NONE         NONE         NONE         NONE
Dial = accumulator / steps
  High limit                   11.8802      17.2907      15.1643      16.7258
  Current                     -10.7875       5.6015       8.4082      -6.9224
  Low limit                   -18.1198     -12.7093      -4.8357     -13.2742
User = sign * dial + offset
  Offset                       10.7885      -5.6043      -8.4082       6.9224
  `High' limit                 22.6687      11.6864       6.7562      23.6481
  Current                       0.0009      -0.0028       0.0000       0.0000
  `Low' limit                  -7.3313     -18.3136     -13.2438      -6.3519

Number of motors (geo/all)   73  /  84     Type ? and H for help, ^C to quit

Motor parameters continued (use Ctrl-M)

Number: <>Controller       54:MDRIVE_E  55:MDRIVE_E  56:MDRIVE_E  57:MDRIVE_E
Unit/[Module/]Channel             0/18         0/19         0/20         0/21
Name                               sgf          sgr          sgt          sgb
Mnemonic                           sgf          sgr          sgt          sgb
<>Spectrometer                  common       common       common       common

Home slew rate [Hz]
Home base rate [Hz]
Home acceleration [msec]
Home position [dial]
Home method

DC dead band [steps]
DC settle time [sec]
DC proportional gain
DC derivative gain
DC integral gain
DC integration limit
DC following error                 100          100          100          100
DC sampling interval

Number of motors (geo/all)   73  /  84     Type ? and H for help, ^C to quit

Motor parameters continued (use Ctrl-M)

Number: <>Controller       54:MDRIVE_E  55:MDRIVE_E  56:MDRIVE_E  57:MDRIVE_E

Unit/[Module/]Channel             0/18         0/19         0/20         0/21
Name                               sgf          sgr          sgt          sgb
Mnemonic                           sgf          sgr          sgt          sgb
<>Spectrometer                  common       common       common       common

Encoder steps per deg/mm
Step mode (0=full,1=half)
Linear/Rotary (1=rotary)
Readback slop [steps]               10           10           10           10
Hardware read mode <>                    

Deceleration [msec]

Torque                              

Generic parameter 1                100          100          100          100
Generic parameter 2                  5            5            5            5
Generic parameter 3                100          100          100          100
Generic parameter 4                100          100          100          100
Generic parameter 5
Generic parameter 6

Number of motors (geo/all)   73  /  84     Type ? and H for help, ^C to quit


NOTE: marked entries provide important motor settings
The following parameters are set according to the controller type:
Other comments:

For documentation see the spec 5.03.01-2 update notes or the MDrive23 manual.


macros for diagnosis and maintenance

All macros are defined in mdrive.mac on the nondist directory. (old name: mdrive_stat.mac) Note: see tricks & traps below!

  • mdrive_stat [motor]
lists all motor parameters
  • mdrive_show [motor]
lists all motor parameters
  • mdrive_set [motor] [serial port command in double quotes]
send ASCII command to motor
  • mdrive_read [motor] [parameter name]
read motor specific motor parameter
  • mdrive_pos [motor]
list motor and encoder position
  • mdrive_name [motor]
assign a new name to motor
  • mdrive_save [motor]
burn in motor name
  • mdrive_help
list all mdrive commands

tricks & traps

In order to use the low level diagnosis macros from mdrive.mac, it is important to know how spec communicates with the motor:

macro

The mdrive.mac macro can be downloaded here.