Skip to content

Commit

Permalink
Merge branch 'epics-modules:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
nmarks99 authored Jul 18, 2024
2 parents 1b6d12c + 65c5e45 commit 7f03d6b
Show file tree
Hide file tree
Showing 21 changed files with 26,014 additions and 9 deletions.
31 changes: 31 additions & 0 deletions ipApp/Db/Digitel_stream.db
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Database for Physical Electronics Digitel 500/1500 ion pump controllers using StreamDevice
# Digitel.db uses asyn record and does not work with pumps that embed a null character in the reply
record(ai,"$(P)$(PUMP)_Volts")
{
field(DTYP, "stream")
field(INP, "@Digitel_stream.proto readVI($(P)$(PUMP)) $(PORT)")
field(LOW, "3000")
field(LOLO, "500")
field(SCAN, "1 second")
}

record(ai,"$(P)$(PUMP)_Current")
{
field(LOW, "1.e-9")
field(LOLO, "1.e-9")
field(HIGH, "1.e-3")
field(HIHI, "1.e-2")
field(FLNK, "$(P)$(PUMP)_Pressure")
}

record(calc,"$(P)$(PUMP)_Pressure")
{
field(DESC, "Ion pump pressure")
field(CALC, ".005*A/8")
field(INPA, "$(P)$(PUMP)_Current.VAL NPP MS")
field(PREC, "1")
field(LOW, "1.e-9")
field(LOLO, "1.e-10")
field(HIGH, "1.e-6")
field(HIHI, "1.e-5")
}
15 changes: 15 additions & 0 deletions ipApp/Db/Digitel_stream.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Digitel_stream.proto

# Stream protocol file for Digital 500/1500 ion pump controllers

# Mark Rivers
# May 16, 2024

ExtraInput = Ignore;
ReadTimeout = 1000;

readVI {
out "RD";
in "%*s";
in "%*9c%fV%(\$1_Current)fI%*7c";
}
322 changes: 322 additions & 0 deletions ipApp/Db/InstekGPP.db
Original file line number Diff line number Diff line change
@@ -0,0 +1,322 @@
# InstekGPP.db - support for Intek GPP series power supplies
# - streamDevice support, uses InstekGPP.proto
#

record (stringin, "$(P)$(R)IDN") {
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getIDN $(PORT)")
}

record (stringin, "$(P)$(R)Error") {
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getError $(PORT)")
}

record(ai, "$(P)$(R)CH1_Vmeas") {
field(SCAN, "Passive")
field(DESC, "Ch1 Description")
field(PREC, "3")
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getAllmeas(1,$(P)$(R)CH1_Imeas) $(PORT)")
field(FLNK, "$(P)$(R)CH2_Vmeas")
}

record(ai, "$(P)$(R)CH1_Imeas") {
field(PREC, "3")
}

record(ai, "$(P)$(R)CH2_Vmeas") {
field(DESC, "Ch2 Description")
field(PREC, "3")
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getAllmeas(2,$(P)$(R)CH2_Imeas) $(PORT)")
field(FLNK, "$(P)$(R)CH1_Vset_rbk")
}

record(ai, "$(P)$(R)CH2_Imeas") {
field(PREC, "3")
}

record(ai, "$(P)$(R)CH1_Vset_rbk") {
field(PREC, "3")
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getVset($(P)$(R)CH2_Vset_rbk) $(PORT)")
field(FLNK, "$(P)$(R)CH1_Iset_rbk")
}

record(ai, "$(P)$(R)CH2_Vset_rbk") {
field(PREC, "3")
}

record(ai, "$(P)$(R)CH1_Iset_rbk") {
field(PREC, "3")
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getIset($(P)$(R)CH2_Iset_rbk) $(PORT)")
field(FLNK, "$(P)$(R)CH1_State")
}

record(ai, "$(P)$(R)CH2_Iset_rbk") {
field(PREC, "3")
}

record(bi, "$(P)$(R)CH1_State") {
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getOutState(1) $(PORT)")
field(ZNAM, "OFF")
field(ONAM, "ON")
field(ZSV, "NO_ALARM")
field(OSV, "MAJOR")
field(FLNK, "$(P)$(R)CH2_State")
}

record(bi, "$(P)$(R)CH2_State") {
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getOutState(2) $(PORT)")
field(ZNAM, "OFF")
field(ONAM, "ON")
field(ZSV, "NO_ALARM")
field(OSV, "MAJOR")
}

record (fanout, "$(P)$(R)Get_Limits") {
field(LNK1, "$(P)$(R)CH1_Vlimit PP NMS")
# field(LNK2, "$(P)$(R)CH2_Vlimit PP NMS")
}

