SFELPHOTON-1335:rework triggerSync
This commit is contained in:
124
Readme.md
124
Readme.md
@@ -10,4 +10,128 @@ This repository contains PowerBrick documents and tool to generate trajectories
|
||||
|
||||
for more info about SwissMX read:
|
||||
psigithub git@git.psi.ch:grp-sf_cristallina/SwissMX.git --> ~/Documents/prj/SwissFEL/apps/SwissMX/Readme.md
|
||||
|
||||
For more details about triggerSync read:
|
||||
~/Documents/prj/SwissFEL/apps/PBSwissMX/src/triggerSync/Readme.md
|
||||
```
|
||||
|
||||
motion/frame synchronization
|
||||
----------------------------
|
||||
```
|
||||
s.a. ~/Documents/prj/SwissFEL/apps/PBSwissMX/src/triggerSync/Readme.md
|
||||
|
||||
Coord[1].Q[0] : sync points indicator: (at whick point is the motion program)
|
||||
val: desc set in code
|
||||
-3: waiting at start position motion code generated in MXMotion.py:setup_sync(mode=?)
|
||||
-2: got start trigger triggerSync.c:trigsync_func(mode&1) else motion code generated in MXMotion.py:setup_sync(mode=?)
|
||||
0: after MXMotion.py:setup_sync call triggerSync.c:trigsync_func(mode&1)
|
||||
idx: index of position during run triggerSync.c:trigsync_func(mode&1)
|
||||
-1: motion is finished MXMotion.py:setup_sync(mode=?)
|
||||
|
||||
Gather.Enable : mode of gathering data
|
||||
1: prepared (calculate Gather.MaxLines) MotionBase.py:setup_gather()
|
||||
2: finite motion code: during data gathering
|
||||
0: disabled motion code: when gather finished
|
||||
|
||||
Gather.Samples : number af gathered data samples
|
||||
|
||||
MXMotion.py:setup_sync():
|
||||
sync_mode : default=2
|
||||
0 : no sync at all
|
||||
1 : synchronize start
|
||||
2 : synchronize start and adapt motion speed
|
||||
|
||||
sync_flag : default=0
|
||||
bit 0=1 : simulated start trigger
|
||||
bit 1=2 : simulated frame trigger
|
||||
|
||||
triggerSync.c mode:
|
||||
bit0:1: sync mode
|
||||
bit1:2: simulate start trigger
|
||||
bit2:4: simulate frame trigger
|
||||
bit3:8: verbose
|
||||
|
||||
Acquisition start event:
|
||||
sim: Coord[1].Q[10]
|
||||
EVR: Gate3[1].Chan[0].UserFlag == (gate3_1->Chan[0].Status&0x800) == FrontUnivOut4 -> Pulser0 -> (active Low, 5000us delay 0us) Map: 214
|
||||
|
||||
Frame event:
|
||||
sim: Coord[1].Q[11]
|
||||
EVR: Gate3[1].Chan[1].UserFlag == (gate3_1->Chan[1].Status&0x800) == FrontUnivOut5 -> Pulser1 -> (active Low, 5000us delay 750us) Map: 40
|
||||
```
|
||||
|
||||
testing shapepath.py in different modes (tunneling)
|
||||
---------------------------------------------------
|
||||
```
|
||||
zamofing_t@ganymede:~$
|
||||
>>> kill previous tunnels 127.0.0.1:100??
|
||||
ps -f `lsof -i -n | grep '127.0.0.1:100.. (LISTEN)' | awk '{print $2}'`
|
||||
kill `lsof -i -n | grep '127.0.0.1:100.. (LISTEN)' | awk '{print $2}'`
|
||||
#lsof -i -n | grep '127.0.0.1:100.. (LISTEN)' | tee /tmp/0.log | awk '{print $2}' | tee /tmp/1.log && grep -n '' /tmp/*.log
|
||||
|
||||
>>> open cameras in chrome
|
||||
ssh -L 10010:cristallina-cam-top:80 saresc-vcons-01 'uname -a'
|
||||
google-chrome --app-url 127.0.0.1:10010
|
||||
google-chrome --app-url http://cristallina-cam-north.psi.ch/camera/index.html#/video
|
||||
|
||||
|
||||
>>> prepare debug environment
|
||||
cmdt.py -p EXPMX -tpb # select SAR-CPPM-EXPMX1
|
||||
|
||||
>>> prepare shapepath and ssh tunneling
|
||||
cd ~/Documents/prj/SwissFEL/apps/PBSwissMX/python/
|
||||
subl shapepath.py
|
||||
./shapepath.py -h
|
||||
|
||||
PPMAC=SAR-CPPM-EXPMX1
|
||||
ssh -L 10001:localhost:22 root@$PPMAC 'uname -a'
|
||||
ssh -L 10002:localhost:2332 root@$PPMAC 'uname -a'
|
||||
|
||||
gather_server triggerSync are copied with sftp. This does not work with tunneling:
|
||||
gather_server: ~/Documents/prj/SwissFEL/PBTools/build/lib/pbtools/misc/pp_comm.py:889
|
||||
triggerSync: ~/Documents/prj/SwissFEL/apps/PBSwissMX/python/MXMotion.py:122
|
||||
|
||||
rsync -vai ~/Documents/prj/SwissFEL/PBTools/pbtools/gather/gather_server root@$PPMAC:/tmp/
|
||||
rsync -vai ~/Documents/prj/SwissFEL/apps/PBSwissMX/src/triggerSync/triggerSync root@$PPMAC:/tmp/
|
||||
|
||||
gather_server needs to be started explicitly in tunneling:
|
||||
ssh root@$PPMAC
|
||||
LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/gather_server
|
||||
|
||||
triggerSync is started if required at each acquisition and exits when done.
|
||||
|
||||
mode:
|
||||
0 unused
|
||||
1 pvt motion
|
||||
2 unused
|
||||
3 pvt motion using inverse fft velocity
|
||||
4 pvt motion short code using grid parameters
|
||||
5 pvt motion short code using grid parameters. Instead of continous motion it moves and waits as give in the parameter time
|
||||
|
||||
sync:
|
||||
0 real start and frame trigger with sync
|
||||
1 direct start
|
||||
2 simulated start and frame trigger no sync
|
||||
3 simulated start and frame trigger with sync
|
||||
4 simulated start real frame trigger no sync
|
||||
5 simulated start real frame trigger with sync
|
||||
|
||||
|
||||
# set start EVT to value 0 (=Force Hi)
|
||||
caput SAR-EXPMX-EVR0:FrontUnivOut4-Src-Scale-SP 9
|
||||
./shapepath.py --host=localhost:10001:10002 -v 0x59 -m4 -s0 # works
|
||||
# set start EVT to value 1 (=Force Lo)
|
||||
caput SAR-EXPMX-EVR0:FrontUnivOut4-Src-Scale-SP 8
|
||||
# reset EVT default value (Pulser 0)
|
||||
caput SAR-EXPMX-EVR0:FrontUnivOut4-Src-Pulse-SP 0
|
||||
./shapepath.py --host=localhost:10001:10002 -v 0x59 -m4 -s1 # works
|
||||
./shapepath.py --host=localhost:10001:10002 -v 0x59 -m4 -s2 # works
|
||||
./shapepath.py --host=localhost:10001:10002 -v 0x59 -m4 -s3 # works
|
||||
./shapepath.py --host=localhost:10001:10002 -v 0x59 -m4 -s4 # works
|
||||
./shapepath.py --host=localhost:10001:10002 -v 0x59 -m4 -s5 # works
|
||||
|
||||
Debugging were the coordinate program counter is:
|
||||
&1 list pc,10
|
||||
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user