EPICS Controls Argonne National Laboratory

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  2018  2019  2020  2021  2022  <20232024  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  <20232024 
<== Date ==> <== Thread ==>

Subject: 回覆: 回覆: EPICS support for PI E-500 piezo controller
From: Chiang, Liang-Chih [江良志] via Tech-talk <tech-talk at aps.anl.gov>
To: Kevin Peterson <kmpeters at anl.gov>, Torsten Bögershausen <Torsten.Bogershausen at ess.eu>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Thu, 21 Sep 2023 03:28:59 +0000
Hi, mates,

I tried two approaches.

1.(suggested by Torsten Bögershausen)
Use the latest main branch of GitHub motorPIGCS2, and
>b) increase the number of parameters (the 10 from below)

>with 16, giving 26, if I count right.

>PIasynController::PIasynController(const char *portName, const char* asynPort, int numAxes, int priority, int stackSize, 

> int movingPollPeriod, int idlePollPeriod)

>    : asynMotorController(portName, numAxes, 10,

26 is not enough. 28 is ok.

2.
Use the PIGCS2Src in motorR6-11, and applied the following 2 commits:


Changes from Steffen Rau to eliminate errors due to missing FRF, TRS and SRG commands for the PI E-518 controller.


Both approaches seemed ok.
I can successfully create the motor record for E-518.
My E-518 is not connected to the piezo actuator, so it will show error message once I send some command.


Best regards.



LiangChih Chiang
 NSRRC Beamline group
 email:chiang.lc at nsrrc.org.tw


寄件者: Kevin Peterson <kmpeters at anl.gov>
寄件日期: 2023年9月20日 下午 11:29
收件者: Torsten Bögershausen <Torsten.Bogershausen at ess.eu>; Chiang, Liang-Chih [江良志] <chiang.lc at nsrrc.org.tw>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
主旨: Re: 回覆: EPICS support for PI E-500 piezo controller
 
A newer version of motor is required to work with the master branch of
motorPIGCS2.  I don't know which version is required but I would expect
motor-R7-2 or later to work.

Kevin

On 9/20/23 10:17, Torsten Bögershausen via Tech-talk wrote:
> I think that there are 2 possibilties here:
>
> a) Upgrade the asyn module
>
> (not sure out of my head, when the number of parameters became obsolete,
>
> but the latest works)
>
> b) increase the number of parameters (the 10 from below)
>
> with 16, giving 26, if I count right.
>
> PIasynController::PIasynController(const char *portName, const char*
> asynPort, int numAxes, int priority, int stackSize, int
> movingPollPeriod, int idlePollPeriod)
>
>      : asynMotorController(portName, numAxes, 10,
>
> *From: *Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of "Chiang,
> Liang-Chih [江良志] via Tech-talk" <tech-talk at aps.anl.gov>
> *Reply to: *"Chiang, Liang-Chih [江良志]" <chiang.lc at nsrrc.org.tw>
> *Date: *Wednesday, 20 September 2023 at 15:21
> *To: *"tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
> *Subject: *回覆: EPICS support for PI E-500 piezo controller
>
> Hello EPICS mates,
>
> I'm trying to control PI E-518 which is the communication interface
> module of the PI E-500 piezo controller system.
>
> EPICS base: 3.14.12.5
>
> Motor module: 6-11
>
> The folder PIGCS2Src  in Motor module 6-11  seems not support E-518.
>
> So I updated the folder with the newest files from GitHub
>
> https://github.com/epics-motor/motorPIGCS2/tree/master/pigcs2App/src
> <https://github.com/epics-motor/motorPIGCS2/tree/master/pigcs2App/src> ,
>
> and passed the compiling.
>
> When creating motor record for E-518, it shows two kinds of error
> messages(excerpted):
>
> 2023/09/20 15:02:55.455 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_KP_A to list 0, too many parameters
>
> and
>
> 2023/09/20 15:02:55.457 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 94 in list 0, bad index
>
> I don't know how to fix it. Would you provide some suggestions?
>
> The full error messages:
>
> #
> ============================================================================
>
> # PI E-518 motor controller is connected via Ethernet,
>
> # at IP address 192.168.2.31, TCP port 50000
>
> #
> ============================================================================
>
> drvAsynIPPortConfigure("PIE518", "192.168.2.31:50000", 0, 0, 0)
>
> asynSetTraceMask(PIE518,-1,0x21)   # 0x09, 0x03, 0x01
>
> asynSetTraceIOMask(PIE518,-1,0x1)  # 0x02, 0x01, 0x00
>
> # PI E-518 uses GCS(General Command Set). PI_GCS2_CreateController
> parameters:
>
> #    (1) portName
>
> #    (2) asynPort
>
> #    (3) numAxes
>
> #    (4) priority
>
> #    (5) stackSize
>
> #    (6) movingPollingRate
>
> #    (7) idlePollingRate
>
> # HFMAB angle
>
> PI_GCS2_CreateController("PIE518-1P", "PIE518", 1, 0, 0, 100, 1000)
>
> 2023/09/20 15:02:55.434 read from PIE518: (c) 2016 Physik Instrumente
> (PI) GmbH & Co. KG, E-518.I3, 119053229, 3.70
>
> PIasynAxis::PIasynAxis() 0: A
>
> 2023/09/20 15:02:55.455 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_KP_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_KI_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_KFF_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_NTCHFR1_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_NTCHFR2_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_NTCHRJT1_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_NTCHRJT2_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_NTCHBDWDT1_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_NTCHBDWDT2_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_RBKP_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_RBKI_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_RBKFF_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_RBNTCHFR1_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_RBNTCHFR2_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_RBNTCHRJT1_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_RBNTCHRJT2_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_RBNTCHBDWDT1_A to list 0, too many parameters
>
> 2023/09/20 15:02:55.456 asynPortDriver:createParam: port=PIE518-1P error
> adding parameter PI_SUP_RBNTCHBDWDT2_A to list 0, too many parameters
>
> # optional PI_Support.db
>
> dbLoadRecords("/blsw/13a/software/epics/3.14.12.5/support/motor-R6-11/db/PI_Support.db","P=27a:,R=PIE518-1P:,PORT=PIE518-1P,ADDR=0,TIMEOUT=1")
>
> # asyn record
>
> dbLoadRecords("/blsw/13a/software/epics/3.14.12.5/support/asyn-4-26/db/asynRecord.db", "P=27a:,R=PIE518-1P:Asyn,PORT=PIE518,ADDR=0,OMAX=256,IMAX=256")
>
> ###############################################################################
>
> iocInit
>
> 2023/09/20 15:02:55.457 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 94 in list 0, bad index
>
> 2023/09/20 15:02:55.457 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 95 in list 0, bad index
>
> 2023/09/20 15:02:55.457 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 96 in list 0, bad index
>
> 2023/09/20 15:02:55.457 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 97 in list 0, bad index
>
> 2023/09/20 15:02:55.457 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 98 in list 0, bad index
>
> 2023/09/20 15:02:55.457 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 99 in list 0, bad index
>
> 2023/09/20 15:02:55.457 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 100 in list 0, bad index
>
> 2023/09/20 15:02:55.457 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 101 in list 0, bad index
>
> 2023/09/20 15:02:55.457 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 102 in list 0, bad index
>
> ############################################################################
>
> Starting iocInit
>
> ## EPICS R3.14.12.5 $Date: Tue 2015-03-24 09:57:35 -0500$
>
> ## EPICS Base built Nov  6 2017
>
> ############################################################################
>
> 2023/09/20 15:02:55.563 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 94 in list 0, bad index
>
> 2023/09/20 15:02:55.563 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 95 in list 0, bad index
>
> 2023/09/20 15:02:55.563 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 96 in list 0, bad index
>
> 2023/09/20 15:02:55.563 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 97 in list 0, bad index
>
> 2023/09/20 15:02:55.563 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 98 in list 0, bad index
>
> 2023/09/20 15:02:55.563 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 99 in list 0, bad index
>
> 2023/09/20 15:02:55.563 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 100 in list 0, bad index
>
> 2023/09/20 15:02:55.563 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 101 in list 0, bad index
>
> 2023/09/20 15:02:55.563 asynPortDriver:setDoubleParam: port=PIE518-1P
> error setting parameter 102 in list 0, bad index
>
> The .cmd file:
>
> #Load motor records
>
> dbLoadTemplate("live/pie518_motors.substitutions")
>
> #Load pseudo motor records
>
> dbLoadTemplate("live/pie518_pseudoMotors.substitutions")
>
> < live/pie518.doAfterIocInit
>
> #
> ============================================================================
>
> # PI E-518 motor controller is connected via Ethernet,
>
> # at IP address 192.168.2.31, TCP port 50000
>
> #
> ============================================================================
>
> drvAsynIPPortConfigure("PIE518", "192.168.2.31:50000", 0, 0, 0)
>
> asynSetTraceMask(PIE518,-1,0x21)   # 0x09, 0x03, 0x01
>
> asynSetTraceIOMask(PIE518,-1,0x1)  # 0x02, 0x01, 0x00
>
> # PI E-518 uses GCS(General Command Set). PI_GCS2_CreateController
> parameters:
>
> #    (1) portName
>
> #    (2) asynPort
>
> #    (3) numAxes
>
> #    (4) priority
>
> #    (5) stackSize
>
> #    (6) movingPollingRate
>
> #    (7) idlePollingRate
>
> # HFMAB angle
>
> PI_GCS2_CreateController("PIE518-1P", "PIE518", 1, 0, 0, 100, 1000)
>
> # optional PI_Support.db
>
> dbLoadRecords("$(MOTOR)/db/PI_Support.db","P=27a:,R=PIE518-1P:,PORT=PIE518-1P,ADDR=0,TIMEOUT=1")
>
> # asyn record
>
> dbLoadRecords("$(ASYN)/db/asynRecord.db",
> "P=27a:,R=PIE518-1P:Asyn,PORT=PIE518,ADDR=0,OMAX=256,IMAX=256")
>
> Best regards.
>
> LiangChih Chiang
>
> NSRRC Beamline group
>
> email:chiang.lc at nsrrc.org.tw
>
> ------------------------------------------------------------------------
>
> *寄件者**:*Chiang, Liang-Chih [江良志] <chiang.lc at nsrrc.org.tw>
> *寄件日期**:*2023年9月9日上午09:49
> *收件者**:*Kevin Peterson <kmpeters at anl.gov>; tech-talk at aps.anl.gov
> <tech-talk at aps.anl.gov>
> *主旨**:*回覆: EPICS support for PI E-500 piezo controller
>
> Thanks Kevin.
>
> I later found out that E-500 is the name of the system.
>
> Its communication interface module is E-518
>
> which is supported by motorPIGCS2 module.
>
> https://github.com/epics-motor/motorPIGCS2
> <https://github.com/epics-motor/motorPIGCS2>
>
> ps. The label "E-518" is not in an obvious place of the E-500 chassis.
>
> Best regards.
>
> LiangChih Chiang
>
> NSRRC Beamline group
>
> email:chiang.lc at nsrrc.org.tw
>
> ------------------------------------------------------------------------
>
> *寄件者**:*Kevin Peterson <kmpeters at anl.gov>
> *寄件日期**:*2023年9月8日下午10:37
> *收件者**:*Chiang, Liang-Chih [江良志] <chiang.lc at nsrrc.org.tw>;
> tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
> *主旨**:*Re: EPICS support for PI E-500 piezo controller
>
> The E-500 isn't in the list of supported controllers, but it still may
> be supported by the motorPIGCS2 module:
>
> https://github.com/epics-motor/motorPIGCS2
> <https://github.com/epics-motor/motorPIGCS2>
>
> The communication interface card might of the E-500 might report a
> different version string in response to the "*IDN?" command, which is
> what the motor driver queries:
>
>
> https://github.com/epics-motor/motorPIGCS2/blob/0a452b905d2754dd774701013de3046e4c1f2f16/pigcs2App/src/PIasynController.cpp#L120 <https://github.com/epics-motor/motorPIGCS2/blob/0a452b905d2754dd774701013de3046e4c1f2f16/pigcs2App/src/PIasynController.cpp#L120>
>
> and then uses to determine the controller type:
>
>
> https://github.com/epics-motor/motorPIGCS2/blob/0a452b905d2754dd774701013de3046e4c1f2f16/pigcs2App/src/PIGCSController.cpp#L43-L109 <https://github.com/epics-motor/motorPIGCS2/blob/0a452b905d2754dd774701013de3046e4c1f2f16/pigcs2App/src/PIGCSController.cpp#L43-L109>
>
> Kevin
>
> On 9/8/23 01:37, Chiang, Liang-Chih [江良志] via Tech-talk wrote:
>  > Dear EPICS mates,
>  >
>  > Is there a EPICS support module for PI E-500 piezo controller?
>  >
>  > I can't find it in Support Modules webpage
>  > https://epics.anl.gov/modules/index.php
> <https://epics.anl.gov/modules/index.php>
>  > <https://epics.anl.gov/modules/index.php
> <https://epics.anl.gov/modules/index.php>>
>  > and in PI GitHub
>  > https://github.com/epics-motor/motorPI
> <https://github.com/epics-motor/motorPI>
>  > <https://github.com/epics-motor/motorPI
> <https://github.com/epics-motor/motorPI>>
>  >
>  > Are there any other PI controller models similar to E-500?
>  >  From which I can modify the source code of the support module.
>  >
>  >
>  >
>  > Best regards.
>  >
>  >
>  >
>  > LiangChih Chiang
>  >
>  > NSRRC
>  >
>  > Beamline Group
>  >
>  > email:chiang.lc at nsrrc.org.tw
>

References:
Re: 回覆: EPICS support for PI E-500 piezo controller Torsten Bögershausen via Tech-talk
Re: 回覆: EPICS support for PI E-500 piezo controller Kevin Peterson via Tech-talk

Navigate by Date:
Prev: Re: Starting an app from the ioc st.cmd Siddons, David via Tech-talk
Next: Re: Streamdevice reads weird 1 byte null data Hyung Jin Kim 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  2018  2019  2020  2021  2022  <20232024 
Navigate by Thread:
Prev: Re: 回覆: EPICS support for PI E-500 piezo controller Kevin Peterson via Tech-talk
Next: Help to ADCore 3.12.1 with RIXSCam IOC and PluginXIP Nicolas Guilhermo Silva Moliterno 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  2018  2019  2020  2021  2022  <20232024 
ANJ, 21 Sep 2023 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·