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  2023  <20242025  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  <20242025 
<== Date ==> <== Thread ==>

Subject: Re: lso record
From: Michael Davidsaver <mdavidsaver at gmail.com>
To: Heinz Junkes <junkes at fhi-berlin.mpg.de>
Cc: EPICS Tech Talk <tech-talk at aps.anl.gov>
Date: Tue, 10 Sep 2024 09:45:32 -0400
On 9/9/24 11:44, Heinz Junkes via Tech-talk wrote:
Good evening,

I have a problem with the lso (long string out) record.

When I use it as a replacement for stringout (limited to 41 char),

according to the Record reference Manual : "To initialize a string output record it is simplest to set the VAL field directly"

record(lso, "$(user):zone0")
{
     field(VAL, 'blabberblabberblub')
}


This is expected.  lso/lsi are similar to waveformRecord in that VAL is an array.
Array fields can't be initialized prior to `iocInit()` as this is when memory
for that array is allocated.

As you have already found, the way to handle this (so far) since w/ Base 7.0 is
DOL with a "const" link.


   field(DOL, {const:"/sys/devices/virtual/thermal/thermal_zone0/temp”})


As for the "Bad Field value" message, I agree that this is a less than helpful
error message.


I get the following message:


dbLoadRecords "db/tempLinuxExample.db", "user=ares"
Can't set "ares:zone0.VAL" to "blabberblabberblub"  : Bad Field value
ERROR:  at or before ')' in file "db/tempLinuxExample.db" line 7

  7 |     field(VAL, 'blabberblabberblub')

ERROR failed to load 'db/tempLinuxExample.db’

We then tried the contradictory definitions of the description:
"DOL can also be a constant instead of a link, in which case VAL is initialized to the constant value.”

record(lso, "$(user):zone0")
{
     field(DOL, 'blabberblabberblub')
}


epics@ares:~$ caget -s ares:zone0.VAL$
ares:zone0.VAL$ 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

But I don't quite understand this:

"The first field that determines where the desired output originates is the output mode select (OMSL) field, which can have two possible values: closed_loop or supervisory. If closed_loop is specified, the VAL field's value is fetched from the address specified in the Desired Output Link field (DOL) which can be either a database link or a channel access link. If supervisory is specified, DOL is ignored, “

record(lso, "$(user):zone0")
{
     field(OMSL, "closed_loop")
     field(DOL, 'blabberblabberblub')
}

The same output :

epics@ares:~$ caget -s ares:zone0.VAL$
ares:zone0.VAL$ 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0



Danke Heinz




References:
lso record Heinz Junkes via Tech-talk

Navigate by Date:
Prev: Re: [EXTERNAL] lso record Ralph Lange via Tech-talk
Next: Re: [EXTERNAL] lso record Michael Davidsaver
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  <20242025 
Navigate by Thread:
Prev: Re: lso record Rolf Keitel via Tech-talk
Next: Another question regarding record stringout, lso and Record reference manual in general Heinz Junkes 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  2023  <20242025 
ANJ, 11 Sep 2024 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions ·
· Download · Search · IRMIS · Talk · Documents · Links · Licensing ·