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

Subject: Re: Support for Pfeiffer HiPace with TC400 control unit
From: Florian Feldbauer via Tech-talk <[email protected]>
To: [email protected]
Date: Tue, 9 Dec 2025 14:56:07 +0100
Hey Heinz,

sometime ago I wrote a generic protocol file for Pfeiffer Vacuum devices.
We use this protocol for our digital vacuum gauges as well as our turbo pumps.

Attached is my DB and proto files.

HTH,
Florian


On 12/9/25 13:40, Heinz Junkes (FHI) via Tech-talk wrote:
Hi,
I am looking for device support (db, proto) for Pfeifer Turbopump HiPace with TC400 control unit.
Danke Heinz
------------------------------------------------------------------------------
Fritz-Haber-Institut  | Phone: (+49 30) 8413-4270
Heinz Junkes          | VC: https://urldefense.us/v3/__https://zoom.fhi.berlin/junkes__;!!G_uCfscf7eWS!bkS3Wy3BeGemnQUbNfRJmV7moXTQsV2X0cxP6JxSK84vvNTGrYHDp5_CmTW0Lou2AkuK82Hx9-Xhr3ZE1rSDPYMQruoI$
Faradayweg 4-6        | Visitors: Hittorfstrasse 29 (Bld S (Slough House) )
D - 14195 Berlin
------------------------------------------------------------------------------
“Sorry I’m a bit late, had a terrible time…
All sort of things cropping up at the last moment. Uh, how are we for time?”
—Zarquon's address to Milliways

--
Ruhr-Universität Bochum
AG der Experimentalphysik I
Dr. Florian Feldbauer
NB 2/131 / Fach 125
Universitätsstr. 150
D-44801 Bochum

Office: NB 2/134
Phone:  (+49)234 / 32-23563
Fax:    (+49)234 / 32-14170
https://urldefense.us/v3/__https://paluma.ruhr-uni-bochum.de__;!!G_uCfscf7eWS!frIie2W9R3ok_C8n7qQx4UI66t9aZwbmZrn1wEyeIVnZdBDauuJ-opHNinwAlSaQqRHpqp5vYNaauGar4FwH4XVkJz0yAJuw3xg$
#################################################
# ###                                       ### #
# ### StreamDevice Protocol for             ### #
# ### Pfeiffer Vacuum Protocol              ### #
# ###                                       ### #
# ### author: F.Feldbauer                   ### #
# ###                                       ### #
# ### Ref 1.0; 2020-10-29                   ### #
#################################################

###################
# ### Globals ### #
###################
Terminator   = CR;
LockTimeout  = 5000;
ReplyTimeout = 500;
ReadTimeout  = 500;
WriteTimeout = 300;
ExtraInput   = Ignore;

#####################
# ### Protocols ### #
#####################

readBoolOld {
  # read old boolean format (Pfeiffer data type 0) from device
  # Example of command:
  # field (INP, "@pfeiffer_tc400.proto readBoolOld($(ADD),$(OPCODE)) $(PORT)")

  out "\${1}00\${2}02=?%+<sum8>";
  in  "\${1}10\${2}06%{000000|111111}%+<sum8>";
}

readInt {
  # read integer (Pfeiffer data type 1/2) from device
  # Example of command:
  # field (INP, "@pfeiffer_tc400.proto readInt($(ADD),$(OPCODE)) $(PORT)")

  out "\${1}00\${2}02=?%+<sum8>";
  in  "\${1}10\${2}06%06u%+<sum8>";
}

readExpo {
  # read exponential (Pfeiffer data type 3) from device
  # Example of command:
  # field (INP, "@pfeiffer_tc400.proto readExpo($(ADD),$(OPCODE)) $(PORT)")

  out "\${1}00\${2}02=?%+<sum8>";
  in  "\${1}10\${2}06%?6E%+<sum8>";
  @mismatch{
    in  "\${1}10\${2}06>  %03E%+<sum8>";
  }
}

readString {
  # read string (Pfeiffer data type 4) from device
  # Example of command:
  # field (INP, "@pfeiffer_tc400.proto readString($(ADD),$(OPCODE)) $(PORT)")

  out "\${1}00\${2}02=?%+<sum8>";
  in  "\${1}10\${2}06%#6s%+<sum8>";
}

readBoolNew {
  # read new boolean format (Pfeiffer data type 6) from device
  # Example of command:
  # field (INP, "@pfeiffer_tc400.proto readBoolNew($(ADD),$(OPCODE)) $(PORT)")

  out "\${1}00\${2}02=?%+<sum8>";
  in  "\${1}10\${2}01%{0|1}%+<sum8>";
}

readShort {
  # read short int (Pfeiffer data type 7) from device
  # Example of command:
  # field (INP, "@pfeiffer_tc400.proto readShort($(ADD),$(OPCODE)) $(PORT)")

  out "\${1}00\${2}02=?%+<sum8>";
  in  "\${1}10\${2}03%03u%+<sum8>";
}

