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  <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: Questions about building a database for temperature interlock
From: Michael Davidsaver <[email protected]>
To: 김성빈 <[email protected]>
Cc: [email protected]
Date: Tue, 24 Jul 2018 19:58:50 -0700
On 07/24/2018 07:18 PM, 김성빈 wrote:
> Hi all,
> 
> I would like to output an interlock signal if any of the temperature values ​​exceeds the my set value.
> 
> I am thinking to make it in the following way.
> -----------------------------------------------------------------------------------
> Read temperature value(ai)->Temperature interlock Calc->Interlock signal(bo)
> -----------------------------------------------------------------------------------
> The problem is that I do not know how to calculate because there are many read temperature value.
> 
> The calculation record consists of 12 input links (INPA, INPB, ... INPL), but the number of my temperature values ​​is over 70.
> 
> How do I configure a calcout record?
> 
> Please let me know if you have a better idea to configure the temperature interlock.

There are a number of ways to accomplish this.  I would use a calcout record
for each temperature measurement.  It is simpler to consolidate the binary result.

Something like the following (untested) might be useful as a starting point.

> record(ao, "limit") {
> }
> 
> record(calcout, "temp:aggreg") {
>     field(INPA, "temp1calc_ MSI CP")
>     field(INPB, "temp2calc_ MSI CP")
>     field(INPC, "temp3calc_ MSI CP")
>     field(INPD, "temp4calc_ MSI CP")
>     # ... repeat up to temp11calc
>     field(INPL, "temp:aggregA MSI CP")
>     field(CALC, "A&B&C&D")
>     field(OUT , "temp:ok MSI")
>     field(IVOA, "Set output to IVOV")
>     field(IVOV, "2") # differentiate INVALID (eg. sensor fault) from limit violation
> }
> 
> record(calcout, "temp:aggregA") {
>     field(INPA, "temp12calc_ MSI CP")
>     field(INPB, "temp13calc_ MSI CP")
>     field(INPC, "temp14calc_ MSI CP")
>     field(INPD, "temp15calc_ MSI CP")
> }
> 
> record(mbbi, "temp:ok") {
>     field(ZRST, "Alarm")
>     field(ZRSV, "MAJOR")
>     field(ZRVL, "0")
>     field(ONST, "Normal")
>     field(ONVL, "0")
>     field(TWST, "Fault")
>     field(TWSV, "INVALID")
>     field(ONVL, "0")
> }
> 
> # repeat for each measurements
> 
> record(ai, "temp$(N)") {
>     field(FLNK, "temp$(N)calc_")
> }
> 
> record(calcout, "temp$(N)calc_") {
>     field(INPA, "temp$(N) MSI")
>     field(INPB, "limit MSI")
>     field(CALC, "A<B") # normally 1 (closed)
> }
> 

References:
Questions about building a database for temperature interlock 김성빈

Navigate by Date:
Prev: Questions about building a database for temperature interlock 김성빈
Next: IOC Crash with No Exception Generated Matt Rippa 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: Questions about building a database for temperature interlock 김성빈
Next: IOC Crash with No Exception Generated Matt Rippa 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 
ANJ, 25 Jul 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·