Initial attempt to merge the many versions of sumIO
This commit is contained in:
90
db/old/sumIO.db.amor
Normal file
90
db/old/sumIO.db.amor
Normal file
@ -0,0 +1,90 @@
|
||||
# This code integrates the beam intensity signal during the
|
||||
# time where the integration is activated (SWITCH = 1).
|
||||
# It also counts the time during which the integration occured.
|
||||
|
||||
|
||||
# this is a switch which can be set to activate/deactivate the counting
|
||||
record(bi, "$(P)SWITCH")
|
||||
{
|
||||
field(DTYP,"Soft Channel")
|
||||
field(ZNAM,"Low")
|
||||
field(ONAM,"High")
|
||||
}
|
||||
|
||||
## This is an accumulator for the beam intensity integral
|
||||
record(ai, "$(P)ACCINT")
|
||||
{
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
}
|
||||
|
||||
# field for a beam copy
|
||||
record(ai, "$(P)BEAMCPY")
|
||||
{
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
field(INP, "$(AI) CP")
|
||||
field(SCAN, "Passive")
|
||||
}
|
||||
|
||||
# This is for holding a preset
|
||||
record(ai, "$(P)PRESET")
|
||||
{
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
}
|
||||
#
|
||||
#
|
||||
#
|
||||
## This is an accumulator for the exposure time
|
||||
record(ai, "$(P)ACCTIME")
|
||||
{
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
}
|
||||
#
|
||||
## This record computes the integral of the beam intensity
|
||||
## (gated by the SWITCH signal)
|
||||
record(calcout, "$(P)BEAMINT")
|
||||
{
|
||||
field(SCAN,"Passive")
|
||||
field(INPA,"$(AI) CP")
|
||||
field(INPB,"$(P)SWITCH")
|
||||
field(INPD,"$(P)ACCINT")
|
||||
field(CALC,"(B >= 1) ? D + A : D")
|
||||
field(OUT,"$(P)ACCINT PP")
|
||||
field(OOPT,"On Change")
|
||||
field(DOPT,"Use CALC")
|
||||
field(FLNK, "$(P)COUNTER")
|
||||
}
|
||||
|
||||
# This record stops counting when the preset has been reached
|
||||
record(calcout, "$(P)COUNTER")
|
||||
{
|
||||
field(SCAN,"Passive")
|
||||
field(INPA,"$(P)BEAMINT")
|
||||
field(INPB,"$(P)SWITCH")
|
||||
field(INPD,"$(P)PRESET")
|
||||
field(CALC,"(B >= 1 && A >= D) ? 0 : 1")
|
||||
field(OUT,"$(P)SWITCH PP")
|
||||
field(OOPT,"When Zero")
|
||||
field(DOPT,"Use CALC")
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
## This record computes the total exposure time
|
||||
## (gated by the SWITCH signal)
|
||||
record(calcout, "$(P)COUNTTIME")
|
||||
{
|
||||
field(SCAN,".1 second")
|
||||
field(INPA,"$(AI)")
|
||||
field(INPB,"$(P)SWITCH")
|
||||
field(INPD,"$(P)ACCTIME")
|
||||
field(CALC,"(B >= 1) ? D + 0.1 : D")
|
||||
field(OUT,"$(P)ACCTIME PP")
|
||||
field(OOPT,"On Change")
|
||||
field(DOPT,"Use CALC")
|
||||
}
|
191
db/old/sumIO.db.boa
Normal file
191
db/old/sumIO.db.boa
Normal file
@ -0,0 +1,191 @@
|
||||
# This code integrates the beam intensity signal during the
|
||||
# time where the integration is activated (SWITCH = 1)
|
||||
# and the camera is acquiring (SHUTTER = 0). It also counts
|
||||
# the time during which the integration occured to compute
|
||||
# the average intensity. This average intensity is compared
|
||||
# to a threshold to indicate the camera whether the exposure
|
||||
# is sufficient.
|
||||
|
||||
|
||||
# this is a switch which can be set to activate/deactivate the counting
|
||||
record(bi, "$(P)SWITCH")
|
||||
|
||||
{
|
||||
|
||||
field(DTYP,"Soft Channel")
|
||||
|
||||
field(ZNAM,"Low")
|
||||
|
||||
field(ONAM,"High")
|
||||
|
||||
}
|
||||
|
||||
# This is an accumulator for the beam intensity integral
|
||||
|
||||
record(ai, "$(P)ACCINT")
|
||||
|
||||
{
|
||||
|
||||
field(DTYP, "Soft Channel")
|
||||
|
||||
field(LINR, "LINEAR")
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
# This is an accumulator for the exposure time
|
||||
|
||||
|
||||
record(ai, "$(P)ACCTIME")
|
||||
|
||||
{
|
||||
|
||||
field(DTYP, "Soft Channel")
|
||||
|
||||
field(LINR, "LINEAR")
|
||||
|
||||
}
|
||||
|
||||
|
||||
# This is the threshold for acceptable intensity
|
||||
record(ai, "$(P)THRES")
|
||||
|
||||
{
|
||||
|
||||
field(DTYP, "Soft Channel")
|
||||
|
||||
field(LINR, "LINEAR")
|
||||
|
||||
}
|
||||
|
||||
# This record keeps the last average value
|
||||
record(ai, "$(P)LASTAVG")
|
||||
|
||||
{
|
||||
|
||||
field(DTYP, "Soft Channel")
|
||||
|
||||
field(LINR, "LINEAR")
|
||||
|
||||
}
|
||||
|
||||
|
||||
# This is a record to hold a copy of the HIPA proton beam intensity
|
||||
record(ai, "$(P)BEAM")
|
||||
{
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
}
|
||||
|
||||
# This is a calculation record to copy the HIPA proton beam intensity,
|
||||
# visible from NICOS
|
||||
record(calcout, "$(P)BEAMCOPY")
|
||||
{
|
||||
field(SCAN, "1 second")
|
||||
field(INPA, "$(AI)")
|
||||
field(CALC, "A")
|
||||
field(OUT, "$(P)BEAM")
|
||||
field(OOPT, "Every Time")
|
||||
field(DOPT, "Use CALC")
|
||||
}
|
||||
|
||||
|
||||
# This record computes the integral of the beam intensity
|
||||
# (gated by the SWITCH and SHUTTER signals)
|
||||
record(calcout, "$(P)BEAMINT")
|
||||
|
||||
{
|
||||
|
||||
field(SCAN,".1 second")
|
||||
|
||||
field(INPA,"$(AI)")
|
||||
|
||||
field(INPB,"$(P)SWITCH")
|
||||
|
||||
field(INPC,"$(CAM)SHUTTER")
|
||||
|
||||
field(INPD,"$(P)ACCINT")
|
||||
|
||||
field(CALC,"(B >= 1) AND (C = 0)? D + 0.1*A : D")
|
||||
|
||||
field(OUT,"$(P)ACCINT")
|
||||
|
||||
field(OOPT,"On Change")
|
||||
|
||||
field(DOPT,"Use CALC")
|
||||
|
||||
}
|
||||
|
||||
|
||||
# This record computes the total exposure time
|
||||
# (gated by the SWITCH and SHUTTER signals)
|
||||
record(calcout, "$(P)EXPTIME")
|
||||
|
||||
{
|
||||
|
||||
field(SCAN,".1 second")
|
||||
|
||||
field(INPA,"$(AI)")
|
||||
|
||||
field(INPB,"$(P)SWITCH")
|
||||
|
||||
field(INPC,"$(CAM)SHUTTER")
|
||||
|
||||
field(INPD,"$(P)ACCTIME")
|
||||
|
||||
field(CALC,"(B >= 1) AND (C = 0)? D + 0.1 : D")
|
||||
|
||||
field(OUT,"$(P)ACCTIME")
|
||||
|
||||
field(OOPT,"On Change")
|
||||
|
||||
field(DOPT,"Use CALC")
|
||||
|
||||
}
|
||||
|
||||
|
||||
# This record computes the average beam intensity
|
||||
record(calcout, "$(P)BEAMAVG")
|
||||
{
|
||||
|
||||
field(SCAN,".1 second")
|
||||
|
||||
field(INPA,"$(P)EXPTIME")
|
||||
|
||||
field(INPB,"$(P)BEAMINT")
|
||||
|
||||
field(INPC,"$(P)LASTAVG")
|
||||
|
||||
field(CALC,"A > 0 ? B/A : C")
|
||||
|
||||
field(OUT,"$(P)LASTAVG")
|
||||
|
||||
field(OOPT,"On Change")
|
||||
|
||||
field(DOPT,"Use CALC")
|
||||
|
||||
}
|
||||
|
||||
|
||||
# This record compares the average intensity to the threshold
|
||||
record(calcout, "$(CAM)AUX")
|
||||
{
|
||||
|
||||
field(SCAN,".1 second")
|
||||
|
||||
field(INPA,"$(P)BEAMAVG")
|
||||
|
||||
field(INPB,"$(P)THRES")
|
||||
|
||||
field(CALC,"A >= B ? 1 : 0")
|
||||
|
||||
field(OUT,"$(CAM)AUX")
|
||||
|
||||
field(OOPT,"On Change")
|
||||
|
||||
field(DOPT,"Use CALC")
|
||||
|
||||
}
|
||||
|
||||
|
41
db/old/sumIO.db.dmc
Normal file
41
db/old/sumIO.db.dmc
Normal file
@ -0,0 +1,41 @@
|
||||
# This code integrates the beam intensity signal during the
|
||||
# time where the integration is activated (SWITCH = 1).
|
||||
# It also counts the time during which the integration occured.
|
||||
|
||||
|
||||
# this is a switch which can be set to activate/deactivate the counting
|
||||
record(bi, "$(P)SWITCH")
|
||||
{
|
||||
field(DTYP,"Soft Channel")
|
||||
field(ZNAM,"Low")
|
||||
field(ONAM,"High")
|
||||
}
|
||||
|
||||
# This is an accumulator for the beam intensity integral
|
||||
record(ai, "$(P)ACCINT")
|
||||
{
|
||||
field(SCAN,"1 second")
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
}
|
||||
|
||||
record(longin, "$(P)PRESET")
|
||||
{
|
||||
field(DTYP,"Soft Channel")
|
||||
}
|
||||
|
||||
# This record computes the integral of the beam intensity
|
||||
# (gated by the SWITCH signal)
|
||||
record(calcout, "$(P)BEAMINT")
|
||||
{
|
||||
field(SCAN,".1 second")
|
||||
field(INPA,"$(AI)")
|
||||
field(INPB,"$(P)SWITCH")
|
||||
field(INPC,"$(P)PRESET")
|
||||
field(INPD,"$(P)ACCINT")
|
||||
field(CALC,"((B >= 1) && (C > D)) ? D + A * .1 : D")
|
||||
field(OUT,"$(P)ACCINT")
|
||||
field(OOPT,"Every Time")
|
||||
field(DOPT,"Use CALC")
|
||||
}
|
||||
|
180
db/old/sumIO.db.neutra
Normal file
180
db/old/sumIO.db.neutra
Normal file
@ -0,0 +1,180 @@
|
||||
# This code integrates the beam intensity signal during the
|
||||
# time where the integration is activated (SWITCH = 1)
|
||||
# and the camera is acquiring (SHUTTER = 0). It also counts
|
||||
# the time during which the integration occured to compute
|
||||
# the average intensity. This average intensity is compared
|
||||
# to a threshold to indicate the camera whether the exposure
|
||||
# is sufficient.
|
||||
|
||||
# field for a beam copy
|
||||
record(ai, "$(P)BEAMCPY")
|
||||
{
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
field(INP, "$(AI) CP")
|
||||
field(SCAN, "Passive")
|
||||
}
|
||||
|
||||
|
||||
# this is a switch which can be set to activate/deactivate the counting
|
||||
record(bi, "$(P)SWITCH")
|
||||
|
||||
{
|
||||
|
||||
field(DTYP,"Soft Channel")
|
||||
|
||||
field(ZNAM,"Low")
|
||||
|
||||
field(ONAM,"High")
|
||||
|
||||
}
|
||||
|
||||
# this is a dummy switch which simulates the shutter
|
||||
record(bi, "$(P)DummyShutter")
|
||||
|
||||
{
|
||||
|
||||
field(DTYP,"Soft Channel")
|
||||
|
||||
field(ZNAM,"Closed")
|
||||
|
||||
field(ONAM,"Open")
|
||||
|
||||
}
|
||||
|
||||
# This is an accumulator for the beam intensity integral
|
||||
|
||||
record(ai, "$(P)ACCINT")
|
||||
|
||||
{
|
||||
|
||||
field(DTYP, "Soft Channel")
|
||||
|
||||
field(LINR, "LINEAR")
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
# This is an accumulator for the exposure time
|
||||
|
||||
|
||||
record(ai, "$(P)ACCTIME")
|
||||
|
||||
{
|
||||
|
||||
field(DTYP, "Soft Channel")
|
||||
|
||||
field(LINR, "LINEAR")
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
# This is the threshold for acceptable intensity
|
||||
record(ai, "$(P)THRES")
|
||||
|
||||
{
|
||||
|
||||
field(DTYP, "Soft Channel")
|
||||
|
||||
field(LINR, "LINEAR")
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
# This record computes the integral of the beam intensity
|
||||
# (gated by the SWITCH and SHUTTER signals)
|
||||
record(calcout, "$(P)BEAMINT")
|
||||
|
||||
{
|
||||
|
||||
field(SCAN,".1 second")
|
||||
|
||||
field(INPA,"$(AI)")
|
||||
|
||||
field(INPB,"$(P)SWITCH")
|
||||
|
||||
field(INPC,"$(CAM)SHUTTER")
|
||||
|
||||
field(INPD,"$(P)ACCINT")
|
||||
|
||||
field(CALC,"(B >= 1) AND (C = 0)? D + 0.1*A : D")
|
||||
|
||||
field(OUT,"$(P)ACCINT")
|
||||
|
||||
field(OOPT,"On Change")
|
||||
|
||||
field(DOPT,"Use CALC")
|
||||
|
||||
}
|
||||
|
||||
|
||||
# This record computes the total exposure time
|
||||
# (gated by the SWITCH and SHUTTER signals)
|
||||
record(calcout, "$(P)EXPTIME")
|
||||
|
||||
{
|
||||
|
||||
field(SCAN,".1 second")
|
||||
|
||||
field(INPA,"$(AI)")
|
||||
|
||||
field(INPB,"$(P)SWITCH")
|
||||
|
||||
field(INPC,"$(CAM)SHUTTER")
|
||||
|
||||
field(INPD,"$(P)ACCTIME")
|
||||
|
||||
field(CALC,"(B >= 1) AND (C = 0)? D + 0.1 : D")
|
||||
|
||||
field(OUT,"$(P)ACCTIME")
|
||||
|
||||
field(OOPT,"On Change")
|
||||
|
||||
field(DOPT,"Use CALC")
|
||||
|
||||
}
|
||||
|
||||
|
||||
# This record computes the average beam intensity
|
||||
record(calcout, "$(P)BEAMAVG")
|
||||
{
|
||||
|
||||
field(SCAN,".1 second")
|
||||
|
||||
field(INPA,"$(P)EXPTIME")
|
||||
|
||||
field(INPB,"$(P)BEAMINT")
|
||||
|
||||
field(CALC,"A > 0 ? B/A : 0")
|
||||
|
||||
field(OOPT,"On Change")
|
||||
|
||||
field(DOPT,"Use CALC")
|
||||
|
||||
}
|
||||
|
||||
|
||||
# This record compares the average intensity to the threshold
|
||||
record(calcout, "$(P)EXPOK")
|
||||
{
|
||||
|
||||
field(SCAN,".1 second")
|
||||
|
||||
field(INPA,"$(P)BEAMAVG")
|
||||
|
||||
field(INPB,"$(P)THRES")
|
||||
|
||||
field(CALC,"A >= B ? 1 : 0")
|
||||
|
||||
field(OUT,"$(CAM)AUX")
|
||||
|
||||
field(OOPT,"On Change")
|
||||
|
||||
field(DOPT,"Use CALC")
|
||||
|
||||
}
|
||||
|
106
db/protoncurrent.db
Normal file
106
db/protoncurrent.db
Normal file
@ -0,0 +1,106 @@
|
||||
# Macros
|
||||
# P - Prefix
|
||||
# AI - HIPA Beam Current PV
|
||||
# GATE - (optional) second gating PV
|
||||
|
||||
record(bi, "$(P)SWITCH")
|
||||
{
|
||||
field(DESC, "Gates signal intensity measurement")
|
||||
field(DTYP, "Soft Channel")
|
||||
field(ZNAM, "Low")
|
||||
field(ONAM, "High")
|
||||
}
|
||||
|
||||
record(bi, "$(P)SHUTTER")
|
||||
{
|
||||
field(DESC, "Optional extra gate for e.g. Camera")
|
||||
field(DTYP, "Soft Channel")
|
||||
field(ZNAM, "High")
|
||||
field(ONAM, "Low")
|
||||
field(INP, "$(GATE=0) CP")
|
||||
field(SCAN, "Passive")
|
||||
}
|
||||
|
||||
record(ai, "$(P)BEAMCPY")
|
||||
{
|
||||
field(DESC, "Copy of $(AI)")
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
field(INP, "$(AI) CP")
|
||||
field(SCAN, "Passive")
|
||||
}
|
||||
|
||||
record(ai, "$(P)ACCTIME")
|
||||
{
|
||||
field(DESC, "Beam time accumulator")
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
}
|
||||
|
||||
record(calcout, "$(P)COUNTTIME")
|
||||
{
|
||||
field(DESC, "Computes Exposure Time")
|
||||
field(SCAN, ".1 second")
|
||||
field(INPA, "$(AI)")
|
||||
field(INPB, "$(P)SWITCH")
|
||||
field(INPC, "$(P)SHUTTER")
|
||||
field(INPD, "$(P)ACCTIME")
|
||||
field(CALC, "(B >= 1 && C == 0) ? D + 0.1 : D")
|
||||
field(OUT, "$(P)ACCTIME PP")
|
||||
field(OOPT, "On Change")
|
||||
field(DOPT, "Use CALC")
|
||||
}
|
||||
|
||||
record(ai, "$(P)ACCINT")
|
||||
{
|
||||
field(DESC, "Beam intensity accumulator")
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
}
|
||||
|
||||
record(calcout, "$(P)BEAMINT")
|
||||
{
|
||||
field(DESC, "Computes Beam Intensity")
|
||||
field(SCAN, "Passive")
|
||||
field(INPA, "$(AI) CP")
|
||||
field(INPB, "$(P)SWITCH")
|
||||
field(INPC, "$(P)SHUTTER")
|
||||
field(INPD, "$(P)ACCINT")
|
||||
field(CALC, "(B >= 1 && C = 0) ? D + A : D")
|
||||
field(OUT, "$(P)ACCINT PP")
|
||||
field(OOPT, "On Change")
|
||||
field(DOPT, "Use CALC")
|
||||
field(FLNK, "$(P)PRESET-COUNTER")
|
||||
}
|
||||
|
||||
record(ai, "$(P)PRESET")
|
||||
{
|
||||
field(DESC, "max intensity count preset")
|
||||
field(DTYP, "Soft Channel")
|
||||
field(LINR, "LINEAR")
|
||||
field(VAL, 0)
|
||||
}
|
||||
|
||||
record(calcout, "$(P)PRESET-COUNTER")
|
||||
{
|
||||
field(DESC, "auto stops measurement at preset")
|
||||
field(SCAN, "Passive")
|
||||
field(INPA, "$(P)BEAMINT")
|
||||
field(INPB, "$(P)SWITCH")
|
||||
field(INPC, "$(P)SHUTTER")
|
||||
field(INPD, "$(P)PRESET")
|
||||
field(CALC, "(B >= 1 && D > 0 && A >= D && C == 0) ? 0 : 1")
|
||||
field(OUT, "$(P)SWITCH PP")
|
||||
field(OOPT, "When Zero")
|
||||
field(DOPT, "Use CALC")
|
||||
}
|
||||
|
||||
record(calcout, "$(P)BEAMAVG")
|
||||
{
|
||||
field(SCAN, ".1 second")
|
||||
field(INPA, "$(P)ACCTIME")
|
||||
field(INPB, "$(P)ACCINT")
|
||||
field(CALC, "A > 0 ? B/A : 0")
|
||||
field(OOPT, "On Change")
|
||||
field(DOPT, "Use CALC")
|
||||
}
|
Reference in New Issue
Block a user