readExpoNew {
  # read exponential (Pfeiffer data type 10) from device
  # Example of command:
  # field (INP, "@pfeiffer_tc400.proto readShort($(ADD),$(OPCODE)) $(PORT)")

  out "\${1}00\${2}02=?%+<sum8>";
  in  "\${1}10\${2}06%04u%(\${3})02u%+<sum8>";
}

readLongString {
  # read string (Pfeiffer data type 11) from device
  # Example of command:
  # field (INP, "@pfeiffer_tc400.proto readShort($(ADD),$(OPCODE)) $(PORT)")

  out "\${1}00\${2}02=?%+<sum8>";
  in  "\${1}10\${2}16%#16s%+<sum8>";
}

writeBoolOld {
  # write old boolean format (Pfeiffer data type 0) to device
  # Example of command:
  # field( OUT, "@pfeiffer_vacuum.proto writeBoolOld($(ADD),$(OPCODE)) $(PORT)" )

  out "\${1}10\${2}06%{000000|111111}%+<sum8>";
  in  "\${1}10\${2}06%={000000|111111}%+<sum8>";

  @init{ readBoolOld; }
  @replytimeout{ readBoolOld; }

}

writeBoolOldNR {
  # write old boolean format (Pfeiffer data type 0) to device
  # This is the same as writeBoolOld without initialization (for write only parameters)
  # Example of command:
  # field( OUT, "@pfeiffer_vacuum.proto writeBoolOld($(ADD),$(OPCODE)) $(PORT)" )

  out "\${1}10\${2}06%{000000|111111}%+<sum8>";
  in  "\${1}10\${2}06%={000000|111111}%+<sum8>";
}

writeInt {
  # write integer (Pfeiffer data type 1/2) to device
  # Example of command:
  # field( OUT, "@pfeiffer_vacuum.proto writeInt($(ADD),$(OPCODE)) $(PORT)" )

  out "\${1}10\${2}06%06u%+<sum8>";
  in  "\${1}10\${2}06%=06u%+<sum8>";

  @init{ readInt; }
  @replytimeout{ readInt; }
}

writeString {
  # write string (Pfeiffer data type 4) to device
  # Example of command:
  # field( OUT, "@pfeiffer_vacuum.proto writeString($(ADD),$(OPCODE)) $(PORT)" )

  out "\${1}10\${2}06%#06s%+<sum8>";
  in  "\${1}10\${2}06%=#06s%+<sum8>";

  @init{ readString; }
  @replytimeout{ readString; }
}

writeBoolNew {
  # write new boolean format (Pfeiffer data type 6) to device
  # Example of command:
  # field( OUT, "@pfeiffer_vacuum.proto writeBoolNew($(ADD),$(OPCODE)) $(PORT)" )

  out "\${1}10\${2}01%{0|1}%+<sum8>";
  in  "\${1}10\${2}01%={0|1}%+<sum8>";

  @init{ readBoolNew; }
  @replytimeout{ readBoolNew; }
}

writeShort {
  # write short integer (Pfeiffer data type 7) to device
  # Example of command:
  # field( OUT, "@pfeiffer_vacuum.proto writeBoolNew($(ADD),$(OPCODE)) $(PORT)" )

  out "\${1}10\${2}03%03u%+<sum8>";
  in  "\${1}10\${2}03%=03u%+<sum8>";

  @init{ readShort; }
  @replytimeout{ readShort; }
}

writeShortNR {
  # write short integer (Pfeiffer data type 7) to device
  # This is the same as writeShort without initialization (for write only parameters)
  # Example of command:
  # field( OUT, "@pfeiffer_vacuum.proto writeBoolNew($(ADD),$(OPCODE)) $(PORT)" )

  out "\${1}10\${2}03%03u%+<sum8>";
  in  "\${1}10\${2}03%=03u%+<sum8>";
}

writeLongString {
  # write string (Pfeiffer data type 11) to device
  # Example of command:
  # field( OUT, "@pfeiffer_vacuum.proto writeLongString($(ADD),$(OPCODE)) $(PORT)" )

  out "\${1}10\${2}16%#16s%+<sum8>";
  in  "\${1}10\${2}16%=#16s%+<sum8>";

  @init{ readLongString; }
  @replytimeout{ readLongString; }
}


###########################################################
# ###                                                 ### #
# ### EPICS Database for                              ### #
# ###   Pfeiffer TC400 pump controller                ### #
# ###                                                 ### #
# ### author: F.Feldbauer                             ### #
# ###                                                 ### #
# ### Ref: 1.0; 2016-02-02                            ### #
# ###                                                 ### #
# ### macros: H       Header (e.g. 'PANDA:LMD')       ### #
# ###         N       Name/Task (e.g. 'VACUUM:TP')    ### #
# ###         port    Asyn Interface                  ### #
# ###         ADD     device Address                  ### #
###########################################################

