Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SU-Servo: ADC/IIR max/min values #992

Closed
hartytp opened this issue May 1, 2018 · 4 comments
Closed

SU-Servo: ADC/IIR max/min values #992

hartytp opened this issue May 1, 2018 · 4 comments

Comments

@hartytp
Copy link
Collaborator

hartytp commented May 1, 2018

We need a means of checking whether any servo channel/profile has railed, and also of logging the IIR input/outputs over time (e.g. to watch for head room slowly decreasing due to fibre coupling efficiency degrading over time or whatever).

The way I'd imagine doing this (comments welcome) is:

  • for each channel/profile, we store the max/min IIR input (ADC value) and output (DDS ASD). These should clear on read, so that each read gives the max/min value since the last read. These max/min values should only update when the servo is running (integrator active). I think we previously discussed having just a "railed" indicator, but on reflection, max/min values would be nicer.
  • one schedules an experiment to run every 10s of seconds to minutes, which reads the max/min value for each profile one cares about and broadcasts them.
  • a GUI/log can then pick these up and do something with them
@jordens
Copy link
Member

jordens commented May 2, 2018

That implementation has a couple issues. It would require a lot of restructuring, it doesn't fit the memory layout, the pipelining would suffer, the cycle length would increase. It would need 3282+2*8 words (~16 bit) storage. And it's really tricky to get the clearing and readout working given the collisions. And there are a couple conceptual issues as well. PI ringing can give you transient clips that would be false positive. Usually you'd want to know whether it rails at certain times. With the latching min max you'd have to interact twice with the phy to clear and then later to read them.

Let's think about what's already there and what we can do easily to enable your use case.

Right now you can read out the ADC and ASF (iir x and y) at any time and decide whether it is good or bad and decide about changing gains and attenuators. You can log that and build a gui on top of it with the available tooling in artiq.

I can add a clear-on-read railed indicator to the output channels (but not per profile). That should allow you to detect transient clips if you need that and to to detect any other problems caused by railing or drifting things.

@hartytp
Copy link
Collaborator Author

hartytp commented May 2, 2018

@jordens thanks for the feedback. Points taken.

I can add a clear-on-read railed indicator to the output channels (but not per profile). That should allow you to detect transient clips if you need that and to to detect any other problems caused by railing or drifting things.

That works for me. @cjbe?

@jordens jordens added area:gateware area:su-servo Sampler-Urukul-Servo labels May 7, 2018
@jordens jordens added this to the 4.0 milestone May 7, 2018
@jordens jordens self-assigned this May 7, 2018
jordens added a commit that referenced this issue May 9, 2018
@jordens jordens added this to done in dashboard-jordens May 9, 2018
@jordens
Copy link
Member

jordens commented Jun 1, 2018

ping @cjbe

@cjbe
Copy link
Contributor

cjbe commented Jun 1, 2018

@jordens sounds good to me.

@jordens jordens closed this as completed Jun 1, 2018
@jordens jordens removed this from done in dashboard-jordens Jul 4, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants