Hi Angeleic,
The only error I could spot in your posting was this:
> file "db/basic_asyn_motor.db"
> {
> pattern
> {P,N,M,DTYP,PORT,ADDR,C,S,DESC,EGU,DIR,VELO,VBAS,ACCL,BDST,BVEL,BACC,MRES,PREC,DHLM,DLLM,INIT}
> {lis:,1, "m$(N)","asynMotor",MOT1,1,0,0,"Rot",counts,Pos,1750,500,1,0,0,50,1,0,0,0,""}
> }
>
The substitutions line there should be M0, not MOT1. You need to specify the name of the asyn port for the motor driver, not the TCP driver.
> {lis:,1, "m$(N)","asynMotor",M0,1,0,0,"Rot",counts,Pos,1750,500,1,0,0,50,1,0,0,0,""}
Mark
________________________________
From: [email protected] <[email protected]> on behalf of Torsten Bögershausen <[email protected]>
Sent: Wednesday, March 28, 2018 1:27 AM
To: Angelic Ebbers; [email protected]
Subject: Re: asynMotor: NewFocus 874x Picomotor Controller Driver
Hej Angelic,
I'm pretty sure that the usage of MOT1 is the problem.
You need 2 different asyn ports:
- one to communicate via TCP/IP to the motion controller
- the second to allow the generic model 3 driver (devMotorAsyn)
to access the C++ classes in asynMotorController.cpp and
asynMotorAxis.cpp
This is what I use:
#One:
epicsEnvSet("IPADDR", "127.0.0.1")
epicsEnvSet("IPPORT", "5000")
epicsEnvSet("ASYN_PORT", "MC_CPU1")
#two:
epicsEnvSet("MOTOR_PORT", "MCU1")
#And then for one:
drvAsynIPPortConfigure("MC_CPU1","127.0.0.1:5000",0,0,0)
asynOctetSetOutputEos("MC_CPU1", -1, ";\n")
asynOctetSetInputEos("MC_CPU1", -1, ";\n")
#And for two:
EthercatMCCreateController("MCU1", "MC_CPU1", "32", "200", "1000")
EthercatMCCreateAxis("MCU1", ...)
dbLoadRecords("./db/EthercatMC.template", "PREFIX=IOC:, MOTOR_NAME=m1, R=m1-,
MOTOR_PORT=MCU1, AXIS_NO=1, DESC=motor1 ")
# And the template looks similar to this:
record(motor,"$(PREFIX)$(MOTOR_NAME)")
{
field(DESC,"$(DESC)")
field(DTYP,"asynMotor")
field(OUT,"@asyn($(MOTOR_PORT),$(AXIS_NO))")
[snip]
}
#########
# (end of blabla)
So in your code
nf874xCreateController("M0", "MOT1", 1, 200, 1000)
"M0" is "MCU1" in my example
"MOT1" is "MC_CPU1" in my example
And with that knowledge you should be able to use "M0" and "MOT1"
in the right way.
On 28/03/18 06:55, Angelic Ebbers wrote:
> Hi,
>
> I'm working on supporting a New Focus 8743-CL controller at Gemini
> Observatory using EPICS/RTEMS. I was thrilled to see that there already is a
> driver for the 8742 model controller in the motor distribution. From my
> initial reading, I'm thinking there will be minimal changes needed to support
> closed loop control.
> I've been trying to set up the driver, connected to the 8743, expecting
> that most functionality is the same as the 8742. I seem to be doing something
> wrong, however, since the IOC crashes during/shortly after iocInit .. appearing
> to encounter problems during init_record. The errors I'm getting seem to
> indicate a problem with how I'm setting up the driver support. I'm following
> the example in "iocBoot/iocNewFocus874x".
>
> Here are the errors I'm getting:
>
> lis:m1Offset devAsynFloat64::initCommon findInterface asynFloat64Type
> Bad init_rec return value PV: lis:m1Offset ao: init_record
>
> lis:m1Resolution devAsynFloat64::initCommon findInterface asynFloat64Type
> Bad init_rec return value PV: lis:m1Resolution ao: init_record
>
> lis:m1Direction devAsynInt32::initCommon findInterface asynInt32Type
> 2018/03/27 17:09:45.730 devMotorAsyn::init_record, lis:m1 find int32
> interface failed
>
>
> I've done some digging on "devMotorAsyn::init_record find int32 interface
> failed" and found several TechTalk threads about trying to set up model 1
> drivers as model 3 (using asyn). The specific problem in those cases was
> specifying DTYP as "asynMotor". (link to thread:
> https://epics.anl.gov/tech-talk/2013/msg02425.php
> <https://epics.anl.gov/tech-talk/2013/msg02425.php>)
> I'm pretty sure I'm setting up the driver with the correct approach
> though and find no other clues as to the root of the problem.
>
> Here is my motor substitution file:
>
> file "db/basic_asyn_motor.db"
> {
> pattern
> {P,N,M,DTYP,PORT,ADDR,C,S,DESC,EGU,DIR,VELO,VBAS,ACCL,BDST,BVEL,BACC,MRES,PREC,DHLM,DLLM,INIT}
> {lis:,1, "m$(N)","asynMotor",MOT1,1,0,0,"Rot",
> counts,Pos,1750,500,1,0,0,50,1,0,0,0,""}
> }
>
>
> relevant portion of my startup script:
>
> ### Motors
> # Setup IP port for 8742
> drvAsynIPPortConfigure("MOT1", "10.1.60.111:23 <http://10.1.60.111:23/>")
> asynOctetSetInputEos("MOT1",0,"\r\n")
> asynOctetSetOutputEos("MOT1",0,"\r")
>
> #db asyn debug traces
> asynSetTraceMask("MOT1",0,0x9)
> asynSetTraceIOMask("MOT1",0,0x2)
>
> nf874xCreateController("M0", "MOT1", 1, 200, 1000)
>
> ## Load record instances
> dbLoadTemplate("data/newfocus8742.asyn.motor.substitutions")
>
> dbLoadRecords("${ASYN}/db/asynRecord.db",
> "P="lis:",R=Asyn,PORT=MOT1,ADDR=,OMAX=80,IMAX=80")
>
>
>
> I've done a bunch of checking to ensure that my dbd has all of the asyn/motor
> support built in .. It seems ok.
> Here's the Makefile component:
>
> gis-mk-ioc_DBD += motorSupport.dbd
> gis-mk-ioc_DBD += devNewFocus.dbd
> gis-mk-ioc_DBD += devSoftMotor.dbd
> gis-mk-ioc_DBD += motorSimSupport.dbd
> gis-mk-ioc_DBD += asyn.dbd
> gis-mk-ioc_DBD += drvAsynSerialPort.dbd
> gis-mk-ioc_DBD += drvAsynIPPort.dbd
>
> gis-mk-ioc_LIBS += NewFocus
> gis-mk-ioc_LIBS += softMotor
> gis-mk-ioc_LIBS += motorSimSupport
> gis-mk-ioc_LIBS += motor
> gis-mk-ioc_LIBS += asyn
>
>
>
> Cheers,
> Angelic Ebbers
>
>
- Replies:
- Re: asynMotor: NewFocus 874x Picomotor Controller Driver Angelic Ebbers
- References:
- asynMotor: NewFocus 874x Picomotor Controller Driver Angelic Ebbers
- Re: asynMotor: NewFocus 874x Picomotor Controller Driver Torsten Bögershausen
- Navigate by Date:
- Prev:
PV gateway renders PVs as disconnected Abdalla Ahmad
- Next:
Re: PV gateway renders PVs as disconnected Ralph Lange
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
<2018>
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: asynMotor: NewFocus 874x Picomotor Controller Driver Torsten Bögershausen
- Next:
Re: asynMotor: NewFocus 874x Picomotor Controller Driver Angelic Ebbers
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
<2018>
2019
2020
2021
2022
2023
2024
|