Experimental Physics and Industrial Control System
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@ ornl. gov> wrote: >
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
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>";
}
- Replies:
- Re: [EXTERNAL] Epics support for DIGITEL MPCQ Ion Pump Controller and Televac MX 200 Vacuum Controller Smith, Martin via Tech-talk
- References:
- Epics support for DIGITEL MPCQ Ion Pump Controller and Televac MX 200 Vacuum Controller Mrinal Bera via Tech-talk
- Re: [EXTERNAL] Epics support for DIGITEL MPCQ Ion Pump Controller and Televac MX 200 Vacuum Controller Webb, Brad via Tech-talk
- Navigate by Date:
- Prev:
Re: Any chance people can get rid of this extra "feature" Johnson, Andrew N. via Tech-talk
- Next:
Re: EPICS PLC5 Support Ralph Lange via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
<2024>
2025
- Navigate by Thread:
- Prev:
Re: [EXTERNAL] Epics support for DIGITEL MPCQ Ion Pump Controller and Televac MX 200 Vacuum Controller Webb, Brad via Tech-talk
- Next:
Re: [EXTERNAL] Epics support for DIGITEL MPCQ Ion Pump Controller and Televac MX 200 Vacuum Controller Smith, Martin via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
<2024>
2025