forked from epics_driver_modules/motorBase
New file from Nia Fong at SLAC
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
=======================================
|
||||
ImsMDrivePlusMotor AsynPortDriver Notes
|
||||
|
||||
Author: Nia Fong, SLAC National Laboratory
|
||||
|
||||
First Initial: 10/28/2011
|
||||
|
||||
This driver is based on "model 3" motor asyn port driver defined by Mark Rivers.
|
||||
The driver assumes:
|
||||
1) each controller is configured for a single axis
|
||||
2) the motor is set up for Party Mode (PY=1) and Echo Mode 2 (EM=2)
|
||||
=======================================
|
||||
|
||||
=======================
|
||||
Building an Application
|
||||
=======================
|
||||
Building the driver into an application requires
|
||||
|
||||
1) The 'asyn', 'motor' and 'ImsMDrivePlusMotor' (this driver) packages/modules to be built and
|
||||
installed. The application's RELEASE file must point to these packages so that the build process
|
||||
locates headers and libraries etc.
|
||||
|
||||
2) The application's '.dbd' file must contain
|
||||
- motorSupport.dbd
|
||||
- drvAsynIPPort.dbd (or equivalent 'asyn' port driver package)
|
||||
- devImsMotor.dbd (this include support for all Ims drivers)
|
||||
|
||||
These '.dbd' files are best listed in the application src/Makefile:
|
||||
<app>_DBD += motorSupport.dbd
|
||||
<app>_DBD += devImsMotor.dbd
|
||||
<app>_DBD += drvAsynIPPort.dbd
|
||||
|
||||
3) The application must be linked against the 'Ims', 'motor' and 'asyn'
|
||||
libraries, e.g.,
|
||||
|
||||
<app>_LIBS += Ims motor asyn
|
||||
|
||||
===============
|
||||
Custom Database
|
||||
===============
|
||||
There is an IMS specific IMS_extra.db database that contains IMS-specific records.
|
||||
|
||||
IMS_S: saves user variables and flags to controller's NVM
|
||||
|
||||
record(bo,"$(DEV):$(AREA):$(LOC):IMS_S") {
|
||||
field(DESC, "Ims Save to NVM")
|
||||
field(PINI, "NO")
|
||||
field(DTYP, "asynInt32")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))IMS_SAVETONVM")
|
||||
field(VAL, "0")
|
||||
field(ZNAM, "No")
|
||||
field(ONAM, "Yes")
|
||||
}
|
||||
|
||||
=============================
|
||||
Driver Run-Time Configuration
|
||||
=============================
|
||||
To configure the motor from the iocsh or a C/C++ application
|
||||
|
||||
1) Create and configure an asyn IP port
|
||||
|
||||
drvAsynIPPortConfigure(IOPortName, port, priority, disable auto-connect, no process EOS)
|
||||
motorPortName: name string assigned to the asyn IP port being created
|
||||
port: host:port [protocol]
|
||||
|
||||
2) Create and configure an ImsMDrivePlus controller
|
||||
|
||||
ImsMDrivePlusCreateController(motorPortName, IOPortName, devName, movingPollPeriod, idlePollPeriod)
|
||||
motorPortName: name string assigned to the controller
|
||||
IOPortName: name of asyn IO port that was created by drvAsynIPPortConfigure()
|
||||
devName: unique device name used to address the motor in MCode
|
||||
NOTE: the device name is prepended to all MCode commands to communicate in Party Mode.
|
||||
See README file for more information.
|
||||
movingPollPeriod: time in milliseconds between polls when axis is moving
|
||||
idlePollPeriod: time in milliseconds between polls when axis is not moving
|
||||
|
||||
=========================
|
||||
Example iocsh st.cmd file
|
||||
=========================
|
||||
#!../../bin/linux-x86/ImsMDrivePlus
|
||||
|
||||
# Register all support components
|
||||
dbLoadDatabase("dbd/ImsMDrivePlus.dbd")
|
||||
ImsMDrivePlus_registerRecordDeviceDriver pdbbase
|
||||
|
||||
# Motors substitutions, customize this for your motor
|
||||
dbLoadTemplate "db/motor.mdriveplus.substitutions"
|
||||
|
||||
# Configure asyn communication port, first
|
||||
drvAsynIPPortConfigure("M06", "ts-b34-nw08:2101", 0, 0, 0 )
|
||||
|
||||
# Configure one controller per motor, each controller just has 1 axis
|
||||
ImsMDrivePlusCreateController("IMS1", "M06", "1", 200, 5000)
|
||||
|
||||
# Optional: Enable tracing
|
||||
asynSetTraceIOMask("IMS1",0,2)
|
||||
asynSetTraceMask("IMS1",0,2)
|
||||
|
||||
=============================================
|
||||
Example application database substitions file
|
||||
=============================================
|
||||
Db/motor.mdrive.substitutions file:
|
||||
|
||||
file "$(MOTOR)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, DESC, ADDR, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, DHLM, DLLM, MRES, PREC, INIT}
|
||||
{IMS:, 1, 1, "asynMotor", IMS1, "MDrive23", 0, mm, Pos, 3.0, 0.017, 2.0, 0, 0.017, 2.0, 100, -100, 0.000083, 4, ""}
|
||||
}
|
||||
|
||||
file "$(MOTOR)/db/IMS_extra.db"
|
||||
{
|
||||
pattern
|
||||
{DEV, AREA, LOC, PORT, ADDR, TIMEOUT}
|
||||
{ims, IOC, 1, IMS1, 0, 1}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user