EPICS Home

Experimental Physics and Industrial Control System


 
1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  <20182019  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  <20182019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Problems with using PI E-712 controller
From: Mark Rivers via Tech-talk <[email protected]>
To: Allan Serra Braga Bugyi <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Thu, 29 Nov 2018 13:40:43 +0000
OK, I think the problem is just that you need to update to motor R6-10.


corvette:motor/motorApp/PIGCS2Src>git diff R6-9 R6-10 PIGCSController.cpp
diff --git a/motorApp/PIGCS2Src/PIGCSController.cpp b/motorApp/PIGCS2Src/PIGCSController.cpp
index dfb537e..1184c0a 100644
--- a/motorApp/PIGCS2Src/PIGCSController.cpp
+++ b/motorApp/PIGCS2Src/PIGCSController.cpp
@@ -7,10 +7,6 @@ FILENAME...     PIGCSController.cpp
 * found in the file LICENSE that is included with this distribution.
 *************************************************************************

-Version:        $Revision: 6$
-Modified By:    $Author: Steffen Rau$
-Last Modified:  $Date: 05.11.2013 17:38:32$
-HeadURL:        $URL$

 Original Author: Steffen Rau
 Created: 15.12.2010
@@ -48,6 +44,10 @@ PIGCSController* PIGCSController::CreateGCSController(PIInterface* pInterface, c
        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);
@@ -58,7 +58,10 @@ PIGCSController* PIGCSController::CreateGCSController(PIInterface* pInterface, c
        }
        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);



So the E-712 and E-727 were added in R6-10.


Mark




________________________________
From: Allan Serra Braga Bugyi <[email protected]>
Sent: Thursday, November 29, 2018 7:25 AM
To: Mark Rivers
Cc: [email protected]
Subject: Re: Problems with using PI E-712 controller


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
<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


References:
Problems with using PI E-712 controller 孙天啸 via Tech-talk
Fw: Problems with using PI E-712 controller Mark Rivers via Tech-talk
Re: Problems with using PI E-712 controller Allan Serra Braga Bugyi via Tech-talk

Navigate by Date:
Prev: Re: Problems with using PI E-712 controller Allan Serra Braga Bugyi via Tech-talk
Next: Re: streamdevice I/O Intr Michael Westfall via Tech-talk
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  <20182019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Problems with using PI E-712 controller Allan Serra Braga Bugyi via Tech-talk
Next: lib/pkgconfig/epics-base-linux-x86_64.pc: are -lca -ldbCore -lCom ... missing from Libs ? Giacomo S. via Tech-talk
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  <20182019  2020  2021  2022  2023  2024