record (ai, "$(P)$(R)CH1_Vlimit") {
field(PREC, "3")
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getCH1Vlim $(PORT)")
field(FLNK, "$(P)$(R)CH2_Vlimit")
}

record (ai, "$(P)$(R)CH2_Vlimit") {
field(PREC, "3")
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getCH2Vlim $(PORT)")
field(FLNK, "$(P)$(R)CH1_Ilimit")
}

record (ai, "$(P)$(R)CH1_Ilimit") {
field(PREC, "3")
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getCH1Ilim $(PORT)")
field(FLNK, "$(P)$(R)CH2_Ilimit")
}

record (ai, "$(P)$(R)CH2_Ilimit") {
field(PREC, "3")
field(DTYP, "stream")
field(INP, "@InstekGPP.proto getCH2Ilim $(PORT)")
}


record(bo, "$(P)$(R)CH1_OutState") {
field(DTYP, "stream")
field(OUT, "@InstekGPP.proto setOutState(1) $(PORT)")
field(ZNAM, "OFF")
field(ONAM, "ON")
field(ZSV, "NO_ALARM")
field(OSV, "MAJOR")
}

record(bo, "$(P)$(R)CH2_OutState") {
field(DTYP, "stream")
field(OUT, "@InstekGPP.proto setOutState(2) $(PORT)")
field(ZNAM, "OFF")
field(ONAM, "ON")
field(ZSV, "NO_ALARM")
field(OSV, "MAJOR")
}

record(ao, "$(P)$(R)CH1_Vset") {
field(PREC, "3")
field(HOPR, "30")
field(LOPR, "0")
field(DRVH, "30")
field(DRVL, "0")
field(DTYP, "stream")
field(OUT, "@InstekGPP.proto setVolt(1) $(PORT)")
}

record(ao, "$(P)$(R)CH2_Vset") {
field(PREC, "3")
field(HOPR, "30")
field(LOPR, "0")
field(DRVH, "30")
field(DRVL, "0")
field(DTYP, "stream")
field(OUT, "@InstekGPP.proto setVolt(2) $(PORT)")
}

record(ao, "$(P)$(R)CH1_Iset") {
field(PREC, "3")
field(HOPR, "3")
field(LOPR, "0")
field(DRVH, "3")
field(DRVL, "0")
field(DTYP, "stream")
field(OUT, "@InstekGPP.proto setCurrent(1) $(PORT)")
}

record(ao, "$(P)$(R)CH2_Iset") {
field(PREC, "3")
field(HOPR, "3")
field(LOPR, "0")
field(DRVH, "3")
field(DRVL, "0")
field(DTYP, "stream")
field(OUT, "@InstekGPP.proto setCurrent(2) $(PORT)")
}

record(ao,"$(P)$(R)CH1_V_TweakVal") {
field(PREC, "3")
}

record(calcout,"$(P)$(R)CH1_V_TweakUp") {
field(CALC, "A+B")
field(INPA, "$(P)$(R)CH1_Vset.VAL NPP MS")
field(INPB, "$(P)$(R)CH1_V_TweakVal.VAL NPP MS")
field(OUT, "$(P)$(R)CH1_Vset.VAL PP MS")
field(PREC, "3")
}

record(calcout,"$(P)$(R)CH1_V_TweakDown") {
field(CALC, "A-B")
field(INPA, "$(P)$(R)CH1_Vset.VAL NPP MS")
field(INPB, "$(P)$(R)CH1_V_TweakVal.VAL NPP MS")
field(OUT, "$(P)$(R)CH1_Vset.VAL PP MS")
field(PREC, "3")
}

record(ao,"$(P)$(R)CH1_I_TweakVal") {
field(PREC, "3")
}

record(calcout,"$(P)$(R)CH1_I_TweakUp") {
field(CALC, "A+B")
field(INPA, "$(P)$(R)CH1_Iset.VAL NPP MS")
field(INPB, "$(P)$(R)CH1_I_TweakVal.VAL NPP MS")
field(OUT, "$(P)$(R)CH1_Iset.VAL PP MS")
field(PREC, "3")
}

record(calcout,"$(P)$(R)CH1_I_TweakDown") {
field(CALC, "A-B")
field(INPA, "$(P)$(R)CH1_Iset.VAL NPP MS")
field(INPB, "$(P)$(R)CH1_I_TweakVal.VAL NPP MS")
field(OUT, "$(P)$(R)CH1_Iset.VAL PP MS")
field(PREC, "3")
}

