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, 25 May 2021 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |