' 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
' 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
' 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
ssh ioc-xcs-mot1
su <authorized_user> ssh ioc-xcs-mot1 sudo /reg/d/iocCommon/sioc/ioc-xcs-trigger-ims/startup.cmd telnet localhost 30999
/reg/neh/home1/paiser/working/ioc/xcs/xip_pp/current/pyscripts/src/run_pp.sh
~/.pp_xcs/pvlist.lst
# --------------------------------------------------------------- # 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 :
/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
# FIXME Configuration file default location # TODO Autosave default rampup values # TODO Fast close and open functions # TODO Test Sequencer
ssh ioc-tst-cam5 /reg/neh/home1/paiser/bin/evr.sh EVR=TST:CAM:05:EVR
ssh ioc-tst-cam5
sudo /reg/d/iocCommon/sioc/ioc-tst-cam5/startup.cmd
[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
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:
/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:
/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.