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: | Re: Problems with using PI E-712 controller |
From: | Allan Serra Braga Bugyi via Tech-talk <[email protected]> |
To: | Mark Rivers <[email protected]> |
Cc: | "[email protected]" <[email protected]> |
Date: | Thu, 29 Nov 2018 13:25:26 +0000 |
I'm also trying to make PI 727 controller to work here and I got the exact same error. I opened the 'PIGCSController.cpp' in motor record 6-9 and there are conditions missing in those ifs, including 712 and 727 types, as you can see:
PIGCSController* PIGCSController::CreateGCSController(PIInterface* pInterface, const char* szIDN)
{ if ( strstr(szIDN, "C-663") != NULL || strstr(szIDN, "C-863") != NULL || strstr(szIDN, "C-867") != NULL ) { return new PIGCSMotorController(pInterface, szIDN); } else if ( strstr(szIDN, "E-517") != NULL) { return new PIE517Controller(pInterface, szIDN); } else if ( strstr(szIDN, "E-753") != NULL || strstr(szIDN, "E-709") != NULL ) { return new PIGCSPiezoController(pInterface, szIDN); } else if ( strstr(szIDN, "E-755") != NULL) { return new PIE755Controller(pInterface, szIDN); } else if ( strstr(szIDN, "C-702") != NULL) { return new PIC702Controller(pInterface, szIDN); } else if ( strstr(szIDN, "HEXAPOD") != NULL || strstr(szIDN, "F-HEX") != NULL || strstr(szIDN, "F-206") != NULL || strstr(szIDN, "M-8") != NULL || strstr(szIDN, "C-887") != NULL ) { if (IsGCS2(pInterface)) { return new PIGCS2_HexapodController(pInterface, szIDN); } else { return new PIHexapodController(pInterface, szIDN); } } else { return NULL; } } Simply adding 712/727 clauses will make it work?
Best regards,
Allan S. B. Bugyi Technology Development Analyst [email protected] (+55 19) 3512-3520 SOL/Beamline Software Group Brazilian Synchrotron Light Laboratory (LNLS) Center of Research in Energy and Materials (CNPEM) http://lnls.cnpem.br De: [email protected] <[email protected]> em nome de Mark Rivers via Tech-talk <[email protected]>
Enviado: quinta-feira, 29 de novembro de 2018 10:31:45 Para: [email protected] Assunto: Fw: Problems with using PI E-712 controller Forwarding because Reply All doesn't work and I forgot to add tech-talk. Grrrr.
________________________________ From: Mark Rivers Sent: Thursday, November 29, 2018 6:09 AM To: 孙天啸 Subject: Re: Problems with using PI E-712 controller > 2018/11/29 16:06:48.453 PIasynController: unknown controller type e712: (C)2015 PHYSIK INSTRUMENTE (PI) GMBH & CO. KG, E-712, 117071883, 14.00.12.00 The error message you are seeing is misleading, due to an error in PIasynController.cpp. It contains these lines: m_pGCSController = PIGCSController::CreateGCSController(pInterface, inputBuff); if (NULL == m_pGCSController) { asynPrint(pAsynCom, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, "PIasynController: unknown controller type %s: %s\n", asynPort, inputBuff); return; } So it is reporting the asynPort as the controller type, not the actual controller type. But this error means that PIGCSController::CreateGCSController failed and returned null. This is that code: /** * create instance of GCS controller depending on identification (\a szIDN) */ PIGCSController* PIGCSController::CreateGCSController(PIInterface* pInterface, const char* szIDN) { if ( strstr(szIDN, "C-663") != NULL || strstr(szIDN, "C-863") != NULL || strstr(szIDN, "C-867") != NULL || strstr(szIDN, "C-884") != NULL || strstr(szIDN, "E-861") != NULL || strstr(szIDN, "E-871") != NULL || strstr(szIDN, "E-873") != NULL ) { return new PIGCSMotorController(pInterface, szIDN); } else if ( strstr(szIDN, "E-517") != NULL) { return new PIE517Controller(pInterface, szIDN); } else if ( strstr(szIDN, "E-753") != NULL || strstr(szIDN, "E-709") != NULL || strstr(szIDN, "E-712") != NULL || strstr(szIDN, "E-725") != NULL || strstr(szIDN, "E-727") != NULL ) { return new PIGCSPiezoController(pInterface, szIDN); } else if ( strstr(szIDN, "E-755") != NULL) { return new PIE755Controller(pInterface, szIDN); } else if ( strstr(szIDN, "C-702") != NULL) { return new PIC702Controller(pInterface, szIDN); } else if ( strstr(szIDN, "HEXAPOD") != NULL || strstr(szIDN, "F-HEX") != NULL || strstr(szIDN, "F-206") != NULL || strstr(szIDN, "M-8") != NULL || strstr(szIDN, "C-887") != NULL ) { if (IsGCS2(pInterface)) { return new PIGCS2_HexapodController(pInterface, szIDN); } else { return new PIHexapodController(pInterface, szIDN); } } else { return NULL; } } Note that the szIDN string error message you see does include the string E-712 so it should have returned: return new PIGCSPiezoController(pInterface, szIDN); For some reason that is failing. You will need to debug to figure out why, I can't spot the problem. The constructors for PIGCSPiezoController and its base class are very simple, and do not throw exceptions that I can see. Mark ________________________________ From: [email protected] <[email protected]> on behalf of 孙天啸 via Tech-talk <[email protected]> Sent: Thursday, November 29, 2018 2:41 AM To: [email protected] Subject: Problems with using PI E-712 controller Hi, I used the PIGCS2Src in motor-6-8 to drive the PI E712 piezomotor controller. But there are two error messages as starting up 1.PIasynController: unknown controller type e712 2.writeFloat64() GCS controller not initialized! And the detail of the startup message is following: #!../../bin/linux-x86_64/e712 ## You may have to change e712 to something else ## everywhere it appears in this file < envPaths epicsEnvSet("ARCH","linux-x86_64") epicsEnvSet("IOC","ioce712") epicsEnvSet("TOP","/home/suntianxiao/PIE-712") epicsEnvSet("SUPPORT","/BLC/epics/synApps_5_7/support") epicsEnvSet("MOTOR","/BLC/epics/synApps_5_7/support/motor-6-8") epicsEnvSet("ASYN","/BLC/epics/synApps_5_7/support/asyn-4-21") epicsEnvSet("CALC","/BLC/epics/synApps_5_7/support/calc-3-2") epicsEnvSet("EPICS_BASE","/BLC/epics/base") cd "/home/suntianxiao/PIE-712" ## Register all support components dbLoadDatabase "dbd/e712.dbd" e712_registerRecordDeviceDriver pdbbase ## Load record instances #dbLoadRecords("db/xxx.db","user=suntianxiaoHost") dbLoadTemplate "/home/suntianxiao/PIE-712/iocBoot/ioce712/motor.substitutions" drvAsynIPPortConfigure("e712","172.16.0.35:50000",0,0,0) #asynOctetSetInputEos("e712",0,"\n") #asynOctetSetOutputEos("e712",0,"\n") #asynSetTraceMask("e712",0,1) #asynSetTraceIOMask("e712",0,1) PI_GCS2_CreateController("PIE712_1","e712",4,0,0,100,1000) 2018/11/29 16:06:48.453 read from e712: (c)2015 Physik Instrumente (PI) GmbH & Co. KG, E-712, 117071883, 14.00.12.00 2018/11/29 16:06:48.453 PIasynController: unknown controller type e712: (C)2015 PHYSIK INSTRUMENTE (PI) GMBH & CO. KG, E-712, 117071883, 14.00.12.00 cd "/home/suntianxiao/PIE-712/iocBoot/ioce712" iocInit Starting iocInit ############################################################################ ## EPICS R3.14.12.6 ## EPICS Base built Nov 27 2018 ############################################################################ 2018/11/29 16:06:48.454 IOC:m1 devMotorAsyn.c::init_record: pasynGenericPointer->read returned 2018/11/29 16:06:48.454 IOC:m2 devMotorAsyn.c::init_record: pasynGenericPointer->read returned 2018/11/29 16:06:48.454 IOC:m3 devMotorAsyn.c::init_record: pasynGenericPointer->read returned 2018/11/29 16:06:48.454 PIasynController::writeFloat64() GCS controller not initialized! 2018/11/29 16:06:48.454 devMotorAsyn::asynCallback: IOC:m1 pasyn{Float64,Int32}->write returned 2018/11/29 16:06:48.454 PIasynController::writeFloat64() GCS controller not initialized! 2018/11/29 16:06:48.454 devMotorAsyn::asynCallback: IOC:m1 pasyn{Float64,Int32}->write returned 2018/11/29 16:06:48.454 PIasynController::writeFloat64() GCS controller not initialized! 2018/11/29 16:06:48.454 devMotorAsyn::asynCallback: IOC:m2 pasyn{Float64,Int32}->write returned 2018/11/29 16:06:48.454 PIasynController::writeFloat64() GCS controller not initialized! 2018/11/29 16:06:48.454 devMotorAsyn::asynCallback: IOC:m2 pasyn{Float64,Int32}->write returned 2018/11/29 16:06:48.454 PIasynController::writeFloat64() GCS controller not initialized! 2018/11/29 16:06:48.454 devMotorAsyn::asynCallback: IOC:m3 pasyn{Float64,Int32}->write returned 2018/11/29 16:06:48.454 PIasynController::writeFloat64() GCS controller not initialized! 2018/11/29 16:06:48.454 devMotorAsyn::asynCallback: IOC:m3 pasyn{Float64,Int32}->write returned 2018/11/29 16:06:48.454 IOC:m4 devMotorAsyn.c::init_record: pasynGenericPointer->read returned 2018/11/29 16:06:48.454 PIasynController::writeFloat64() GCS controller not initialized! 2018/11/29 16:06:48.454 devMotorAsyn::asynCallback: IOC:m4 pasyn{Float64,Int32}->write returned 2018/11/29 16:06:48.454 PIasynController::writeFloat64() GCS controller not initialized! 2018/11/29 16:06:48.454 devMotorAsyn::asynCallback: IOC:m4 pasyn{Float64,Int32}->write returned iocRun: All initialization complete ## Start any sequence programs #seq sncxxx,"user=suntianxiaoHost" epics> dbl IOC:m1 IOC:m2 IOC:m3 IOC:m4 epics> ^C Are there any mistakes in my st.cmd writing? Tian-xiao Sun SSRF |