-- XianyuZhang - 02 Mar 2023

2023-03-02 - OffsetZ

  • People: Xianyu, Guido, Juan Carlos
  • Scripts used: None
  • Software versions used for test:
    • sxadsec: /home/aoeng/soul/test.20230302.offsetZ
    • soul-sxwfs: /home/AOeng/soul/test.20230302.offsetZ
  • Software version after test:
    • sxadsec: /home/aoeng/soul/stable
    • soul-sxwfs: /home/AOeng/soul/stable

Background

SHARK-NIR wants to move the bayside in Z for their best focus finding and phase diversity.

Based on the math calculation, the ratio between the PV of focal wavefront on the M2 and its far focal plane changes is -3229 (about -3000), which means about 100nm in PV focus on M2, corresponding about -0.3mm focal plane movement. With the current SX ASM configuration, the 100nm PV (30nm in RMS) shows about 0.0138N force in PV. I think it is safe to use three times of it (the force in PV is a little less than 0.05N). Let us assume we use the 1mm as the limit for now.

According to John, the AO offload applied by TCS is about every 8 seconds.

OffsetZ command in AO Arbitrator FSM

The OffsetZ can only be executed in the following two states in AO Arbitrator FSM (note: the same as the OffsetXY):

1) LoopClosed (not InternalLoopClosed)

2) LoopSuspended (i.e., Pause from LoopClosed or InternalLoopClosed)

OffsetZ execution

The OffsetZ is executed in the following way for the two cases:

1) LoopClosed (not InternalLoopClosed)

a) Check if the offload is active; if not, log the “offolad is not enabled error” and return false.

b) Check the requested deltaZ value should be between (-10, 10); if not, log the out-of-range error; return false.

c) Prepare the initializations, e.g., define the move direction sign (negative or positive); disableBrakeAfterMovement, limit to 30 iterations in step d).

d) In a while loop until iterations < 30 or left requested movement is less than 1um:
  1. Read current focus value (Z4 rms) applied on the mirror to check: i. If less than 0.3um go to next step.

ii. Otherwise, wait 1s and repeat the check for 21 times (if reaches 21 times, log “Current offload is too high” error and return false) to allow the offload to the hexapod to be applied.
  1. Calculate the movement of current step (maximum movement is 1mm), and the remaining requested movement. Note: when the AOArbitrator is started, define the maximum_step_movement 1mm.
  2. Request the step movement. Note: currently, the bayside stage Z is set to achieve 0.1mm accuracy.
  3. Check the return value of the step movement, return false if failed.
  4. Wait 9 seconds for the offload, the AO offload applied by TCS is about every 8 seconds.
  5. Decrease the iterations by one.
e) Return true.

2) LoopSuspended (i.e., Pause from LoopClosed or InternalLoopClosed)
  1. if the requested movement is larger than 1mm, log “out of range error” and return. Note: the AO loop can be closed after open, since the offload does not happen during loop is open, so the limit is set to 1mm. If the user wants to move more than 1mm, the movement command can be issued more than once, and the user should know they should not close the loop after that.
  2. Request the step movement. note: currently, the bayside stage Z is set to achieve 0.1mm accuracy.
  3. Check the return value of the step movement, return false if failed.
  4. Return true.

Code changed

Please see the code implementation in at GitHub.

Test and Results

Please find the test plan and resutes in at link.
Please find the test plan and resutes for round 2 at link.

Topic revision: r3 - 10 Mar 2023, XianyuZhang
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback