Detailed Python sequence ```mermaid sequenceDiagram participant ts as TimingSystem participant py as Python participant pb as PowerBrick activate py Note over py: .setup_sync()
prepare code snipplets py -)+ pb: sftp / ssh Note over pb: sftp triggerSync
run triggerSync pb --)- py: done Note over py: .setup_coord_trf() py -)+ pb: download code Note over pb: setup coordinate transformation pb --)- py: done Note over py: .setup_motion() py -)+ pb: generate code
download code Note over pb: setup motion program pb --)- py: done Note over py: .setup_gather() py -)+ pb: download code Note over pb: set addresses to gather
Gather.Enable=1 pb --)- py: done Note over py: .homing() py -)+ pb: download code Note over pb: runs homing PLC [if needed]
enable plc 1 pb --) py: done Note over py: wait(Motor[1].HomeComplete) deactivate py pb ->>- py: HomeComplete activate py Note over py: .run() py -)+ pb: .run() Note over pb: runs motion program 2 in coordSystem 1
&1br2 pb --) py: done Note over py: .wait_armed()
wait(Q[0]==-2) # wait until motors are at first position deactivate py Note over pb: move to first point
DesTimeBase=0 (wait motion)
Q[0]=-2 (motion armed) pb ->>- py: Q[0]=-2 done activate py Note over py: .trigger() #send a start trigger (if needed) after given time Note over pb: wait for the start trigger alt simulated trigger Note over py:Q[10]=1 py-)+pb: start trigger Note over pb: DesTimeBase=Sys.ServoPeriod else real trigger ts-)pb: start trigger
triggerSync:DesTimeBase=Sys.ServoPeriod end Note over pb: pvt10abs
move to all points Note over py: while .progress()
wait(Gather.Enable==0) deactivate py loop 10 ms Note over pb: move to next point end Note over pb: Gather.Enable=0 pb ->>- py: Gather.Enable=0 activate py Note over py: .gather_upload() deactivate py ``` more detailed sequence trial 1 ```mermaid sequenceDiagram participant py as Python participant pb as PowerBrick Note over py: .setup_sync() create participant ts as TriggerSync py -)+ ts: .setup_sync() create participant tsync as triggersync_func() ts -) tsync: start thread create participant tsim as trig_sim_func() ts -) tsim: ? if sync_mode&2 then start thread deactivate ts Note over py: .setup_coord_trf()
shapepath.py py -)+ pb: download code pb --)- py: done Note over py: .setup_motion()
shapepath.py py -)+ pb: generate code
download code pb --)- py: done Note over py: .setup_gather() Note over py, pb: calls set_address(*address)
that sets also Gather.Enable=1. py -)+ pb: download code Note over pb: Gather.Enable=1 pb --)- py: done Note over py: .homing() py -)+ pb: download code pb --) py: done Note over pb: runs homing PLC if needed
enable plc 1 Note over py: wait(Motor[1].HomeComplete) pb ->>- py: HomeComplete Note over py: .run() py -)+ pb: .run() pb --)- py: done Note over pb: runs motion program 2 in coordSystem 1
&1br2
move to first point
DesTimeBase=0 (wait motion) Note over tsync: wait(Q[0]==-3) pb -)+ tsync: Q[0]=-3 Note over py: MXMotion.py:.wait_armed()
wait(Q[0]==-2) tsync -)+ py: Q[0]=-2 Note over py: MXMotion.py:.trigger()
if sync_mode&1 then Q[10]=1 deactivate py tsync -)+ pb: DesTimeBase=ServoPerion loop aaa tsync ->> tsync:adjust DesTimeBase
while Gather.Enable!=0 end activate tsim loop bbb tsim ->> tsim:simulate start and frame triggers end deactivate tsim Note over pb: pvt10abs
move to all points Note over pb: Gather.Enable=0 Note over py: while .progress()
wait(Gather.Enable==0) pb -)+ py: Gather.Enable=0 pb -)- tsync: Gather.Enable=0 Note over py: shapepath.py:.gather_upload() Note over ts: wait threds finished activate ts deactivate tsync destroy tsync tsync -x ts: thread finished destroy tsim tsim -x ts: thread finished deactivate ts deactivate py box rgba(196,196,224,.3) TriggerSync executable participant ts participant tsim participant tsync end ``` more detailed sequence simulated trigger and speed adjustment ```mermaid sequenceDiagram participant py as Python participant pb as PowerBrick participant ts as TimingSystem activate py Note over py: .setup_sync()
prepare code snipplets py -)+ pb: sftp / ssh Note over pb: sftp triggerSync
run triggerSync pb --)- py: done Note over py: .setup_sync() create participant tgss as TriggerSync py -)+ tgss: .setup_sync() create participant tsync as triggersync_func() tgss ->> tsync: start thread opt if sync_mode&2 create participant tsim as trig_sim_func() tgss ->>- tsim: start thread end # deactivate tgss Note over py: .setup_coord_trf() py -)+ pb: download code Note over pb: setup coordinate transformation pb --)- py: done Note over py: .setup_motion() py -)+ pb: generate code
download code Note over pb: setup motion program pb --)- py: done Note over py: .setup_gather() py -)+ pb: download code Note over pb: set addresses to gather
Gather.Enable=1 pb --)- py: done Note over py: .homing() py -)+ pb: download code Note over pb: runs homing PLC [if needed]
enable plc 1 pb --) py: done Note over py: wait(Motor[1].HomeComplete) deactivate py pb -)- py: HomeComplete activate py Note over py: .run() py -)+ pb: .run() Note over pb: runs motion program 2 in coordSystem 1
&1br2 pb --) py: done Note over py: .wait_armed()
wait(Q[0]==-2) # wait until motors are at first position deactivate py Note over pb: move to first point
DesTimeBase=0 (wait motion)
Q[0]=-3 (motion program waiting at start position) pb -) tsync: Q[0]=-3 (motion program waiting at start position) pb -)- py: Q[0]=-2 done activate py Note over py: .trigger() #send a start trigger (if needed) after given time Note over pb: wait for the start trigger Note over py:Q[10]=1 py-)+pb: start trigger Note over pb: DesTimeBase=Sys.ServoPeriod Note over pb: pvt10abs
move to all points Note over py: while .progress()
wait(Gather.Enable==0) deactivate py loop 10 ms Note over pb: move to next point end #activate tsync #activate tsim tgss->>tsync: Wait for tsync to Finish tgss->>tsim: Wait for tsim to Finish Note over pb: Gather.Enable=0 pb -) py: Gather.Enable=0 pb -) tsync: Gather.Enable=0 pb -)- tsim: Gather.Enable=0 destroy tsync tsync-->>tgss: exit triggersync_func() thread destroy tsim tsim-->>tgss: exit triggersync_func() thread destroy tgss tsync-->tgss: Exit Main Thread activate py Note over py: .gather_upload() deactivate py ```