epics-motor / motorSmarAct

EPICS motor drivers for SmarAct controllers
3 stars 13 forks source link

Add MCS2CreateAxis and Cal/Ref/MCL Ref readback #8

Closed Huijuan-Xu closed 1 year ago

Huijuan-Xu commented 3 years ago

Add MCS2CreateAxis and Cal/Ref/MCL frequency readback

kmpeters commented 3 years ago

Why was the MCS2CreateAxis function added? No additional information is being passed to driver though it, but everyone who uses the MCS2 support would need to modify their IOC's config to add MCS2CreateAxis calls for every axis.

Huijuan-Xu commented 3 years ago

We have a MCS2 controller which supports up to 12 axes while only 6 axes are connected to the test stage. With the original EPICS support, we found that the stage doesn’t respond immediately after the moving command sends out. Debugging the code, the MCS2CreateController() only works well with all channels fully occupied. When there’s a channel without stage/motor connected, the delay increases. That's why the MCS2CreateAxis function was added.

Kevin Peterson notifications@github.com 于2021年2月24日周三 下午12:46写道:

Why was the MCS2CreateAxis function added? No additional information is being passed to driver though it, but everyone who uses the MCS2 support would need to modify their IOC's config to add MCS2CreateAxis calls for every axis.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/epics-motor/motorSmarAct/pull/8#issuecomment-785254766, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKJ7PD3HZV5JAG7U7XPMMW3TAU3ONANCNFSM4YE5W6LQ .

kmpeters commented 3 years ago

@MarkRivers, do you have thoughts on how motor drivers should handle unused channels between used channels? I can't think of any that handle it gracefully.

MarkRivers commented 3 years ago

One option would be to add an UnusedMask argument to the constructor. It would be a bit mask where 1 means an axis is not used. If it were added as a final argument then startup scripts would not need to be modified because it would default to 0, and that means there are no unused axes.

For example, for an 8 axis controller UnusedMask = 0x30 means axes 4 and 5 are unused, 0-3, 6, and 7 are used.

Huijuan-Xu commented 1 year ago

unused mask bit is added as advised