std-rs 0.14.2

Rust port of EPICS std module (epid, throttle, timestamp records)
Documentation
grecord(epid,"$(P)$(PID)") {
        field(DTYP,"Async Soft Channel")
        field(INP,"$(INP) CA")
        field(OUTL,"$(OUT) PP")
        field(SCAN,"$(SCAN)")
        field(KP,"$(KP)")
        field(KI,"$(KI)")
        field(KD,"$(KD)")
        field(LOPR,"$(LOPR)")
        field(HOPR,"$(HOPR)")
        field(DRVL,"$(DRVL)")
        field(DRVH,"$(DRVH)")
        field(PREC,"$(PREC)")
        field(STPL,"0")
        field(FLNK,"$(P)$(PID)_limits.VAL PP NMS")
}
grecord(transform,"$(P)$(PID)_limits") {
        field(DESC,"PID limits")
        field(CMTA,"Low input")
        field(INPA,"$(DRVL)")
        field(CMTB,"High limit")
        field(INPB,"$(DRVH)")
        field(CMTO,"Low output")
        field(CLCO,"a")
        field(OUTO,"$(P)$(PID).DRVL NPP NMS")
        field(CMTP,"High output")
        field(CLCP,"b")
        field(OUTP,"$(P)$(PID).DRVH NPP NMS")
        field(PREC,"$(PREC)")
}
grecord(transform,"$(P)$(PID)_incalc") {
        field(DESC,"PID input calc")
        field(PREC,"$(PREC)")
}
grecord(transform,"$(P)$(PID)_outcalc") {
        field(DESC,"PID output calc")
        field(PREC,"$(PREC)")
}

# These records are for tweaking the output (if the feedback is off)
grecord(ao,"$(P)$(PID)OUT_tweak") {
        field(PREC,"3")
}

grecord(calcout,"$(P)$(PID)OUT_tweak_down") {
        field(INPA,"$(P)$(PID)OUT_tweak.VAL NPP NMS")
        field(INPB,"$(OUT) NPP NMS")
        field(CALC,"B-A")
        field(OUT, "$(OUT) PP NMS")
}

grecord(calcout,"$(P)$(PID)OUT_tweak_up") {
        field(INPA,"$(P)$(PID)OUT_tweak.VAL NPP NMS")
        field(INPB,"$(OUT) NPP NMS")
        field(CALC,"B+A")
        field(OUT, "$(OUT) PP NMS")
}

# These records are for tweaking the setpoint
grecord(ao,"$(P)$(PID)SP_tweak") {
        field(PREC,"3")
}

grecord(calcout,"$(P)$(PID)SP_tweak_down") {
        field(INPA,"$(P)$(PID)SP_tweak.VAL NPP NMS")
        field(INPB,"$(P)$(PID).VAL NPP NMS")
        field(CALC,"B-A")
        field(OUT, "$(P)$(PID).VAL PP NMS")
}

grecord(calcout,"$(P)$(PID)SP_tweak_up") {
        field(INPA,"$(P)$(PID)SP_tweak.VAL NPP NMS")
        field(INPB,"$(P)$(PID).VAL NPP NMS")
        field(CALC,"B+A")
        field(OUT, "$(P)$(PID).VAL PP NMS")
}

# STOP logic
# This record turns off feedback
grecord(ao,"$(P)$(PID)Stop") {
        field(VAL,"0")
        field(OUT, "$(P)$(PID).FBON PP NMS")
        field(FLNK,"$(P)$(PID)Stop2")
}

# This record turns off the output
grecord(ao,"$(P)$(PID)Stop2") {
        field(VAL,"0.0")
        field(OUT, "$(OUT) PP NMS")
}