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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Problems getting PI motors working |
From: | Eric Norum <[email protected]> |
To: | Mark Rivers <[email protected]>, EPICS mailing list <[email protected]> |
Date: | Tue, 24 Oct 2017 10:47:44 -0700 |
I have to admit that I find the EPICS motor record and associated drivers pretty much a black art. I’m trying to get some PI motors running but I’m getting error messages and subsequent core dumps. Below is the IOC startup and application Makefile. The PI_GCS2_CreateController call seems to work fine, but then at record initialization time I get a report that the int32 interface can’t be found and then later on I get a core dump when some NULL pointers get dereferenced. I suspect that I’m missing some ‘.dbd’ file in my application Makefile, but I don’t know how to figure out what. Suggestions eagerly welcomed. #!../../bin/linux-x86_64/piMotor < envPaths epicsEnvSet("ARCH","linux-x86_64") epicsEnvSet("IOC","iocpiMotor") epicsEnvSet("TOP","/home/als1/acct/enorum/tmp/piMotor") epicsEnvSet("ASYN","/usr/local/epics/R3.14.12/modules/R3/soft/synApps_5_8/support/asyn4-28") epicsEnvSet("MOTOR","/usr/local/epics/R3.14.12/modules/R3/soft/motor/motorR6-9") epicsEnvSet("EPICS_BASE","/usr/local/epics/R3.14.12/base") epicsEnvSet("IOC_INFO","/iocinfo") ## Register all support components cd "/home/als1/acct/enorum/tmp/piMotor" dbLoadDatabase "dbd/piMotor.dbd" piMotor_registerRecordDeviceDriver pdbbase ############################################################################# # PI piezzo motors drvAsynIPPortConfigure("pie873A","131.243.201.111:50000", 0, 0, 0) asynOctetSetInputEos("pie873A",0,"\n") asynOctetSetOutputEos("pie873A",0,"\n") asynSetTraceMask("pie873A", 0, 1) asynSetTraceIOMask("pie873A", 0, 1) # PI_GCS2_CreateController( # port name, # asyn port name, # num axes, # priority, # stackSize, # moving poll period (ms), # idle poll period (ms) ) PI_GCS2_CreateController("PIE873_1", "pie873A", 1, 0, 0, 200, 1000) 2017/10/24 10:41:44.931 read from pie873A: (c)2016 Physik Instrumente (PI) GmbH & Co. KG, E-873.1A1, 117011563, 02.012 PIasynAxis::PIasynAxis() 0: 1 drvAsynIPPortConfigure("pie873B","131.243.201.112:50000", 0, 0, 0) asynOctetSetInputEos("pie873B",0,"\n") asynOctetSetOutputEos("pie873B",0,"\n") asynSetTraceMask("pie873B", 0, 1) asynSetTraceIOMask("pie873B", 0, 1) # PI_GCS2_CreateController( # port name, # asyn port name, # num axes, # priority, # stackSize, # moving poll period (ms), # idle poll period (ms) ) PI_GCS2_CreateController("PIE873_2", "pie873B", 1, 0, 0, 200, 1000) 2017/10/24 10:41:45.029 read from pie873B: (c)2016 Physik Instrumente (PI) GmbH & Co. KG, E-873.1A1, 117011567, 02.012 PIasynAxis::PIasynAxis() 0: 1 dbLoadRecords("db/PI_motor.db") ############################################################################# # Start EPICS cd /home/als1/acct/enorum/tmp/piMotor/iocBoot/iocpiMotor iocInit Starting iocInit ############################################################################ ## EPICS R3.14.12.1 $Date: Tue 2011-04-26 15:36:19 -0500$ ## EPICS Base built Sep 3 2013 ############################################################################ 2017/10/24 10:41:45.110 devMotorAsyn::init_record, PIE873:m1 find int32 interface failed 2017/10/24 10:41:45.110 devMotorAsyn::init_record, PIE873:m2 find int32 interface failed Segmentation fault (core dumped)
And here’s my application Makefile: TOP=../.. include $(TOP)/configure/CONFIG #---------------------------------------- # ADD MACRO DEFINITIONS AFTER THIS LINE #============================= #============================= # Build the IOC application PROD_IOC = piMotor # piMotor.dbd will be created and installed DBD += piMotor.dbd # piMotor.dbd will be made up from these files: piMotor_DBD += base.dbd # Include dbd files from all support applications: piMotor_DBD += asyn.dbd piMotor_DBD += drvAsynIPPort.dbd piMotor_DBD += motorSupport.dbd piMotor_DBD += motorSimSupport.dbd piMotor_DBD += PI_GCS2Support.dbd # Add all the support libraries needed by this IOC piMotor_LIBS += asyn piMotor_LIBS += motor piMotor_LIBS += motorSimSupport piMotor_LIBS += PI_GCS2Support # piMotor_registerRecordDeviceDriver.cpp derives from piMotor.dbd piMotor_SRCS += piMotor_registerRecordDeviceDriver.cpp # Build the main IOC entry point on workstation OSs. piMotor_SRCS_DEFAULT += piMotorMain.cpp piMotor_SRCS_vxWorks += -nil- # Add support from base/src/vxWorks if needed #piMotor_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary # Finally link to the EPICS Base libraries piMotor_LIBS += $(EPICS_BASE_IOC_LIBS) #=========================== include $(TOP)/configure/RULES #---------------------------------------- # ADD RULES AFTER THIS LINE --
Eric Norum [email protected] |