# Database for Newport MM4005 and XPS trajectory scanning. # # Mark Rivers # June 29, 2007 # # Note: This database is completely general for the MM4005 and XPS, it makes no # assumptions about the motors defined on particular axis. Thus it can be used # with the Newport diffractometer or any other set of up to 8 motors. # # Macro paramters: # $(P) - PV name prefix # $(R) - PV base record name # $(NAXES) - Number of axes to be used. Typically 6 for diffractometer. # $(NELM) - Maximum trajectory elements # $(NPULSE) - Maximum number of output pulses # # PVs controlling the number of trajectory elements and the number of output # pulses # grecord(longout,"$(P)$(R)NumAxes") { field(VAL, "$(NAXES)") field(DESC,"# of axes being used") } grecord(longout,"$(P)$(R)Nelements") { field(VAL, "10") field(DESC,"# of elements in trajectory") } grecord(mbbi,"$(P)$(R)MoveMode") { field(DESC,"Move mode") field(VAL, "0") field(PINI, "YES") field(ZRVL, "0") field(ZRST, "Relative") field(ONVL, "1") field(ONST, "Absolute") field(TWVL, "2") field(TWST, "Hybrid") } grecord(longout,"$(P)$(R)Npulses") { field(DESC,"Number of output pulses") field(VAL, "10") } grecord(longout,"$(P)$(R)StartPulses") { field(DESC,"Element # to start pulses") field(VAL, "1") } grecord(longout,"$(P)$(R)EndPulses") { field(DESC,"Element # to end pulses") field(VAL, "1") } grecord(longout,"$(P)$(R)Nactual") { field(DESC,"Actual # of output pulses") } record(mbbi,"$(P)$(R)PulseMode") { field(DESC,"Pulse mode") field(VAL, "0") field(PINI, "YES") field(ZRVL, "0") field(ZRST, "Fixed") field(ONVL, "1") field(ONST, "Array") field(TWVL, "2") field(TWST, "TrajPts") field(THVL, "3") field(THST, "None") } grecord(waveform,"$(P)$(R)PulsePositions") { field(DESC,"Output-pulse positions") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "3") field(FLNK, "$(P)$(R)NewPulsePositions") } grecord(ao,"$(P)$(R)NewPulsePositions") { field(DESC,"New pulse positions loaded") field(MDEL,"-1") field(PREC, "3") } grecord(longout,"$(P)$(R)NumPulsePositions") { field(DESC,"Num pulse positions to load") } record(mbbo, "$(P)$(R)PulseDir") { field(DESC,"Both, Neg, or Pos") field(ZRVL, "0") field(ZRST, "Both") field(ONVL, "1") field(ONST, "Pos") field(TWVL, "2") field(TWST, "Neg") } record(ao, "$(P)$(R)PulseLenUS") { field(DESC,"pulse length in microseconds") field(DOL, "25") } record(longout, "$(P)$(R)PulseSrc") { field(DESC,"pulse source (1 or 3)") field(DOL, "1") } # # PVs controlling the trajectory speed and acceleration # grecord(bo,"$(P)$(R)TimeMode") { field(DESC,"Trajectory time mode") field(VAL,"0") field(ZNAM,"Total") field(ONAM,"Per element") } grecord(ao,"$(P)$(R)Time") { field(DESC,"Trajectory time") field(VAL, "10.") field(PREC, "3") } grecord(ao,"$(P)$(R)ElapsedTime") { field(DESC,"Elapsed time") field(VAL, "0.") field(PREC, "3") } grecord(ao,"$(P)$(R)TimeScale") { field(DESC,"Trajectory time scaling") field(VAL, "1.") field(PREC, "2") field(DRVL, "0.01") field(LOPR, "0.01") field(DRVH, "100.0") field(HOPR, "100.0") } grecord(waveform,"$(P)$(R)TimeTraj") { field(DESC,"Time per element") field(NELM,"$(NELM)") field(FTVL,"DOUBLE") field(PREC, "3") } grecord(waveform,"$(P)$(R)realTimeTrajectory") { field(DESC,"Time at element") field(NELM,"$(NELM)") field(FTVL,"DOUBLE") field(PREC, "3") } grecord(ao,"$(P)$(R)Accel") { field(DESC,"Trajectory Acceleration") field(VAL, "0.5") field(PREC, "3") } grecord(longout,"$(P)$(R)OutBitNum") { field(VAL, "-1") field(DESC,"Output-Bit Number") } grecord(longout,"$(P)$(R)InBitNum") { field(VAL, "-1") field(DESC,"Input-Bit Number") } grecord(ao,"$(P)$(R)OverrideFactor") { field(DESC,"velocity override factor") field(VAL, "0.1") field(PREC, "3") } grecord(mbbo,"$(P)$(R)UpdateFreq") { field(DESC,"Move mode") field(VAL, "0") field(PINI, "YES") field(ZRVL, "1") field(ZRST, "1024") field(ONVL, "2") field(ONST, "2048") field(TWVL, "4") field(TWST, "4096") field(THVL, "8") field(THST, "8192") } # # PVs controlling which motors will move # grecord(bo,"$(P)$(R)M1Move") { field(DESC,"Move M1 motor?") field(VAL,"1") field(ZNAM,"No") field(ONAM,"Yes") } grecord(bo,"$(P)$(R)M2Move") { field(DESC,"Move M2 motor?") field(VAL,"0") field(ZNAM,"No") field(ONAM,"Yes") } grecord(bo,"$(P)$(R)M3Move") { field(DESC,"Move M3 motor?") field(VAL,"0") field(ZNAM,"No") field(ONAM,"Yes") } grecord(bo,"$(P)$(R)M4Move") { field(DESC,"Move M4 motor?") field(VAL,"0") field(ZNAM,"No") field(ONAM,"Yes") } grecord(bo,"$(P)$(R)M5Move") { field(DESC,"Move M5 motor?") field(VAL,"0") field(ZNAM,"No") field(ONAM,"Yes") } grecord(bo,"$(P)$(R)M6Move") { field(DESC,"Move M6 motor?") field(VAL,"0") field(ZNAM,"No") field(ONAM,"Yes") } grecord(bo,"$(P)$(R)M7Move") { field(DESC,"Move M7 motor?") field(VAL,"0") field(ZNAM,"No") field(ONAM,"Yes") } grecord(bo,"$(P)$(R)M8Move") { field(DESC,"Move M8 motor?") field(VAL,"0") field(ZNAM,"No") field(ONAM,"Yes") } # # PVs containing the trajectory definitions for each motor # grecord(waveform,"$(P)$(R)M1Traj") { field(DESC,"M1 increments") field(NELM,"$(NELM)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M2Traj") { field(DESC,"M2 increments") field(NELM,"$(NELM)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M3Traj") { field(DESC,"M3 increments") field(NELM,"$(NELM)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M4Traj") { field(DESC,"M4 increments") field(NELM,"$(NELM)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M5Traj") { field(DESC,"M5 increments") field(NELM,"$(NELM)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M6Traj") { field(DESC,"M6 increments") field(NELM,"$(NELM)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M7Traj") { field(DESC,"M7 increments") field(NELM,"$(NELM)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M8Traj") { field(DESC,"M8 increments") field(NELM,"$(NELM)") field(FTVL,"DOUBLE") field(PREC, "4") } # # PVs to build and execute the trajectory # grecord(bo,"$(P)$(R)SimMode") { field(DESC,"Simulation mode") field(VAL,"0") field(ZNAM,"Real") field(ONAM,"Simulate") } grecord(busy,"$(P)$(R)Build") { field(DESC,"Build and check trajectory") field(VAL,"0") } grecord(mbbi,"$(P)$(R)BuildState") { field(DESC,"Trajectory build state") field(VAL, "0") field(PINI, "YES") field(ZRVL, "0") field(ZRST, "Done") field(ZRSV, "NO_ALARM") field(ONVL, "1") field(ONST, "Busy") field(ONSV, "MINOR") } grecord(mbbi,"$(P)$(R)BuildStatus") { field(DESC,"Trajectory build status") field(VAL, "0") field(PINI, "YES") field(ZRVL, "0") field(ZRST, "Undefined") field(ZRSV, "INVALID") field(ONVL, "1") field(ONST, "Success") field(ONSV, "NO_ALARM") field(TWVL, "2") field(TWST, "Failure") field(TWSV, "MAJOR") } grecord(stringout,"$(P)$(R)BuildMessage") { field(DESC,"Trajectory build message") } grecord(busy,"$(P)$(R)Execute") { field(DESC,"Start trajectory motion") field(VAL,"0") } grecord(mbbi,"$(P)$(R)ExecState") { field(DESC,"Trajectory execute state") field(VAL, "0") field(PINI, "YES") field(ZRVL, "0") field(ZRST, "Done") field(ZRSV, "NO_ALARM") field(ONVL, "1") field(ONST, "Move start") field(ONSV, "MINOR") field(TWVL, "2") field(TWST, "Executing") field(TWSV, "MINOR") field(THVL, "3") field(THST, "Flyback") field(THSV, "MINOR") } grecord(mbbi,"$(P)$(R)ExecStatus") { field(DESC,"Trajectory execute status") field(VAL, "0") field(PINI, "YES") field(ZRVL, "0") field(ZRST, "Undefined") field(ZRSV, "INVALID") field(ONVL, "1") field(ONST, "Success") field(ONSV, "NO_ALARM") field(TWVL, "2") field(TWST, "Failure") field(TWSV, "MAJOR") field(THVL, "3") field(THST, "Abort") field(THSV, "MAJOR") field(FRVL, "4") field(FRST, "Timeout") field(FRSV, "MAJOR") } grecord(stringout,"$(P)$(R)ExecMessage") { field(DESC,"Trajectory execute message") } grecord(bo,"$(P)$(R)Abort") { field(DESC,"Abort trajectory motion") field(VAL,"0") field(ZNAM,"Done") field(ONAM,"Abort") } # # PVs for readback of actual positions and errors # grecord(busy,"$(P)$(R)Readback") { field(DESC,"Read back actual positions") field(VAL,"0") } grecord(mbbi,"$(P)$(R)ReadState") { field(DESC,"Readback state") field(VAL, "0") field(PINI, "YES") field(ZRVL, "0") field(ZRST, "Done") field(ZRSV, "NO_ALARM") field(ONVL, "1") field(ONST, "Busy") field(ONSV, "MINOR") } grecord(mbbi,"$(P)$(R)ReadStatus") { field(DESC,"Readback status") field(VAL, "0") field(PINI, "YES") field(ZRVL, "0") field(ZRST, "Undefined") field(ZRSV, "INVALID") field(ONVL, "1") field(ONST, "Success") field(ONSV, "NO_ALARM") field(TWVL, "2") field(TWST, "Failure") field(TWSV, "MAJOR") } grecord(stringout,"$(P)$(R)ReadMessage") { field(DESC,"Trajectory read message") } grecord(waveform,"$(P)$(R)M1Actual") { field(DESC,"M1 actual positions") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M2Actual") { field(DESC,"M2 actual positions") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M3Actual") { field(DESC,"M3 actual positions") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M4Actual") { field(DESC,"M4 actual positions") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M5Actual") { field(DESC,"M5 actual positions") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M6Actual") { field(DESC,"M6 actual positions") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M7Actual") { field(DESC,"M7 actual positions") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M8Actual") { field(DESC,"M8 actual positions") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } # # PVs for readback of following errors # grecord(waveform,"$(P)$(R)M1Error") { field(DESC,"M1 following errors") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M2Error") { field(DESC,"M2 following errors") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M3Error") { field(DESC,"M3 following errors") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M4Error") { field(DESC,"M4 following errors") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M5Error") { field(DESC,"M5 following errors") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M6Error") { field(DESC,"M6 following errors") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M7Error") { field(DESC,"M7 following errors") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } grecord(waveform,"$(P)$(R)M8Error") { field(DESC,"M8 following errors") field(NELM,"$(NPULSE)") field(FTVL,"DOUBLE") field(PREC, "4") } # # PVs for display of current motor positions # grecord(ao,"$(P)$(R)M1Current") { field(DESC,"M1 current position") field(PREC, "4") } grecord(ao,"$(P)$(R)M2Current") { field(DESC,"M2 current position") field(PREC, "4") } grecord(ao,"$(P)$(R)M3Current") { field(DESC,"M3 current position") field(PREC, "4") } grecord(ao,"$(P)$(R)M4Current") { field(DESC,"M4 current position") field(PREC, "4") } grecord(ao,"$(P)$(R)M5Current") { field(DESC,"M5 current position") field(PREC, "4") } grecord(ao,"$(P)$(R)M6Current") { field(DESC,"M6 current position") field(PREC, "4") } grecord(ao,"$(P)$(R)M7Current") { field(DESC,"M7 current position") field(PREC, "4") } grecord(ao,"$(P)$(R)M8Current") { field(DESC,"M8 current position") field(PREC, "4") } # # PVs for display of motor start positions # (in case modified to provide for acceleration onto trajectory) # grecord(ao,"$(P)$(R)M1Start") { field(DESC,"M1 start position") field(PREC, "4") } grecord(ao,"$(P)$(R)M2Start") { field(DESC,"M2 start position") field(PREC, "4") } grecord(ao,"$(P)$(R)M3Start") { field(DESC,"M3 start position") field(PREC, "4") } grecord(ao,"$(P)$(R)M4Start") { field(DESC,"M4 start position") field(PREC, "4") } grecord(ao,"$(P)$(R)M5Start") { field(DESC,"M5 start position") field(PREC, "4") } grecord(ao,"$(P)$(R)M6Start") { field(DESC,"M6 start position") field(PREC, "4") } grecord(ao,"$(P)$(R)M7Start") { field(DESC,"M7 start position") field(PREC, "4") } grecord(ao,"$(P)$(R)M8Start") { field(DESC,"M8 start position") field(PREC, "4") } record(bo, "$(P)$(R)AddAccelDecel") { field(ZNAM, "No") field(ONAM, "Yes") } # # PVs to set minimum motor speed (MAXV only) # grecord(ao,"$(P)$(R)M1MinSpeed") { field(DESC,"M1 min speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M2MinSpeed") { field(DESC,"M2 min speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M3MinSpeed") { field(DESC,"M3 min speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M4MinSpeed") { field(DESC,"M4 min speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M5MinSpeed") { field(DESC,"M5 min speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M6MinSpeed") { field(DESC,"M6 min speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M7MinSpeed") { field(DESC,"M7 min speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M8MinSpeed") { field(DESC,"M8 min speed") field(PREC, "4") } # # PVs to set maximum motor speed (MAXV only) # grecord(ao,"$(P)$(R)M1MaxSpeed") { field(DESC,"M1 max speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M2MaxSpeed") { field(DESC,"M2 max speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M3MaxSpeed") { field(DESC,"M3 max speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M4MaxSpeed") { field(DESC,"M4 max speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M5MaxSpeed") { field(DESC,"M5 max speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M6MaxSpeed") { field(DESC,"M6 max speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M7MaxSpeed") { field(DESC,"M7 max speed") field(PREC, "4") } grecord(ao,"$(P)$(R)M8MaxSpeed") { field(DESC,"M8 max speed") field(PREC, "4") } # # PVs for control of maximum speed change # MDVS = Maximum Delta Velocity Set # grecord(ao,"$(P)$(R)M1MDVS") { field(DESC,"M1 max speed change set") field(PREC, "4") } grecord(ao,"$(P)$(R)M2MDVS") { field(DESC,"M2 max speed change set") field(PREC, "4") } grecord(ao,"$(P)$(R)M3MDVS") { field(DESC,"M3 max speed change set") field(PREC, "4") } grecord(ao,"$(P)$(R)M4MDVS") { field(DESC,"M4 max speed change set") field(PREC, "4") } grecord(ao,"$(P)$(R)M5MDVS") { field(DESC,"M5 max speed change set") field(PREC, "4") } grecord(ao,"$(P)$(R)M6MDVS") { field(DESC,"M6 max speed change set") field(PREC, "4") } grecord(ao,"$(P)$(R)M7MDVS") { field(DESC,"M7 max speed change set") field(PREC, "4") } grecord(ao,"$(P)$(R)M8MDVS") { field(DESC,"M8 max speed change set") field(PREC, "4") } # # PVs for readback of maximum speed change # MDVA = Maximum Delta Velocity Actual # grecord(ao,"$(P)$(R)M1MDVA") { field(DESC,"M1 max speed change") field(PREC, "4") } grecord(ao,"$(P)$(R)M2MDVA") { field(DESC,"M2 max speed change") field(PREC, "4") } grecord(ao,"$(P)$(R)M3MDVA") { field(DESC,"M3 max speed change") field(PREC, "4") } grecord(ao,"$(P)$(R)M4MDVA") { field(DESC,"M4 max speed change") field(PREC, "4") } grecord(ao,"$(P)$(R)M5MDVA") { field(DESC,"M5 max speed change") field(PREC, "4") } grecord(ao,"$(P)$(R)M6MDVA") { field(DESC,"M6 max speed change") field(PREC, "4") } grecord(ao,"$(P)$(R)M7MDVA") { field(DESC,"M7 max speed change") field(PREC, "4") } grecord(ao,"$(P)$(R)M8MDVA") { field(DESC,"M8 max speed change") field(PREC, "4") } # # PVs for readback of maximum speed change element # MDVE = Maximum Delta Velocity Element # grecord(longout,"$(P)$(R)M1MDVE") { field(DESC,"M1 max speed change element") } grecord(longout,"$(P)$(R)M2MDVE") { field(DESC,"M2 max speed change element") } grecord(longout,"$(P)$(R)M3MDVE") { field(DESC,"M3 max speed change element") } grecord(longout,"$(P)$(R)M4MDVE") { field(DESC,"M4 max speed change element") } grecord(longout,"$(P)$(R)M5MDVE") { field(DESC,"M5 max speed change element") } grecord(longout,"$(P)$(R)M6MDVE") { field(DESC,"M6 max speed change element") } grecord(longout,"$(P)$(R)M7MDVE") { field(DESC,"M7 max speed change element") } grecord(longout,"$(P)$(R)M8MDVE") { field(DESC,"M8 max speed change element") } # # PVs for readback of maximum velocity # MDA = Maximum Velocity Actual # grecord(ao,"$(P)$(R)M1MVA") { field(DESC,"M1 max velocity") field(PREC, "4") } grecord(ao,"$(P)$(R)M2MVA") { field(DESC,"M2 max velocity") field(PREC, "4") } grecord(ao,"$(P)$(R)M3MVA") { field(DESC,"M3 max velocity") field(PREC, "4") } grecord(ao,"$(P)$(R)M4MVA") { field(DESC,"M4 max velocity") field(PREC, "4") } grecord(ao,"$(P)$(R)M5MVA") { field(DESC,"M5 max velocity") field(PREC, "4") } grecord(ao,"$(P)$(R)M6MVA") { field(DESC,"M6 max velocity") field(PREC, "4") } grecord(ao,"$(P)$(R)M7MVA") { field(DESC,"M7 max velocity") field(PREC, "4") } grecord(ao,"$(P)$(R)M8MVA") { field(DESC,"M8 max velocity") field(PREC, "4") } # # PVs for readback of maximum velocity element # MVE = Maximum Velocity Element # grecord(longout,"$(P)$(R)M1MVE") { field(DESC,"M1 max velocity element") } grecord(longout,"$(P)$(R)M2MVE") { field(DESC,"M2 max velocity element") } grecord(longout,"$(P)$(R)M3MVE") { field(DESC,"M3 max velocity element") } grecord(longout,"$(P)$(R)M4MVE") { field(DESC,"M4 max velocity element") } grecord(longout,"$(P)$(R)M5MVE") { field(DESC,"M5 max velocity element") } grecord(longout,"$(P)$(R)M6MVE") { field(DESC,"M6 max velocity element") } grecord(longout,"$(P)$(R)M7MVE") { field(DESC,"M7 max velocity element") } grecord(longout,"$(P)$(R)M8MVE") { field(DESC,"M8 max velocity element") } # # PVs for readback of maximum acceleration # MAA = Maximum Acceleration Actual # grecord(ao,"$(P)$(R)M1MAA") { field(DESC,"M1 max acceleration") field(PREC, "4") } grecord(ao,"$(P)$(R)M2MAA") { field(DESC,"M2 max acceleration") field(PREC, "4") } grecord(ao,"$(P)$(R)M3MAA") { field(DESC,"M3 max acceleration") field(PREC, "4") } grecord(ao,"$(P)$(R)M4MAA") { field(DESC,"M4 max acceleration") field(PREC, "4") } grecord(ao,"$(P)$(R)M5MAA") { field(DESC,"M5 max acceleration") field(PREC, "4") } grecord(ao,"$(P)$(R)M6MAA") { field(DESC,"M6 max acceleration") field(PREC, "4") } grecord(ao,"$(P)$(R)M7MAA") { field(DESC,"M7 max acceleration") field(PREC, "4") } grecord(ao,"$(P)$(R)M8MAA") { field(DESC,"M8 max acceleration") field(PREC, "4") } # # PVs for readback of maximum acceleration element # MAE = Maximum Acceleration Element # grecord(longout,"$(P)$(R)M1MAE") { field(DESC,"M1 max acceleration element") } grecord(longout,"$(P)$(R)M2MAE") { field(DESC,"M2 max acceleration element") } grecord(longout,"$(P)$(R)M3MAE") { field(DESC,"M3 max acceleration element") } grecord(longout,"$(P)$(R)M4MAE") { field(DESC,"M4 max acceleration element") } grecord(longout,"$(P)$(R)M5MAE") { field(DESC,"M5 max acceleration element") } grecord(longout,"$(P)$(R)M6MAE") { field(DESC,"M6 max acceleration element") } grecord(longout,"$(P)$(R)M7MAE") { field(DESC,"M7 max acceleration element") } grecord(longout,"$(P)$(R)M8MAE") { field(DESC,"M8 max acceleration element") } # Debug level grecord(ao,"$(P)$(R)DebugLevel") { field(DESC,"Debugging level") field(VAL,"0") } # PV controlling the name of the trajectory file on the XPS record(stringin, "$(P)$(R)TrajectoryFile") { field(DESC,"XPS trajectory file") field(VAL, "TrajectoryScan.trj") }