added some docs on Ensemble trajectory

This commit is contained in:
timmmooney
2013-11-14 18:36:46 +00:00
parent 9b342b09bf
commit f609d4bff8
+37 -2
View File
@@ -133,9 +133,44 @@ EnsembleTrajectoryScan.st
in this directory. You must copy doCommand.ab to into Motion Composer's
user file directory, load it into Motion Composer, and compile it to produce
the file doCommand.bcx. This file must be copied to the controller, so it
can be executed immediately when EnsembleTrajectoryScan.st sends the
command 'PROGRAM 5 "doCommand.bcx"'.
can be executed immediately when EnsembleTrajectoryScan.st sends the command
'PROGRAM 5 "doCommand.bcx"'. The controller also must be configured to
increase the number of global integers and doubles. For N trajectory
points, the number of global doubles must be at least (N+3)*3 (for one
motor), and the number of global integers must be at least N+50.
This software is not ready for multiple-motor trajectories.
doCommand is needed because the Ensemble commands that execute a trajectory
are not available via the ASCII interface through which drvEnsembleAsyn
and EnsembleTrajectoryScan talk to the controller.
To use this software, you must load a motor record configured to control an
Ensemble motor, for example by executing the following commands:
dbLoadTemplate("AeroAsyn.substitutions")
drvAsynIPPortConfigure("tcp1","164.54.51.77:8000", 0, 0, 0)
EnsembleAsynSetup(1)
EnsembleAsynConfig(0, "tcp1", 0, 1, 50, 1000)
drvAsynMotorConfigure("AeroE1","motorEnsemble",0,1)
where the file AeroAsyn.substitutions has the following content:
file "$(MOTOR)/db/asyn_motor.db"
{
pattern
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
{xxxL:, 17, "m$(N)", "asynMotor", AeroE1, 0, "motor $(N)", mm, Pos, .1, 0, .2, 0, 1, .2, 1.25E-5, 7, 0, 0, "SCURVE 100"}
}
On top of this support, you must load and execute the trajectoryScan database, and execute the SNL program:
dbLoadRecords("$(MOTOR)/motorApp/Db/trajectoryScan.db","P=xxxL:,R=traj1:,NAXES=1,NELM=1000,NPULSE=1000")
...
iocInit
...
seq &EnsembleTrajectoryScan, "P=xxxL:,R=traj1:,M1=m17,M2=m2,M3=m3,M4=m4,M5=m5,M6=m6,M7=m7,M8=m8,PORT=tcp1"
You'll probably want autosave to manage the trajectory PVs. Add the following line to auto_settings.req:
file trajectoryScan_settings.req P=$(P),R=traj1: