Hi Mark,
What Torsten says is true for Model 2 and Model 3 motor drivers. However the SmartMotorSrc driver is an old Model 1 driver, so the driver is not derived from asynPortDriver and it only has the single asyn port to the underlying drvAsynIPPort.
The OUT field syntax for Model 1 drivers is:
field(OUT,"#C$(C) S$(S) @")
where $(C) is the card number, and $(S) is the signal number. So for the first axis on the first controller it would be
field(OUT, "#C0 S0 @")
Mark
-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of Torsten Bögershausen via Tech-talk
Sent: Tuesday, June 18, 2019 6:45 AM
To: Mark Davis <[email protected]>; Davis, Mark <[email protected]>; [email protected]
Subject: Re: Animatics SmartMotor setup
Hej Mark,
you need 2 asyn ports, one for the motorRecord to talk to your "Animatics SmartMotor" asynMotorDriver.
The second one to let the "Animatics SmartMotor" asynMotorDriver talk to the real hardware.
We call them "MCU1" and "MC_CPU1", better suggestions are welcome.
A simplified setup is here:
## The db file:
record(motor,"$(PREFIX)$(MOTOR_NAME)")
{
field(DESC,"$(DESC)")
field(DTYP,"asynMotor")
field(OUT,"@asyn($(MOTOR_PORT),$(AXIS_NO))")
}
##st.cmd
epicsEnvSet("ASYN_PORT", "MC_CPU1")
epicsEnvSet("MOTOR_NAME", "IOC:m1")
epicsEnvSet("MOTOR_PORT", "MCU1")
epicsEnvSet("AXIS_NO", "1")
drvAsynIPPortConfigure("$(ASYN_PORT)","$(IPADDR):$(IPPORT)",0,0,0)
EthercatMCCreateController("$(MOTOR_PORT)", "$(ASYN_PORT)", "$(NUMAXES)", "200", "1000")
EthercatMCCreateAxis("$(MOTOR_PORT)", "$(AXIS_NO)",)
I hope that hopes a little bit.
/Torsten
On 18/06/19 13:11, Davis, Mark via Tech-talk wrote:
Can anyone provide an example of how to setup and use an Animatics SmartMotor?
From what I could figure out looking at the code, I expect it is
something along these lines:
# For a connection via a Moxa Ethernet-to-serial adapter:
drvAsynIPPortConfigure("TapeStation", "192.168.137.99:4001")
# SmartMotorSetup(maxCtlrCount, pollRate) SmartMotorSetup(1, 5)
# SmartMotorConfig(cardNum, "asynPortName") SmartMotorConfig(0,
"TapeStation")
And then the motor record would look something like this:
record(motor, "MyMotor")
{
field(DTYP, "SmartMotor")
field(OUT, "@0 TapeStation ????")
...
}
Is that even close? The one I am most unsure of is what to use for
the OUT value in the motor record.
Mark Davis
NSCL/FRIB