## status queries

record( bi, "$(H):$(N):RemotePrio" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readBoolOld($(ADD),300) $(port)" )
  # State strings
  field( ZNAM, "no" )
  field( ONAM, "yes" )
  #
  field( FLNK, "$(H):$(N):SpdSwPtAtt.PROC PP MS" )
}

record( bi, "$(H):$(N):SpdSwPtAtt" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readBoolOld($(ADD),302) $(port)" )
  # State strings
  field( ZNAM, "no" )
  field( ONAM, "yes" )
  #
  field( FLNK, "$(H):$(N):ErrorCode.PROC PP MS" )
}

record( stringin, "$(H):$(N):ErrorCode" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),303) $(port)" )
  #
  field( FLNK, "$(H):$(N):OvTempElec.PROC PP MS" )
}

record( bi, "$(H):$(N):OvTempElec" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readBoolOld($(ADD),304) $(port)" )
  # State strings
  field( ZNAM, "NORM" )
  field( ONAM, "ALERT" )
  # State severities
  field( ZSV,  "NO_ALARM" )
  field( OSV,  "MAJOR" )
  #
  field( FLNK, "$(H):$(N):OvTempPump.PROC PP MS" )
}

record( bi, "$(H):$(N):OvTempPump" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readBoolOld($(ADD),305) $(port)" )
  # State strings
  field( ZNAM, "NORM" )
  field( ONAM, "ALERT" )
  # State severities
  field( ZSV,  "NO_ALARM" )
  field( OSV,  "MAJOR" )
  #
  field( FLNK, "$(H):$(N):SetSpdAtt.PROC PP MS" )
}

record( bi, "$(H):$(N):SetSpdAtt" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readBoolOld($(ADD),306) $(port)" )
  # State strings
  field( ZNAM, "no" )
  field( ONAM, "yes" )
  #
  field( FLNK, "$(H):$(N):PumpAccel.PROC PP MS" )
}

record( bi, "$(H):$(N):PumpAccel" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readBoolOld($(ADD),307) $(port)" )
  # State strings
  field( ZNAM, "no" )
  field( ONAM, "yes" )
  #
  field( FLNK, "$(H):$(N):SetRotSpd.PROC PP MS" )
}

record( longin, "$(H):$(N):SetRotSpd" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),308) $(port)" )
  # display parameters
  field( HOPR, "2000" )
  field( LOPR, "0" )
  field( EGU,  "Hz" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  # Alarm parameters
  field( HIHI, "1010" )
  field( HIGH, "1005" )
  field( LOW,  "995" )
  field( LOLO, "990" )
  field( HHSV, "MAJOR" )
  field( HSV,  "MINOR" )
  field( LSV,  "MINOR" )
  field( LLSV, "MAJOR" )
  #
  field( FLNK, "$(H):$(N):ActualSpd.PROC PP MS" )
}

record( longin, "$(H):$(N):ActualSpd" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),309) $(port)" )
  # display parameters
  field( HOPR, "2000" )
  field( LOPR, "0" )
  field( EGU,  "Hz" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  # Alarm parameters
  field( HIHI, "1010" )
  field( HIGH, "1005" )
  field( LOW,  "-1" ) # set by FSM (to avoid alarms when starting)
  field( LOLO, "-2" ) # set by FSM (to avoid alarms when starting)
  field( HHSV, "MAJOR" )
  field( HSV,  "MINOR" )
  field( LSV,  "MINOR" )
  field( LLSV, "MAJOR" )
  #
  field( FLNK, "$(H):$(N):DrvCurrent.PROC PP MS" )
}

record( ai, "$(H):$(N):DrvCurrent" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),310) $(port)" )
  # conversion
  field( ASLO, ".01" )
  field( AOFF, "0." )
  # display parameters
  field( HOPR, "15" )
  field( LOPR, "0" )
  field( EGU,  "A" )
  field( PREC, "2" )
  # thresholds
  field( ADEL, "0.1" )
  field( MDEL, "0" )
  # Alarm parameters
  field( HIHI, "14.5" )
  field( HIGH, "14.0" )
  field( LOW,  "-1" ) # set by FSM (to avoid alarms when starting)
  field( LOLO, "-2" ) # set by FSM (to avoid alarms when starting)
  field( HHSV, "MAJOR" )
  field( HSV,  "MINOR" )
  field( LSV,  "MINOR" )
  field( LLSV, "MAJOR" )
  #
  field( FLNK, "$(H):$(N):OpHrsPump.PROC PP MS" )
}

record( longin, "$(H):$(N):OpHrsPump" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),311) $(port)" )
  # display parameters
  field( EGU,  "h" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):DrvVoltage.PROC PP MS" )
}

record( stringin, "$(H):$(N):FwVersion" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),312) $(port)" )
  field( PINI, "YES" )
}

record( ai, "$(H):$(N):DrvVoltage" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),313) $(port)" )
  # conversion
  field( ASLO, ".01" )
  field( AOFF, "0." )
  # display parameters
  field( EGU,  "V" )
  field( PREC, "2" )
  # thresholds
  field( ADEL, "1.0" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):OpHrsElec.PROC PP MS" )
}

record( longin, "$(H):$(N):OpHrsElec" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),314) $(port)" )
  # display parameters
  field( EGU,  "h" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):NominalSpd.PROC PP MS" )
}

record( longin, "$(H):$(N):NominalSpd" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),315) $(port)" )
  # display parameters
  field( HOPR, "2000" )
  field( LOPR, "0" )
  field( EGU,  "Hz" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):DrvPower.PROC PP MS" )
}

record( longin, "$(H):$(N):DrvPower" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),316) $(port)" )
  # display parameters
  field( EGU,  "W" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):PumpCycles.PROC PP MS" )
}

record( longin, "$(H):$(N):PumpCycles" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),319) $(port)" )
  # display parameters
  field( EGU,  "" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):TempElec.PROC PP MS" )
}

record( longin, "$(H):$(N):TempElec" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),326) $(port)" )
  # display parameters
  field( EGU,  "°C" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):TempPmpBot.PROC PP MS" )
}

record( longin, "$(H):$(N):TempPmpBot" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),330) $(port)" )
  # display parameters
  field( EGU,  "°C" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):AccelDecel.PROC PP MS" )
}

record( longin, "$(H):$(N):AccelDecel" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),336) $(port)" )
  # display parameters
  field( EGU,  "rpm/s" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):SealGasFlw.PROC PP MS" )
}

record( longin, "$(H):$(N):SealGasFlw" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),337) $(port)" )
  # display parameters
  field( EGU,  "sccm" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):TempBearng.PROC PP MS" )
}

record( longin, "$(H):$(N):TempBearng" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),342) $(port)" )
  # display parameters
  field( EGU,  "°C" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):TempMotor.PROC PP MS" )
}

record( longin, "$(H):$(N):TempMotor" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),346) $(port)" )
  # display parameters
  field( EGU,  "°C" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):ErrHist1.PROC PP MS" )
}

record( stringin, "$(H):$(N):ElecName" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),349) $(port)" )
  field( PINI, "YES" )
}

record( stringin, "$(H):$(N):HwVersion" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),354) $(port)" )
  field( PINI, "YES" )
}

record( stringin, "$(H):$(N):ErrHist1" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),360) $(port)" )
  #
  field( FLNK, "$(H):$(N):ErrHist2.PROC PP MS" )
}

record( stringin, "$(H):$(N):ErrHist2" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),361) $(port)" )
  #
  field( FLNK, "$(H):$(N):ErrHist3.PROC PP MS" )
}

record( stringin, "$(H):$(N):ErrHist3" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),362) $(port)" )
  #
  field( FLNK, "$(H):$(N):ErrHist4.PROC PP MS" )
}

record( stringin, "$(H):$(N):ErrHist4" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),363) $(port)" )
  #
  field( FLNK, "$(H):$(N):ErrHist5.PROC PP MS" )
}

record( stringin, "$(H):$(N):ErrHist5" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),364) $(port)" )
  #
  field( FLNK, "$(H):$(N):ErrHist6.PROC PP MS" )
}

record( stringin, "$(H):$(N):ErrHist6" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),365) $(port)" )
  #
  field( FLNK, "$(H):$(N):ErrHist7.PROC PP MS" )
}

record( stringin, "$(H):$(N):ErrHist7" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),366) $(port)" )
  #
  field( FLNK, "$(H):$(N):ErrHist8.PROC PP MS" )
}

record( stringin, "$(H):$(N):ErrHist8" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),367) $(port)" )
  #
  field( FLNK, "$(H):$(N):ErrHist9.PROC PP MS" )
}

record( stringin, "$(H):$(N):ErrHist9" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),368) $(port)" )
  #
  field( FLNK, "$(H):$(N):ErrHist10.PROC PP MS" )
}

record( stringin, "$(H):$(N):ErrHist10" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),369) $(port)" )
  #
  field( FLNK, "$(H):$(N):SetRotSpdRPM.PROC PP MS" )
}

record( longin, "$(H):$(N):SetRotSpdRPM" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),397) $(port)" )
  field( PINI, "YES" )
  # display parameters
  field( EGU,  "rpm" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):ActualSpdRPM.PROC PP MS" )
}

record( longin, "$(H):$(N):ActualSpdRPM" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),398) $(port)" )
  # display parameters
  field( EGU,  "rpm" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
  #
  field( FLNK, "$(H):$(N):NominalSpdRPM.PROC PP MS" )
}

record( longin, "$(H):$(N):NominalSpdRPM" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readInt($(ADD),399) $(port)" )
  # display parameters
  field( EGU,  "rpm" )
  # thresholds
  field( ADEL, "1" )
  field( MDEL, "0" )
}

##--------------------------------------------------------------------------------
## Control commands

record( bo, "$(H):$(N):Heating" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeBoolOld($(ADD),001) $(port)" )
  # State strings
  field( ZNAM, "OFF" )
  field( ONAM, "ON" )
}

record( bo, "$(H):$(N):Standby" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeBoolOld($(ADD),002) $(port)" )
  # State strings
  field( ZNAM, "OFF" )
  field( ONAM, "ON" )
}

record( bo, "$(H):$(N):RUTimeCtrl" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeBoolOld($(ADD),004) $(port)" )
  # State strings
  field( ZNAM, "OFF" )
  field( ONAM, "ON" )
}

record( bo, "$(H):$(N):ErrorAckn" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeBoolOldNR($(ADD),009) $(port)" )
}

record( bo, "$(H):$(N):PumpgStatn" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeBoolOld($(ADD),010) $(port)" )
  # State strings
  field( ZNAM, "OFF" )
  field( ONAM, "ON" )
}

record( bo, "$(H):$(N):EnableVent" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeBoolOld($(ADD),012) $(port)" )
  # State strings
  field( ZNAM, "OFF" )
  field( ONAM, "ON" )
}

record( bo, "$(H):$(N):CfgSpdSwPt" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),017) $(port)" )
  # State strings
  field( ZNAM, "Switchpoint 1" )
  field( ONAM, "Switchpoint 1 & 2" )
}

#record( mbbo, "$(H):$(N):CfgDO1" ) {
#record( mbbo, "$(H):$(N):CfgDO2" ) {
#record( mbbo, "$(H):$(N):CfgRelR1" ) {
#record( mbbo, "$(H):$(N):CfgRelR2" ) {
#record( mbbo, "$(H):$(N):CfgRelR3" ) {
#  field( DTYP, "stream" )
#  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),019) $(port)" )
#  # State strings
#  field( ZRST, "Switchpoint reached" )
#  field( ONST, "no error" )
#  field( TWST, "Error" )
#  field( THST, "Warning" )
#  field( FRST, "Error or Warning" )
#  field( FVST, "Set speed reached" )
#  field( SXST, "Pump on" )
#  field( SVST, "Pump accelerates" )
#  field( EIST, "Pump delays" )
#  field( NIST, "always 0"
#  field( TEST, "always 1"
#  field( ELST, "remote prioritised" )
#  field( TVST, "Heating" )
#  field( TTVL, "Fore pump" )
#  field( FTVL, "Seal gas" )
#  field( FFVL, "pump stand" )
#  #field( --VL, "pump rotates" )
#  #field( --VL, "Pressure switching point 1 undershot" )
#  #field( --VL, "Pressure switching point 2 undershot" )
#  #field( --VL, "fore vacuum valve delayed" )
#  #field( --VL, "standby fore pump" )
#  # State values
#  field( ZRVL, "0" )
#  field( ONVL, "1" )
#  field( TWVL, "2" )
#  field( THVL, "3" )
#  field( FRVL, "4" )
#  field( FVVL, "5" )
#  field( SXVL, "6" )
#  field( SVVL, "7" )
#  field( EIVL, "8" )
#  field( NIVL, "9" )
#  field( TEVL, "10" )
#  field( ELVL, "12" )
#  field( TVVL, "13" )
#  field( FTVL, "14" )
#  field( FFVL, "15" )
#  #field( --VL, "16" )
#  #field( --VL, "17" )
#  #field( --VL, "19" )
#  #field( --VL, "20" )
#  #field( --VL, "21" )
#  #field( --VL, "22" )
#}

record( longout, "$(H):$(N):CfgDO1" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),024) $(port)" )
}
record( longout, "$(H):$(N):CfgDO2" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),019) $(port)" )
}
record( longout, "$(H):$(N):CfgRelR1" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),045) $(port)" )
}
record( longout, "$(H):$(N):CfgRelR2" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),046) $(port)" )
}
record( longout, "$(H):$(N):CfgRelR3" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),047) $(port)" )
}

record( bo, "$(H):$(N):MotorPump" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeBoolOld($(ADD),023) $(port)" )
  # State strings
  field( ZNAM, "Off" )
  field( ONAM, "On" )
}

record( mbbo, "$(H):$(N):OpModeBKP" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),025) $(port)" )
  # State strings
  field( ZRST, "continuous operation" )
  field( ONST, "Interval operation" )
  field( TWST, "delayed switch on" )
  field( THST, "delayed int operation" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
  field( THVL, "3" )
}

record( bo, "$(H):$(N):SpdSetMode" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),026) $(port)" )
  # State strings
  field( ZNAM, "Off" )
  field( ONAM, "On" )
}

record( mbbo, "$(H):$(N):GasMode" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),027) $(port)" )
  # State strings
  field( ZRST, "heavy gases" )
  field( ONST, "light gases" )
  field( TWST, "Helium" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
}

record( mbbo, "$(H):$(N):CfgRemote" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),028) $(port)" )
  # State strings
  field( ZRST, "Default" )
  field( ONST, "Relay inverted" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "4" )
}

record( mbbo, "$(H):$(N):VentMode" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),030) $(port)" )
  # State strings
  field( ZRST, "delayed flooding" )
  field( ONST, "no flooding" )
  field( TWST, "direct flooding" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
}

record( mbbo, "$(H):$(N):CfgAccA1" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),035) $(port)" )
  # State strings
  field( ZRST, "Fan (permanent)" )
  field( ONST, "Flooding valve (NC)" )
  field( TWST, "Heating" )
  field( THST, "Forepump" )
  field( FRST, "Fan (temp regulated)" )
  field( FVST, "Seal gas" )
  field( SXST, "always 0" )
  field( SVST, "always 1" )
#  field( EIST, "Power failure venting valve" )
  field( EIST, "Power failure vent valve" )
  field( NIST, "TMS heating" )
  field( TEST, "TMS cooling" )
  field( ELST, "2nd flooding valve" )
  field( TVST, "Seal gas monitoring" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
  field( THVL, "3" )
  field( FRVL, "4" )
  field( FVVL, "5" )
  field( SXVL, "6" )
  field( SVVL, "7" )
  field( EIVL, "8" )
  field( NIVL, "9" )
  field( TEVL, "10" )
  field( ELVL, "12" )
  field( TVVL, "13" )
}

record( mbbo, "$(H):$(N):CfgAccB1" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),036) $(port)" )
  # State strings
  field( ZRST, "Fan (permanent)" )
  field( ONST, "Flooding valve (NC)" )
  field( TWST, "Heating" )
  field( THST, "Forepump" )
  field( FRST, "Fan (temp regulated)" )
  field( FVST, "Seal gas" )
  field( SXST, "always 0" )
  field( SVST, "always 1" )
  field( EIST, "Power failure vent valve" )
  field( NIST, "TMS heating" )
  field( TEST, "TMS cooling" )
  field( ELST, "2nd flooding valve" )
  field( TVST, "Seal gas monitoring" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
  field( THVL, "3" )
  field( FRVL, "4" )
  field( FVVL, "5" )
  field( SXVL, "6" )
  field( SVVL, "7" )
  field( EIVL, "8" )
  field( NIVL, "9" )
  field( TEVL, "10" )
  field( ELVL, "12" )
  field( TVVL, "13" )
}

record( mbbo, "$(H):$(N):CfgAccA2" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),037) $(port)" )
  # State strings
  field( ZRST, "Fan (permanent)" )
  field( ONST, "Flooding valve (NC)" )
  field( TWST, "Heating" )
  field( THST, "Forepump" )
  field( FRST, "Fan (temp regulated)" )
  field( FVST, "Seal gas" )
  field( SXST, "always 0" )
  field( SVST, "always 1" )
#  field( EIST, "Power failure venting valve" )
  field( EIST, "Power failure vent valve" )
  field( NIST, "TMS heating" )
  field( TEST, "TMS cooling" )
  field( ELST, "2nd flooding valve" )
  field( TVST, "Seal gas monitoring" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
  field( THVL, "3" )
  field( FRVL, "4" )
  field( FVVL, "5" )
  field( SXVL, "6" )
  field( SVVL, "7" )
  field( EIVL, "8" )
  field( NIVL, "9" )
  field( TEVL, "10" )
  field( ELVL, "12" )
  field( TVVL, "13" )
}

record( mbbo, "$(H):$(N):CfgAccB2" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),038) $(port)" )
  # State strings
  field( ZRST, "Fan (permanent)" )
  field( ONST, "Flooding valve (NC)" )
  field( TWST, "Heating" )
  field( THST, "Forepump" )
  field( FRST, "Fan (temp regulated)" )
  field( FVST, "Seal gas" )
  field( SXST, "always 0" )
  field( SVST, "always 1" )
  field( EIST, "Power failure vent valve" )
  field( NIST, "TMS heating" )
  field( TEST, "TMS cooling" )
  field( ELST, "2nd flooding valve" )
  field( TVST, "Seal gas monitoring" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
  field( THVL, "3" )
  field( FRVL, "4" )
  field( FVVL, "5" )
  field( SXVL, "6" )
  field( SVVL, "7" )
  field( EIVL, "8" )
  field( NIVL, "9" )
  field( TEVL, "10" )
  field( ELVL, "12" )
  field( TVVL, "13" )
}

record( mbbo, "$(H):$(N):Press1HVen" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),041) $(port)" )
  # State strings
  field( ZRST, "off" )
  field( ONST, "on" )
  field( TWST, "on at spd SwPt reached" )
  field( THST, "on at prs SwPt undershot" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
  field( THVL, "3" )
}

