![]() |
![]() ![]()
Experimental Physics and
| ||||||||||||||
|
This Message Is From an External Sender
This message came from outside your organization.
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://urldefense.us/v3/__https://www.gammavacuum.com/products/digitel-controllers/3335/digitel-mpcq?number=MPCQ1PS1U1SSNI&c=17669__;!!G_uCfscf7eWS!f8Q0x8Sls4WxlAYUtpjvd_eo8qBt8H5h0wQ9juV7-pF2qIeBYoV1fN16PfTDPlKmDrKG3zD1vUBImH6XruCN$ > ) > 2) Televac MX200 Vacuum Controller > (https://urldefense.us/v3/__https://www.frederickscompany.com/products/mx200/__;!!G_uCfscf7eWS!f8Q0x8Sls4WxlAYUtpjvd_eo8qBt8H5h0wQ9juV7-pF2qIeBYoV1fN16PfTDPlKmDrKG3zD1vUBImIAkN4EW$) > > 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, 22 Feb 2024 |
![]() · Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |