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

speedup controller communication, allow brake on digital output #7

Merged
merged 9 commits into from
Sep 28, 2023

Conversation

lrossa
Copy link
Contributor

@lrossa lrossa commented Jun 12, 2023

  • speed up communication via parallel commands, switchable with 'asynSetOption "pollMethod" ' where could be : "serial", "axis-parallel", "ctrl-parallel", applicable to controller (==0) or special axis
  • add brake support with digital output with new command "phytronBrakeOutput" or additional EPICS-PVs
    • allow to automatically enable/disable motor output
  • allow autosave-ing of some PVs
  • generate and check communication messages with CRC
  • allow to skip "reset controller" while IOC startup (add an additional parameter to "phytronCreateController".
  • disabled by default to be compatible to older installations (you have to add above commands to your startup script)

The default settings behave like the previous version of the support module, but message CRC is generated and checked. It uses the serial poll method (one command, one reply), no brake, no stage output en-/disabling.

It is worth using a parallel poll method if your controller has the firmware v1.1.12 or later: the normal round trip time is 10ms, the old serial method uses four commands, which is about 40ms multiplied with the number of motors. For a 10 motor phyMOTION it takes 400ms for a single poll, the old polling method took even longer with more axes. The parallel method uses mostly one round trip time with a longer command line and reply (up to 1000 bytes for a command line as suggested by Phytron, up to 2000 bytes per reply).

Tested at two beam lines at Helmholtz-Zentrum Berlin (Bessy-II).

lrossa and others added 9 commits May 3, 2023 06:26
- speed up communication via parallel commands, switchable with
  asynSetOption <port> <addr> "pollMethod" <mode>
  (<mode>: serial, axis-parallel, ctrl-parallel, <addr>==0: controller)
- add brake support with digital output with new command "phytronBrakeOutput"
  or additional EPICS-PVs
- allow to automatically enable/disable motor output
- allow autosave-ing "DVAL"
- generate and check messages with CRC

The default settings behave like the previous version of the support module,
but message CRC is generated and checked. It uses the serial poll method
(one command, one reply), no brake, no stage output en-/disabling.

It is worth using a parallel poll method if your controller has the firmware
v1.1.12 or later: the normal round trip time is 10ms, the old serial method
uses four commands, which is about 40ms multiplied with the number of motors.
For a 10 motor phyMOTION it takes 400ms for a single poll, a full stacked
phyMOTION with 64 motors needs about 2.5s! The parallel method uses mostly
one round trip time with a longer command line and reply (up to 1000 bytes
for a command line as suggested by Phytron, up to 2000 bytes per reply).
re-add motor position for motors without absolute encoder
@kmpeters kmpeters merged commit daaa5e9 into epics-motor:master Sep 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants