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  <20222023  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  <20222023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Substitution file, streamdevice
From: Donny Domagoj Cosic via Tech-talk <tech-talk at aps.anl.gov>
To: "Zimoch Dirk (PSI)" <dirk.zimoch at psi.ch>
Cc: tech-talk at aps.anl.gov
Date: Mon, 11 Jul 2022 16:03:23 +0200
Hi Dirk,

The problem was in the LockTimeout, it was too short. When I increased the LockTimeout to your recommendation, the substitution file now gets executed properly even when a pump is disconnected.
Thank you for the information and your recommendations.

Regards,
---
Donny Domagoj Cosic

Laboratory for Ion Beam Interactions
Ruđer Bošković Institute
Bijenička cesta 54 | HR-10 000 Zagreb | CROATIA
T: +385 1 4561 041 | @: dcosic at irb.hr | www.irb.hr

Dana 2022-07-11 15:40, Zimoch Dirk (PSI) je napisao(la):
Hi Donny,

thanks for the files.
I wanted to check if and how your records are connected. If you are
FLNKing the devices or if they are SCANned
independenty or I/O Intr or anything else.
What you have looks "normal" to me.

I see that all devices use the same (serial?) port, thus a timeout for
one device delays the others.
Check your LockTimeout against your ReplyTimeout. I would make
LockTimeout > ReplyTimeout * number of devices.
Otherwise your other queued device lose patience while one or more
device wait for timeout.

Make ReplyTimeout not much longer than necessary or you waste too much
time when d device goes offline. I would measure
how long a device typically takes to reply on the slowest commend and
multiply that by 2. If you then get timeouts from
a running device increase it a bit (e.g. by 25% or so). Then multiply
this by the number of devices sharing the same
port (here 12).

Dirk

On Mon, 2022-07-11 at 15:20 +0200, Donny Domagoj Cosic wrote:
Hi Dirk,

Thank you for your reply.

user.substitutions:
file "db/vacuumPumps.db" {
	pattern { name, address, port}
	{ "VDG_LE","001", "PumpPort"}
	{ "VDG_HE","002", "PumpPort"}
	{ "TDT_Ext","003", "PumpPort"}
	{ "TDT_Switching","004", "PumpPort"}
	{ "TDT_90","006", "PumpPort"}
	{ "TDT_HE","007", "PumpPort"}
	{ "TDT_LE","008", "PumpPort"}
	{ "VDG_90A","011", "PumpPort"}
	{ "VDG_90B","012", "PumpPort"}
	{ "VDG_SNICS","013", "PumpPort"}
	{ "VDG_Alphatros","014", "PumpPort"}
	{ "TDT_Injector","015", "PumpPort"}
}

vacuumPumps.db
record(ai, "Vacuum:Pumps:Current:$(name):Read")
{
   field(DTYP, "stream")
   field(INP,  "@vacuumPumps.proto pumpCurrent($(address)) $(port)")
   field(SCAN, "10 second")
   field(ESLO, "0.01")
   field(LINR, "LINEAR")
   field(HIHI, "3.00")
   field(HIGH, "1.00")
   field(HHSV, "MAJOR")
   field(HSV, "MINOR")
   field(EGU, "A")
}

vacuumPumps.proto
pumpCurrent {
    out "\$10031002=?%+<sum>";
    in "%*10d%6d%*3d";
}


I have included the information you requested. On what does it depend?

Thank you,
---
Donny Domagoj Cosic

Laboratory for Ion Beam Interactions
Ruđer Bošković Institute
Bijenička cesta 54 | HR-10 000 Zagreb | CROATIA
T: +385 1 4561 041 | @: dcosic at irb.hr | www.irb.hr

Dana 2022-07-11 14:26, Zimoch Dirk (PSI) je napisao(la):
> The answer to your question depends strongly on the details of your
> implementation.
> Please provide your substitution file and template.
>
> Dirk
>
>
> On Mon, 2022-07-11 at 13:58 +0200, Donny Domagoj Cosic via Tech-talk
> wrote:
> > Hello,
> >
> > I have a user.substitution file that contains a number of entries
> > (vacuum pumps in this case) and it works well with the IOC. When all
> > the
> > pumps are connected, the IOC cycles through all the entries in the
> > substitution file. However if we disconnect one pump, we receive a No
> > Reply error from StreamDevice and the execution of the substitution
> > file
> > stops at that entry. The rest of the substitution file is skipped by
> > the
> > IOC until the next scan cycle where it again begins from the first
> > entry
> > in the substitution file. Therefore the entries after the No Reply are
> > never executed.
> > How can I get the IOC to continue to the next entry in the
> > substitution
> > file when a No Reply error (for an IN command) is encountered?
> >
> > Thank you in advance,

References:
Substitution file, streamdevice Donny Domagoj Cosic via Tech-talk
Re: Substitution file, streamdevice Zimoch Dirk (PSI) via Tech-talk
Re: Substitution file, streamdevice Donny Domagoj Cosic via Tech-talk
Re: Substitution file, streamdevice Zimoch Dirk (PSI) via Tech-talk

Navigate by Date:
Prev: Re: Substitution file, streamdevice Zimoch Dirk (PSI) via Tech-talk
Next: RE: EPICS compilation errors Adrian Martinez 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  <20222023  2024 
Navigate by Thread:
Prev: Re: Substitution file, streamdevice Zimoch Dirk (PSI) via Tech-talk
Next: CSS questions pertaining to combo box showing values after decimal point Wang, Andrew 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  <20222023  2024 
ANJ, 14 Sep 2022 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·