reformat, cleanup/simplify

This commit is contained in:
2025-11-03 16:44:51 +01:00
parent c03467a7ed
commit 42e23ac312
2 changed files with 69 additions and 156 deletions

View File

@@ -37,16 +37,16 @@ record(bi,"$(P)VALID")
record(waveform, "$(P)META") {
field(DTYP, "Soft Channel")
field(FTVL, "CHAR")
field(NELM, "16000")
field(SCAN, "Passive")
field(DTYP, "Soft Channel")
field(FTVL, "CHAR")
field(NELM, "16000")
field(SCAN, "Passive")
}
record(waveform, "$(P)FILE") {
field(DTYP, "Soft Channel")
field(FTVL, "CHAR")
field(NELM, "1024")
field(SCAN, "Passive")
field(DTYP, "Soft Channel")
field(FTVL, "CHAR")
field(NELM, "1024")
field(SCAN, "Passive")
}

View File

@@ -8,184 +8,97 @@
# 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")
record(bi, "$(P)SWITCH") {
field(DTYP,"Soft Channel")
field(ZNAM,"Low")
field(ONAM,"High")
# Enable by default, until we have something to interface with
field(VAL, 0)
}
# This is an accumulator for the beam intensity integral
record(ai, "$(P)ACCINT")
{
field(DTYP, "Soft Channel")
field(LINR, "LINEAR")
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")
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")
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")
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")
record(ai, "$(P)BEAMCOPY") {
field(SCAN, "1 second")
field(DTYP, "Soft Channel")
field(INP, "$(AI)")
}
# This record computes the total exposure time
# (gated by the SWITCH and SHUTTER signals)
record(calcout, "$(P)EXPTIME")
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 PP")
field(OOPT,"On Change")
field(DOPT,"Use CALC")
}
{
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 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 PP")
field(OOPT,"On Change")
field(DOPT,"Use CALC")
field(FLNK, "$(P)BEAMAVG")
}
# 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")
record(calcout, "$(P)BEAMAVG") {
field(INPA,"$(P)EXPTIME")
field(INPB,"$(P)BEAMINT")
field(INPC,"$(P)LASTAVG")
field(CALC,"A > 0 ? B/A : C")
field(OUT,"$(P)LASTAVG PP")
field(OOPT,"On Change")
field(DOPT,"Use CALC")
field(FLNK, "$(P)AUX")
}
# 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")
record(calcout, "$(P)AUX") {
field(INPA,"$(P)BEAMAVG")
field(INPB,"$(P)THRES")
field(CALC,"A >= B ? 1 : 0")
field(OUT,"$(CAM)AUX PP")
field(DOPT,"Use CALC")
}