diff --git a/motorApp/AerotechSrc/README b/motorApp/AerotechSrc/README index f86892ae..e6e3abb5 100644 --- a/motorApp/AerotechSrc/README +++ b/motorApp/AerotechSrc/README @@ -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: