This doesn't seem to be a good thing.
The axis number is the EPICS axis number - it must start with 1.
That is not true. EPICS axis numbers for model 3 drivers start with 0.
The example IOC for the smartAct MCS demonstrates that:
# Controller port, axis number, controller channel
# smarActSCUCreateAxis(const char *motorPortName, int axisNumber, int channel)
smarActSCUCreateAxis("SCU1", 0, 0);
smarActSCUCreateAxis("SCU1", 1, 1);
smarActSCUCreateAxis("SCU1", 2, 2);
smarActSCUCreateAxis("SCU2", 0, 0);
smarActSCUCreateAxis("SCU2", 1, 1);
smarActSCUCreateAxis("SCU2", 2, 2);
So does the Newport XPS example IOC:
# XPS asyn port, axis, groupName.positionerName, stepSize
XPSConfigAxis("XPS1",0,"FINE.X", 100000) # VP-25XL
XPSConfigAxis("XPS1",1,"FINE.Y", 50000) # VP-5ZA
XPSConfigAxis("XPS1",2,"THETA.POSITIONER", 2000) # URS75CC
XPSConfigAxis("XPS1",3,"COARSEX.POSITIONER", 2000) # ILS200CC
XPSConfigAxis("XPS1",4,"COARSEY.POSITIONER", 2000) # ILS200CC
XPSConfigAxis("XPS1",5,"COARSEZ.POSITIONER", 5000) # IMS300CC
We believe we have found Juliane's problem. This is the asynTrace output when the axis is being created.
2020/10/19 16:24:35.487 192.168.168.201:5000 flush
2020/10/19 16:24:35.487 192.168.168.201:5000 write.
2020/10/19 16:24:35.487 192.168.168.201:5000 write 7
:GCLS0\n
3a 47 43 4c 53 30 0a
2020/10/19 16:24:35.487 wrote 7 to 192.168.168.201:5000, return asynSuccess.
2020/10/19 16:24:35.487 192.168.168.201:5000 read.
2020/10/19 16:24:35.488 192.168.168.201:5000 read 4
\b\000\361\200
So the driver is sending an ASCII string, ":GCLS0\n". But it is receiving a binary response: "\b\000\361\200".
Apparently there are 2 versions of the smarAct MCS firmware, one that does binary communication and one that does ASCII communication. The EPICS driver only supports ASCII communication. Juliane's controller apparently has the binary firmware version, so she needs to change the firmware on her MCS.
Mark
Mark
-----Original Message-----
From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Torsten Bögershausen via Tech-talk
Sent: Tuesday, October 20, 2020 7:01 AM
To: Jemian, Pete R. <jemian at anl.gov>; EPICS Tech Talk <tech-talk at aps.anl.gov>; Reinhardt, Juliane <jreinhardt at lbl.gov>
Subject: Re: Seeking config advice for smarAct MCS controller
On 20/10/20 01:15, Jemian, Pete R. via Tech-talk wrote:
Here's a question from Juliane Reinhardt, ALS:
> anyone having some advice for connecting motors to a smarAct MCS
controller? What does the channel number mean? Our .iocsh file looks
like this
### Motors
# Motors substitutions, customize this for your motor dbLoadTemplate
"motor.substitutions.smaractmcs_201"# Configure each controller
#origvalues#
drvAsynIPPortConfigure("MCS_ETH","192.168.1.17:2102",0,0,0)
drvAsynIPPortConfigure("MCS_ETH","192.168.168.201:5000",0,0,0)#
Controller port, asyn port, number of axis, moving poll period, idle
poll period # smarActMCSCreateController(const char *motorPortName,
const char *ioPortName, int numAxes, double movingPollPeriod, double
idlePollPeriod); smarActMCSCreateController("MCS", "MCS_ETH", 1,
0.020, 1.0)# Controller port, axis number, controller channel #
smarActMCSCreateAxis(const char *motorPortName, int axisNumber, int
channel)
smarActMCSCreateAxis("MCS", 0, 0);
This doesn't seem to be a good thing.
The axis number is the EPICS axis number - it must start with 1.
The channel is the axis number inside the controller - I don't know if they start counting at 0 ?
Not having such a controller, I would speculate and try smarActMCSCreateAxis("MCS", 1, 0);