record(ao,"$(P)$(R)CH2_V_TweakVal") {
field(PREC, "3")
}

record(calcout,"$(P)$(R)CH2_V_TweakUp") {
field(CALC, "A+B")
field(INPA, "$(P)$(R)CH2_Vset.VAL NPP MS")
field(INPB, "$(P)$(R)CH2_V_TweakVal.VAL NPP MS")
field(OUT, "$(P)$(R)CH2_Vset.VAL PP MS")
field(PREC, "3")
}

record(calcout,"$(P)$(R)CH2_V_TweakDown") {
field(CALC, "A-B")
field(INPA, "$(P)$(R)CH2_Vset.VAL NPP MS")
field(INPB, "$(P)$(R)CH2_V_TweakVal.VAL NPP MS")
field(OUT, "$(P)$(R)CH2_Vset.VAL PP MS")
field(PREC, "3")
}

record(ao,"$(P)$(R)CH2_I_TweakVal") {
field(PREC, "3")
}

record(calcout,"$(P)$(R)CH2_I_TweakUp") {
field(CALC, "A+B")
field(INPA, "$(P)$(R)CH2_Iset.VAL NPP MS")
field(INPB, "$(P)$(R)CH2_I_TweakVal.VAL NPP MS")
field(OUT, "$(P)$(R)CH2_Iset.VAL PP MS")
field(PREC, "3")
}

record(calcout,"$(P)$(R)CH2_I_TweakDown") {
field(CALC, "A-B")
field(INPA, "$(P)$(R)CH2_Iset.VAL NPP MS")
field(INPB, "$(P)$(R)CH2_I_TweakVal.VAL NPP MS")
field(OUT, "$(P)$(R)CH2_Iset.VAL PP MS")
field(PREC, "3")
}

record(ao, "$(P)$(R)CH1_Vlimit_Set") {
field(PREC, "3")
field(HOPR, "20.2")
field(LOPR, "0")
field(DRVH, "20.2")
field(DRVL, "0")
field(DTYP, "stream")
field(OUT, "@InstekGPP.proto setCH1Vlim $(PORT)")
field(FLNK, "$(P)$(R)CH1_Vlimit PP NMS")
}

record(ao, "$(P)$(R)CH2_Vlimit_Set") {
field(PREC, "3")
field(HOPR, "20.2")
field(LOPR, "0")
field(DRVH, "20.2")
field(DRVL, "0")
field(DTYP, "stream")
field(OUT, "@InstekGPP.proto setCH2Vlim $(PORT)")
field(FLNK, "$(P)$(R)CH2_Vlimit PP NMS")
}

record(ao, "$(P)$(R)CH1_Ilimit_Set") {
field(PREC, "3")
field(HOPR, "10.2")
field(LOPR, "0")
field(DRVH, "10.2")
field(DRVL, "0")
field(DTYP, "stream")
field(OUT, "@InstekGPP.proto setCH1Ilim $(PORT)")
field(FLNK, "$(P)$(R)CH1_Ilimit PP NMS")
}

record(ao, "$(P)$(R)CH2_Ilimit_Set") {
field(PREC, "3")
field(HOPR, "10.2")
field(LOPR, "0")
field(DRVH, "10.2")
field(DRVL, "0")
field(DTYP, "stream")
field(OUT, "@InstekGPP.proto setCH2Ilim $(PORT)")
field(FLNK, "$(P)$(R)CH2_Ilimit PP NMS")
}

record(scalcout, "$(P)$(R)CH1_Watts") {
field(PREC, "3")
field(INPA, "$(P)$(R)CH1_Vmeas CP NMS")
field(INPB, "$(P)$(R)CH1_Imeas CP NMS")
field(CALC, "A*B")
}

record(scalcout, "$(P)$(R)CH2_Watts") {
field(PREC, "3")
field(INPA, "$(P)$(R)CH2_Vmeas CP NMS")
field(INPB, "$(P)$(R)CH2_Imeas CP NMS")
field(CALC, "A*B")
}

record(scalcout, "$(P)$(R)CH1_Ohms") {
field(PREC, "3")
field(INPA, "$(P)$(R)CH1_Vmeas CP NMS")
field(INPB, "$(P)$(R)CH1_Imeas CP NMS")
field(CALC, "A/B")
}

record(scalcout, "$(P)$(R)CH2_Ohms") {
field(PREC, "3")
field(INPA, "$(P)$(R)CH2_Vmeas CP NMS")
field(INPB, "$(P)$(R)CH2_Imeas CP NMS")
field(CALC, "A/B")
}
Loading

0 comments on commit 7f03d6b

Please sign in to comment.