Experimental Physics and
| |||||||||||||||
|
Thanks Mark. I will test it and get back to you. Out of curiosity why did this happen? why do I have to call the base class functions?
Best Regards Abdalla.
From: Mark Rivers <rivers at cars.uchicago.edu>
Hi Abdalla,
I suspect the problem is that in your writeInt32 and readInt32 methods you have forgotten that you must call the base class method (asynMotorController::writeInt32 or readInt32) for any parameters that are not specific to your derived class. That would cause SPMG and STOP not to work.
Here is an example of how to do it:
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
on behalf of Abdalla Ahmad via Tech-talk <tech-talk at aps.anl.gov>
Hi
Recently we got the chance to control the SMC Taurus rotary stage using the motorMicos motor record module. One of my updates was to read and write limit switches status. The command’s argument is an integer value (0-2), I implemented readIn32 and writeInt32 interfaces as usual. When moving the motor, after a while the RBV field does not update, STOP and SPMG fields do not work (The motor doesn’t stop), and it the GUI gives me “Controller Error”. When the motor reaches its destination, the controller error clears and the RBV field is updated accordingly. I tried empty readInt32 and writeInt32 functions with only “return asynSuccess” and the behavior is still there. When I removed those interfaces, the controller works fine. To make those commands work I moved the writeReadController and writeController functions to the poll thread and the motor works fine, motor stops at command and the RBV field is updated. Any clue on what I have missed?
Thanks! Abdalla.
| ||||||||||||||
ANJ, 06 Oct 2022 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |