EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  <20002001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  <20002001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: EPICS question: upper/lower voltage check
From: "Johann M. Heuser" <[email protected]>
To: [email protected], Lars Ewell <[email protected]>
Date: Wed, 29 Mar 2000 19:35:38 -0500
Dear colleagues:

I would like to post a question to this mailing list of which I assume that 
somebody has already encountered the same problem (and found an answer to
it!!).

Situation: The high voltage control in PHENIX is performed via EPICS.
           The version is R3.13.0.beta11/epicsB.
Problem:   Many high voltage modules (LeCroy 1458 system, mostly modules 
           1471N/P, 1469N/P) deliver voltages that can be higher 
           than the ones that are actually used for the detectors. 
Question:  How can one impose upper voltage limits on input values to
MEDM?           

I know already that EPICS database fields HOPR and LOPR should be used to 
check the demanded voltages for upper/lower boundaries. However, it appears 
to me that in our high voltage record there are no such fields yet. They 
are not listed when I print records on the crate controller.
I append the definition file of the high voltage record that we are using 
to this message. 

I already tried to add such fields (by copying the last field of the 
definition file and replacing the names accordingly). 
1st test yielded: The data base can still be loaded into the crate  
                  controller and the control system worked well as it 
                  did before I made this addition. 
                  The new fields could be seen when accessing the high 
                  voltage records. However, there were funny values 
                  retrieved.
2nd test yielded: Now I tried to preset values when building the ASCII 
                  database file for the user channels that the crate
                  controller loads. The crate controller was rebooted. 
                  However, none of the fields of the high voltage record 
                  were loaded tis time. Apparently my actions were 
                  not correct, but I do not know what exactly was 
                  incorrect; I know too little about EPICS details.
Is this record the right place to add HOPR/LOPR fields at all?
Another observation: I've seen that in other definition files that are 
loaded by the crate controller (aiRecord.dbd, aoRecord.dbd) HOPR/LOPR ARE
contained. What are they for? 
I append those files as well an excerpt of the field modified by me to this
email.

I would appreciate very much if recipients of this mail could advise on 
how to use the HOPR/LOPR fields appropriately, i.e. how they have to be 
defined and filled.


Best regards,
Johann M. Heuser

-- 
============================================================================
| JOHANN M. HEUSER      PHENIX Experiment at RHIC/Brookhaven National Lab. |
|                                                                          |
| State University of New York at Stony Brook                              | 
| Department of Physics and Astronomy               phone:  (631)-632-4482 | 
| Stony Brook, New York 11794-3800, USA             fax:    (631)-632-8573 |
| e-mail: [email protected]                                         |
============================================================================
recordtype(hiv) {
	include "dbCommon.dbd" 
	field(VAL,DBF_DOUBLE) {
		prompt("trigger")
		asl(ASL0)
		pp(TRUE)
	}
	field(EGU,DBF_STRING) {
		prompt("Engineering Units")
		promptgroup(GUI_DISPLAY)
		interest(1)
		size(16)
	}
	field(DVI,DBF_DOUBLE) {
		prompt("Demand Voltage IN")
		asl(ASL0)
	}
	field(DVO,DBF_DOUBLE) {
		prompt("Demand Voltage OUT")
		asl(ASL0)
		special(104)
		pp(TRUE)
	}
	field(CDVO,DBF_SHORT) {
		prompt("DV OUT cmd")
		promptgroup(GUI_DISPLAY)
		asl(ASL0)
	}
	field(MVI,DBF_DOUBLE) {
		prompt("Measured Voltage IN")
		asl(ASL0)
	}
	field(HHMV,DBF_FLOAT) {
		prompt("MV Hihi Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LLMV,DBF_FLOAT) {
		prompt("MV Lolo Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HIMV,DBF_FLOAT) {
		prompt("MV High Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LOMV,DBF_FLOAT) {
		prompt("MV Low Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HHSV,DBF_MENU) {
		prompt("MV Hihi Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LLSV,DBF_MENU) {
		prompt("MV Lolo Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(HSMV,DBF_MENU) {
		prompt("MV High Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LSMV,DBF_MENU) {
		prompt("MV Low Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(ADBV,DBF_DOUBLE) {
		prompt("MV Alarm Deadband")
		promptgroup(GUI_ALARMS)
		interest(1)
	}
	field(RUI,DBF_DOUBLE) {
		prompt("Ramp Up IN")
		asl(ASL0)
	}
	field(RUO,DBF_DOUBLE) {
		prompt("Ramp Up OUT")
		asl(ASL0)
		special(104)
		pp(TRUE)
	}
	field(CRUO,DBF_SHORT) {
		prompt("RUP OUT cmd")
		promptgroup(GUI_DISPLAY)
		asl(ASL0)
	}
	field(RDI,DBF_DOUBLE) {
		prompt("Ramp Down IN")
		asl(ASL0)
	}
	field(RDO,DBF_DOUBLE) {
		prompt("Ramp Down OUT")
		asl(ASL0)
		special(104)
		pp(TRUE)
	}
	field(CRDO,DBF_SHORT) {
		prompt("RDN OUT cmd")
		promptgroup(GUI_DISPLAY)
		asl(ASL0)
	}
	field(TCI,DBF_DOUBLE) {
		prompt("Trip Current IN")
		asl(ASL0)
	}
	field(TCO,DBF_DOUBLE) {
		prompt("Trip Current OUT")
		asl(ASL0)
		special(104)
		pp(TRUE)
	}
	field(CTCO,DBF_SHORT) {
		prompt("TC OUT cmd")
		promptgroup(GUI_DISPLAY)
		asl(ASL0)
	}
	field(PTCI, DBF_DOUBLE) {
		prompt("Peak Trip Current IN")
		asl(ASL0)
	}
	field(PTCO,DBF_DOUBLE) {
		prompt("Peak Trip Current OUT")
		asl(ASL0)
		special(104)
		pp(TRUE)
	}
	field(CPTCO,DBF_SHORT) {
		prompt("Peak TC OUT cmd")
		promptgroup(GUI_DISPLAY)
		asl(ASL0)
	}	
	field(CEI,DBF_SHORT) {
		prompt("Channel Enable IN")
		asl(ASL0)
	}
	field(CEO,DBF_SHORT) {
		prompt("Channel Enable OUT")
		asl(ASL0)
		special(104)
		pp(TRUE)
	}
	field(CCEO,DBF_SHORT) {
		prompt("CE OUT cmd")
		promptgroup(GUI_DISPLAY)
		asl(ASL0)
	}
	field(RTI,DBF_SHORT) {
		prompt("Ramp Trip Enable IN")
		asl(ASL0)
	}
	field(RTO,DBF_SHORT) {
		prompt("Ramp Trip Enable OUT")
		asl(ASL0)
		special(104)
		pp(TRUE)
	}
	field(CRTO,DBF_SHORT) {
		prompt("Ramp Trip OUT cmd")
		promptgroup(GUI_DISPLAY)
		asl(ASL0)
	}
	field(VZI,DBF_DOUBLE) {
		prompt("Measured Volt DZ IN")
		asl(ASL0)
	}
	field(VZO,DBF_DOUBLE) {
		prompt("Measured Volt DZ OUT")
		asl(ASL0)
		special(104)
		pp(TRUE)
	}
	field(CVZO,DBF_SHORT) {
		prompt("MVDZ OUT cmd")
		promptgroup(GUI_DISPLAY)
		asl(ASL0)
	}
	field(CZI,DBF_DOUBLE) {
		prompt("Measured Curr DZ IN")
		asl(ASL0)
	}
	field(CZO,DBF_DOUBLE) {
		prompt("Measured Curr DZ OUT")
		asl(ASL0)
		special(104)
		pp(TRUE)
	}
	field(CCZO,DBF_SHORT) {
		prompt("MCDZ OUT cmd")
		promptgroup(GUI_DISPLAY)
		asl(ASL0)
	}
	field(MCI,DBF_DOUBLE) {
		prompt("Measured Current IN")
		asl(ASL0)
	}
	field(HHMC,DBF_FLOAT) {
		prompt("MC Hihi Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LLMC,DBF_FLOAT) {
		prompt("MC Lolo Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HIMC,DBF_FLOAT) {
		prompt("MC High Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LOMC,DBF_FLOAT) {
		prompt("MC Low Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HHSC,DBF_MENU) {
		prompt("MC Hihi Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LLSC,DBF_MENU) {
		prompt("MC Lolo Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(HSMC,DBF_MENU) {
		prompt("MC High Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LSMC,DBF_MENU) {
		prompt("MC Low Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(ADBC,DBF_DOUBLE) {
		prompt("MC Alarm Deadband")
		promptgroup(GUI_ALARMS)
		interest(1)
	}
	field(MCPI,DBF_DOUBLE) {
		prompt("Measured Current Peak IN")
		asl(ASL0)
	}
	field(HHMCP,DBF_FLOAT) {
		prompt("MCP Hihi Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LLMCP,DBF_FLOAT) {
		prompt("MCP Lolo Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HIMCP,DBF_FLOAT) {
		prompt("MCP High Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LOMCP,DBF_FLOAT) {
		prompt("MCP Low Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HHSCP,DBF_MENU) {
		prompt("MCP Hihi Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LLSCP,DBF_MENU) {
		prompt("MCP Lolo Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(HSMCP,DBF_MENU) {
		prompt("MCP High Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LSMCP,DBF_MENU) {
		prompt("MCP Low Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(ADBCP,DBF_DOUBLE) {
		prompt("MCP Alarm Deadband")
		promptgroup(GUI_ALARMS)
		interest(1)
	}
	field(STI,DBF_SHORT) {
		prompt("Status IN")
		asl(ASL0)
	}
	field(HHST,DBF_SHORT) {
		prompt("ST Hihi Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LLST,DBF_SHORT) {
		prompt("ST Lolo Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HIST,DBF_SHORT) {
		prompt("ST High Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LOST,DBF_SHORT) {
		prompt("ST Low Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HHSS,DBF_MENU) {
		prompt("ST Hihi Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LLSS,DBF_MENU) {
		prompt("ST Lolo Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(HSST,DBF_MENU) {
		prompt("ST High Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LSST,DBF_MENU) {
		prompt("ST Low Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(ADBS,DBF_DOUBLE) {
		prompt("ST Alarm Deadband")
		promptgroup(GUI_ALARMS)
		interest(1)
	}
	field(VLI,DBF_DOUBLE) {
		prompt("HighVoltage Limit IN")
		asl(ASL0)
	}
	field(SWHC,DBF_SHORT) {
		prompt("Switch IN/OUT")
		promptgroup(GUI_DISPLAY)
		asl(ASL0)
	}
	field(INIT,DBF_SHORT) {
		prompt("Initialized?")
		special(SPC_NOMOD)
		interest(3)
	}
	field(CAFD,DBF_STRING) {
		prompt("CA request Field")
		asl(ASL0)
		special(SPC_NOMOD)
		size(4)
	}
	field(CAAD,DBF_SHORT) {
		prompt("CA req hardware addr")
		asl(ASL0)
	}
	field(CAVL,DBF_DOUBLE) {
		prompt("CA req value")
		asl(ASL0)
	}
	field(INP,DBF_INLINK) {
		prompt("Input specification")
		promptgroup(GUI_INPUTS)
		asl(ASL0)
		special(SPC_NOMOD)
		interest(1)
	}
	field(OUT,DBF_OUTLINK) {
		prompt("Output Specification")
		promptgroup(GUI_OUTPUT)
		asl(ASL0)
		special(SPC_NOMOD)
		interest(1)
	}
	field(LAMV,DBF_DOUBLE) {
		prompt("MV Last Value Alarmed")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LAMC,DBF_DOUBLE) {
		prompt("MC Last Value Alarmed")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LAMCP,DBF_DOUBLE) {
		prompt("MCP Last Value Alarmed")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LAST,DBF_SHORT) {
		prompt("ST Last Value Alarmed")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LDVO,DBF_DOUBLE) {
		prompt("Last DV monitored OUT")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LDVI,DBF_DOUBLE) {
		prompt("Last DV monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBDV,DBF_DOUBLE) {
		prompt("Monitor Deadband  DV")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LMVI,DBF_DOUBLE) {
		prompt("Last MV monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBMV,DBF_DOUBLE) {
		prompt("Monitor Deadband  MV")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(AMVI,DBF_DOUBLE) {
		prompt("Last MV archived  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(ADMV,DBF_DOUBLE) {
		prompt("Archived Deadband MV")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LRUO,DBF_DOUBLE) {
		prompt("Last RU monitored OUT")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LRUI,DBF_DOUBLE) {
		prompt("Last RU monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBRU,DBF_DOUBLE) {
		prompt("Monitor Deadband  RU")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LRDO,DBF_DOUBLE) {
		prompt("Last RD monitored OUT")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LRDI,DBF_DOUBLE) {
		prompt("Last RD monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBRD,DBF_DOUBLE) {
		prompt("Monitor Deadband  RD")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LTCO,DBF_DOUBLE) {
		prompt("Last TC monitored OUT")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LTCI,DBF_DOUBLE) {
		prompt("Last TC monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBTC,DBF_DOUBLE) {
		prompt("Monitor Deadband  TC")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LPTCO,DBF_DOUBLE) {
		prompt("Last PTC monitored OUT")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LPTCI,DBF_DOUBLE) {
		prompt("Last PTC monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBPTC,DBF_DOUBLE) {
		prompt("Monitor Deadband Peak TC")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LCEO,DBF_SHORT) {
		prompt("Last CE monitored OUT")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LCEI,DBF_SHORT) {
		prompt("Last CE monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBCE,DBF_SHORT) {
		prompt("Monitor Deadband  CE")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LRTO,DBF_SHORT) {
		prompt("Last RT monitored OUT")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LRTI,DBF_SHORT) {
		prompt("Last RT monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBRT,DBF_SHORT) {
		prompt("Monitor Deadband  RT")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LVZO,DBF_DOUBLE) {
		prompt("Last VZ monitored OUT")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LVZI,DBF_DOUBLE) {
		prompt("Last VZ monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBVZ,DBF_DOUBLE) {
		prompt("Monitor Deadband  VZ")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LCZO,DBF_DOUBLE) {
		prompt("Last CZ monitored OUT")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LCZI,DBF_DOUBLE) {
		prompt("Last CZ monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBCZ,DBF_DOUBLE) {
		prompt("Monitor Deadband  DZ")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LMCI,DBF_DOUBLE) {
		prompt("Last MC monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBMC,DBF_DOUBLE) {
		prompt("Monitor Deadband  MC")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(AMCI,DBF_DOUBLE) {
		prompt("Last MC archived  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(ADMC,DBF_DOUBLE) {
		prompt("Archived Deadband MCI")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LMCPI,DBF_DOUBLE) {
		prompt("Last MCP monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBMCP,DBF_DOUBLE) {
		prompt("Monitor Deadband  MCP")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(AMCPI,DBF_DOUBLE) {
		prompt("Last MCP archived  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(ADMCP,DBF_DOUBLE) {
		prompt("Archived Deadband MCPI")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}

	field(LSTI,DBF_SHORT) {
		prompt("Last ST monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBST,DBF_SHORT) {
		prompt("Monitor Deadband  ST")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(ASTI,DBF_SHORT) {
		prompt("Last ST archived  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(ADST,DBF_SHORT) {
		prompt("Archived Deadband STI")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LVLI,DBF_DOUBLE) {
		prompt("Last VL monitored  IN")
		special(SPC_NOMOD)
		interest(3)
	}
	field(DBVL,DBF_DOUBLE) {
		prompt("Monitor Deadband  VL")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(MVHO,DBF_FLOAT) {
		prompt("MV & DV Hi Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(MVLO,DBF_FLOAT) {
		prompt("MV & DV Lo Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(RAHO,DBF_FLOAT) {
		prompt("RU&RD Hi Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(RALO,DBF_FLOAT) {
		prompt("RU&RD Lo Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(MCHO,DBF_FLOAT) {
		prompt("MC & TC Hi Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(MCLO,DBF_FLOAT) {
		prompt("MC & TC Lo Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(MCPHO,DBF_FLOAT) {
		prompt("MCP & PTC Hi Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(MCPLO,DBF_FLOAT) {
		prompt("MCP & PTC Lo Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(CEHO,DBF_SHORT) {
		prompt("CE Hi Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(CELO,DBF_SHORT) {
		prompt("CE Lo Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(RTHO,DBF_SHORT) {
		prompt("RT Hi Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(RTLO,DBF_SHORT) {
		prompt("RT Lo Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(STHO,DBF_SHORT) {
		prompt("ST Hi Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(STLO,DBF_SHORT) {
		prompt("ST Lo Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(VZHO,DBF_FLOAT) {
		prompt("VZ Hi Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(VZLO,DBF_FLOAT) {
		prompt("VZ Lo Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(CZHO,DBF_FLOAT) {
		prompt("CZ Hi Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(CZLO,DBF_FLOAT) {
		prompt("CZ Lo Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(VLHO,DBF_FLOAT) {
		prompt("VL Hi Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(VLLO,DBF_FLOAT) {
		prompt("VL Lo Ope Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
}
record(hiv, "HV_PC1_E_S_0_0") {
  field(SCAN, "1 second")
  field(DTYP, "CEBAF HiVrec L1458")
  field(CDVO, "301")
  field(CRUO, "302")
  field(CRDO, "303")
  field(CTCO, "304")
  field(CCEO, "305")
  field(CVZO, "306")
  field(CCZO, "307")
  field(CRTO, "308")
  field(CPTCO, "309")
  field(INP, "#R64 L03 U01 H00")
  field(OUT, "#R64 L03 U01 H00")
  field(HIST, "7")
  field(LOST, "0")
  field(HSST, "2")
  field(LSST, "1")
  field(HOPR, "-2700")     <----  I tried to add these two fields
  field(LOPR, "0")         <----  containing the upper and lower 
}                                 voltage boundaries.
recordtype(ai) {
	include "dbCommon.dbd" 
	field(VAL,DBF_DOUBLE) {
		prompt("Current EGU Value")
		asl(ASL0)
		pp(TRUE)
	}
	field(INP,DBF_INLINK) {
		prompt("Input Specification")
		promptgroup(GUI_INPUTS)
		interest(1)
	}
	field(PREC,DBF_SHORT) {
		prompt("Display Precision")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LINR,DBF_MENU) {
		prompt("Linearization")
		promptgroup(GUI_CONVERT)
		special(SPC_LINCONV)
		pp(TRUE)
		interest(1)
		menu(menuConvert)
	}
	field(EGUF,DBF_FLOAT) {
		prompt("Engineer Units Full")
		promptgroup(GUI_CONVERT)
		special(SPC_LINCONV)
		pp(TRUE)
		interest(1)
	}
	field(EGUL,DBF_FLOAT) {
		prompt("Engineer Units Low")
		promptgroup(GUI_CONVERT)
		special(SPC_LINCONV)
		pp(TRUE)
		interest(1)
	}
	field(EGU,DBF_STRING) {
		prompt("Engineering Units")
		promptgroup(GUI_DISPLAY)
		interest(1)
		size(16)
	}
	field(HOPR,DBF_FLOAT) {
		prompt("High Operating Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LOPR,DBF_FLOAT) {
		prompt("Low Operating Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(AOFF,DBF_FLOAT) {
		prompt("Adjustment Offset")
		promptgroup(GUI_CONVERT)
		pp(TRUE)
		interest(1)
	}
	field(ASLO,DBF_FLOAT) {
		prompt("Adjustment Slope")
		promptgroup(GUI_CONVERT)
		pp(TRUE)
		interest(1)
		initial("1")
	}
	field(SMOO,DBF_FLOAT) {
		prompt("Smoothing")
		promptgroup(GUI_CONVERT)
		interest(1)
	}
	field(HIHI,DBF_FLOAT) {
		prompt("Hihi Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LOLO,DBF_FLOAT) {
		prompt("Lolo Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HIGH,DBF_FLOAT) {
		prompt("High Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LOW,DBF_FLOAT) {
		prompt("Low Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HHSV,DBF_MENU) {
		prompt("Hihi Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LLSV,DBF_MENU) {
		prompt("Lolo Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(HSV,DBF_MENU) {
		prompt("High Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LSV,DBF_MENU) {
		prompt("Low Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(HYST,DBF_DOUBLE) {
		prompt("Alarm Deadband")
		promptgroup(GUI_ALARMS)
		interest(1)
	}
	field(ADEL,DBF_DOUBLE) {
		prompt("Archive Deadband")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(MDEL,DBF_DOUBLE) {
		prompt("Monitor Deadband")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LALM,DBF_DOUBLE) {
		prompt("Last Value Alarmed")
		special(SPC_NOMOD)
		interest(3)
	}
	field(ALST,DBF_DOUBLE) {
		prompt("Last Value Archived")
		special(SPC_NOMOD)
		interest(3)
	}
	field(MLST,DBF_DOUBLE) {
		prompt("Last Val Monitored")
		special(SPC_NOMOD)
		interest(3)
	}
	field(ESLO,DBF_DOUBLE) {
		prompt("Rawto EGU Slope")
		special(SPC_NOMOD)
		interest(2)
		initial("1")
	}
	field(ROFF,DBF_LONG) {
		prompt("Raw Offset")
		pp(TRUE)
		interest(2)
	}
	field(PBRK,DBF_NOACCESS) {
		prompt("Ptrto brkTable")
		special(SPC_NOMOD)
		interest(4)
		size(4)
		extra("void *	pbrk")
	}
	field(INIT,DBF_SHORT) {
		prompt("Initialized?")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LBRK,DBF_SHORT) {
		prompt("LastBreak Point")
		special(SPC_NOMOD)
		interest(3)
	}
	field(RVAL,DBF_LONG) {
		prompt("Current Raw Value")
		pp(TRUE)
	}
	field(ORAW,DBF_LONG) {
		prompt("Previous Raw Value")
		special(SPC_NOMOD)
		interest(3)
	}
	field(SIOL,DBF_INLINK) {
		prompt("Sim Input Specifctn")
		promptgroup(GUI_INPUTS)
		interest(1)
	}
	field(SVAL,DBF_DOUBLE) {
		prompt("Simulation Value")
	}
	field(SIML,DBF_INLINK) {
		prompt("Sim Mode Location")
		promptgroup(GUI_INPUTS)
		interest(1)
	}
	field(SIMM,DBF_MENU) {
		prompt("Simulation Mode")
		interest(1)
		menu(menuYesNo)
	}
	field(SIMS,DBF_MENU) {
		prompt("Sim mode Alarm Svrty")
		promptgroup(GUI_INPUTS)
		interest(2)
		menu(menuAlarmSevr)
	}
}
menu(aoOIF) {
	choice(aoOIF_Full,"Full")
	choice(aoOIF_Incremental,"Incremental")
}
recordtype(ao) {
	include "dbCommon.dbd" 
	field(VAL,DBF_DOUBLE) {
		prompt("Desired Output")
		asl(ASL0)
		pp(TRUE)
	}
	field(OVAL,DBF_DOUBLE) {
		prompt("Output Value")
	}
	field(OUT,DBF_OUTLINK) {
		prompt("Output Specification")
		promptgroup(GUI_OUTPUT)
		interest(1)
	}
	field(OROC,DBF_FLOAT) {
		prompt("Output Rate of Chang")
		promptgroup(GUI_OUTPUT)
		interest(1)
	}
	field(DOL,DBF_INLINK) {
		prompt("Desired Output Loc")
		promptgroup(GUI_OUTPUT)
		interest(1)
	}
	field(OMSL,DBF_MENU) {
		prompt("Output Mode Select")
		promptgroup(GUI_OUTPUT)
		interest(1)
		menu(menuOmsl)
	}
	field(OIF,DBF_MENU) {
		prompt("Out Full/Incremental")
		promptgroup(GUI_OUTPUT)
		interest(1)
		menu(aoOIF)
	}
	field(PREC,DBF_SHORT) {
		prompt("Display Precision")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LINR,DBF_MENU) {
		prompt("Linearization")
		promptgroup(GUI_CONVERT)
		special(SPC_LINCONV)
		pp(TRUE)
		interest(1)
		menu(menuConvert)
	}
	field(EGUF,DBF_FLOAT) {
		prompt("Eng Units Full")
		promptgroup(GUI_CONVERT)
		special(SPC_LINCONV)
		pp(TRUE)
		interest(1)
	}
	field(EGUL,DBF_FLOAT) {
		prompt("Eng Units Low")
		promptgroup(GUI_CONVERT)
		special(SPC_LINCONV)
		pp(TRUE)
		interest(1)
	}
	field(EGU,DBF_STRING) {
		prompt("Engineering Units")
		promptgroup(GUI_DISPLAY)
		interest(1)
		size(16)
	}
	field(ROFF,DBF_LONG) {
		prompt("Raw Offset")
		pp(TRUE)
		interest(2)
	}
	field(ESLO,DBF_DOUBLE) {
		prompt("EGU to Raw Slope")
		special(SPC_NOMOD)
		interest(2)
		initial("1")
	}
	field(DRVH,DBF_FLOAT) {
		prompt("Drive High Limit")
		promptgroup(GUI_OUTPUT)
		pp(TRUE)
		interest(1)
	}
	field(DRVL,DBF_FLOAT) {
		prompt("Drive Low Limit")
		promptgroup(GUI_OUTPUT)
		pp(TRUE)
		interest(1)
	}
	field(HOPR,DBF_FLOAT) {
		prompt("High Operating Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(LOPR,DBF_FLOAT) {
		prompt("Low Operating Range")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(AOFF,DBF_FLOAT) {
		prompt("Adjustment Offset")
		promptgroup(GUI_CONVERT)
		pp(TRUE)
		interest(1)
	}
	field(ASLO,DBF_FLOAT) {
		prompt("Adjustment Slope")
		promptgroup(GUI_CONVERT)
		pp(TRUE)
		interest(1)
	}
	field(HIHI,DBF_FLOAT) {
		prompt("Hihi Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LOLO,DBF_FLOAT) {
		prompt("Lolo Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HIGH,DBF_FLOAT) {
		prompt("High Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(LOW,DBF_FLOAT) {
		prompt("Low Alarm Limit")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
	}
	field(HHSV,DBF_MENU) {
		prompt("Hihi Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LLSV,DBF_MENU) {
		prompt("Lolo Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(HSV,DBF_MENU) {
		prompt("High Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(LSV,DBF_MENU) {
		prompt("Low Severity")
		promptgroup(GUI_ALARMS)
		pp(TRUE)
		interest(1)
		menu(menuAlarmSevr)
	}
	field(HYST,DBF_DOUBLE) {
		prompt("Alarm Deadband")
		promptgroup(GUI_ALARMS)
		interest(1)
	}
	field(ADEL,DBF_DOUBLE) {
		prompt("Archive Deadband")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(MDEL,DBF_DOUBLE) {
		prompt("Monitor Deadband")
		promptgroup(GUI_DISPLAY)
		interest(1)
	}
	field(RVAL,DBF_LONG) {
		prompt("Current Raw Value")
		pp(TRUE)
	}
	field(ORAW,DBF_LONG) {
		prompt("Previous Raw Value")
		special(SPC_NOMOD)
		interest(3)
	}
	field(RBV,DBF_LONG) {
		prompt("Readback Value")
		special(SPC_NOMOD)
	}
	field(ORBV,DBF_LONG) {
		prompt("Prev Readback Value")
		special(SPC_NOMOD)
		interest(3)
	}
	field(PVAL,DBF_DOUBLE) {
		prompt("Previous value")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LALM,DBF_DOUBLE) {
		prompt("Last Value Alarmed")
		special(SPC_NOMOD)
		interest(3)
	}
	field(ALST,DBF_DOUBLE) {
		prompt("Last Value Archived")
		special(SPC_NOMOD)
		interest(3)
	}
	field(MLST,DBF_DOUBLE) {
		prompt("Last Val Monitored")
		special(SPC_NOMOD)
		interest(3)
	}
	field(PBRK,DBF_NOACCESS) {
		prompt("Ptrto brkTable")
		special(SPC_NOMOD)
		interest(4)
		size(4)
		extra("void *	pbrk")
	}
	field(INIT,DBF_SHORT) {
		prompt("Initialized?")
		special(SPC_NOMOD)
		interest(3)
	}
	field(LBRK,DBF_SHORT) {
		prompt("LastBreak Point")
		special(SPC_NOMOD)
		interest(3)
	}
	field(SIOL,DBF_OUTLINK) {
		prompt("Sim Output Specifctn")
		promptgroup(GUI_INPUTS)
		interest(1)
	}
	field(SIML,DBF_INLINK) {
		prompt("Sim Mode Location")
		promptgroup(GUI_INPUTS)
		interest(1)
	}
	field(SIMM,DBF_MENU) {
		prompt("Simulation Mode")
		interest(1)
		menu(menuYesNo)
	}
	field(SIMS,DBF_MENU) {
		prompt("Sim mode Alarm Svrty")
		promptgroup(GUI_INPUTS)
		interest(2)
		menu(menuAlarmSevr)
	}
	field(IVOA,DBF_MENU) {
		prompt("INVALID output action")
		promptgroup(GUI_OUTPUT)
		interest(2)
		menu(menuIvoa)
	}
	field(IVOV,DBF_DOUBLE) {
		prompt("INVALID output value")
		promptgroup(GUI_OUTPUT)
		interest(2)
	}
	field(OMOD,DBF_UCHAR) {
		prompt("Was OVAL modified?")
		special(SPC_NOMOD)
	}
}

Replies:
Re: EPICS question: upper/lower voltage check Burkhard W. Kolb
Re: EPICS question: upper/lower voltage check Marty Kraimer

Navigate by Date:
Prev: Re: All outlinks not created equal?? Brian McAllister
Next: telnet based device support Jim Thomas
Index: 1994  1995  1996  1997  1998  1999  <20002001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: All outlinks not created equal?? Ned Arnold
Next: Re: EPICS question: upper/lower voltage check Burkhard W. Kolb
Index: 1994  1995  1996  1997  1998  1999  <20002001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·