![]() |
![]() ![]()
Experimental Physics and
| ||||||||||||||||
|
This Message Is From an External Sender
This message came from outside your organization.
Hi Brad and Abdalla,
Thank you for your template and protocol files. I had to modify the files a little bit to make it work for MPCQ Pump. Best regards, Mrinal > On Feb 22, 2024, at 6:00 AM, Webb, Brad <webbsb at ornl.gov> wrote: > > Hi > > At SNS we use the DIGITEL QPC Controller from Gamma vacuum. > > We use the serial interface via a digi/moxa. > > Attached is our streamdevice interface (i.e., xxx.proto and > xxx.template) > > -Brad > > On Thu, 2024-02-22 at 00:50 +0000, Mrinal Bera via Tech-talk wrote: >> Did anybody write EPICS support for the following devices? 1) Gamma >> DIGITEL MPCQ Ion Pump >> Controller(https: //www. gammavacuum. com/products/digitel- >> controllers/3335/digitel-mpcq?number=MPCQ1PS1U1SSNI&c=17669) 2) >> Televac MX200 Vacuum Controller >> ZjQcmQRYFpfptBannerStart >> >> >> >> >> >> This Message Is From an External Sender >> >> >> >> This message came from outside your organization. >> >> >> >> >> >> >> >> ZjQcmQRYFpfptBannerEnd >> >> Did anybody write EPICS support for the following devices? >> 1) Gamma DIGITEL MPCQ Ion Pump >> Controller(https://www.gammavacuum.com/products/digitel-controllers/3335/digitel-mpcq?number=MPCQ1PS1U1SSNI&c=17669 >> ) >> 2) Televac MX200 Vacuum Controller >> (https://www.frederickscompany.com/products/mx200/) >> >> Thanks, >> Mrinal >> >> Mrinal Kanti Bera, PHD >> Beamline Scientist and Research Associate Professor >> NSF’s ChemMatCARS, Pritzker School of Molecular Engineering, >> The University of Chicago >> 9700 S. Cass Ave Bldg 434D >> Argonne, IL-60439 >> United States >> Phone: +1-630-252-0472 >> >> >> > record(stringin, "${P}:IP${N}:Model") { field(DTYP, "stream") field(INP, "@gamm1.proto getModel(${ADDR}) GAMC") field(SCAN, "1 second") } record(stringin, "${P}:IP${N}:FirmwareVersion") { field(DTYP, "stream") field(INP, "@gamm1.proto getFWV(${ADDR}) GAMC") field(SCAN, "1 second") } record(ai, "${P}:IP${N}:Current") { field(DTYP, "stream") field(INP, "@gamm1.proto getCurrent(${ADDR},${S1}) GAMC") field(SCAN, "1 second") field(PREC, "0") field(EGU, "AMPS") } record(ai, "${P}:IP${N}:Pressure") { field(DTYP, "stream") field(INP, "@gamm1.proto getPressure(${ADDR},${S1}) GAMC") field(SCAN, "1 second") field(PREC, "0") field(EGU, "Torr") } record(ai, "${P}:IP${N}:Voltage") { field(DTYP, "stream") field(INP, "@gamm1.proto getVoltage(${ADDR},${S1}) GAMC") field(SCAN, "1 second") field(PREC, "0") field(EGU, "VOLTS") } record(mbbi, "${P}:IP${N}:Status") { field(DTYP, "stream") field(INP, "@gamm1.proto getPumpStatus(${ADDR},${S1}) GAMC") field(SCAN, "1 second") field(ZRVL, "0") field(ONVL, "1") field(TWVL, "2") field(THVL, "3") field(FRVL, "4") #String Vals field(ZRST, "STANDBY") field(ONST, "STARTING") field(TWST, "RUNNING") field(THST, "COOLDOWN") field(FRST, "ERROR") #String Severities field(ZRSV, "NO_ALARM") field(ONSV, "MINOR") field(TWSV, "NO_ALARM") field(THSV, "MINOR") field(FRSV, "MAJOR") } record(ai, "${P}:IP${N}:PumpSize") { field(DTYP, "stream") field(INP, "@gamm1.proto getPumpSize(${ADDR},${S1}) GAMC") field(SCAN, "1 second") field(PREC, "0") field(EGU, "L/S") } record(ai, "${P}:IP${N}:PressureFactor") { field(DTYP, "stream") field(INP, "@gamm1.proto getPumpPressureFactor(${ADDR},${S1}) GAMC") field(SCAN, "1 second") field(PREC, "2") } record(stringin, "${P}:IP${N}:AutoRestart") { field(DTYP, "stream") field(INP, "@gamm1.proto getAutoRestartStr(${ADDR},${S1}) GAMC") field(SCAN, "1 second") } record(ai, "${P}:IP${N}:CurrentLimit") { field(DTYP, "stream") field(INP, "@gamm1.proto getPumpCurrentLimit(${ADDR},${S1}) GAMC") field(SCAN, "1 second") field(PREC, "0") field(EGU, "mA") } record(ai, "${P}:IP${N}:GetSetpoint") { field(DTYP, "stream") field(INP, "@gamm1.proto getSetpoint(${ADDR},${S1},${S2},${P},${N}) GAMC") field(SCAN, "1 second") field(PREC, "0") } record(ai, "${P}:IP${N}:Relay${S1}OnPressure") { field(EGU, "Torr") } record(ai, "${P}:IP${N}:Relay${S1}OffPressure") { field(EGU, "Torr") } record(ai, "${P}:IP${N}:Relay${S1}State") { } record(calcout, "${P}:IP${N}:Relay${S1}OnCalc") { field(DTYP, "stream") field(SCAN, "Passive") field(INPA, "${P}:IP${N}:Relay${S1}OnPressureSetpoint") field(INPB, "${P}:IP${N}:Relay${S1}OffPressure") field(CALC, "0") field(OUT, "@gamm1.proto SetSetpoint(${ADDR},${S1},${S2}) GAMC") } record(ao, "${P}:IP${N}:Relay${S1}OnPressureSetpoint") { field(FLNK, "${P}:IP${N}:Relay${S1}OnCalc") field(PREC, "2") } record(calcout, "${P}:IP${N}:Relay${S1}OffCalc") { field(DTYP, "stream") field(SCAN, "Passive") field(INPA, "${P}:IP${N}:Relay${S1}OnPressure") field(INPB, "${P}:IP${N}:Relay${S1}OffPressureSetpoint") field(CALC, "0") field(OUT, "@gamm1.proto SetSetpoint(${ADDR},${S1},${S2}) GAMC") } record(ao, "${P}:IP${N}:Relay${S1}OffPressureSetpoint") { field(FLNK, "${P}:IP${N}:Relay${S1}OffCalc") field(PREC, "2") } record(bo, "${P}:IP${N}:HighVoltageOn") { field(DTYP, "stream") field(OUT, "@gamm1.proto HvTurnOn(${ADDR},${S1}) GAMC") field(SCAN, "Passive") field(HIGH, "1") } record(bo, "${P}:IP${N}:HighVoltageOff") { field(DTYP, "stream") field(OUT, "@gamm1.proto HvTurnOff(${ADDR},${S1}) GAMC") field(SCAN, "Passive") field(HIGH, "1") } Terminator = CR; #InTerminator = LF; ReplyTimeout = 10000; ReadTimeout = 10000; #in "^[0-9]{2} OK 00 ([0-9]+.[a-zA-Z0-9-]+) (TORR|MBAR|PASCAL) [a-zA-Z0-9]{2}" #in "%*s%*s%*s%s%*s%*s"; #in "\$1 OK 00 %s QPC %0<sum8>"; getModel { out "~ \$1 01 %01.0<sum8>"; in "\$1 OK 00 %/DIGITEL QPC/ %0<sum8>"; } getFWV { out "~ \$1 02 %01.0<sum8>"; in "\$1 OK 00 FIRMWARE VERSION: %s %0<sum8>"; } getCurrent { out "~ \$1 0A \$2 %01.0<sum8>"; in "\$1 OK 00 %e %*s %0<sum8>"; } getPressure { out "~ \$1 0B \$2 %01.0<sum8>"; in "\$1 OK 00 %e %*s %0<sum8>"; } getVoltage { out "~ \$1 0C \$2 %01.0<sum8>"; in "\$1 OK 00 %d %0<sum8>"; } getPumpStatus { out "~ \$1 0D \$2,00 %01.0<sum8>"; in "\$1 OK 00 %d %0<sum8>"; } # ~ 08 11 1 00 # 08 OK 00 300 L/S 63 getPumpSize { out "~ \$1 11 \$2 %01.0<sum8>"; in "\$1 OK 00 %d %*s %0<sum8>"; } getPumpPressureFactor { out "~ \$1 1D \$2 %01.0<sum8>"; in "\$1 OK 00 %f %0<sum8>"; } getAutoRestartStr { out "~ \$1 34 \$2 %01.0<sum8>"; in "\$1 OK 00 %s %0<sum8>"; } getPumpCurrentLimit { out "~ \$1 43 \$2 %01.0<sum8>"; in "\$1 OK 00 %d %0<sum8>"; } getSetpoint { out "~ \$1 3b \$2 %01.0<sum8>"; in "\$1 OK 00 \$3,1,\$3,%(\$4:IP\$5:Relay\$2OnPressure)e,%(\$4:IP\$5:Relay\$2OffPressure)e,%(\$4:IP\$5:Relay\$2State)d %0<sum8>"; } SetSetpoint { out "~ \$1 3b \$3,1,\$3,%(A)e,%(B)e %01.0<sum8>"; in "\$1 OK 00 %0<sum8>"; } HvTurnOn { out "~ \$1 37 \$2 %01.0<sum8>"; in "\$1 OK 00 %0<sum8>"; } HvTurnOff { out "~ \$1 38 \$2 %01.0<sum8>"; in "\$1 OK 00 %0<sum8>"; }
| ||||||||||||||||
ANJ, 23 Feb 2024 |
![]() · Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |