You'll want to read this first: Pulse Picker Presentation 2014-06-26.pptx (UPDATED 2014-06-26 with new "Follower" mode).
For more detailed information you can read the children pages below.
Children Display |
---|
Table of Contents |
---|
Code Block |
---|
' Program Fragment: MODE_1 (Single shot)
' VA restrictions:
' 1. A variable cannot be named after A MCode Instruction,
' Variable or Flag or Keyword
' 2. The first character must be alpha, the second character
' may be alpha-numeric.
' 3. A variable is limited to two characters.
' 4. Limited to 192 variables and labels.
'Jeff additions
VA Ve=1 ' Program version
VA SE=0 ' Program select
S1=16,1,1 ' Setup IO 1 for LED/Fan control
VA EN=0 ' Current enable
VA Eo=0 ' Last enable
VA TG=0 ' Trigger enable
'Ernesto python defaults, 30Hz
VA NS=0
VA DT=0 'waiting time
VA QN=1 'ratio to divide
VA N1=0 'steps to move Cw
VA N2=0 'steps to move ccw
VA N=0 'steps to move
VA CT=0 'trigger counter
S13=60,0,0 'set inp 13 for hi speed TC in
Fc=0 'filter input none
Ms=256 'nb of motor steps/usteps
Vi=1000 'initial velocity
Vm=768000 'maximum velocity
A=1000000 'acceleration
D=1000000 'deceleration
Ee=0 'disable encoder closed-loop
Rc=100 'max run current
Hc=5 'minimal hold current
PG 1
LB SU
' 30Hz testing inits
SE = 0
'O1 = 0
N1=3200
N2=-3200
QN=1
DT=0
CT=0
N=5
Vm=5000000
Vi=100000
A=30000000
D=30000000
H 100
LB ZA ' Main loop
BR Z0, SE = 1
BR Z2, SE = 2
BR Z4, SE = 3
BR ZA
LB Z0 ' One-shot init
'O1 = 1
Tc = M1
H 500
BR Z1
LB Z1 ' One-shot program
BR ZB, TG = 1
BR Z1
LB ZB
Te = 4
BR ZG
LB ZG
BR Z1, TG = 0
BR ZG
LB M1
Te = 0
TG = 0
CL ZC, EN = 0
CL ZD, EN = 1
CL ZE, EO = 0
CL ZF, EO = 1
RT
LB ZC
MR N1
H
EO = 0
RT
LB ZD
MR N2
H
EO = 1
RT
LB ZE
EN = 1
RT
LB ZF
EN = 0
RT
PG
E
|
Code Block |
---|
' Program Fragment: MODE_2 (Continuous)
' VA restrictions:
' 1. A variable cannot be named after A MCode Instruction,
' Variable or Flag or Keyword
' 2. The first character must be alpha, the second character
' may be alpha-numeric.
' 3. A variable is limited to two characters.
' 4. Limited to 192 variables and labels.
'Jeff additions
VA Ve=1 ' Program version
VA SE=0 ' Program select
S1=16,1,1 ' Setup IO 1 for LED/Fan control
VA EN=0 ' Current enable
VA Eo=0 ' Last enable
VA TG=0 ' Trigger enable
'Ernesto python defaults, 30Hz
VA NS=0
VA DT=0 'waiting time
VA QN=1 'ratio to divide
VA N1=0 'steps to move Cw
VA N2=0 'steps to move ccw
VA N=0 'steps to move
VA CT=0 'trigger counter
S13=60,0,0 'set inp 13 for hi speed TC in
Fc=0 'filter input none
Ms=256 'nb of motor steps/usteps
Vi=1000 'initial velocity
Vm=768000 'maximum velocity
A=1000000 'acceleration
D=1000000 'deceleration
Ee=0 'disable encoder closed-loop
Rc=100 'max run current
Hc=5 'minimal hold current
PG 1
LB SU
' 30Hz testing inits
SE = 0
'O1 = 0
N1=3200
N2=-3200
QN=1
DT=0
CT=0
N=5
Vm=5000000
Vi=100000
A=30000000
D=30000000
H 100
LB ZA ' Main loop
BR Z0, SE = 1
BR Z2, SE = 2
BR Z4, SE = 3
BR ZA
LB ZC
MR N1
H
EO = 0
RT
LB ZD
MR N2
H
EO = 1
RT
LB ZE
EN = 1
RT
LB ZF
EN = 0
RT
LB Z2 ' Flip-flop init
DT=0
H 100
BR Z3
LB Z3 ' Flip-flop program
Tc = M2
Te = 4
BR Z3
LB M2
CL ZC, EN = 0
CL ZD, EN = 1
CL ZE, EO = 0
CL ZF, EO = 1
RT
PG
E
|
Code Block |
---|
' Program Fragment: MODE_3 (Burst mode)
' VA restrictions:
' 1. A variable cannot be named after A MCode Instruction,
' Variable or Flag or Keyword
' 2. The first character must be alpha, the second character
' may be alpha-numeric.
' 3. A variable is limited to two characters.
' 4. Limited to 192 variables and labels.
'Jeff additions
VA Ve=1 ' Program version
VA SE=0 ' Program select
S1=16,1,1 ' Setup IO 1 for LED/Fan control
VA EN=0 ' Current enable
VA Eo=0 ' Last enable
VA TG=0 ' Trigger enable
'Ernesto python defaults, 30Hz
VA NS=0
VA DT=0 'waiting time
VA QN=1 'ratio to divide
VA N1=0 'steps to move Cw
VA N2=0 'steps to move ccw
VA N=0 'steps to move
VA CT=0 'trigger counter
S13=60,0,0 'set inp 13 for hi speed TC in
Fc=0 'filter input none
Ms=256 'nb of motor steps/usteps
Vi=1000 'initial velocity
Vm=768000 'maximum velocity
A=1000000 'acceleration
D=1000000 'deceleration
Ee=0 'disable encoder closed-loop
Rc=100 'max run current
Hc=5 'minimal hold current
PG 1
LB SU
' 30Hz testing inits
SE = 0
'O1 = 0
N1=3200
N2=-3200
QN=1
DT=0
CT=0
N=5
Vm=5000000
Vi=100000
A=30000000
D=30000000
H 100
LB ZA ' Main loop
BR Z0, SE = 1
BR Z2, SE = 2
BR Z4, SE = 3
BR ZA
LB ZC
MR N1
H
EO = 0
RT
LB ZD
MR N2
H
EO = 1
RT
LB ZE
EN = 1
RT
LB ZF
EN = 0
RT
LB Z4 ' Burst init
R1=0
DT=0
TG=0
R1 = 0
H 100
BR Zy
LB Zy ' Burst trigger enable
BR Zx, TG = 1
BR Zy
LB Zx
MR N1
BR Z5
LB Z5 ' Burst program
Tc = M4
Te = 4
BR ZZ, R1 = N
BR Z5
LB M4
IC R1
RT
LB ZZ
MR N2
R1 = 0
Tg=0
BR Zy
LB SP
M3 = , CT = 0
IC CT
RT , CT < QN
CT = 0
RT
LB M3
MR N1
H DT
MR N2
H DT
RT
PG
E
|
Code Block |
---|
ssh ioc-xcs-mot1
|
Code Block |
---|
su <authorized_user>
ssh ioc-xcs-mot1
sudo /reg/d/iocCommon/sioc/ioc-xcs-trigger-ims/startup.cmd
telnet localhost 30999
|
Code Block |
---|
/reg/neh/home1/paiser/working/ioc/xcs/xip_pp/current/pyscripts/src/run_pp.sh
|
Code Block |
---|
~/.pp_xcs/pvlist.lst
|
Code Block |
---|
# ---------------------------------------------------------------
# Pulse Selector Description File
# ---------------------------------------------------------------
# Syntax:
# <TYPE>, <PVNAME|IOCNAME|SCRIPT>, <DESC> # some_more_comments
# Where:
# <Type> : "SEQ" -> Sequencer
# "EVR" -> EVR associated to sequencer
# "PPM" -> Pulse Selector
# "SVR" -> Motor and Pulse Selector Server
# "IOC" -> Motor and Pulse Selector software IOC
# "SPP" -> EDM screens for motion
# "SEV" -> EDM screens for evr
# <PVNAME> : PV base name
# <IOCNAME> : Server name associated to Pulse Selector PVs
# <DESC> : User description
# Notes:
# PVNAME or IOCNAME are not case sensitive.
# Line can be commented out by starting with '#' character.
# ---------------------------------------------------------------
SEQ, XPP:R35:IOC:SEQ, XPP DAQ Sequencer # FIXME To check
PLY, IOC:IN20:EV01, XPP DAQ Sequencer play mode # FIXME to check
EVR, XCS:R42:EVR:01, VME EVR located in XCS Rack 42 # OK
IOC, ioc-xcs-trigger-ims, IOC running pulse selector # OK
SPP, ppm_gui.sh, EDM screen startup shell script for PP motor # OK
PPM, XCS:SB2:MMS:09, Pulse Selector Motor # OK
YTR, XCS:SB2:MMS:21, Y translation motor # OK
XTR, XCS:SB2:MMS:08, X translation motor # OK
SEV, evr_gui.sh, EDM screen startup shell script for EVR # OK
SVR, ioc-xcs-mot1, server running IOC for pulse selector # OK
|
PP and Motor GUIs :
Code Block |
---|
/reg/neh/home1/paiser/working/ioc/xcs/xip_pp/current/pyscripts/ppm_gui.sh XCS:SB2:MMS:09 XCS:SB2:MMS:21 XCS:SB2:MMS:08
|
Code Block |
---|
# FIXME Configuration file default location
# TODO Autosave default rampup values
# TODO Fast close and open functions
# TODO Test Sequencer
|
Table of Contents |
---|
Code Block |
---|
ssh ioc-tst-cam5 /reg/neh/home1/paiser/bin/evr.sh EVR=TST:CAM:05:EVR
|
Code Block |
---|
ssh ioc-tst-cam5
|
Code Block |
---|
sudo /reg/d/iocCommon/sioc/ioc-tst-cam5/startup.cmd
|
Code Block |
---|
[paiser@ioc-xrt-xcscam04 ~ 12:18:20] psproc
PID USER-ID SIOC COMMAND HOSTNAME PORT
4851 tstioc caRepeater procServ ioc-xrt-xcscam04 30000
5147 tstioc ioc-tst-cam5 procServ ioc-xrt-xcscam04 30001
5150 tstioc ioc-tst-cam5 procServ ioc-xrt-xcscam04 40000
|
Code Block |
---|
ipmitool -I lanplus -U ADMIN -P <you_should_know> -H ioc-tst-cam5-ipmi power status
ipmitool -I lanplus -U ADMIN -P <you_should_know> -H ioc-tst-cam5-ipmi power reset
|
Where: <you_should_know> is the standard ipmi password that you_should_know...
Python homing script:
/reg/neh/home1/jsludvik/test-python/xip-home.py
XIP main GUI:
/reg/neh/home1/jsludvik/svn/trunk/ioc/xpp/xip_pp/current/motionScreens/xip_gui.sh
XPP motor GUIs:
Code Block |
---|
/reg/g/pcds/package/epics/3.14/modules/pcds_motion/R2.3.4/launch-motor.sh XPP:TST:MMS:01
/reg/g/pcds/package/epics/3.14/modules/pcds_motion/R2.3.4/launch-motor.sh XPP:TST:MMS:02
/reg/g/pcds/package/epics/3.14/modules/pcds_motion/R2.3.4/launch-motor.sh XPP:TST:MMS:03
|
Startup.cmd:
Code Block |
---|
/reg/d/iocCommon/sioc/ioc-xpp-trigger-ims/startup.cmd
|
Mode 1: Single pulse
Mode 2: Continuous trigger
Mode 1 and 2 should be the same program, as the Seq will generate the pulses to the motor, and open/close operation shouldn't make any difference whether it is 1 or more. The motor sees a trigger and moves.
This mode is accessed by <PV>:RUN_MODE2
Mode 3: The motor opens on a pulse, counts N pulses and closes on the Nth pulse. The pre-trigger and close trigger should be factored in by the upper layer software to determine the proper N value to put into the motor. All the motor does is, open on N=1, count, then close on N=N.
This mode is accessed by <PV>:RUN_MODE3
Mode 1 was programmed like just mode 2 with a User "Trigger" enable/disable, which may or may not be useful for us. Sort of like 2 layers of enabling, versus just 1 for mode2
This mode is accessed by <PV>:RUN_MODE1
Reset Modes to start new mode:
<PV>:RESET
1) EPICS Motor Record: HOMF
2) Zero Position
3) Move Relative -76.25 degrees
4) Zero Position
Pulse Selector Test/Checkout Procedure (6/10/2013)
X motor calibration
Y motor calibration
New Interlock:
Add Y motor interlock, position >= 2 mm above 0 position, no X movement allowed
X-Y interlock stopped working today, need to investigate.