record( bo, "$(H):$(N):SealingGas" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeBoolOld($(ADD),050) $(port)" )
  # State strings
  field( ZNAM, "Off" )
  field( ONAM, "On" )
}

record( mbbo, "$(H):$(N):CfgAO1" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),055) $(port)" )
  # State strings
  field( ZRST, "Actual speed" )
  field( ONST, "Power" )
  field( TWST, "Current" )
  field( THST, "always 0 V" )
  field( FRST, "always 10 V" )
  field( FVST, "follow AI1" )
  field( SXST, "Pressure value 1" )
  field( SVST, "Pressure value 2" )
  field( EIST, "control prevacuum" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
  field( THVL, "3" )
  field( FRVL, "4" )
  field( FVVL, "5" )
  field( SXVL, "6" )
  field( SVVL, "7" )
  field( EIVL, "8" )
}

record( bo, "$(H):$(N):CfgAI1" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),057) $(port)" )
  # State strings
  field( ZNAM, "disabled" )
  field( ONAM, "Preset speed control mode" )
}

record( mbbo, "$(H):$(N):CtrlViaInt" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),060) $(port)" )
  # State strings
  field( ZRST, "remote" )
  field( ONST, "RS485" )
  field( TWST, "PV.can" )
  field( THST, "Field bus" )
  field( FRST, "E74" )
  field( FVST, "Unlock if selection" )
  # State values
  field( ZRVL, "1" )
  field( ONVL, "2" )
  field( TWVL, "4" )
  field( THVL, "8" )
  field( FRVL, "16" )
  field( FVVL, "255" )
}

record( bo, "$(H):$(N):IntSelLckd" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeBoolOld($(ADD),061) $(port)" )
  # State strings
  field( ZNAM, "off" )
  field( ONAM, "on" )
}

record( mbbo, "$(H):$(N):CfgDI1" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),062) $(port)" )
  # State strings
  field( ZRST, "disabled" )
  field( ONST, "release flood" )
  field( TWST, "Heating" )
  field( THST, "sealing gas" )
  field( FRST, "Run-up time monitoring" )
  field( FVST, "speed control mode" )
  field( SXST, "release HV-Sensor" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
  field( THVL, "3" )
  field( FRVL, "4" )
  field( FVVL, "5" )
  field( SXVL, "7" )
}

record( mbbo, "$(H):$(N):CfgDI2" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),062) $(port)" )
  # State strings
  field( ZRST, "disabled" )
  field( ONST, "release flood" )
  field( TWST, "Heating" )
  field( THST, "sealing gas" )
  field( FRST, "Run-up time monitoring" )
  field( FVST, "speed control mode" )
  field( SXST, "release HV-Sensor" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
  field( THVL, "3" )
  field( FRVL, "4" )
  field( FVVL, "5" )
  field( SXVL, "7" )
}

record( mbbo, "$(H):$(N):CfgDI3" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),062) $(port)" )
  # State strings
  field( ZRST, "disabled" )
  field( ONST, "release flood" )
  field( TWST, "Heating" )
  field( THST, "sealing gas" )
  field( FRST, "Run-up time monitoring" )
  field( FVST, "speed control mode" )
  field( SXST, "release HV-Sensor" )
  # State values
  field( ZRVL, "0" )
  field( ONVL, "1" )
  field( TWVL, "2" )
  field( THVL, "3" )
  field( FRVL, "4" )
  field( FVVL, "5" )
  field( SXVL, "7" )
}


##--------------------------------------------------------------------------------
## Setpoint specifications

record( longout, "$(H):$(N):RUTimeSVal" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),700) $(port)" )
  # limits
  field( DRVH, "120" )
  field( DRVL, "1" )
  # display
  field( HOPR, "120" )
  field( LOPR, "1" )
  field( EGU,  "min" )
}

record( longout, "$(H):$(N):SpdSwPt1" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),701) $(port)" )
  # limits
  field( DRVH, "97" )
  field( DRVL, "50" )
  # display
  field( HOPR, "97" )
  field( LOPR, "50" )
  field( EGU,  "%" )
}

record( ao, "$(H):$(N):SpdSVal" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),707) $(port)" )
  # conversion
  field( ASLO, ".01" )
  field( AOFF, "0." )
  # limits
  field( DRVH, "100" )
  field( DRVL, "20" )
  # display
  field( HOPR, "100" )
  field( LOPR, "20" )
  field( EGU,  "%" )
  field( PREC, "2" )
}

record( longout, "$(H):$(N):PwrSVal" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),708) $(port)" )
  # limits
  field( DRVH, "100" )
  field( DRVL, "10" )
  # display
  field( HOPR, "100" )
  field( LOPR, "10" )
  field( EGU,  "%" )
}

record( longout, "$(H):$(N):SwOffBKP" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),710) $(port)" )
  # limits
  field( DRVH, "1000" )
  field( DRVL, "0" )
  # display
  field( HOPR, "1000" )
  field( LOPR, "0" )
  field( EGU,  "W" )
}

