|
|
Experimental Physics and
| ||||||||||||||
|
|
Hey Urszula,
we had some Julabo chillers in our labs controlled via RS232 interfaces. I used Stream+Asyn to controll them.
I've attached the protocol file and database files for our two Julabo chillers.
HTH,
On 5/24/21 7:12 PM, Neuman, Urszula
(DLSLtd, RAL, LSCI) via Tech-talk wrote:
-- 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://paluma.ruhr-uni-bochum.de #################################################
# ### ### #
# ### StreamDevice Protocol for ### #
# ### Julabo FP50 / LH47 ### #
# ### ### #
# ### author: F.Feldbauer ### #
# ### ### #
# ### Ref 1.0; 2011-05-19 ### #
#################################################
###################
# ### Globals ### #
###################
OutTerminator = CR;
InTerminator = CR LF DC1;
LockTimeout = 5000;
ReplyTimeout = 500;
ReadTimeout = 500;
WriteTimeout = 300;
ExtraInput = Ignore;
##############################
# ### Exception Handlers ### #
##############################
#####################
# ### Protocols ### #
#####################
getStatus {
# get status message
# Example of command:
# field (INP, "@Julabo.proto getStatus(PANDA:$(subsys):$(sector):JuFP50:$(ID)) JuFP50_$(ID)")
out "status";
in DC3,"%(\$1:StatusNumber.VAL)i %39c";
@mismatch {
out "status";
in DC3,"%(\$1:StatusNumber.VAL)i %39c";
}
@replytimeout {
out "in_pv_00";
in DC3,"%f";
}
}
## pv
getBathTemp {
# get bath temperature
# Example of command:
# field (INP, "@Julabo.proto getBathTemp JuFP50_$(ID)")
out "in_pv_00";
in DC3,"%f";
@mismatch {
out "in_pv_00";
in DC3,"%f";
}
@replytimeout {
out "in_pv_00";
in DC3,"%f";
}
}
getHeatPower {
# get used heat power
# Example of command:
# field (INP, "@Julabo.proto getHeatPower JuFP50_$(ID)")
out "in_pv_01";
in DC3,"%f";
@mismatch {
out "in_pv_01";
in DC3,"%f";
}
@replytimeout {
out "in_pv_01";
in DC3,"%f";
}
}
getPT100Temp {
# get temperature measured by external PT100
# Example of command:
# field (INP, "@Julabo.proto getPT100Temp JuFP50_$(ID)")
out "in_pv_02";
in DC3,"%f";
@mismatch{ in DC3,"---.--";}
}
getSafetySensor {
out "in_pv_03";
in DC3,"%f";
}
getSafeTemp {
out "in_pv_04";
in DC3,"%f";
}
getPumpPressure { #####################
out "in_pv_05"; # #
in DC3,"%f"; # Julabo LH47 only! #
} #####################
## sp
getSetVal1 {
out "in_sp_00";
in DC3,"%f";
@mismatch {
out "in_sp_00";
in DC3,"%f";
}
@replytimeout {
out "in_sp_00";
in DC3,"%f";
}
}
getSetVal2 { #####################
out "in_sp_01"; # #
in DC3,"%f"; # Julabo FP50 only! #
} #####################
getSetVal3 { #####################
out "in_sp_02"; # #
in DC3,"%f"; # Julabo FP50 only! #
} #####################
getOverTemp {
out "in_sp_03";
in DC3,"%f";
}
getSubTemp {
out "in_sp_04";
in DC3,"%f";
}
getUnit {
out "in_sp_06";
in DC3,"%i";
}
getPumpStage {
out "in_sp_07";
in DC3,"%i";
@mismatch {
out "in_sp_07";
in DC3,"%i";
}
@replytimeout {
out "in_sp_07";
in DC3,"%i";
}
}
## par
getTempDiff {
out "in_par_00";
in DC3,"%f";
}
getTimeTe {
out "in_par_01";
in DC3,"%f";
}
getTimeSi {
out "in_par_02";
in DC3,"%f";
}
getTimeTi {
out "in_par_03";
in DC3,"%f";
}
getCoSpeed {
out "in_par_04";
in DC3,"%f";
}
getPkPh0 {
out "in_par_05";
in DC3,"%f";
}
getParXpInt {
out "in_par_06";
in DC3,"%f";
}
getParTnInt {
out "in_par_07";
in DC3,"%f";
}
getParTvInt {
out "in_par_08";
in DC3,"%f";
}
getParXpCas {
out "in_par_09";
in DC3,"%f";
}
getProSharCas {
out "in_par_10";
in DC3,"%f";
}
getParTnCas {
out "in_par_11";
in DC3,"%f";
}
getParTvCas {
out "in_par_12";
in DC3,"%f";
}
getMaxIntTempCas {
out "in_par_13";
in DC3,"%f";
}
getMinIntTempCas {
out "in_par_14";
in DC3,"%f";
}
getBandLimitUP {
out "in_par_15";
in DC3,"%f";
}
getBandLimitLO {
out "in_par_16";
in DC3,"%f";
}
getSelSetpoint {
out "in_mode_01";
in DC3,"%i";
}
getSelftuneType {
out "in_mode_02";
in DC3,"%i";
}
getTempControl {
out "in_mode_04";
in DC3,"%i";
}
getCircCon {
out "in_mode_05";
in DC3,"%i";
}
getControlDyn {
out "in_mode_08";
in DC3,"%i";
}
getMaxCoolPower {
out "in_hil_00";
in DC3,"%f";
}
getMaxHeatPower {
out "in_hil_01";
in DC3,"%f";
}
setSelSetpoint {
out "out_mode_01 %i";
}
setSelftuneType {
out "out_mode_02 %i";
}
setTempControl {
out "out_mode_04 %i";
}
setCircCon {
out "out_mode_05 %i";
@init {
out "in_mode_05";
in DC3,"%i";
}
}
setControlDyn {
out "out_mode_08 %i";
}
setSetVal1 {
out "out_sp_00 %3.2f";
}
setSetVal2 {
out "out_sp_01 %3.2f";
}
setSetVal3 {
out "out_sp_02 %3.2f";
}
setOverTemp {
out "out_sp_03 %3.2f";
}
setSubTemp {
out "out_sp_04 %3.2f";
}
setManVar {
out "out_sp_06 %3.2f";
}
setPumpStage {
out "out_sp_07 %i";
}
setCoSpeed {
out "out_par_04 %1.1f";
}
setParXpInt {
out "out_par_06 %2.1f";
}
setParTnInt {
out "out_par_07 %i";
}
setParTvInt {
out "out_par_08 %i";
}
setParXpCas {
out "out_par_09 %2.1f";
}
setProSharCas {
out "out_par_10 %2.1f";
}
setParTnCas {
out "out_par_11 %i";
}
setParTvCas {
out "out_par_12 %i";
}
setMaxIntTempCas {
out "out_par_13 %i";
}
setMinIntTempCas {
out "out_par_14 %i";
}
setBandLimitUP {
out "out_par_15 %i";
}
setBandLimitLO {
out "out_par_16 %i";
}
setMaxCoolPower {
out "out_hil_00 -%i";
}
setMaxHeatPower {
out "out_hil_01 %i";
}
############################################
# ### ### #
# ### EPICS Database for ### #
# ### Julabo FP50 ### #
# ### ### #
# ### author: F.Feldbauer ### #
# ### ### #
# ### Ref 2.0; 2011-12-19 ### #
# ### ### #
# ### macros: subsys PANDA subsystem ### #
# ### type Cooling type ### #
# ### BUS Asyn Interface ### #
############################################
#######################
# ### in commands ### #
#######################
record (stringin, "PANDA:$(subsys):COOL:$(type):Status") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getStatus(PANDA:$(subsys):COOL:$(type)) $(BUS)")
field (SCAN, "10 second")
field (FLNK, "PANDA:$(subsys):COOL:$(type):BathTEMP:Tmom")
}
record (ai, "PANDA:$(subsys):COOL:$(type):StatusNumber") {
# Alarm Parameters
field (LOLO, "-1") field (LLSV, "MAJOR")
field (ADEL, "0")
field (MDEL, "0")
}
record (ai, "PANDA:$(subsys):COOL:$(type):BathTEMP:Tmom") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getBathTemp $(BUS)")
field (EGU, "degC")
field (PREC, "2")
field (HIHI, "-10") field (HHSV, "MAJOR")
field (LOLO, "-50") field (LLSV, "MAJOR")
field (HIGH, "-20") field (HSV, "MINOR")
field (LOW, "-40") field (LSV, "MINOR")
field (ADEL, "0")
field (MDEL, "0")
field (FLNK, "PANDA:$(subsys):COOL:$(type):HeatPower")
}
record (ai, "PANDA:$(subsys):COOL:$(type):HeatPower") {
field (DTYP, "stream")
field (EGU, "p.c.")
field (PREC, "0")
field (INP, "@Julabo.proto getHeatPower $(BUS)")
field (FLNK, "PANDA:$(subsys):COOL:$(type):PumpStage")
}
record (ai, "PANDA:$(subsys):COOL:$(type):PT100:Tmom") {
field (DTYP, "stream")
field (EGU, "degC")
field (PREC, "2")
field (INP, "@Julabo.proto getPT100Temp $(BUS)")
field (ADEL, "0")
field (MDEL, "0")
}
record (ai, "PANDA:$(subsys):COOL:$(type):Tset") {
field (DTYP, "stream")
field (EGU, "degC")
field (PREC, "2")
field (INP, "@Julabo.proto getSetVal1 $(BUS)")
field (PINI, "YES")
}
record (bi, "PANDA:$(subsys):COOL:$(type):Unit") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getUnit $(BUS)")
field (ZNAM, "degC")
field (ONAM, "degF")
}
record (ai, "PANDA:$(subsys):COOL:$(type):PumpStage") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getPumpStage $(BUS)")
field (ADEL, "0")
field (MDEL, "0")
field (FLNK, "PANDA:$(subsys):COOL:$(type):Tset")
}
record (ai, "PANDA:$(subsys):COOL:$(type):ParXpInt") {
field (DTYP, "stream")
field (PINI, "YES")
field (INP, "@Julabo.proto getParXpInt $(BUS)")
}
record (ai, "PANDA:$(subsys):COOL:$(type):ParTnInt") {
field (DTYP, "stream")
field (PINI, "YES")
field (INP, "@Julabo.proto getParTnInt $(BUS)")
}
record (ai, "PANDA:$(subsys):COOL:$(type):ParTvInt") {
field (DTYP, "stream")
field (PINI, "YES")
field (INP, "@Julabo.proto getParTvInt $(BUS)")
}
record (mbbi, "PANDA:$(subsys):COOL:$(type):SelftuneType") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getSelftuneType $(BUS)")
field (ZRST, "off")
field (ONST, "once")
field (TWST, "always")
field (PINI, "YES")
}
record (bi, "PANDA:$(subsys):COOL:$(type):TempControl") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getTempControl $(BUS)")
field (ZNAM, "Internal")
field (ONAM, "External")
field (PINI, "YES")
}
record (bi, "PANDA:$(subsys):COOL:$(type):CircCon") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getCircCon $(BUS)")
field (ZNAM, "stop")
field (ONAM, "start")
field (PINI, "YES")
}
record (bi, "PANDA:$(subsys):COOL:$(type):ControlDyn") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getControlDyn $(BUS)")
field (ZNAM, "aperiodic")
field (ONAM, "standard")
field (PINI, "YES")
}
########################
# ### out commands ### #
########################
record (mbbo, "PANDA:$(subsys):COOL:$(type):setSelftuneType") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setSelftuneType $(BUS)")
field (FLNK, "PANDA:$(subsys):COOL:$(type):SelftuneType")
field (ZRST, "off")
field (ONST, "once")
field (TWST, "always")
}
record (bo, "PANDA:$(subsys):COOL:$(type):setTempControl") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setTempControl $(BUS)")
field (ZNAM, "int")
field (ONAM, "ext")
field (FLNK, "PANDA:$(subsys):COOL:$(type):TempControl")
}
record (bo, "PANDA:$(subsys):COOL:$(type):setCircCon") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setCircCon $(BUS)")
field (ONAM, "Start")
field (ZNAM, "Stop")
field (FLNK, "PANDA:$(subsys):COOL:$(type):CircCon")
}
record (ao, "PANDA:$(subsys):COOL:$(type):setTset") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setSetVal1 $(BUS)")
field (FLNK, "PANDA:$(subsys):COOL:$(type):Tset")
}
record (ao, "PANDA:$(subsys):COOL:$(type):setPumpStage") {
field (DTYP, "stream")
field (VAL, "4")
field (OUT, "@Julabo.proto setPumpStage $(BUS)")
field (FLNK, "PANDA:$(subsys):COOL:$(type):PumpStage")
field (DRVH, "4")
field (DRVL, "0")
field (PREC, "0")
field (EGU, "a.u.")
}
record (ao, "PANDA:$(subsys):COOL:$(type):setParXpInt") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setParXpInt $(BUS)")
}
record (ao, "PANDA:$(subsys):COOL:$(type):setParTnInt") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setParTnInt $(BUS)")
}
record (ao, "PANDA:$(subsys):COOL:$(type):setParTvInt") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setParTvInt $(BUS)")
}
############################################
# ### ### #
# ### EPICS Database for ### #
# ### Julabo LH47 ### #
# ### ### #
# ### author: F.Feldbauer ### #
# ### ### #
# ### Ref 2.2; 2011-12-19 ### #
# ### ### #
# ### macros: subsys PANDA subsystem ### #
# ### BUS Asyn Interface ### #
############################################
#######################
# ### in commands ### #
#######################
record (stringin, "PANDA:$(subsys):COOL:MAIN:Status") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getStatus(PANDA:$(subsys):COOL:MAIN) $(BUS)")
field (SCAN, "10 second")
field (FLNK, "PANDA:$(subsys):COOL:MAIN:BathTEMP:Tmom")
}
record (ai, "PANDA:$(subsys):COOL:MAIN:StatusNumber") {
# Alarm Parameters
field (LOLO, "-1") field (LLSV, "MAJOR")
field (ADEL, "0")
field (MDEL, "0")
}
record (ai, "PANDA:$(subsys):COOL:MAIN:BathTEMP:Tmom") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getBathTemp $(BUS)")
field (EGU, "degC")
field (PREC, "2")
field (HIHI, "-10") field (HHSV, "MAJOR")
field (LOLO, "-50") field (LLSV, "MAJOR")
field (HIGH, "-20") field (HSV, "MINOR")
field (LOW, "-40") field (LSV, "MINOR")
field (ADEL, "0")
field (MDEL, "0")
field (FLNK, "PANDA:$(subsys):COOL:MAIN:HeatPower")
}
record (ai, "PANDA:$(subsys):COOL:MAIN:HeatPower") {
field (DTYP, "stream")
field (EGU, "p.c.")
field (PREC, "0")
field (INP, "@Julabo.proto getHeatPower $(BUS)")
field (ADEL, "0")
field (MDEL, "0")
field (FLNK, "PANDA:$(subsys):COOL:MAIN:PumpStage")
}
record (ai, "PANDA:$(subsys):COOL:MAIN:PT100:Tmom") {
field (DTYP, "stream")
field (EGU, "degC")
field (PREC, "2")
field (INP, "@Julabo.proto getPT100Temp $(BUS)")
field (ADEL, "0")
field (MDEL, "0")
}
record (ai, "PANDA:$(subsys):COOL:MAIN:Tset") {
field (DTYP, "stream")
field (EGU, "degC")
field (PREC, "2")
field (INP, "@Julabo.proto getSetVal1 $(BUS)")
field (ADEL, "1")
field (MDEL, "1")
field (PINI, "YES")
}
record (bi, "PANDA:$(subsys):COOL:MAIN:Unit") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getUnit $(BUS)")
field (ZNAM, "degC")
field (ONAM, "degF")
}
record (ai, "PANDA:$(subsys):COOL:MAIN:PumpStage") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getPumpStage $(BUS)")
field (ADEL, "0")
field (MDEL, "0")
field (FLNK, "PANDA:$(subsys):COOL:MAIN:Tset")
}
record (ai, "PANDA:$(subsys):COOL:MAIN:P_Pump") {
field (DTYP, "stream")
field (EGU, "bar")
field (PREC, "2")
field (INP, "@Julabo.proto getPumpPressure $(BUS)")
field (ADEL, "0")
field (MDEL, "0")
}
record (mbbi, "PANDA:$(subsys):COOL:MAIN:SelftuneType") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getSelftuneType $(BUS)")
field (ZRST, "off")
field (ONST, "once")
field (TWST, "always")
field (PINI, "YES")
}
record (bi, "PANDA:$(subsys):COOL:MAIN:TempControl") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getTempControl $(BUS)")
field (ZNAM, "Internal")
field (ONAM, "External")
field (PINI, "YES")
}
record (bi, "PANDA:$(subsys):COOL:MAIN:CircCon") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getCircCon $(BUS)")
field (ZNAM, "stop")
field (ONAM, "start")
field (PINI, "YES")
}
record (bi, "PANDA:$(subsys):COOL:MAIN:ControlDyn") {
field (DTYP, "stream")
field (INP, "@Julabo.proto getControlDyn $(BUS)")
field (ZNAM, "aperiodic")
field (ONAM, "standard")
field (PINI, "YES")
}
record (ai, "PANDA:$(subsys):COOL:MAIN:ParXpInt") {
field (DTYP, "stream")
field (PINI, "YES")
field (INP, "@Julabo.proto getParXpInt $(BUS)")
}
record (ai, "PANDA:$(subsys):COOL:MAIN:ParTnInt") {
field (DTYP, "stream")
field (PINI, "YES")
field (INP, "@Julabo.proto getParTnInt $(BUS)")
}
record (ai, "PANDA:$(subsys):COOL:MAIN:ParTvInt") {
field (DTYP, "stream")
field (PINI, "YES")
field (INP, "@Julabo.proto getParTvInt $(BUS)")
}
########################
# ### out commands ### #
########################
record (mbbo, "PANDA:$(subsys):COOL:MAIN:setSelftuneType") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setSelftuneType $(BUS)")
field (FLNK, "PANDA:$(subsys):COOL:MAIN:SelftuneType")
field (ZRST, "off")
field (ONST, "once")
field (TWST, "always")
}
record (bo, "PANDA:$(subsys):COOL:MAIN:setTempControl") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setTempControl $(BUS)")
field (ZNAM, "int")
field (ONAM, "ext")
field (FLNK, "PANDA:$(subsys):COOL:MAIN:TempControl")
}
record (bo, "PANDA:$(subsys):COOL:MAIN:setCircCon") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setCircCon $(BUS)")
field (ONAM, "Start")
field (ZNAM, "Stop")
field (FLNK, "PANDA:$(subsys):COOL:MAIN:CircCon")
}
record (ao, "PANDA:$(subsys):COOL:MAIN:setTset") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setSetVal1 $(BUS)")
field (FLNK, "PANDA:$(subsys):COOL:MAIN:Tset")
}
record (ao, "PANDA:$(subsys):COOL:MAIN:setPumpStage") {
field (DTYP, "stream")
field (VAL, "5")
field (OUT, "@Julabo.proto setPumpStage $(BUS)")
field (FLNK, "PANDA:$(subsys):COOL:MAIN:PumpStage")
field (DRVH, "5")
field (DRVL, "0")
field (PREC, "0")
field (EGU, "a.u.")
}
record (ao, "PANDA:$(subsys):COOL:MAIN:setParXpInt") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setParXpInt $(BUS)")
}
record (ao, "PANDA:$(subsys):COOL:MAIN:setParTnInt") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setParTnInt $(BUS)")
}
record (ao, "PANDA:$(subsys):COOL:MAIN:setParTvInt") {
field (DTYP, "stream")
field (OUT, "@Julabo.proto setParTvInt $(BUS)")
}
| ||||||||||||||
| ANJ, 19 Mar 2026 |
·
Home
·
News
·
About
·
Talk
·
Base
·
Modules
·
Extensions
·
· Distributions · Download · Documents · Links · Licensing · |