optics-rs 0.18.4

Rust port of EPICS synApps optics module
Documentation
#! Generated by VisualDCT v2.5
#! DBDSTART
#! DBD("../../../xxx/dbd/iocxxxVX.dbd")
#! DBDEND


record(motor, "$(P)MOT") {
  field(OUT, "$(P)moveCF.A PP")
  field(DTYP, "Soft Channel")
  field(RDBL, "$(P)RBV")
  field(MRES, ".0001")
  field(RRES, "1")
  field(URIP, "Yes")
  field(PREC, "5")
  field(DHLM, "100")
  field(DLLM, "-100")
  field(RDBD, "0")
  field(STOO, "$(P)stopCF PP")
  field(DINP, "$(P)doneCalc")
  field(NTM, "NO")
}

# Calculate useful quantities from raw
# coarse/fine motor fields.  Get absolute
# values of motor resolutions; calculate
# max achievable coarse/fine positions,
# taking motor resolutions and backlash
# distances into account; calc total
# min/max of combined coarse+fine.
record(transform, "$(P)limitProc") {
  field(CLCI, "abs(A)")
  field(CLCJ, "ceil((C+abs(B))/I)*I")
  field(CLCK, "floor((D-abs(B))/I)*I")
  field(CLCL, "abs(E)")
  field(CLCM, "ceil((G+abs(F))/L)*L")
  field(CLCN, "floor((H-abs(F))/L)*L")
  field(CLCO, "J+M")
  field(INPA, "$(PM)$(CM).MRES CP")
  field(INPB, "$(PM)$(CM).BDST CP")
  field(INPC, "$(PM)$(CM).LLM CP")
  field(INPD, "$(PM)$(CM).HLM CP")
  field(INPE, "$(PM)$(FM).MRES CP")
  field(INPF, "$(PM)$(FM).BDST CP")
  field(INPG, "$(PM)$(FM).LLM CP")
  field(INPH, "$(PM)$(FM).HLM CP")
  field(CMTA, "Coarse MRES")
  field(CMTB, "Coarse BL dist")
  field(CMTC, "Coarse low limit")
  field(CMTD, "Coarse high limit")
  field(CMTE, "Fine MRES")
  field(CMTF, "Fine BL dist")
  field(CMTG, "Fine low limit")
  field(CMTH, "Fine high limit")
  field(CMTI, "Coarse resolution")
  field(CMTJ, "Coarse min")
  field(CMTK, "Coarse max")
  field(CMTL, "Fine resolution")
  field(CMTM, "Fine min")
  field(CMTN, "Fine max")
  field(CMTO, "Combined min")
  field(CMTP, "Combined max")
  field(CLCP, "K+N")
  field(OUTP, "$(P)MOT.HLM")
  field(PREC, "5")
  field(OUTO, "$(P)MOT.LLM")
}

record(dfanout, "$(P)stopCF") {
  field(OUTA, "$(PM)$(CM).STOP PP")
  field(OUTB, "$(PM)$(FM).STOP PP")
}

record(calcout, "$(P)RBV") {
  field(CALC, "A+B")
  field(INPA, "$(PM)$(CM).RBV CP")
  field(INPB, "$(PM)$(FM).RBV CP")
  field(PREC, "5")
}

record(calcout, "$(P)fineModeCalc") {
  field(CALC, "a>0?min(a,3):B>=0?1:2")
  field(INPA, "$(P)mode.VAL CP")
  field(INPB, "$(PM)$(FM).BDST CP")
}

record(calcout, "$(P)doneCalc") {
  field(CALC, "a&&b&&c")
  field(INPA, "$(PM)$(CM).DMOV CP")
  field(INPB, "$(P)gate CP")
  field(INPC, "$(PM)$(FM).DMOV CP")
  field(OOPT, "Every Time")
}

