Open ZLLentz opened 3 years ago
I observed via telnet that the controller sends the response to the nth command ago, rather than my most recent command.
Theory: the controller falls behind, and if we are out of sync by an even number of steps, then the axes are shifted. We poll for two values (position and is_done), then receive the value from a previous query. IOC basically stops working if you are out of sync by an odd number of steps since positions all be come 1 or 0 counts (is done, is not done)
To fix live:
*RST
to resetThis is sadly a very common issue with motor record drivers and other devices that have a too simple communication protocol. A hacky way to fix this is to find a way to get the device to respond with a unique string, so you can correlate request/response. Looks like there's no reasonable way to avoid this according to the command set for the 8742.
You can probably mitigate this by polling very slowly... I agree that the device protocol for the 8742 where it responds with just a number (4 instead of something like POS1=4) makes it rough to know when a problem has occurred.
You could potentially do a periodic check of *IDN? and do... something? when that doesn't respond with the correct string? (not sure what)
Bug Report
This is perplexing because:
Expected Behavior
The axis setpoint/readback mapping should be consistent
Context
Makes TMO reference laser alignment confusing Reported by @aegger13
Steps To Reproduce
Your Environment
Standard LCLS EPICS environment IOC config file is:
Modules used are: