forked from epics_driver_modules/motorBase
==============================================================================
MAXv MAXv MAXv MAXv
==============================================================================
For all MAXv motors.
--------------------
# OMS MAXv driver setup parameters:
# (1)number of cards in array.
# (2)VME Address Space - A(16,24,32).
# (3)Base Address (see README file).
# (4)interrupt vector (0=disable or 64 - 255).
# (5)interrupt level (1 - 6).
# (6)motor task polling rate (min=1Hz,max=60Hz).
#!MAXvSetup(1, 16, 0xF000, 190, 5, 10)
MAXv array base address
-----------------------
- defined the by 3rd argument to the MAXvSetup() call.
- must be both a valid address and on a valid address boundary for the selected
VME Address Space. A valid address for an A16 address must be 4 hex digits;
A24 - 6 hex digits; A32 - 8 hex digits.
Each MAXv occupies the following space for the selected VME address space.
VME space | A16 | A24 | A32 |
----------|--------|-----------|-------------|
MAXv size | 0x1000 | 0x01 0000 | 0x0100 0000 |
----------|--------|-----------|-------------|
valid MAXv| 0x0000 | 0x10 0000 | 0x1000 0000 |
addresses | 0x1000 | 0x11 0000 | 0x1100 0000 |
| 0x2000 | 0x12 0000 | 0x1200 0000 |
| ... | ... | ... |
| 0xE000 | 0x1E 0000 | 0x1E00 0000 |
| 0xF000 | 0x1F 0000 | 0x1F00 0000 |
| | 0x20 0000 | 0x2000 0000 |
| | ... | ... |
| | 0xFF 0000 | 0xFF00 0000 |
----------|--------|-----------|-------------|
EXAMPLE
-------
3 MAXv boards, A24 address space, base address = 0xA0 0000.
1st board's address - 0xA0 0000
2nd board's address - 0xA1 0000
3rd board's address - 0xA2 0000
MAXvSetup(3, 24, 0xA00000, 190, 5, 10)
NOTES:
- Unlike the other OMS models, the MAXv VME Address Modifiers (AM) do not
respond to both supervisory and non-privileged access. Hence, the MAXv's
AM's must match the CPU board's AM's exactly. At the APS, this means the
AM must be set to A16 privileged access; 0x2D .
- Configure the MAXv's limit switch sense by placing one of the following MAXv
controller commands in the 2nd argument of MAXvConfig(); the initialization
string. This command determines which TTL signal level defines an active
limit switch input:
LL - low (default).
LH - high.
- One of the following MAXv controller commands must appear in the
initialization string to configure the type of axis:
PSO - open loop stepper axis.
PSE - stepper axis with encoder.
PSM - servo axis
Note: Separate multiple commands in the initialization string with ";".
Example
-------
config0="AX LH PSM; AY LL PSO; AZ LL PSO; AT LL PSO; AU LH PSO; AV LH PSO; \
AR LH PSO; AS LH PSO;"
MAXvConfig(0, config0)
Configuring the MAXv for an open loop stepper motor (default).
--------------------------------------------------------------
Set J8 for stepper and add the command "PS0;" to the MAXvConfig()
initialization string.
Configuring the MAXv for a stepper motor with encoder.
------------------------------------------------------
Set J8 for stepper and add the command "PSE;" to the MAXvConfig()
initialization string.
Configuring the MAXv for a servo motor.
---------------------------------------
Set J8 for servo and add the command "PSM;" to MAXvConfig() initialization
string.
==============================================================================
VME8, VME44, VS4, VX2 VME8, VME44, VS4, VX2
==============================================================================
OMS array base address
--------------------------
- defined by the 3rd argument to the omsSetup() call.
- the VMEbus address of the 1st board in the array of OMS VME8, VME44, VS4 and
VX2 boards.
OMS incremental address
---------------------------
- increment each additional OMS board's VMEbus address by 0x10 from the array's
base address.
==============================================================================
VME58 VME58 VME58 VME58
==============================================================================
VME58 array base address
------------------------
- defined the by 2nd argument to the oms58Setup() call.
- the VMEbus address of the 1st board in the array of OMS VME58 boards.
VME58 incremental address
-------------------------
- increment each additional board's VMEbus address by 0x1000 from the array's
base address.
NOTE
----
1. The EPICS motor record does NOT support the encoder mode. The encoder mode
is enabled with the ER#,# and results in all distance, velocity and
acceleration parameters being input in encoder counts.
SSCAN THROUGH-PUT NOTES
-----------------------
The following results where done using the following;
- SSCAN support module R2.5.1, with scan.db configured as follows;
- Read(R1PV) set to "time".
- Drive(P1PV) set to motor record VAL field.
- #PTS(NPTS) set to 1000.
- Step Size(P1SI) set to MRES of the motor record.
- Motor record R5.7; configured as follows;
- Set slew velocity (VELO) = (500,000 * MRES).
- Set base velocity (VBAS) = (499,999 * MRES).
- Acceleration time (ACCL) does not matter.
- EPICS base R3.14.7
- WRS Tornado 2.2.1
- MVME5100
- VME8 with firmware version 1.97-8
- VME44 with firmware version 2.35-4E:
- VME58 with firmware version 2.16-8
- MAXv with firmware version 1.25
Controller | sysClkRate | interrupts | polling rate | ms/scan pt.
-----------|------------|------------|--------------|------------
VME8 | 60 | disabled | 1HZ | 1076.0
-----------|------------|------------|--------------|------------
VME44 | 60 | disabled | 1HZ | 1267.0
-----------|------------|------------|--------------|------------
VME58 | 60 | disabled | 1HZ | 808.5
-----------|------------|------------|--------------|------------
MAXv | 60 | disabled | 1HZ | 808.5
===========|============|============|==============|============
VME8 | 60 | disabled | 60HZ | 801.8
-----------|------------|------------|--------------|------------
VME44 | 60 | disabled | 60HZ | 990.6
-----------|------------|------------|--------------|------------
VME58 | 60 | disabled | 60HZ | 77.3
-----------|------------|------------|--------------|------------
MAXv | 60 | disabled | 60HZ | 77.4
===========|============|============|==============|============
VME8 | 4000 | disabled | 1HZ | 776.0
-----------|------------|------------|--------------|------------
VME44 | 4000 | disabled | 1HZ | 779.9
-----------|------------|------------|--------------|------------
VME58 | 4000 | disabled | 1HZ | 772.3
-----------|------------|------------|--------------|------------
MAXv | 4000 | disabled | 1HZ | 772.5
===========|============|============|==============|============
VME8 | 4000 | disabled | 60HZ | 18.8
-----------|------------|------------|--------------|------------
VME44 | 4000 | disabled | 60HZ | 22.1
-----------|------------|------------|--------------|------------
VME58 | 4000 | disabled | 60HZ | 14.9
-----------|------------|------------|--------------|------------
MAXv | 4000 | disabled | 60HZ | 15.2
===========|============|============|==============|============
VME8 | 60 | enabled | 1HZ | 38.8
-----------|------------|------------|--------------|------------
VME44 | 60 | enabled | 1HZ | 38.8
-----------|------------|------------|--------------|------------
VME58 | 60 | enabled | 1HZ | 77.5
-----------|------------|------------|--------------|------------
MAXv | 60 | enabled | 1HZ | 77.5
===========|============|============|==============|============
VME8 | 60 | enabled | 1HZ | 75.4 with VBAS/VELO removed
-----------|------------|------------|--------------|------------
VME44 | 60 | enabled | 1HZ | 80.1 with VBAS/VELO removed
-----------|------------|------------|--------------|------------
VME58 | 60 | enabled | 1HZ | 97.9 with VBAS/VELO removed
-----------|------------|------------|--------------|------------
MAXv | 60 | enabled | 1HZ | 84.9 with VBAS/VELO removed
===========|============|============|==============|============
VME8 | 60 | enabled | 60HZ | 38.7
-----------|------------|------------|--------------|------------
VME44 | 60 | enabled | 60HZ | 38.7
-----------|------------|------------|--------------|------------
VME58 | 60 | enabled | 60HZ | 77.5
-----------|------------|------------|--------------|------------
MAXv | 60 | enabled | 60HZ | 77.4
===========|============|============|==============|============
VME8 | 100 | enabled | 1HZ | 15.5
-----------|------------|------------|--------------|------------
VME44 | 100 | enabled | 1HZ | 23.2
-----------|------------|------------|--------------|------------
VME58 | 100 | enabled | 1HZ | 38.7
-----------|------------|------------|--------------|------------
MAXv | 100 | enabled | 1HZ | 38.7
===========|============|============|==============|============
VME8 | 4000 | enabled | 1HZ | 14.4
-----------|------------|------------|--------------|------------
VME44 | 4000 | enabled | 1HZ | 18.2
-----------|------------|------------|--------------|------------
VME58 | 4000 | enabled | 1HZ | 10.4
-----------|------------|------------|--------------|------------
MAXv | 4000 | enabled | 1HZ | 11.6
===========|============|============|==============|============
VME8 | 4000 | enabled | 60HZ | 14.4
-----------|------------|------------|--------------|------------
VME44 | 4000 | enabled | 60HZ | 18.2
-----------|------------|------------|--------------|------------
VME58 | 4000 | enabled | 60HZ | 10.4
-----------|------------|------------|--------------|------------
MAXv | 4000 | enabled | 60HZ | 11.6
===========|============|============|==============|============
VME8 | 4000 | enabled | 60HZ | 12.7 with VBAS/VELO removed
-----------|------------|------------|--------------|------------
VME44 | 4000 | enabled | 60HZ | 15.6 with VBAS/VELO removed
-----------|------------|------------|--------------|------------
VME58 | 4000 | enabled | 60HZ | 9.8 with VBAS/VELO removed
-----------|------------|------------|--------------|------------
MAXv | 4000 | enabled | 60HZ | 9.8 with VBAS/VELO removed
-----------|------------|------------|--------------|------------
The following results where done using the following;
- SSCAN support module R2.5.6, with scan.db configured as follows;
- Read(R1PV) set to "time".
- Drive(P1PV) set to motor record VAL field.
- #PTS(NPTS) set to 1000.
- Step Size(P1SI) set to MRES of the motor record.
- Motor record R6-3; configured as follows;
- Set slew velocity (VELO) = (500,000 * MRES).
- Set base velocity (VBAS) = (499,999 * MRES).
- Acceleration time (ACCL) does not matter.
- EPICS base R3.14.7
- WRS Tornado 2.2.2
- MVME5100
- VME58 with firmware version 2.42-8
- MAXv-8000 ver:1.31, s/n:000274, FPGA:B1:A6
- MAXv with #UR8192
- CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc604_long
Controller | sysClkRate | interrupts | ms/scan pt.
===========|============|============|============
VME58 | 60 | enabled | 83.4 ms
===========|============|============|============
VME58 | 100 | enabled | 50.1 ms
===========|============|============|============
VME58 | 200 | enabled | 30.1 ms
===========|============|============|============
VME58 | 4000 | enabled | 13.1 ms
===========|============|============|============
MAXv | 60 | enabled | 50.0 ms
===========|============|============|============
MAXv | 100 | enabled | 30.0 ms
===========|============|============|============
MAXv | 200 | enabled | 15.0 ms
===========|============|============|============
MAXv | 1000 | enabled | 5.1 ms
===========|============|============|============
MAXv | 4000 | enabled | 4.1 ms
-----------|------------|------------|------------