record(transform, "$(P)moveCF") {
  field(CLCD, "(B+C)/2")
  field(CLCH, "(a-g)>c||(a-g)<b?@e:a-g")
  field(CLCI, "floor((a-h)/f)*f")
  field(CLCJ, "ceil((a-h)/f)*f")
  field(CLCK, "nint((a-h)/f)*f")
  field(CLCL, "0")
  field(CLCM, "max(O,min(P,@(E+7)))")
  field(CLCN, "A-M")
  field(INPB, "$(P)limitProc.M NPP NMS")
  field(INPC, "$(P)limitProc.N NPP NMS")
  field(INPE, "$(P)fineModeCalc")
  field(INPF, "$(P)limitProc.I NPP NMS")
  field(INPG, "$(PM)$(CM).VAL")
  field(INPO, "$(P)limitProc.J NPP NMS")
  field(INPP, "$(P)limitProc.K NPP NMS")
  field(OUTL, "$(P)gate PP")
  field(OUTM, "$(PM)$(CM) PP")
  field(OUTN, "$(PM)$(FM) PP")
  field(PREC, "5")
  field(CMTA, "desired position")
  field(CMTB, "Fmin")
  field(CMTC, "Fmax")
  field(CMTD, "Fmid")
  field(CMTE, "fineMode")
  field(CMTF, "Cres")
  field(CMTG, "Current coarse")
  field(CMTH, "Fine try")
  field(CMTI, "Coarse (FMIN)")
  field(CMTJ, "Coarse (FMAX)")
  field(CMTK, "Coarse (FMID)")
  field(CMTL, "gate")
  field(CMTM, "Coarse")
  field(CMTN, "Fine")
  field(CMTO, "Cmin")
  field(CMTP, "Cmax")
}

record(mbbo, "$(P)mode") {
  field(ZRVL, "0")
  field(ONVL, "1")
  field(NOBT, "2")
  field(TWVL, "2")
  field(THVL, "3")
  field(ZRST, "AUTO")
  field(ONST, "FINE SCAN+")
  field(TWST, "FINE SCAN-")
  field(THST, "FINE WANDER")
}

record(bo, "$(P)gate") {
  field(UDF, "0")
  field(DOL, "1")
  field(ZNAM, "moving")
  field(ONAM, "done")
}

record(calcout, "$(P)closeGate") {
  field(CALC, "a")
  field(INPA, "$(PM)$(FM).DMOV CP")
  field(OUT, "$(P)gate PP")
  field(OOPT, "Transition To Non-zero")
}


record(transform, "$(P)MOT_ableput") {
  field(CLCB, "a")
  field(CLCC, "a")
  field(OUTA, "$(P)MOT.DISA")
  field(OUTB, "$(P)MOT.DISP")
  field(OUTC, "$(P)MOT.DISA")
}

record(bo, "$(P)MOT_able") {
  field(DESC, "motor enable")
  field(PINI, "YES")
  field(OUT, "$(P)MOT_ableput.A PP MS")
  field(ZNAM, "Enable")
  field(ONAM, "Disable")
}

