diff --git a/base/uk.ac.stfc.isis.ibex.opis/resources/opi_info.xml b/base/uk.ac.stfc.isis.ibex.opis/resources/opi_info.xml
index d29524a41e..a9435f6f85 100644
--- a/base/uk.ac.stfc.isis.ibex.opis/resources/opi_info.xml
+++ b/base/uk.ac.stfc.isis.ibex.opis/resources/opi_info.xml
@@ -4126,5 +4126,23 @@
+
+ Quantum Northwest NeutronIQ
+
+ SAMPLECHANGER
+ quantumnorthwest.opi
+ Quantum Northwest NeutronIQ
+
+
+ QNW
+ The QNW PV prefix (e.g. QNW_01).
+ QNW_01
+
+
+
+ Temperature controllers
+
+
+
diff --git a/base/uk.ac.stfc.isis.ibex.opis/resources/quantumnorthwest.opi b/base/uk.ac.stfc.isis.ibex.opis/resources/quantumnorthwest.opi
new file mode 100644
index 0000000000..3c44f066b1
--- /dev/null
+++ b/base/uk.ac.stfc.isis.ibex.opis/resources/quantumnorthwest.opi
@@ -0,0 +1,1707 @@
+
+
+
+
+ false
+ -1
+ -1
+
+ true
+
+
+
+ 5.1.0
+
+
+
+ 6
+ 600
+
+ true
+ $(P)$(QNW):
+
+
+
+
+ true
+ true
+ true
+ true
+ true
+ Display
+ 800
+ -1fce3382:15fb9cec36d:-75d6
+ -1
+ -1
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Header1_NEW
+
+
+
+
+ 37
+ 0
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ QuantumNorthwest NeutronIQ
+
+ false
+ 1
+ true
+ Label
+ 793
+ true
+ -6392638:16079499dc3:-7c5e
+ 6
+ 6
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Header2_NEW
+
+
+
+
+ 37
+ 0
+ Label_1
+
+
+ true
+ true
+ false
+
+
+ false
+ $(NAME)
+
+ false
+ 1
+ true
+ Label
+ 793
+ true
+ -6392638:16079499dc3:-7c5d
+ 6
+ 42
+
+
+
+
+
+
+
+
+
+ 13
+ 1
+ true
+ false
+
+ ISIS_GroupBox_NEW
+
+
+
+
+ 67
+ false
+
+ true
+
+ System
+
+
+ true
+ true
+ false
+
+
+ true
+
+ false
+ true
+ Grouping Container
+ 427
+ -6392638:16079499dc3:-7c13
+ 6
+ 78
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Holder type:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ -48159ee9:1567f536160:-5c7e
+ 0
+ 6
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update
+ 0
+ true
+ $(PV_ROOT)ID
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ -48159ee9:1567f536160:-5a1b
+ 138
+ 6
+
+
+
+
+ false
+ false
+
+
+
+ false
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Button_NEW
+
+ false
+
+
+
+ 1
+
+ Dummy
+ 0
+
+
+
+
+ true
+ true
+ false
+
+
+
+
+ false
+
+ true
+ Action Button
+ 1
+ -648922a4:1624e4fa0bd:-7f69
+ 198
+ 267
+
+
+
+
+
+
+
+
+
+ 13
+ 1
+ true
+ false
+
+ ISIS_GroupBox_NEW
+
+
+
+
+ 106
+ false
+
+ true
+
+ Stirring
+
+
+ true
+ true
+ false
+
+
+ true
+
+ false
+ true
+ Grouping Container
+ 427
+ 2f7f40dc:19e9bca61ef:-7d2b
+ 6
+ 372
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Max speed:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7d29
+ 0
+ 6
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update
+ 0
+ true
+ $(PV_ROOT)STIR:SPEED:MAX
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7d28
+ 138
+ 6
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label_1
+
+
+ true
+ true
+ false
+
+
+ false
+ Min speed:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7d27
+ 0
+ 30
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update_1
+ 0
+ true
+ $(PV_ROOT)STIR:SPEED:MIN
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7d26
+ 138
+ 30
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label_15
+
+
+ true
+ true
+ false
+
+
+ false
+ Speed:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7d25
+ 0
+ 54
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update_1
+ 0
+ true
+ $(PV_ROOT)STIR:SPEED
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7d24
+ 138
+ 54
+
+
+
+ false
+ false
+ false
+
+
+
+ false
+
+
+
+ 3
+ 1
+
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ false
+ 1.7976931348623157E308
+ -1.7976931348623157E308
+ false
+ Text Input_1
+ 0
+ true
+ $(PV_ROOT)STIR:SPEED:SP
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ 0
+ true
+
+ 0.0
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Text Input
+ 90
+ 2f7f40dc:19e9bca61ef:-7d21
+ 228
+ 54
+
+
+
+
+
+
+
+
+
+
+ 13
+ 1
+ true
+ false
+
+ ISIS_GroupBox_NEW
+
+
+
+
+ 229
+ false
+
+ true
+
+ Temperature Control
+
+
+ true
+ true
+ false
+
+
+ true
+
+ false
+ true
+ Grouping Container
+ 427
+ 2f7f40dc:19e9bca61ef:-7cfc
+ 6
+ 144
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Maximum:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7cfb
+ 0
+ 6
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update
+ 0
+ true
+ $(PV_ROOT)TEMP:MAX
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7cfa
+ 138
+ 6
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label_1
+
+
+ true
+ true
+ false
+
+
+ false
+ Minimum:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7cf9
+ 0
+ 30
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update_1
+ 0
+ true
+ $(PV_ROOT)TEMP:MIN
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7cf8
+ 138
+ 30
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label_15
+
+
+ true
+ true
+ false
+
+
+ false
+ Setpoint:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7cf7
+ 0
+ 78
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update_1
+ 0
+ true
+ $(PV_ROOT)TEMP:SP:RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7cf6
+ 138
+ 78
+
+
+
+ false
+ false
+ false
+
+
+
+ false
+
+
+
+ 3
+ 1
+
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ false
+ 1.7976931348623157E308
+ -1.7976931348623157E308
+ false
+ Text Input_1
+ 0
+ true
+ $(PV_ROOT)TEMP:SP
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ 0
+ true
+
+ 0.0
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Text Input
+ 90
+ 2f7f40dc:19e9bca61ef:-7cf5
+ 228
+ 78
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label_2
+
+
+ true
+ true
+ false
+
+
+ false
+ Sample:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7cea
+ 0
+ 54
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update_1
+ 0
+ true
+ $(PV_ROOT)TEMP
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7ce9
+ 138
+ 54
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update_1
+ 0
+ true
+ $(PV_ROOT)TEMP:STAT
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7ce1
+ 230
+ 54
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label_2
+
+
+ true
+ true
+ false
+
+
+ false
+ Probe:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7cd6
+ 0
+ 150
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update_1
+ 0
+ true
+ $(PV_ROOT)TEMP:PROBE
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7cd5
+ 138
+ 150
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label_2
+
+
+ true
+ true
+ false
+
+
+ false
+ Heat exchanger:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7cce
+ 0
+ 174
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update_1
+ 0
+ true
+ $(PV_ROOT)TEMP:HX
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7ccd
+ 138
+ 174
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label_15
+
+
+ true
+ true
+ false
+
+
+ false
+ Ramp rate:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7cbf
+ 0
+ 102
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update_1
+ 0
+ true
+ $(PV_ROOT)TEMP:RATE
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7cbe
+ 138
+ 102
+
+
+
+ false
+ false
+ false
+
+
+
+ false
+
+
+
+ 3
+ 1
+
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ false
+ 1.7976931348623157E308
+ -1.7976931348623157E308
+ false
+ Text Input_1
+ 0
+ true
+ $(PV_ROOT)TEMP:RATE:SP
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ 0
+ true
+
+ 0.0
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Text Input
+ 90
+ 2f7f40dc:19e9bca61ef:-7cbd
+ 228
+ 102
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Label_NEW
+
+
+
+
+ 20
+ 2
+ Label_15
+
+
+ true
+ true
+ false
+
+
+ false
+ Temp control enabled:
+
+ false
+ 1
+ true
+ Label
+ 133
+ true
+ 2f7f40dc:19e9bca61ef:-7cb5
+ 0
+ 126
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 0
+ 20
+ 0
+ Text Update_1
+ 0
+ true
+ $(PV_ROOT)TEMP:ENABLED
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ true
+ ######
+ $(pv_name)
+$(pv_value)
+ true
+ 1
+ true
+ Text Update
+ 85
+ false
+ 2f7f40dc:19e9bca61ef:-7cad
+ 138
+ 126
+
+
+
+ false
+ false
+
+
+
+ false
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Value_NEW
+
+ false
+
+
+
+ 23
+ true
+ Combo
+ $(PV_ROOT)TEMP:ENABLED:SP
+
+
+
+ true
+ false
+ false
+
+
+ $(pv_name)
+$(pv_value)
+ true
+ Combo
+ 90
+ 2f7f40dc:19e9bca61ef:-7c6e
+ 228
+ 124
+
+
+
+
+ false
+
+
+
+ 0
+ 1
+ true
+
+ ISIS_Button_NEW
+
+ false
+
+
+
+ 1
+
+ Dummy
+ 0
+
+
+
+
+ true
+ true
+ false
+
+
+
+
+ false
+
+ true
+ Action Button
+ 1
+ -648922a4:1624e4fa0bd:-7f69
+ 198
+ 144
+
+