record( longout, "$(H):$(N):SwOnBKP" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),711) $(port)" )
  # limits
  field( DRVH, "1000" )
  field( DRVL, "0" )
  # display
  field( HOPR, "1000" )
  field( LOPR, "0" )
  field( EGU,  "W" )
}

record( ao, "$(H):$(N):StdbySVal" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),717) $(port)" )
  # conversion
  field( ASLO, ".01" )
  field( AOFF, "0." )
  # limits
  field( DRVH, "100" )
  field( DRVL, "20" )
  # display
  field( HOPR, "100" )
  field( LOPR, "20" )
  field( EGU,  "%" )
  field( PREC, "2" )
}

record( longout, "$(H):$(N):SpdSwPt2" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),719) $(port)" )
  # limits
  field( DRVH, "97" )
  field( DRVL, "5" )
  # display
  field( HOPR, "97" )
  field( LOPR, "5" )
  field( EGU,  "%" )
}

record( longout, "$(H):$(N):VentSpd" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeShort($(ADD),720) $(port)" )
  # limits
  field( DRVH, "98" )
  field( DRVL, "40" )
  # display
  field( HOPR, "98" )
  field( LOPR, "40" )
  field( EGU,  "%" )
}

record( longout, "$(H):$(N):VentTime" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),721) $(port)" )
  # limits
  field( DRVH, "3600" )
  field( DRVL, "6" )
  # display
  field( HOPR, "3600" )
  field( LOPR, "6" )
  field( EGU,  "s" )
}

record( longout, "$(H):$(N):PrsSwPt1" ) {
  field( DTYP, "stream" )
  ## Actually EXPO datatype (10)
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),730) $(port)" )
}
record( longout, "$(H):$(N):PrsSwPt2" ) {
  field( DTYP, "stream" )
  ## Actually EXPO datatype (10)
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),732) $(port)" )
}

record( stringin, "$(H):$(N):PrsSn1Name" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),739) $(port)" )
  field( PINI, "YES" )
}

record( longout, "$(H):$(N):Pressure1" ) {
  field( DTYP, "stream" )
  ## Actually EXPO datatype (10)
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),740) $(port)" )
}

record( ao, "$(H):$(N):PrsCorrPi1" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),742) $(port)" )
  # conversion
  field( ASLO, ".01" )
  field( AOFF, "0." )
  # limits
  #field( DRVH, "100" )
  #field( DRVL, "20" )
  # display
  #field( HOPR, "100" )
  #field( LOPR, "20" )
  #field( EGU,  "%" )
  field( PREC, "2" )
}

record( stringin, "$(H):$(N):PrsSn2Name" ) {
  field( DTYP, "stream" )
  field( INP,  "@Pfeiffer_vacuum.proto readString($(ADD),749) $(port)" )
  field( PINI, "YES" )
}

record( longout, "$(H):$(N):Pressure2" ) {
  field( DTYP, "stream" )
  ## Actually EXPO datatype (10)
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),750) $(port)" )
}

record( ao, "$(H):$(N):PrsCorrPi2" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),752) $(port)" )
  # conversion
  field( ASLO, ".01" )
  field( AOFF, "0." )
  # limits
  #field( DRVH, "100" )
  #field( DRVL, "20" )
  # display
  #field( HOPR, "100" )
  #field( LOPR, "20" )
  #field( EGU,  "%" )
  field( PREC, "2" )
}

record( longout, "$(H):$(N):NomSpdConf" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),777) $(port)" )
  # limits
  field( DRVH, "1500" )
  field( DRVL, "0" )
  # display
  field( HOPR, "1500" )
  field( LOPR, "0" )
  field( EGU,  "Hz" )
}

record( longout, "$(H):$(N):SlgWrnThrs" ) {
  field( DTYP, "stream" )
  field( OUT,  "@Pfeiffer_vacuum.proto writeInt($(ADD),791) $(port)" )
  # limits
  field( DRVH, "200" )
  field( DRVL, "5" )
  # display
  field( HOPR, "200" )
  field( LOPR, "5" )
  field( EGU,  "sccm" )
}



References:
Support for Pfeiffer HiPace with TC400 control unit Heinz Junkes (FHI) via Tech-talk

Navigate by Date:
Prev: Support for Pfeiffer HiPace with TC400 control unit Heinz Junkes (FHI) via Tech-talk
Next: Protocol format issues in StreamDevice during COMBIVAC CM 52 device commissioning. LONG FENG 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  <20252026 
Navigate by Thread:
Prev: Support for Pfeiffer HiPace with TC400 control unit Heinz Junkes (FHI) via Tech-talk
Next: Protocol format issues in StreamDevice during COMBIVAC CM 52 device commissioning. LONG FENG 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  <20252026 
ANJ, 19 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·