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 2025 | 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Mclennan PM600 motor controller |
From: | Peter Linardakis <[email protected]> |
To: | "[email protected]" <[email protected]> |
Date: | Wed, 11 Dec 2013 04:31:25 +0000 |
Greetings I have progressed as far as I can with implementing an EPICS controlled motor through a Mclennan SimStep single axis stepper controller. The IOC seg faults upon boot, with the output being: #!../../bin/linux-arm/pitest ## You may have to change pitest to something else ## everywhere it appears in this file < envPaths epicsEnvSet("ARCH","linux-arm") epicsEnvSet("IOC","iocpitest") epicsEnvSet("TOP","/opt/epics/pitest") epicsEnvSet("EPICS_BASE","/opt/epics/base") epicsEnvSet("ASYN","/opt/epics/modules/asyn4-21") epicsEnvSet("CALC","/opt/epics/modules/calc-3-2") epicsEnvSet("MOTOR","/opt/epics/modules/motorR6-8") ## Register all support components dbLoadDatabase("../../dbd/pitest.dbd",0,0) pitest_registerRecordDeviceDriver(pdbbase) ## Load record instances dbLoadRecords("../../db/sum.db","INST=pitest") # Test SE (test-se1) drvAsynIPPortConfigure("test-se1-1", "172.16.0.108:5300") # Test for Mclennan PM600 stepper motor controller # PM304Setup(controller count, poll rate (Hz)) # PM304Config(card being configured, asyn port name, number of axes) PM304Setup(1,5) PM304Config(1, "test-se1-1", 1) iocInit() Starting iocInit ############################################################################ ## EPICS R3.14.12.3 $Date: Mon 2012-12-17 14:11:47 -0600$ ## EPICS Base built Aug 13 2013 ############################################################################ 2013/12/11 04:10:26.697 devMotorAsyn::init_record, test:buncher:motor find int32 interface failed Segmentation fault Points to note are:
·
The controller within the SimStep is a single PM600
·
I’m connecting to the SimStep via a Ethernet to serial adapter, through which I can successfully communicate to the PM600 using a telnet console
·
If the Ethernet to serial adapter is off during IOC boot, I still get the “interface failed”, but it doesn’t seg fault.
·
The SimSteps can be daisy chained to provide multi axis control, so more than one card can be addressed on the same port The relevant sections of the application Makefile is: … # Include dbd files from all support applications: #pitest_DBD += xxx.dbd pitest_DBD += asyn.dbd pitest_DBD += asynRecord.dbd pitest_DBD += drvAsynIPPort.dbd pitest_DBD += motorRecord.dbd pitest_DBD += motorSupport.dbd pitest_DBD += devMclennanMotor.dbd # Add all the support libraries needed by this IOC #pitest_LIBS += xxx pitest_LIBS += asyn pitest_LIBS += motor pitest_LIBS += Mclennan # pitest_registerRecordDeviceDriver.cpp derives from pitest.dbd pitest_SRCS += pitest_registerRecordDeviceDriver.cpp … And the record database includes: # Test record for Mclennan PM600 Stepper Motor driver record(motor, "test:buncher:motor") { field(DTYP, "asynMotor") field(OUT, "@asyn(test-se1-1 1)") field(RRES, "1.0") field(PREC, "0") field(TWV, "10") field(VELO, "50") } I can see a few places where I might have gone wrong, but I don’t know exactly where. HELP!
J Regards Peter -- Dr Peter Linardakis Accelerator Research and Development Engineer Nuclear Physics | Research School of Physics and Engineering Australian National University p: (02) 6125 2862 f: (02) 6215 0748 |