wip
2019-03-19 09:10:28 +01:00
wip
2019-03-19 09:10:28 +01:00
2024-10-24 12:10:00 +02:00
2024-10-24 12:10:00 +02:00
2024-10-24 12:10:00 +02:00

Various motor documents

  • /home/zamofing_t/Documents/doc-ext/SwissFEL/ESB-MX

Repository structure and dependency (update:23.09.24)

This repository contains PowerBrick documents and tool to generate trajectories and motion programs for SwissMX

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

Description
No description provided
Readme 10 MiB
Languages
Python 57.2%
C 15.7%
MATLAB 12.5%
TeX 11.3%
Makefile 3.3%