IOCINFRAApp/Db/Bronkhorst.db
changeset 0 77d8eafe2a07
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IOCINFRAApp/Db/Bronkhorst.db	Thu Mar 07 09:23:26 2019 +0100
@@ -0,0 +1,1430 @@
+#################################################################################
+#
+################################################################################
+record(stringin, "$(IOC):$(NAME)-NAME")
+{
+	field(DESC, "Name of the device")
+	field(VAL, "$(NAME) Device")
+	field(PINI, "YES")
+}
+
+record(stringin, "$(IOC):$(NAME)-IDN")
+{
+	field(DESC, "Name of the device")
+	field(INP, "@devBronkhorst.proto identity $(PORT)")
+	field(PINI, "YES")
+}
+
+################################################################################
+################################################################################
+#INTEGER PARAMETERS
+################################################################################
+################################################################################
+################################################################################
+# Read; Measure will return a value between -23593 and 41942
+# Record $(IOC):$(NAME)-MEASURE recomputes this value to percentages. NOTE that percentage
+# can be larger than 100% (max value: 131.07%) and even negative for bipolar
+# ADC mode. (min value: -73.73%)
+################################################################################
+record(ai, "$(IOC):$(NAME)-GET-MEASURE_")
+{
+	field(DESC, "Read measure")
+	field(SCAN, "$(SCAN2)")
+	field(DTYP, "stream")
+	field(PREC, "3")
+	field(INP, "@devBronkhorst.proto readInt(01,20) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-MEASURE")
+}
+
+record(calc, "$(IOC):$(NAME)-GET-MEASURE")
+{
+	field(DESC, "Measure to percentage")
+	field(INPA, "$(IOC):$(NAME)-GET-MEASURE_")
+	field(EGU, "%")
+	field(PREC, "3")
+	field(CALC, "A*100/32000")
+	field(FLNK, "$(IOC):$(NAME)-COMM-STATUS")
+}
+
+
+################################################################################
+# Read; $(IOC):$(NAME)-GET-SETPOINT_ fetches the value from the device, 
+# $(IOC):$(NAME)-GET-SETPOINT recalculates the value to percentages.
+#
+# $(IOC):$(NAME)-GET-SETPOINT_ is scanned periodically, because setpoint value can be 
+# changed on ALARM or when the Counter reaches it's limit - this is configured
+# by the user
+################################################################################
+record(ai, "$(IOC):$(NAME)-GET-SETPOINT_")
+{
+	field(DESC, "Read setpoint in raw [0,32000]")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN2)")
+	field(INP, "@devBronkhorst.proto readInt(01,21) $(PORT)")
+	field(PREC, "1")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-SETPOINT")
+}
+
+record(calc, "$(IOC):$(NAME)-GET-SETPOINT")
+{
+	field(DESC, "Setpoint to percentage")
+	field(INPA, "$(IOC):$(NAME)-GET-SETPOINT_")
+	field(EGU, "%")
+	field(PREC, "1")
+	field(CALC, "A*100/32000")
+}
+
+################################################################################
+# Write; User writes the flow percentage to $(IOC):$(NAME)-SET-SETPOINT.
+# $(IOC):$(NAME)-SET-SETPOINT_ recalculates the percentage to interval [0, 32000] and 
+# writes the new setpoint to the device
+################################################################################
+record(ao, "$(IOC):$(NAME)-SET-SETPOINT")
+{
+	field(DESC, "Setpoint in percentage")
+	field(EGU, "%")
+	field(PREC, "1")
+	field(FLNK, "$(IOC):$(NAME)-SET-SETPOINT_")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-SETPOINT_")
+{
+	field(DESC, "Write setpoint in raw [0,32000]")
+	field(INPA, "$(IOC):$(NAME)-SET-SETPOINT")
+	field(PREC, "1")
+	field(DTYP, "stream")
+	field(CALC, "A*32000/100")
+	field(OUT, "@devBronkhorst.proto writeInt(01,21) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-SETPOINT_")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-SP-INIT_"){
+	field(INPA, "$(IOC):$(NAME)-SET-SETPOINT_")
+	field(CALC, "A*100/32000")
+	field(OUT, "$(IOC):$(NAME)-SET-SETPOINT")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-SET-SETPOINT")
+
+}
+
+################################################################################
+# Read/Write: Setpoint is ramped from 0% to 100% in slope*0.1 seconds
+################################################################################
+record(ai, "$(IOC):$(NAME)-GET-SETPOINT-SLOPE")
+{
+	field(DESC, "Read setpoint slope")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(PINI, "YES")
+	field(INP, "@devBronkhorst.proto readInt(01,22) $(PORT)")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-SETPOINT-SLOPE")
+{
+	field(DESC, "Write setpoint slope")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(OUT, "@devBronkhorst.proto writeInt(01,22) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-SETPOINT-SLOPE")
+}
+
+################################################################################
+# Read/Write: Get control mode from device. One of $(IOC):$(NAME)-CTRL-MODE-1/2_ will
+# be in illegal value state. The GUI screen will show the one which is not in 
+# illegal value state by checking the severity of the state
+################################################################################
+record(ai, "$(IOC):$(NAME)-GET-CTRL-MODE_")
+{
+	field(DESC,"")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(INP, "@devBronkhorst.proto readChar(01,04) $(PORT)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-CTRL-MODE-1_")
+}
+
+record(mbbi, "$(IOC):$(NAME)-CTRL-MODE-1_")
+{
+	field(DESC, "Control modes 0-15")
+	field(DTYP, "Raw Soft Channel")
+	field(INP, "$(IOC):$(NAME)-GET-CTRL-MODE_")
+	field(UNSV, "MAJOR")
+	field(ZRVL, "0")
+	field(ZRST, "BUS/RS232")
+	field(ONVL, "1")
+	field(ONST, "Analog input")
+	field(TWVL, "2")
+	field(TWST, "FLOWBUS*FLOWBUS")
+	field(THVL, "3")
+	field(THST, "Close valve")
+	field(FRVL, "4")
+	field(FRST, "Controller idle")
+	field(FVVL, "5")
+	field(FVST, "Testmode")
+	field(SXVL, "6")
+	field(SXST, "Tuning mode")
+	field(SVVL, "7")
+	field(SVST, "Setpoint=100%")
+	field(EIVL, "8")
+	field(EIST, "Purge valve")
+	field(NIVL, "9")
+	field(NIST, "Calibration mode")
+	field(TEVL, "10")
+	field(TEST, "analogIn*FLOWBUS")
+	field(ELVL, "11")
+	field(ELST, "Keyboard||FLOWBUS")
+	field(TVVL, "12")
+	field(TVST, "Setpoint=0%")
+	field(TTVL, "13")
+	field(TTST, "FLOWBUS*analogIn")
+	field(FTVL, "14")
+	field(FTST, "Range select mode")
+	field(FFVL, "15")
+	field(FFST, "Manual start, auto end")
+	field(FLNK, "$(IOC):$(NAME)-CTRL-MODE-2_")
+}
+
+record(mbbi, "$(IOC):$(NAME)-CTRL-MODE-2_")
+{
+	field(DESC, "Control modes 0-15")
+	field(DTYP, "Raw Soft Channel")
+	field(INP, "$(IOC):$(NAME)-GET-CTRL-MODE_")
+	field(UNSV, "MAJOR")
+	field(ZRSV, "MAJOR")
+	field(ONVL, "16")
+	field(ONST, "Auto start, manual end")
+	field(TWVL, "17")
+	field(TWST, "Auto start/end")
+	field(THVL, "18")
+	field(THST, "RS232 setpoint")
+	field(FRVL, "19")
+	field(FRST, "RS232 broadcast")
+	field(FVVL, "20")
+	field(FVST, "Valve stearing")
+	field(SXVL, "21")
+	field(SXST, "Analog valve stearing")
+	field(SVVL, "22")
+	field(SVST, "Valve safe state")
+}
+
+################################################################################
+# Read/Write: Set control mode. GUI screen will contain strings representing
+# the values on the interval [0, 22]. These values correspond to states in mbbi 
+# records $(IOC):$(NAME)-CTRL-MODE-1,2_
+################################################################################
+record(ao, "$(IOC):$(NAME)-SET-CTRL-MODE")
+{
+	field(DESC,"Set the control mode")
+	field(DTYP, "stream")	
+	field(OUT, "@devBronkhorst.proto writeChar(01,04) $(PORT)")
+}
+
+
+################################################################################
+# Read/Write: Get/Set fluid number.
+################################################################################
+record(ai, "$(IOC):$(NAME)-GET-FLUID-NUM")
+{
+	field(DESC, "Read fluid number")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(PINI, "YES")
+	field(INP, "@devBronkhorst.proto readChar(01,10) $(PORT)")
+
+}
+
+record(ao, "$(IOC):$(NAME)-SET-FLUID-NUM")
+{
+	field(DESC, "Set fluid number")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(OUT, "@devBronkhorst.proto writeChar(01,10) $(PORT)")
+}
+
+################################################################################
+# Read: Read sensor type
+################################################################################
+record(mbbi, "$(IOC):$(NAME)-GET-SENSOR-TYPE")
+{
+	field(DESC,"Read sensor type")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")	
+	field(INP, "@devBronkhorst.proto readChar(01,0E) $(PORT)")
+	field(ZRVL, "0")
+	field(ONVL, "1")
+	field(TWVL, "2")
+	field(THVL, "3")
+	field(FRVL, "4")
+	field(FVVL, "128")
+	field(SXVL, "129")
+	field(SVVL, "130")
+	field(EIVL, "131")
+	field(NIVL, "132")
+	field(ZRST, "Pressure controller")
+	field(ONST, "Liquid volume controller")
+	field(TWST, "Liquid/gas controller")
+	field(THST, "Gas volume controller")
+	field(FRST, "Other controller")
+	field(FVST, "Pressure sensor")
+	field(SXST, "Liquid volume sensor")
+	field(SVST, "Liquid/gas mass sensor")
+	field(EIST, "Gas volume sensor")
+	field(NIST, "Other sensor")
+	field(PINI, "YES")
+}
+
+
+################################################################################
+# Read: Get readout unit
+################################################################################
+record(mbbi, "$(IOC):$(NAME)-GET-CAP-UNIT-IDX")
+{
+	field(DESC, "Capacity unit index")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(INP, "@devBronkhorst.proto readChar(01,0F) $(PORT)")
+	field(ZRST, "ln/min")
+	field(ONST, "mln/h")
+	field(TWST, "mln/min")
+	field(THST, "ln/h")
+	field(FRST, "m3n/h")
+	field(FFST, "mls/min")
+	field(SXST, "mls/h")
+	field(SVST, "ls/min")
+	field(EIST, "ls/h")
+	field(NIST, "m3s/h")
+	field(PINI, "YES")
+}
+
+################################################################################
+# Read: Valve will go into the safe state if buss communication is lost and
+# control mode is in BUS/RS232 state or if initreset = 73 or if control mode
+# is 22.
+################################################################################
+record(mbbi, "$(IOC):$(NAME)-GET-VALVE-STATE")
+{
+	field(DESC, "Capacity unit index")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(INP, "@devBronkhorst.proto readChar(72,1A) $(PORT)")
+	field(ZRST, "Deactivate")
+	field(ONST, "Activate")
+	field(TWST, "Close")
+	field(THST, "Open")
+	field(FRST, "Current position")
+	field(FFST, "Safe Value")
+	field(PINI, "YES")
+}
+
+record(mbbo, "$(IOC):$(NAME)-SET-VALVE-STATE")
+{
+	field(DESC, "Capacity unit index")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(OUT, "@devBronkhorst.proto writeChar(72,1A) $(PORT)")
+	field(ZRST, "Deactivate")
+	field(ONST, "Activate")
+	field(TWST, "Close")
+	field(THST, "Open")
+	field(FRST, "Current position")
+	field(FFST, "Safe Value")
+	field(FLNK, "$(IOC):$(NAME)-GET-VALVE-STATE")
+}
+
+################################################################################
+# Read: Alarm info. mbbiDirect record checks which flags are set and then 
+# starts (forward links) the process chain of bi records representing the value
+# of each alarm state. 
+################################################################################
+record(mbbiDirect, "$(IOC):$(NAME)-GET-ALARM-INFO")
+{
+	field(DESC, "Read alarm flags")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readChar(01,14) $(PORT)")
+	field(SCAN, "$(SCAN2)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-ERROR-MSG-NUM")
+}
+
+################################################################################
+# Read: Alarm mode
+################################################################################
+record(mbbi, "$(IOC):$(NAME)-GET-ALARM-MODE")
+{
+	field(DESC, "Read alarm mode")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readChar(61,03) $(PORT)")
+	field(SCAN, "$(SCAN1)")
+	field(ZRST, "Off")
+	field(ONST, "Absolute Limits")
+	field(TWST, "Setpoint Limits")
+	field(THST, "Power up")
+	field(PINI, "YES")
+}
+
+################################################################################
+# Write; Set Alarm mode
+################################################################################
+record(mbbo, "$(IOC):$(NAME)-SET-ALARM-MODE")
+{
+	field(DESC, "Set alarm mode")
+	field(DTYP, "stream")
+	field(OUT, "@devBronkhorst.proto writeChar(61,03) $(PORT)")
+	field(SCAN, "$(SCAN1)")
+	field(ZRST, "Off")
+	field(ONST, "Absolute Limits")
+	field(TWST, "Setpoint Limits")
+	field(THST, "Power up")
+	field(FLNK, "$(IOC):$(NAME)-GET-ALARM-MODE")
+}
+################################################################################
+# Read-Write; Get/Set maximum alarm limit. User specifies percentage which is 
+# converted to interval [0, 32000]
+################################################################################
+record(calc, "$(IOC):$(NAME)-GET-ALM-MAX-LIM")
+{
+	field(DESC, "Get alarm maximum limit in %")
+	field(INPA, "$(IOC):$(NAME)-GET-ALM-MAX-LIM_")
+	field(SCAN, "$(SCAN1)")
+	field(PREC, "1")
+	field(CALC, "A*100/32000")
+	field(EGU, "%")
+}
+
+record(ai, "$(IOC):$(NAME)-GET-ALM-MAX-LIM_")
+{
+	field(DESC, "Get alarm maximum limit in raw")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readInt(61,21) $(PORT)")
+	field(SCAN, "$(SCAN1)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-ALM-MAX-LIM")
+}
+
+record(ai, "$(IOC):$(NAME)-SET-ALM-MAX-LIM")
+{
+	field(DESC, "Set alarm maximum limit in %")
+	field(FLNK, "$(IOC):$(NAME)-SET-ALM-MAX-LIM_")
+	field(EGU, "%")
+	field(PREC, "1")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-ALM-MAX-LIM_")
+{
+	field(DESC, "Set alarm maximum limit in raw")
+	field(DTYP, "stream")
+	field(INPA, "$(IOC):$(NAME)-SET-ALM-MAX-LIM")
+	field(CALC, "A*32000/100")
+	field(OUT, "@devBronkhorst.proto writeInt(61,21) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-ALM-MAX-LIM_")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-ALM-MAX-LIM-INIT_"){
+	field(INPA, "$(IOC):$(NAME)-SET-ALM-MAX-LIMT_")
+	field(CALC, "A*100/32000")
+	field(OUT, "$(IOC):$(NAME)-SET-ALM-MAX-LIM")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-SET-ALM-MAX-LIM")
+
+}
+
+################################################################################
+# Read-Write; Get/Set minimum alarm limit. User specifies percentage which is 
+# converted to interval [0, 32000]
+################################################################################
+record(calc, "$(IOC):$(NAME)-GET-ALM-MIN-LIM")
+{
+	field(DESC, "Get alarm minimum limit in %")
+	field(INPA, "$(IOC):$(NAME)-GET-ALM-MIN-LIM_")
+	field(SCAN, "$(SCAN1)")
+	field(PREC, "1")
+	field(CALC, "A*100/32000")
+}
+
+record(ai, "$(IOC):$(NAME)-GET-ALM-MIN-LIM_")
+{
+	field(DESC, "Get alarm minimum limit in raw")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readInt(61,22) $(PORT)")
+	field(SCAN, "$(SCAN1)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-ALM-MIN-LIM")
+}
+
+record(ai, "$(IOC):$(NAME)-SET-ALM-MIN-LIM")
+{
+	field(DESC, "Set alarm minimum limit in %")
+	field(EGU, "%")
+	field(PREC, "1")
+	field(FLNK, "$(IOC):$(NAME)-SET-ALM-MIN-LIM_")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-ALM-MIN-LIM_")
+{
+	field(DESC, "Set alarm minimum limit in raw")
+	field(DTYP, "stream")
+	field(INPA, "$(IOC):$(NAME)-SET-ALM-MIN-LIM")
+	field(CALC, "A*32000/100")
+	field(OUT, "@devBronkhorst.proto writeInt(61,22) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-ALM-MIN-LIM_")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-ALM-MIN-LIM-INIT_"){
+	field(INPA, "$(IOC):$(NAME)-SET-ALM-MIN-LIMT_")
+	field(CALC, "A*100/32000")
+	field(OUT, "$(IOC):$(NAME)-SET-ALM-MIN-LIM")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-SET-ALM-MIN-LIM")
+
+}
+
+
+################################################################################
+# Read-Write; Get/Set alarm setpoint mode. If device goes into an alarm state,
+# a new setpoint (stored in the record $(IOC):$(NAME)-GET/SET-ALM-NEW-SP) will be set, 
+# but only if device ($(IOC):$(NAME)-GET/SET-ALM-SP-MODE) is in state 1.
+################################################################################
+record(bi, "$(IOC):$(NAME)-GET-ALM-SP-MODE")
+{
+	field(DESC, "Get alarm setpoint mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(ZNAM, "NO")
+	field(ONAM, "YES")
+	field(PINI, "YES")
+	field(INP, "@devBronkhorst.proto readChar(61,05) $(PORT)")
+}
+
+record(bo, "$(IOC):$(NAME)-SET-ALM-SP-MODE")
+{
+	field(DESC, "Set alarm setpoint mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(ZNAM, "NO")
+	field(ONAM, "YES")
+	field(OUT, "@devBronkhorst.proto writeChar(61,05) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-ALM-SP-MODE")
+}
+
+record(ai, "$(IOC):$(NAME)-GET-ALM-NEW-SP_")
+{
+	field(DESC, "Read alarm setpoint")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readInt(61,26) $(PORT)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-ALM-NEW-SP")
+}
+
+record(calc, "$(IOC):$(NAME)-GET-ALM-NEW-SP")
+{
+	field(DESC, "Alarm setpoint to percentage")
+	field(INPA, "$(IOC):$(NAME)-GET-ALM-NEW-SP_")
+	field(EGU, "%")
+	field(PREC, "1")
+	field(CALC, "A*100/32000")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-ALM-NEW-SP")
+{
+	field(DESC, "Alarm setpoint in percentage")
+	field(EGU, "%")
+	field(PREC, "1")
+	field(FLNK, "$(IOC):$(NAME)-SET-ALM-NEW-SP_")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-ALM-NEW-SP_")
+{
+	field(DESC, "Write alarm setpoint")
+	field(INPA, "$(IOC):$(NAME)-SET-ALM-NEW-SP")
+	field(DTYP, "stream")
+	field(CALC, "A*32000/100")
+	field(OUT, "@devBronkhorst.proto writeInt(61,26) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-ALM-NEW-SP_")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-ALM-NEW-SP-INIT_"){
+	field(INPA, "$(IOC):$(NAME)-SET-ALM-NEW-SP_")
+	field(CALC, "A*100/32000")
+	field(OUT, "$(IOC):$(NAME)-SET-ALM-NEW-SP")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-SET-ALM-NEW-SP")
+
+}
+
+
+################################################################################
+# Read-Write; Alarm delay time seconds. Alarm action will be delayed when alarm
+# limit has been exceeded. Automatic reset will be delayed when sensor signal
+# reaches safe level again.
+################################################################################
+record(ai, "$(IOC):$(NAME)-GET-ALM-DELAY")
+{
+	field(DESC, "Get alarm delay")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(EGU, "s")
+	field(PINI, "YES")
+	field(INP, "@devBronkhorst.proto readChar(61,07) $(PORT)")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-ALM-DELAY")
+{
+	field(DESC, "Get alarm delay")
+	field(DTYP, "stream")
+	field(EGU, "s")
+	field(OUT, "@devBronkhorst.proto writeChar(61,07) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-ALM-DELAY")
+}
+
+################################################################################
+# Read-Write; Enable reset alarm for different reset triggers.
+################################################################################
+record(mbbi, "$(IOC):$(NAME)-GET-RESET-ALM-MODE")
+{
+	field(DESC, "Get reset alarm mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(INP, "@devBronkhorst.proto readChar(61,09) $(PORT)")
+	field(ZRST, "OFF")
+	field(ONST, "Switch")
+	field(TWST, "External")
+	field(THST, "External,Switch")
+	field(FRST, "RS232")
+	field(FVST, "RS232,Switch")
+	field(SXST, "RS232,Ext")
+	field(SVST, "RS232,Ext,Switch")
+	field(EIST, "Auto")
+	field(NIST, "Auto,Switch")
+	field(TEST, "Auto,Ext")
+	field(ELST, "Auto,Ext,Switch")
+	field(TVST, "Auto,RS232")
+	field(TTST, "Auto,RS232,Switch")
+	field(FTST, "Auto,RS232,Ext")
+	field(FFST, "Auto,RS232,Ext,Switch")
+	#field(PINI, "YES")
+}
+
+record(mbboDirect, "$(IOC):$(NAME)-SET-RESET-ALM-MODE")
+{
+	field(DESC, "Set alarm reset mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(B0, "1")
+	field(B2, "1")
+	field(OUT, "@devBronkhorst.proto writeChar(61,09) $(PORT)")
+#	field(ZRST, "OFF")
+#	field(ONST, "Switch")
+#	field(TWST, "External")
+#	field(THST, "Switch,External")
+#	field(FRST, "RS232")
+#	field(FVST, "RS232,Switch")
+#	field(SXST, "RS232,Ext")
+#	field(SVST, "RS232,Ext,Switch")
+#	field(EIST, "Auto")
+#	field(NIST, "Auto,Switch")
+#	field(TEST, "Auto,Ext")
+#	field(ELST, "Auto,Ext,Switch")
+#	field(TVST, "Auto,RS232")
+#	field(TTST, "Auto,RS232,Switch")
+#	field(FTST, "Auto,RS232,Ext")
+#	field(FFST, "Auto,RS232,Ext,Switch")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-RESET-ALM-MODE")
+}
+
+record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-SWITCH")
+{
+	field(DESC, "")
+	field(OUT, "$(IOC):$(NAME)-SET-RESET-ALM-MODE.B0")
+	field(FLNK, "$(IOC):$(NAME)-SET-RESET-ALM-MODE")
+
+}
+
+record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-EXT")
+{
+	field(DESC, "")
+	field(OUT, "$(IOC):$(NAME)-SET-RESET-ALM-MODE.B1")
+	field(FLNK, "$(IOC):$(NAME)-SET-RESET-ALM-MODE")
+
+}
+
+record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-RS232")
+{
+	field(DESC, "")
+	field(OUT, "$(IOC):$(NAME)-SET-RESET-ALM-MODE.B2")
+	field(FLNK, "$(IOC):$(NAME)-SET-RESET-ALM-MODE")
+
+}
+
+record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-AUTO")
+{
+	field(DESC, "")
+	field(OUT, "$(IOC):$(NAME)-SET-RESET-ALM-MODE.B3")
+	field(FLNK, "$(IOC):$(NAME)-SET-RESET-ALM-MODE")
+
+}
+
+################################################################################
+# Read-Write; Counter mode.
+################################################################################
+record(mbbi, "$(IOC):$(NAME)-GET-CNT-MODE")
+{
+	field(DESC, "Get counter mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(INP, "@devBronkhorst.proto readChar(68,08) $(PORT)")
+	field(ZRST, "Off")
+	field(ONST, "Continuous")
+	field(TWST, "To limit")
+	field(PINI, "YES")
+}
+
+record(mbbo, "$(IOC):$(NAME)-SET-CNT-MODE")
+{
+	field(DESC, "Set counter mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(OUT, "@devBronkhorst.proto writeChar(68,08) $(PORT)")
+	field(ZRST, "Off")
+	field(ONST, "Continuous")
+	field(TWST, "To limit")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT-MODE")
+}
+
+################################################################################
+# Read-Write; Counter setpoint mode. 0 - No setpoint change when limit is 
+# reached. 1 - setpoint change when limit is reached
+################################################################################
+record(bi, "$(IOC):$(NAME)-GET-CNT-SP-MODE")
+{
+	field(DESC, "Get counter mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(INP, "@devBronkhorst.proto readChar(68,05) $(PORT)")
+	field(ZNAM, "NO")
+	field(ONAM, "YES")
+	field(PINI, "YES")
+}
+
+record(bo, "$(IOC):$(NAME)-SET-CNT-SP-MODE")
+{
+	field(DESC, "Set counter mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(OUT, "@devBronkhorst.proto writeChar(68,05) $(PORT)")
+	field(ZNAM, "NO")
+	field(ONAM, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT-SP-MODE")
+}
+
+################################################################################
+# Read-Write; Get/Set new counter setpoint which will apply f GET-CNT-SP-MODE is
+# YES when limit is reached.
+################################################################################
+record(ai, "$(IOC):$(NAME)-GET-CNT-NEW-SP_")
+{
+	field(DESC, "Read counter new setpoint")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readInt(68,26) $(PORT)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT-NEW-SP")
+}
+
+record(calc, "$(IOC):$(NAME)-GET-CNT-NEW-SP")
+{
+	field(DESC, "Counter new setpoint to percentage")
+	field(INPA, "$(IOC):$(NAME)-GET-CNT-NEW-SP_")
+	field(EGU, "%")
+	field(PREC, "1")
+	field(CALC, "A*100/32000")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-CNT-NEW-SP")
+{
+	field(DESC, "Counter new setpoint in percentage")
+	field(EGU, "%")
+	field(PREC, "1")
+	field(FLNK, "$(IOC):$(NAME)-SET-CNT-NEW-SP_")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-CNT-NEW-SP_")
+{
+	field(DESC, "Write counter new setpoint")
+	field(INPA, "$(IOC):$(NAME)-SET-CNT-NEW-SP")
+	field(DTYP, "stream")
+	field(CALC, "A*32000/100")
+	field(OUT, "@devBronkhorst.proto writeInt(68,26) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT-NEW-SP_")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-CNT-NEW-SP-INIT_"){
+	field(INPA, "$(IOC):$(NAME)-SET-CNT-NEW-SP_")
+	field(CALC, "A*100/32000")
+	field(OUT, "$(IOC):$(NAME)-SET-CNT-NEW-SP")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-SET-CNT-NEW-SP")
+
+}
+
+################################################################################
+# Read-Write; Counter unit
+################################################################################
+record(mbbi, "$(IOC):$(NAME)-GET-CNT-UNIT")
+{
+	field(DESC, "Read counter unit")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readChar(68,02) $(PORT)")
+	field(ZRST, "ln")
+	field(ONST, "mm3n")
+	field(TWST, "mln")
+	field(THST, "cm3n")
+	field(FRST, "uln")
+	field(FVST, "dm3n")
+	field(SXST, "m3n")
+	field(SVST, "uls")
+	field(EIST, "mm3s")
+	field(NIST, "mls")
+	field(TEST, "cm3s")
+	field(ELST, "ls")
+	field(TVST, "dm3s")
+	field(TTST, "m3s")
+#	field(PINI, "YES")
+}
+
+record(mbbo, "$(IOC):$(NAME)-SET-CNT-UNIT")
+{
+	field(DESC, "Read counter unit")
+	field(DTYP, "stream")
+	field(OUT, "@devBronkhorst.proto writeChar(68,02) $(PORT)")
+	field(VAL, "0")
+	field(ZRST, "ln")
+	field(ONST, "mm3n")
+	field(TWST, "mln")
+	field(THST, "cm3n")
+	field(FRST, "uln")
+	field(FVST, "dm3n")
+	field(SXST, "m3n")
+	field(SVST, "uls")
+	field(EIST, "mm3s")
+	field(NIST, "mls")
+	field(TEST, "cm3s")
+	field(ELST, "ls")
+	field(TVST, "dm3s")
+	field(TTST, "m3s")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT-UNIT")
+}
+
+
+################################################################################
+# Read-Write; Enable reset counter for different reset triggers.
+################################################################################
+record(mbbi, "$(IOC):$(NAME)-GET-RESET-CNT-MODE")
+{
+	field(DESC, "Get reset alarm mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(INP, "@devBronkhorst.proto readChar(68,09) $(PORT)")
+	field(ZRST, "OFF")
+	field(ONST, "Switch")
+	field(TWST, "External")
+	field(THST, "Switch,External")
+	field(FRST, "RS232")
+	field(FVST, "RS232,Switch")
+	field(SXST, "RS232,Ext")
+	field(SVST, "RS232,Ext,Switch")
+	field(EIST, "Auto")
+	field(NIST, "Auto,Switch")
+	field(TEST, "Auto,Ext")
+	field(ELST, "Auto,Ext,Switch")
+	field(TVST, "Auto,RS232")
+	field(TTST, "Auto,RS232,Switch")
+	field(FTST, "Auto,RS232,Ext")
+	field(FFST, "Auto,RS232,Ext,Switch")
+}
+
+record(mbboDirect, "$(IOC):$(NAME)-SET-RESET-CNT-MODE")
+{
+	field(DESC, "Set alarm reset mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(B0, "1")
+	field(B2, "1")
+	field(OUT, "@devBronkhorst.proto writeChar(68,09) $(PORT)")
+#	field(ZRST, "OFF")
+#	field(ONST, "Switch")
+#	field(TWST, "External")
+#	field(THST, "Switch,External")
+#	field(FRST, "RS232")
+#	field(FVST, "RS232,Switch")
+#	field(SXST, "RS232,Ext")
+#	field(SVST, "RS232,Ext,Switch")
+#	field(EIST, "Auto")
+#	field(NIST, "Auto,Switch")
+#	field(TEST, "Auto,Ext")
+#	field(ELST, "Auto,Ext;Switch")
+#	field(TVST, "Auto,RS232")
+#	field(TTST, "Auto,RS232,Switch")
+#	field(FTST, "Auto,RS232,Ext")
+#	field(FFST, "Auto,RS232,Ext,Switch")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-RESET-CNT-MODE")
+}
+
+record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-CNT-SWITCH")
+{
+	field(DESC, "")
+	field(OUT, "$(IOC):$(NAME)-SET-RESET-CNT-MODE.B0")
+	field(FLNK, "$(IOC):$(NAME)-SET-RESET-CNT-MODE")
+}
+
+record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-CNT-EXT")
+{
+	field(DESC, "")
+	field(OUT, "$(IOC):$(NAME)-SET-RESET-CNT-MODE.B1")
+	field(FLNK, "$(IOC):$(NAME)-SET-RESET-CNT-MODE")
+}
+
+record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-CNT-RS232")
+{
+	field(DESC, "")
+	field(OUT, "$(IOC):$(NAME)-SET-RESET-CNT-MODE.B2")
+	field(FLNK, "$(IOC):$(NAME)-SET-RESET-CNT-MODE")
+}
+
+record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-CNT-AUTO")
+{
+	field(DESC, "")
+	field(OUT, "$(IOC):$(NAME)-SET-RESET-CNT-MODE.B3")
+	field(FLNK, "$(IOC):$(NAME)-SET-RESET-CNT-MODE")
+}
+################################################################################
+# Write. RESET
+################################################################################
+record(mbbo, "$(IOC):$(NAME)-RESET")
+{
+	field(DESC, "Set alarm reset mode")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(OUT, "@devBronkhorst.proto writeChar(73,08) $(PORT)")
+	field(ZRST, "NO RESET")
+	field(ONST, "Counter")
+	field(TWST, "Alarm")
+	field(THST, "Limit counter")
+	field(FRST, "Counter reset & OFF")
+	field(FVST, "Module")
+	field(SXST, "Alarm info error")
+	field(SVST, "Alarm info warning")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT-MODE")
+
+}
+
+################################################################################
+################################################################################
+#FLOAT PARAMETERS
+################################################################################
+################################################################################
+################################################################################
+# Read; Counter value
+################################################################################
+record(ai, "$(IOC):$(NAME)-GET-CNT")
+{
+	field(DESC, "Read counter")
+	field(PREC, "3")
+}
+
+record(aSub, "$(IOC):$(NAME)-GET-CNT_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-GET-CNT__")
+	field(FTA, "LONG")
+	field(OUTA, "$(IOC):$(NAME)-GET-CNT")
+	field(FTVA, "FLOAT")
+	field(SNAM, "readFloat")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT")
+}
+
+record(ai, "$(IOC):$(NAME)-GET-CNT__")
+{
+	field(DESC, "Read counter as long")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readFloat(68,41) $(PORT)")
+	field(SCAN, "$(SCAN2)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT_")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-CNT")
+{
+	field(DESC, "Set counter")
+	field(FLNK, "$(IOC):$(NAME)-SET-CNT_")
+}
+
+record(aSub, "$(IOC):$(NAME)-SET-CNT_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-SET-CNT")
+	field(FTA, "FLOAT")
+	field(OUTA, "$(IOC):$(NAME)-SET-CNT__")
+	field(FTVA, "LONG")
+	field(SNAM, "writeFloat")
+	field(FLNK, "$(IOC):$(NAME)-SET-CNT__")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-CNT__")
+{
+	field(DESC, "Set counter as long")
+	field(DTYP, "stream")
+	field(OUT, "@devBronkhorst.proto writeFloat(68,41) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT__")
+}
+
+record(aSub, "$(IOC):$(NAME)-SET-CNT-INIT_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-SET-CNT__")
+	field(FTA, "LONG")
+	field(OUTA, "$(IOC):$(NAME)-SET-CNT")
+	field(FTVA, "FLOAT")
+	field(SNAM, "readFloat")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-SET-CNT")
+}
+
+
+################################################################################
+# Read; Counter limit
+################################################################################
+record(ai, "$(IOC):$(NAME)-GET-CNT-LIM")
+{
+	field(DESC, "Read counter limit")
+	field(PREC, "3")
+}
+
+record(aSub, "$(IOC):$(NAME)-GET-CNT-LIM_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-GET-CNT-LIM__")
+	field(FTA, "LONG")
+	field(OUTA, "$(IOC):$(NAME)-GET-CNT-LIM")
+	field(FTVA, "FLOAT")
+	field(SNAM, "readFloat")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT-LIM")
+}
+
+record(ai, "$(IOC):$(NAME)-GET-CNT-LIM__")
+{
+	field(DESC, "Read counter limit as long")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readFloat(68,43) $(PORT)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT-LIM_")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-CNT-LIM")
+{
+	field(DESC, "Set counter limit")
+	field(PREC, "3")
+	field(FLNK, "$(IOC):$(NAME)-SET-CNT-LIM_")
+}
+
+record(aSub, "$(IOC):$(NAME)-SET-CNT-LIM_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-SET-CNT-LIM")
+	field(FTA, "FLOAT")
+	field(OUTA, "$(IOC):$(NAME)-SET-CNT-LIM__")
+	field(FTVA, "LONG")
+	field(SNAM, "writeFloat")
+	field(FLNK, "$(IOC):$(NAME)-SET-CNT-LIM__")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-CNT-LIM__")
+{
+	field(DESC, "Set counter limit as INPlong")
+	field(DTYP, "stream")
+	field(OUT, "@devBronkhorst.proto writeFloat(68,43) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-CNT-LIM__")
+}
+
+record(aSub, "$(IOC):$(NAME)-SET-CNT-LIM-INIT_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-SET-CNT-LIM__")
+	field(FTA, "LONG")
+	field(OUTA, "$(IOC):$(NAME)-SET-CNT-LIM")
+	field(FTVA, "FLOAT")
+	field(SNAM, "readFloat")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-SET-CNT-LIM")
+}
+
+################################################################################
+# Read/write PID parameters
+################################################################################
+record(ai, "$(IOC):$(NAME)-GET-P")
+{
+	field(DESC, "Read P")
+	field(PREC, "3")
+}
+
+record(aSub, "$(IOC):$(NAME)-GET-P_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-GET-P__")
+	field(FTA, "LONG")
+	field(OUTA, "$(IOC):$(NAME)-GET-P")
+	field(FTVA, "FLOAT")
+	field(SNAM, "readFloat")
+	field(FLNK, "$(IOC):$(NAME)-GET-P")
+}
+
+record(ai, "$(IOC):$(NAME)-GET-P__")
+{
+	field(DESC, "Read P as long")
+	field(SCAN, "Passive")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readFloat(72,55) $(PORT)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-P_")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-P")
+{
+	field(DESC, "Set P")
+	field(PREC, "3")
+	field(FLNK, "$(IOC):$(NAME)-SET-P_")
+}
+
+record(aSub, "$(IOC):$(NAME)-SET-P_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-SET-P")
+	field(FTA, "FLOAT")
+	field(OUTA, "$(IOC):$(NAME)-SET-P__")
+	field(FTVA, "LONG")
+	field(SNAM, "writeFloat")
+	field(FLNK, "$(IOC):$(NAME)-SET-P__")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-P__")
+{
+	field(DESC, "Set P as INPlong")
+	field(DTYP, "stream")
+	field(OUT, "@devBronkhorst.proto writeFloat(72,55) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-P__")
+}
+
+record(ai, "$(IOC):$(NAME)-GET-I")
+{
+	field(DESC, "Read I")
+	field(PREC, "3")
+}
+
+record(aSub, "$(IOC):$(NAME)-GET-I_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-GET-I__")
+	field(FTA, "LONG")
+	field(OUTA, "$(IOC):$(NAME)-GET-I")
+	field(FTVA, "FLOAT")
+	field(SNAM, "readFloat")
+	field(FLNK, "$(IOC):$(NAME)-GET-I")
+}
+
+record(ai, "$(IOC):$(NAME)-GET-I__")
+{
+	field(DESC, "Read I as long")
+	field(SCAN, "Passive")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readFloat(72,56) $(PORT)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-I_")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-I")
+{
+	field(DESC, "Set I")
+	field(PREC, "3")
+	field(FLNK, "$(IOC):$(NAME)-SET-I_")
+}
+
+record(aSub, "$(IOC):$(NAME)-SET-I_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-SET-I")
+	field(FTA, "FLOAT")
+	field(OUTA, "$(IOC):$(NAME)-SET-I__")
+	field(FTVA, "LONG")
+	field(SNAM, "writeFloat")
+	field(FLNK, "$(IOC):$(NAME)-SET-I__")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-I__")
+{
+	field(DESC, "Set I as INPlong")
+	field(DTYP, "stream")
+	field(OUT, "@devBronkhorst.proto writeFloat(72,56) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-I__")
+}
+
+record(ai, "$(IOC):$(NAME)-GET-D")
+{
+	field(DESC, "Read D")
+	field(PREC, "3")
+}
+
+record(aSub, "$(IOC):$(NAME)-GET-D_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-GET-D__")
+	field(FTA, "LONG")
+	field(OUTA, "$(IOC):$(NAME)-GET-D")
+	field(FTVA, "FLOAT")
+	field(SNAM, "readFloat")
+	field(FLNK, "$(IOC):$(NAME)-GET-D")
+}
+
+record(ai, "$(IOC):$(NAME)-GET-D__")
+{
+	field(DESC, "Read D as long")
+	field(SCAN, "Passive")
+	field(DTYP, "stream")
+	field(INP, "@devBronkhorst.proto readFloat(72,57) $(PORT)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-D_")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-D")
+{
+	field(DESC, "Set D")
+	field(PREC, "3")
+	field(FLNK, "$(IOC):$(NAME)-SET-D_")
+}
+
+record(aSub, "$(IOC):$(NAME)-SET-D_")
+{
+	field(DESC, "Interpret long as float")
+	field(INPA, "$(IOC):$(NAME)-SET-D")
+	field(FTA, "FLOAT")
+	field(OUTA, "$(IOC):$(NAME)-SET-D__")
+	field(FTVA, "LONG")
+	field(SNAM, "writeFloat")
+	field(FLNK, "$(IOC):$(NAME)-SET-D__")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-D__")
+{
+	field(DESC, "Set D as INPlong")
+	field(DTYP, "stream")
+	field(OUT, "@devBronkhorst.proto writeFloat(72,57) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-D__")
+}
+################################################################################
+################################################################################
+#STATUS PARAMETERS
+################################################################################
+################################################################################
+################################################################################
+# Read:Number of error messages. 0 - no error message, 1 - at least 1 error
+# message
+################################################################################
+record(bi, "$(IOC):$(NAME)-ERROR-MSG-NUM")
+{
+	field(DESC, "Number of error mesgs")
+	field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B0")
+	field(SCAN, "$(SCAN1)")
+	field(ZNAM, "No error")
+	field(ONAM, "Error")
+	field(FLNK, "$(IOC):$(NAME)-WARNING-MSG-NUM")
+}
+
+################################################################################
+# Read:Number of warning messages. 0 - no warning message, 1 - at least 1 
+# warning message
+################################################################################
+record(bi, "$(IOC):$(NAME)-WARNING-MSG-NUM")
+{
+	field(DESC, "Number of warning msgs")
+	field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B1")
+	field(SCAN, "$(SCAN1)")
+	field(ZNAM, "No warning")
+	field(ONAM, "Warning")
+	field(FLNK, "$(IOC):$(NAME)-MIN-ALARM")
+}
+
+################################################################################
+# Read:Number of minimum alarm messages for measured signal. 
+# 0 - no minimum alarm message, 
+# 1 - at least 1 minumum alarm message
+################################################################################
+record(bi, "$(IOC):$(NAME)-MIN-ALARM")
+{
+	field(DESC, "Number of min alarm msgs")
+	field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B2")
+	field(SCAN, "$(SCAN1)")
+	field(ZNAM, "No min alarm")
+	field(ONAM, "Min alarm")
+	field(FLNK, "$(IOC):$(NAME)-MAX-ALARM")
+}
+
+################################################################################
+# Read:Number of maximum alarm messages for measured signal. 
+# 0 - no maximum alarm message, 
+# 1 - at least 1 maximum alarm message
+################################################################################
+record(bi, "$(IOC):$(NAME)-MAX-ALARM")
+{
+	field(DESC, "Number of max alar msgs")
+	field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B3")
+	field(SCAN, "$(SCAN1)")
+	field(ZNAM, "No max alarm")
+	field(ONAM, "Max alarm")
+	field(FLNK, "$(IOC):$(NAME)-BATCH-CNT-ALARM")
+}
+
+################################################################################
+# Read: 0 - Batch counter has not reached it's limit
+#       1 - Batch counter has reached it's limit
+################################################################################
+record(bi, "$(IOC):$(NAME)-BATCH-CNT-ALARM")
+{
+	field(DESC, "Batch counter alarm")
+	field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B4")
+	field(SCAN, "$(SCAN1)")
+	field(ZNAM, "OK")
+	field(ONAM, "Limit")
+	field(FLNK, "$(IOC):$(NAME)-RESPONSE-ALARM")
+}
+
+################################################################################
+# Read: 0 - Response OK (setpoint-measure within limit)
+#       1 - Response alarm message: setpoint-measure is too high
+################################################################################
+record(bi, "$(IOC):$(NAME)-RESPONSE-ALARM")
+{
+	field(DESC, "Response alarm")
+	field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B5")
+	field(SCAN, "$(SCAN1)")
+	field(ZNAM, "OK")
+	field(ONAM, "SP to high")
+	field(FLNK, "$(IOC):$(NAME)-MASTER-OUT-ALARM")
+}
+
+################################################################################
+# Read: 0 - Master output signal OK (or unused)
+#       1 - Master output signal not received: check master instrument
+################################################################################
+record(bi, "$(IOC):$(NAME)-MASTER-OUT-ALARM")
+{
+	field(DESC, "Master output alarm")
+	field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B6")
+	field(SCAN, "$(SCAN1)")
+	field(ZNAM, "OK")
+	field(ONAM, "Not received")
+	field(FLNK, "$(IOC):$(NAME)-HARDWARE-ALARM")
+}
+
+################################################################################
+# Read: 0 - Hardware OK
+#       1 - Hardware error message: check your hardware
+################################################################################
+record(bi, "$(IOC):$(NAME)-HARDWARE-ALARM")
+{
+	field(DESC, "Response alarm")
+	field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B7")
+	field(SCAN, "$(SCAN1)")
+	field(ZNAM, "OK")
+	field(ONAM, "Error")
+}
+
+
+################################################################################
+# Read: Check if communication is OK
+################################################################################
+record(calc, "$(IOC):$(NAME)-COMM-STATUS")
+{
+	field(DESC, "Communication status")
+	field(INPA, "$(IOC):$(NAME)-GET-MEASURE_.STAT")
+	field(CALC, "A>0")
+	field(FLNK, "$(IOC):$(NAME)-ALARM")
+}
+
+################################################################################
+# Read; Sum of communication and device errors. If either device or comm. is in
+# error, value is 1. LED on the main screen uses this to determine if everything
+# is ok.
+################################################################################
+record(calc, "$(IOC):$(NAME)-ALARM")
+{
+	field(DESC, "Communication status")
+	field(INPA, "$(IOC):$(NAME)-COMM-STATUS")
+	field(INPB, "$(IOC):$(NAME)-GET-ALARM-INFO.B0")
+	field(INPC, "$(IOC):$(NAME)-GET-ALARM-INFO.B1")
+	field(INPD, "$(IOC):$(NAME)-GET-ALARM-INFO.B2")
+	field(INPE, "$(IOC):$(NAME)-GET-ALARM-INFO.B3")
+	field(INPF, "$(IOC):$(NAME)-GET-ALARM-INFO.B5")
+	field(INPG, "$(IOC):$(NAME)-GET-ALARM-INFO.B6")
+	field(INPH, "$(IOC):$(NAME)-GET-ALARM-INFO.B7")
+	field(CALC, "(A+B+C+D+E+F+G+H)>0")
+}
+
+################################################################################
+# Lock/unlock secured parameters, e.g. PID parameters
+################################################################################
+
+record(ai, "$(IOC):$(NAME)-GET-INITRESET__")
+{
+	field(DESC, "Get locked/unlocked")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(INP, "@devBronkhorst.proto readChar(00,0A) $(PORT)")
+	field(PINI, "YES")
+	field(FLNK, "$(IOC):$(NAME)-GET-INITRESET_")
+}
+
+record(calcout, "$(IOC):$(NAME)-GET-INITRESET_"){
+	field(CALC, "(A=82)?0:(A=64)?1:2")
+	field(INPA, "$(IOC):$(NAME)-GET-INITRESET__")
+	field(OUT, "$(IOC):$(NAME)-GET-INITRESET")
+	field(FLNK, "$(IOC):$(NAME)-GET-INITRESET")
+}
+
+record(mbbo, "$(IOC):$(NAME)-GET-INITRESET")
+{	
+	field(DESC, "Locked/unlocked")	
+	field(ZRVL, "0")
+	field(ZRST, "Lock")
+	field(ONVL, "1")
+	field(ONST, "Unlock")
+	field(TWVL, "2")
+	field(TWST, "Unknown")
+}
+
+record(mbbo, "$(IOC):$(NAME)-SET-INITRESET")
+{
+	field(DESC, "Lock/unlock")
+	field(ZRVL, "0")
+	field(ZRST, "Lock")
+	field(ONVL, "1")
+	field(ONST, "Unlock")
+	field(OUT, "$(IOC):$(NAME)-SET-INITRESET_")
+	field(FLNK, "$(IOC):$(NAME)-SET-INITRESET_")
+}
+
+record(calcout, "$(IOC):$(NAME)-SET-INITRESET_"){
+	field(CALC, "(A=1)?64:82")
+	field(INPA, "$(IOC):$(NAME)-SET-INITRESET")
+	field(OUT, "$(IOC):$(NAME)-SET-INITRESET__")
+	field(FLNK, "$(IOC):$(NAME)-SET-INITRESET__")
+}
+
+record(ao, "$(IOC):$(NAME)-SET-INITRESET__")
+{
+	field(DESC, "Send Lock/unlock")
+	field(DTYP, "stream")
+	field(SCAN, "$(SCAN1)")
+	field(OUT, "@devBronkhorst.proto writeChar(00,0A) $(PORT)")
+	field(FLNK, "$(IOC):$(NAME)-GET-INITRESET__")
+}