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: "Zimoch Dirk \(PSI\) via Tech-talk" <tech-talk at aps.anl.gov>
To: "Donny.Domagoj.Cosic at irb.hr" <Donny.Domagoj.Cosic at irb.hr>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Mon, 11 Jul 2022 13:40:24 +0000
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,

Replies:
Re: Substitution file, streamdevice Donny Domagoj Cosic via Tech-talk
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

Navigate by Date:
Prev: Re: Substitution file, streamdevice Donny Domagoj Cosic via Tech-talk
Next: Re: Substitution file, streamdevice Donny Domagoj Cosic 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 Donny Domagoj Cosic via Tech-talk
Next: Re: Substitution file, streamdevice Donny Domagoj Cosic 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 ·