EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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 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
<== Date ==> <== Thread ==>

Subject: Re: [EXTERNAL] Epics support for DIGITEL MPCQ Ion Pump Controller and Televac MX 200 Vacuum Controller
From: "Webb, Brad via Tech-talk" <tech-talk at aps.anl.gov>
To: "mrinalkb at uchicago.edu" <mrinalkb at uchicago.edu>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Thu, 22 Feb 2024 12:00:16 +0000
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
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
 
ZjQcmQRYFpfptBannerEnd
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>";
}











Replies:
Re: [EXTERNAL] Epics support for DIGITEL MPCQ Ion Pump Controller and Televac MX 200 Vacuum Controller Mrinal Bera via Tech-talk
References:
Epics support for DIGITEL MPCQ Ion Pump Controller and Televac MX 200 Vacuum Controller Mrinal Bera via Tech-talk

Navigate by Date:
Prev: How to read array value with Channel Access compound data types Wang, Lin via Tech-talk
Next: Any chance people can get rid of this extra "feature" Maren Purves 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
Navigate by Thread:
Prev: RE: Epics support for DIGITEL MPCQ Ion Pump Controller and Televac MX 200 Vacuum Controller Abdalla Ahmad via Tech-talk
Next: Re: [EXTERNAL] Epics support for DIGITEL MPCQ Ion Pump Controller and Televac MX 200 Vacuum Controller Mrinal Bera 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
ANJ, 22 Feb 2024 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·