#! Further lines contain data used by VisualDCT
#! View(978,766,1.1)
#! Record("$(P)MOT",1340,861,0,1,"$(P)MOT")
#! Field("$(P)MOT.DISA",16777215,0,"$(P)MOT.DISA")
#! Field("$(P)MOT.DISP",16777215,0,"$(P)MOT.DISP")
#! Field("$(P)MOT.STOO",16777215,1,"$(P)MOT.STOO")
#! Link("$(P)MOT.STOO","$(P)stopCF.VAL")
#! Field("$(P)MOT.OUT",16777215,1,"$(P)MOT.OUT")
#! Link("$(P)MOT.OUT","$(P)MOT/OUT")
#! Field("$(P)MOT.DINP",16777215,0,"$(P)MOT.DINP")
#! Link("$(P)MOT.DINP","$(P)MOT/DINP1")
#! Field("$(P)MOT.RDBL",16777215,0,"$(P)MOT.RDBL")
#! Link("$(P)MOT.RDBL","$(P)RBV.VAL")
#! Field("$(P)MOT.LLM",16777215,0,"$(P)MOT.LLM")
#! Field("$(P)MOT.HLM",16777215,0,"$(P)MOT.HLM")
#! Connector("$(P)MOT/DINP1","$(P)MOT/DINP",1260,1105,16777215,"",0)
#! Connector("$(P)MOT/DINP","$(P)MOT/DINP2",1860,1020,16777215,"",0)
#! Connector("$(P)MOT/DINP2","$(P)doneCalc.VAL",2460,1245,16777215,"",0)
#! Connector("$(P)MOT/OUT","$(P)moveCF.A",1580,1250,16777215,"",0)
#! Record("$(P)limitProc",1020,1013,0,1,"$(P)limitProc")
#! Field("$(P)limitProc.INPA",16777215,0,"$(P)limitProc.INPA")
#! Link("$(P)limitProc.INPA","$(P)limitProc/INPA")
#! Field("$(P)limitProc.INPB",16777215,0,"$(P)limitProc.INPB")
#! Link("$(P)limitProc.INPB","$(P)limitProc/INPB")
#! Field("$(P)limitProc.INPC",16777215,0,"$(P)limitProc.INPC")
#! Link("$(P)limitProc.INPC","$(P)limitProc/INPC")
#! Field("$(P)limitProc.INPD",16777215,0,"$(P)limitProc.INPD")
#! Link("$(P)limitProc.INPD","$(P)limitProc/INPD")
#! Field("$(P)limitProc.INPE",16777215,0,"$(P)limitProc.INPE")
#! Link("$(P)limitProc.INPE","$(P)limitProc/INPE")
#! Field("$(P)limitProc.INPF",16777215,0,"$(P)limitProc.INPF")
#! Link("$(P)limitProc.INPF","$(P)limitProc/INPF")
#! Field("$(P)limitProc.INPG",16777215,0,"$(P)limitProc.INPG")
#! Link("$(P)limitProc.INPG","$(P)limitProc/INPG")
#! Field("$(P)limitProc.INPH",16777215,0,"$(P)limitProc.INPH")
#! Link("$(P)limitProc.INPH","$(P)limitProc/INPH")
#! Field("$(P)limitProc.I",16777215,1,"$(P)limitProc.I")
#! Field("$(P)limitProc.J",16777215,1,"$(P)limitProc.J")
#! Field("$(P)limitProc.K",16777215,1,"$(P)limitProc.K")
#! Field("$(P)limitProc.M",16777215,1,"$(P)limitProc.M")
#! Field("$(P)limitProc.N",16777215,1,"$(P)limitProc.N")
#! Field("$(P)limitProc.OUTO",16777215,0,"$(P)limitProc.OUTO")
#! Link("$(P)limitProc.OUTO","$(P)limitProc/OUTO")
#! Field("$(P)limitProc.OUTP",16777215,0,"$(P)limitProc.OUTP")
#! Link("$(P)limitProc.OUTP","$(P)limitProc/OUTP")
#! Connector("$(P)limitProc/INPH",null,960,1740,16777215,"",3)
#! Connector("$(P)limitProc/INPG",null,960,1720,16777215,"",3)
#! Connector("$(P)limitProc/INPF",null,960,1700,16777215,"",3)
#! Connector("$(P)limitProc/INPE",null,960,1680,16777215,"",3)
#! Connector("$(P)limitProc/INPD",null,960,1660,16777215,"",3)
#! Connector("$(P)limitProc/INPC",null,960,1640,16777215,"",3)
#! Connector("$(P)limitProc/INPB",null,960,1620,16777215,"",3)
#! Connector("$(P)limitProc/INPA",null,960,1600,16777215,"",3)
#! Connector("$(P)limitProc/OUTP","$(P)MOT.HLM",1260,1550,16777215,"",0)
#! Connector("$(P)limitProc/OUTO","$(P)MOT.LLM",1240,1530,16777215,"",0)
#! Visibility("$(P)limitProc.CMTI",1)
#! Visibility("$(P)limitProc.CMTJ",1)
#! Visibility("$(P)limitProc.CMTK",1)
#! Visibility("$(P)limitProc.CMTM",1)
#! Visibility("$(P)limitProc.CMTN",1)
#! Record("$(P)stopCF",1640,1015,0,1,"$(P)stopCF")
#! Field("$(P)stopCF.VAL",16777215,0,"$(P)stopCF.VAL")
#! Field("$(P)stopCF.OUTA",16777215,1,"$(P)stopCF.OUTA")
#! Link("$(P)stopCF.OUTA","$(P)stopCF/OUTA")
#! Field("$(P)stopCF.OUTB",16777215,1,"$(P)stopCF.OUTB")
#! Link("$(P)stopCF.OUTB","$(P)stopCF/OUTB")
#! Connector("$(P)stopCF/OUTB",null,1860,1160,16777215,"",2)
#! Connector("$(P)stopCF/OUTA",null,1860,1140,16777215,"",2)
#! Record("$(P)RBV",1020,1087,0,1,"$(P)RBV")
#! Field("$(P)RBV.VAL",16777215,1,"$(P)RBV.VAL")
#! Field("$(P)RBV.INPA",16777215,0,"$(P)RBV.INPA")
#! Link("$(P)RBV.INPA","$(P)RBV/INPA")
#! Field("$(P)RBV.INPB",16777215,0,"$(P)RBV.INPB")
#! Link("$(P)RBV.INPB","$(P)RBV/INPB")
#! Connector("$(P)RBV/INPB",null,960,1240,16777215,"",3)
#! Connector("$(P)RBV/INPA",null,960,1220,16777215,"",3)
#! Record("$(P)fineModeCalc",1020,1281,0,1,"$(P)fineModeCalc")
#! Field("$(P)fineModeCalc.INPA",16777215,0,"$(P)fineModeCalc.INPA")
#! Link("$(P)fineModeCalc.INPA","$(P)mode.VAL")
#! Field("$(P)fineModeCalc.VAL",16777215,1,"$(P)fineModeCalc.VAL")
#! Field("$(P)fineModeCalc.INPB",16777215,0,"$(P)fineModeCalc.INPB")
#! Link("$(P)fineModeCalc.INPB","$(P)fineModeCalc/INPB")
#! Connector("$(P)fineModeCalc/INPB",null,960,1440,16777215,"",3)
#! Record("$(P)doneCalc",2240,1333,0,1,"$(P)doneCalc")
#! Field("$(P)doneCalc.VAL",16777215,1,"$(P)doneCalc.VAL")
#! Field("$(P)doneCalc.INPA",16777215,0,"$(P)doneCalc.INPA")
#! Link("$(P)doneCalc.INPA","$(P)doneCalc/INPA")
#! Field("$(P)doneCalc.INPB",16777215,0,"$(P)doneCalc.INPB")
#! Link("$(P)doneCalc.INPB","$(P)gate.VAL")
#! Field("$(P)doneCalc.INPC",16777215,0,"$(P)doneCalc.INPC")
#! Link("$(P)doneCalc.INPC","$(P)doneCalc/INPC")
#! Connector("$(P)doneCalc/INPC",null,2180,1560,16777215,"",3)
#! Connector("$(P)doneCalc/INPA",null,2160,1540,16777215,"",3)
#! Record("$(P)moveCF",1640,773,0,1,"$(P)moveCF")
#! Field("$(P)moveCF.A",16777215,0,"$(P)moveCF.A")
#! Field("$(P)moveCF.INPB",16777215,0,"$(P)moveCF.INPB")
#! Link("$(P)moveCF.INPB","$(P)moveCF/INPB")
#! Field("$(P)moveCF.INPC",16777215,0,"$(P)moveCF.INPC")
#! Link("$(P)moveCF.INPC","$(P)moveCF/INPC")
#! Field("$(P)moveCF.INPE",16777215,0,"$(P)moveCF.INPE")
#! Link("$(P)moveCF.INPE","$(P)fineModeCalc.VAL")
#! Field("$(P)moveCF.INPF",16777215,0,"$(P)moveCF.INPF")
#! Link("$(P)moveCF.INPF","$(P)moveCF/INPF")
#! Field("$(P)moveCF.INPG",16777215,0,"$(P)moveCF.INPG")
#! Link("$(P)moveCF.INPG","$(P)moveCF/INPG")
#! Field("$(P)moveCF.INPO",16777215,0,"$(P)moveCF.INPO")
#! Link("$(P)moveCF.INPO","$(P)moveCF/INPO")
#! Field("$(P)moveCF.INPP",16777215,0,"$(P)moveCF.INPP")
#! Link("$(P)moveCF.INPP","$(P)moveCF/INPP")
#! Field("$(P)moveCF.OUTL",16777215,1,"$(P)moveCF.OUTL")
#! Link("$(P)moveCF.OUTL","$(P)moveCF/OUTL")
#! Field("$(P)moveCF.OUTM",16777215,0,"$(P)moveCF.OUTM")
#! Link("$(P)moveCF.OUTM","$(P)moveCF/OUTM")
#! Field("$(P)moveCF.OUTN",16777215,0,"$(P)moveCF.OUTN")
#! Link("$(P)moveCF.OUTN","$(P)moveCF/OUTN")
#! Connector("$(P)moveCF/INPC","$(P)limitProc.N",1360,1590,16777215,"",0)
#! Connector("$(P)moveCF/INPB","$(P)limitProc.M",1340,1570,16777215,"",0)
#! Connector("$(P)moveCF/OUTN",null,1880,1560,16777215,"",2)
#! Connector("$(P)moveCF/OUTM",null,1880,1540,16777215,"",2)
#! Connector("$(P)moveCF/OUTL","$(P)gate.VAL",1900,1500,16777215,"",0)
#! Connector("$(P)moveCF/INPP","$(P)limitProc.K",1420,1620,16777215,"",0)
#! Connector("$(P)moveCF/INPO","$(P)limitProc.J",1400,1600,16777215,"",0)
#! Connector("$(P)moveCF/INPG",null,1580,1460,16777215,"",3)
#! Connector("$(P)moveCF/INPF","$(P)limitProc.I",1380,1570,16777215,"",0)
#! Record("$(P)mode",760,1197,0,1,"$(P)mode")
#! Field("$(P)mode.VAL",16777215,1,"$(P)mode.VAL")
#! Record("$(P)gate",1960,1387,0,1,"$(P)gate")
#! Field("$(P)gate.VAL",16777215,1,"$(P)gate.VAL")
#! Record("$(P)closeGate",1940,1147,0,1,"$(P)closeGate")
#! Field("$(P)closeGate.INPA",16777215,0,"$(P)closeGate.INPA")
#! Link("$(P)closeGate.INPA","$(P)closeGate/INPA")
#! Field("$(P)closeGate.OUT",16777215,1,"$(P)closeGate.OUT")
#! Link("$(P)closeGate.OUT","$(P)closeGate/OUT2")
#! Connector("$(P)closeGate/OUT2","$(P)closeGate/OUT1",2180,1345,16777215,"",0)
#! Connector("$(P)closeGate/OUT1","$(P)closeGate/OUT",2040,1400,16777215,"",0)
#! Connector("$(P)closeGate/OUT","$(P)gate.VAL",1900,1455,16777215,"",0)
#! Connector("$(P)closeGate/INPA",null,1880,1260,16777215,"",3)
#! Record("$(P)MOT_ableput",980,927,0,0,"$(P)MOT_ableput")
#! Field("$(P)MOT_ableput.A",0,1,"$(P)MOT_ableput.A")
#! Field("$(P)MOT_ableput.OUTA",16777215,1,"$(P)MOT_ableput.OUTA")
#! Link("$(P)MOT_ableput.OUTA","$(P)MOT.DISA")
#! Field("$(P)MOT_ableput.OUTC",16777215,1,"$(P)MOT_ableput.OUTC")
#! Link("$(P)MOT_ableput.OUTC","$(P)MOT.DISA")
#! Field("$(P)MOT_ableput.OUTB",16777215,1,"$(P)MOT_ableput.OUTB")
#! Link("$(P)MOT_ableput.OUTB","$(P)MOT_ableput/OUTB")
#! Connector("$(P)MOT_ableput/OUTB","$(P)MOT.DISP",1220,1120,16777215,"",0)
#! Visibility("$(P)MOT_ableput.CLCB",2)
#! Record("$(P)MOT_able",740,982,0,0,"$(P)MOT_able")
#! Field("$(P)MOT_able.OUT",0,1,"$(P)MOT_able.OUT")
#! Link("$(P)MOT_able.OUT","$(P)MOT_ableput.A")
#! Visibility("$(P)MOT_able.DESC",2)
#! Visibility("$(P)MOT_able.PINI",2)
#! Visibility("$(P)MOT_able.OUT",2)
#! Visibility("$(P)MOT_able.ZNAM",2)
#! Visibility("$(P)MOT_able.ONAM",2)