--- /dev/null
+#############################################
+# ### ### #
+# ### EPICS Database for ### #
+# ### Huber Unistate 425 ### #
+# ### ### #
+# ### author: F.Feldbauer ### #
+# ### R.Kieser ### #
+# ### ### #
+# ### Ref 1.0; 2014-01-07 ### #
+# ### ### #
+# ### macros: subsys PANDA subsystem ### #
+# ### PORT Asyn Interface ### #
+# ### sector Sector of subsys ### #
+#############################################
+
+record (ai, "PANDA:$(subsys):COOLING:$(sector):SetpointMom") {
+ field (DTYP, "stream")
+ field (INP, "@Huber_Unistate_425.proto getDesVal $(PORT)")
+ field (PINI, "YES")
+ field (EGU, "°C")
+ field (PREC, "2")
+ field (ADEL, "1")
+ field (MDEL, "1")
+ field (ASLO, "0.01")
+ field (AOFF, "0")
+}
+
+record (ai, "PANDA:$(subsys):COOLING:$(sector):BathTemperatureMom") {
+ field (DTYP, "stream")
+ field (INP, "@Huber_Unistate_425.proto getBathTemp $(PORT)")
+ field (SCAN, "10 second")
+ field (FLNK, "PANDA:$(subsys):COOLING:$(sector):getExtTemp")
+ field (EGU, "°C")
+ field (PREC, "2")
+ field (ADEL, "1")
+ field (MDEL, "1")
+ field (ASLO, "0.01")
+ field (AOFF, "0")
+
+}
+
+record (ai, "PANDA:$(subsys):COOLING:$(sector):ExternalTemperatureMom") {
+ field (DTYP, "stream")
+ field (INP, "@Huber_Unistate_425.proto getExtTemp $(PORT)")
+ field (EGU, "°C")
+ field (PREC, "2")
+ field (ADEL, "1")
+ field (MDEL, "1")
+ field (ASLO, "0.01")
+ field (AOFF, "0")
+}
+
+#--------------------------------------------------------------------------------
+
+record (ao, "PANDA:$(subsys):COOLING:$(sector):Setpoint") {
+ field (DTYP, "stream")
+ field (OUT, "@Huber_Unistate_425.proto setDesVal $(PORT)")
+ field (EGU, "°C")
+ field (PREC, "2")
+ field (ADEL, "1")
+ field (MDEL, "1")
+ field (ASLO, "100")
+ field (AOFF, "0")
+}
+
+record (ao , "PANDA:$(subsys):COOLING:$(sector):MinimumValue") {
+ field (DTYP, "stream")
+ field (OUT, "@Huber_Unistate_425.proto setMinVal $(PORT)")
+ field (EGU, "°C")
+ field (PREC, "2")
+ field (ADEL, "1")
+ field (MDEL, "1")
+ field (ASLO, "100")
+ field (AOFF, "0")
+}
+
+record (ao, "PANDA:$(subsys):COOLING:$(sector):MaximumValue") {
+ field (DTYP, "stream")
+ field (OUT, "@Huber_Unistate_425.proto setMaxVal $(PORT)")
+ field (EGU, "°C")
+ field (PREC, "2")
+ field (ADEL, "1")
+ field (MDEL, "1")
+ field (ASLO, "100")
+ field (AOFF, "0")
+}
+
+record (bo , "PANDA:$(subsys):COOLING:$(sector):TemperatureControl") {
+ field (DTYP, "stream")
+ field (OUT, "@Huber_Unistate_425.proto setTempCtrl $(PORT)")
+ field (ZNAM, "OFF")
+ field (ONAM, "ON")
+}
+
+record (bo, "PANDA:$(subsys):COOLING:$(sector):TemperatureMode") {
+ field (DTYP, "stream")
+ field (OUT, "@Huber_Unistate_425.proto setTempMode $(PORT)")
+ field (ZNAM, "INTERN")
+ field (ONAM, "EXTERN")
+}
--- /dev/null
+#################################################
+# ### ### #
+# ### StreamDevice Protocol for ### #
+# ### Huber Unistat 425 ### #
+# ### ### #
+# ### author: F.Feldbauer ### #
+# ### R.Kieser ### #
+# ### ### #
+# ### Ref 1.0; 2014-01-07 ### #
+#################################################
+
+###################
+# ### Globals ### #
+###################
+Terminator = CR LF;
+LockTimeout = 5000;
+ReplyTimeout = 500;
+ReadTimeout = 500;
+WriteTimeout = 300;
+ExtraInput = Ignore;
+
+#####################
+# ### Protocols ### #
+#####################
+
+getDesVal {
+ # get setpoint
+ # Example of command:
+ # field (INP, "@Huber_Unistat_425.proto getDesVal $(PORT)")
+
+ out "SP?";
+ in "SP %d";
+}
+
+getBathTemp {
+ # get bath temperature
+ # Example of command:
+ # field (INP, "@Huber_Unistat_425.proto getBathTemp $(PORT)")
+
+ out "TI?";
+ in "TI %d";
+}
+
+getExtTemp {
+ # get temperature at external PT100
+ # Example of command:
+ # field (INP, "@Huber_Unistat_425.proto getExtTemp $(PORT)")
+
+ out "TE?";
+ in "TE %d";
+}
+
+#--------------------------------------------------------------------------------
+
+setDesVal {
+ # set a new setpoint
+ # Example of command:
+ # field (OUT, "@Huber_Unistat_425.proto setDesVal $(PORT)")
+
+ out "SP@ %+05d";
+ in "SP %=d";
+
+ @init {
+ out "SP?";
+ in "SP %d";
+ }
+}
+
+setMinVal {
+ # set lower limit of setpoint
+ # Example of command:
+ # field (OUT, "@Huber_Unistat_425.proto setMinVal $(PORT)")
+
+ out "LL& %+05d";
+ in "LL %=d";
+
+ @init {
+ out "LL?";
+ in "LL %d";
+ }
+}
+
+setMaxVal {
+ # set upper limit of setpoint
+ # Example of command:
+ # field (OUT, "@Huber_Unistat_425.proto setMaxVal $(PORT)")
+
+ out "LH& %+05d";
+ in "LH %=d";
+
+ @init {
+ out "LH?";
+ in "LH %d";
+ }
+}
+
+setTempCtrl {
+ # switch chiller on/off
+ # Example of command:
+ # field (OUT, "@Huber_Unistat_425.proto setTempCtrl $(PORT)")
+
+ out "CA@ %+05u";
+ in "CA %=u";
+
+ @init {
+ out "CA?";
+ in "CA %u";
+ }
+}
+
+setTempMode {
+ # set temperature control mode
+ # Example of command:
+ # field (OUT, "@Huber_Unistat_425.proto setTempMode $(PORT)")
+
+ out "TM& %+05u";
+ in "TM %=u";
+
+ @init {
+ out "TM?";
+ in "TM %u";
+ }
+}