diff --git a/Ccs/scripts/set_param_sets.py b/Ccs/scripts/set_param_sets.py
new file mode 100644
index 0000000000000000000000000000000000000000..ea7f26933ce9df06959c7cc06efa2dbe3b35e11b
--- /dev/null
+++ b/Ccs/scripts/set_param_sets.py
@@ -0,0 +1,182 @@
+# ADC parameter set Leicester Flatsat 20240124
+# ParamSetId = ADC_RANGES  # KSP50281 [NOT EDITABLE]
+P3V9WarnLowerLimit = 7783 
+P3V9AlarmLowerLimit = 7566 
+P3V9WarnUpperLimit = 8474 
+P3V9AlarmUpperLimit = 8691 
+P3V3WarnLowerLimit = 10515 
+P3V3AlarmLowerLimit = 10147 
+P3V3WarnUpperLimit = 11762 
+P3V3AlarmUpperLimit = 12130 
+P3V3_LVDSWarnLowerLimit = 10515 
+P3V3_LVDSAlarmLowerLimit = 10147 
+P3V3_LVDSWarnUpperLimit = 11762 
+P3V3_LVDSAlarmUpperLimit = 12130 
+P2V5WarnLowerLimit = 8820 
+P2V5AlarmLowerLimit = 8541 
+P2V5WarnUpperLimit = 9889 
+P2V5AlarmUpperLimit = 10168 
+P1V8WarnLowerLimit = 7337 
+P1V8AlarmLowerLimit = 7137 
+P1V8WarnUpperLimit = 8251 
+P1V8AlarmUpperLimit = 8451 
+P1V2WarnLowerLimit = 6066 
+P1V2AlarmLowerLimit = 5933 
+P1V2WarnUpperLimit = 6846 
+P1V2AlarmUpperLimit = 6980 
+RefWarnLowerLimit = 8820 
+RefAlarmLowerLimit = 8541 
+RefWarnUpperLimit = 9889 
+RefAlarmUpperLimit = 10168 
+TEMP1WarnLowerLimit = 8793 
+TEMP1AlarmLowerLimit = 8463 
+TEMP1WarnUpperLimit = 11063 
+TEMP1AlarmUpperLimit = 11283 
+TEMP_CCDWarnLowerLimit = 6287 
+TEMP_CCDAlarmLowerLimit = 6122 
+TEMP_CCDWarnUpperLimit = 7422 
+TEMP_CCDAlarmUpperLimit = 7532 
+TEMP_FEEWarnLowerLimit = 6621 
+TEMP_FEEAlarmLowerLimit = 6504 
+TEMP_FEEWarnUpperLimit = 16000  # 10715 FEE disconnected
+TEMP_FEEAlarmUpperLimit = 17000  # 10825 FEE disconnected
+I_FEE_ANAWarnLowerLimit = 3525 
+I_FEE_ANAAlarmLowerLimit = 3525 
+I_FEE_ANAWarnUpperLimit = 7536 
+I_FEE_ANAAlarmUpperLimit = 7886 
+I_FEE_DIGWarnLowerLimit = 3525 
+I_FEE_DIGAlarmLowerLimit = 3525 
+I_FEE_DIGWarnUpperLimit = 8443 
+I_FEE_DIGAlarmUpperLimit = 8884 
+I_DPUWarnLowerLimit = 3525 
+I_DPUAlarmLowerLimit = 3525 
+I_DPUWarnUpperLimit = 8375 
+I_DPUAlarmUpperLimit = 8809 
+I_RSEWarnLowerLimit = 3525 
+I_RSEAlarmLowerLimit = 3525 
+I_RSEWarnUpperLimit = 7849 
+I_RSEAlarmUpperLimit = 8230 
+I_HEATERWarnLowerLimit = 5422 
+I_HEATERAlarmLowerLimit = 5422 
+I_HEATERWarnUpperLimit = 9138 
+I_HEATERAlarmUpperLimit = 9459 
+TEMP_PSUWarnLowerLimit = 5092 
+TEMP_PSUAlarmLowerLimit = 4773 
+TEMP_PSUWarnUpperLimit = 10636 
+TEMP_PSUAlarmUpperLimit = 11016
+
+ADCParamCrc = cfl.calc_param_crc('SASW SetParValAdcRngsCmd', P3V9WarnLowerLimit, P3V9AlarmLowerLimit, P3V9WarnUpperLimit, P3V9AlarmUpperLimit, P3V3WarnLowerLimit, P3V3AlarmLowerLimit, P3V3WarnUpperLimit, P3V3AlarmUpperLimit, P3V3_LVDSWarnLowerLimit, P3V3_LVDSAlarmLowerLimit, P3V3_LVDSWarnUpperLimit, P3V3_LVDSAlarmUpperLimit, P2V5WarnLowerLimit, P2V5AlarmLowerLimit, P2V5WarnUpperLimit, P2V5AlarmUpperLimit, P1V8WarnLowerLimit, P1V8AlarmLowerLimit, P1V8WarnUpperLimit, P1V8AlarmUpperLimit, P1V2WarnLowerLimit, P1V2AlarmLowerLimit, P1V2WarnUpperLimit, P1V2AlarmUpperLimit, RefWarnLowerLimit, RefAlarmLowerLimit, RefWarnUpperLimit, RefAlarmUpperLimit, TEMP1WarnLowerLimit, TEMP1AlarmLowerLimit, TEMP1WarnUpperLimit, TEMP1AlarmUpperLimit, TEMP_CCDWarnLowerLimit, TEMP_CCDAlarmLowerLimit, TEMP_CCDWarnUpperLimit, TEMP_CCDAlarmUpperLimit, TEMP_FEEWarnLowerLimit, TEMP_FEEAlarmLowerLimit, TEMP_FEEWarnUpperLimit, TEMP_FEEAlarmUpperLimit, I_FEE_ANAWarnLowerLimit, I_FEE_ANAAlarmLowerLimit, I_FEE_ANAWarnUpperLimit, I_FEE_ANAAlarmUpperLimit, I_FEE_DIGWarnLowerLimit, I_FEE_DIGAlarmLowerLimit, I_FEE_DIGWarnUpperLimit, I_FEE_DIGAlarmUpperLimit, I_DPUWarnLowerLimit, I_DPUAlarmLowerLimit, I_DPUWarnUpperLimit, I_DPUAlarmUpperLimit, I_RSEWarnLowerLimit, I_RSEAlarmLowerLimit, I_RSEWarnUpperLimit, I_RSEAlarmUpperLimit, I_HEATERWarnLowerLimit, I_HEATERAlarmLowerLimit, I_HEATERWarnUpperLimit, I_HEATERAlarmUpperLimit, TEMP_PSUWarnLowerLimit, TEMP_PSUAlarmLowerLimit, TEMP_PSUWarnUpperLimit, TEMP_PSUAlarmUpperLimit, 0)
+
+cfl.Tcsend_DB('DBS_TC_PARLOAD_ARM', pool_name='LIVE')
+cfl.Tcsend_DB('SASW SetParValAdcRngsCmd', P3V9WarnLowerLimit, P3V9AlarmLowerLimit, P3V9WarnUpperLimit, P3V9AlarmUpperLimit, P3V3WarnLowerLimit, P3V3AlarmLowerLimit, P3V3WarnUpperLimit, P3V3AlarmUpperLimit, P3V3_LVDSWarnLowerLimit, P3V3_LVDSAlarmLowerLimit, P3V3_LVDSWarnUpperLimit, P3V3_LVDSAlarmUpperLimit, P2V5WarnLowerLimit, P2V5AlarmLowerLimit, P2V5WarnUpperLimit, P2V5AlarmUpperLimit, P1V8WarnLowerLimit, P1V8AlarmLowerLimit, P1V8WarnUpperLimit, P1V8AlarmUpperLimit, P1V2WarnLowerLimit, P1V2AlarmLowerLimit, P1V2WarnUpperLimit, P1V2AlarmUpperLimit, RefWarnLowerLimit, RefAlarmLowerLimit, RefWarnUpperLimit, RefAlarmUpperLimit, TEMP1WarnLowerLimit, TEMP1AlarmLowerLimit, TEMP1WarnUpperLimit, TEMP1AlarmUpperLimit, TEMP_CCDWarnLowerLimit, TEMP_CCDAlarmLowerLimit, TEMP_CCDWarnUpperLimit, TEMP_CCDAlarmUpperLimit, TEMP_FEEWarnLowerLimit, TEMP_FEEAlarmLowerLimit, TEMP_FEEWarnUpperLimit, TEMP_FEEAlarmUpperLimit, I_FEE_ANAWarnLowerLimit, I_FEE_ANAAlarmLowerLimit, I_FEE_ANAWarnUpperLimit, I_FEE_ANAAlarmUpperLimit, I_FEE_DIGWarnLowerLimit, I_FEE_DIGAlarmLowerLimit, I_FEE_DIGWarnUpperLimit, I_FEE_DIGAlarmUpperLimit, I_DPUWarnLowerLimit, I_DPUAlarmLowerLimit, I_DPUWarnUpperLimit, I_DPUAlarmUpperLimit, I_RSEWarnLowerLimit, I_RSEAlarmLowerLimit, I_RSEWarnUpperLimit, I_RSEAlarmUpperLimit, I_HEATERWarnLowerLimit, I_HEATERAlarmLowerLimit, I_HEATERWarnUpperLimit, I_HEATERAlarmUpperLimit, TEMP_PSUWarnLowerLimit, TEMP_PSUAlarmLowerLimit, TEMP_PSUWarnUpperLimit, TEMP_PSUAlarmUpperLimit, ADCParamCrc, pool_name='LIVE')
+
+#! CCS.BREAKPOINT
+cfl.Tcsend_DB('DBS_TC_PARLOAD_ARM', pool_name='LIVE')
+# PARAM_SID = ADC_RANGES  # KTP40100 [NOT EDITABLE]
+P3V9_WARN_LOWER_RANGE = 0  # KTP40110
+P3V9_FAIL_LOWER_RANGE = 0  # KTP40111
+P3V9_WARN_UPPER_RANGE = 16382  # KTP40112
+P3V9_FAIL_UPPER_RANGE = 16382  # KTP40113
+P3V3_WARN_LOWER_RANGE = 0  # KTP40114
+P3V3_FAIL_LOWER_RANGE = 0  # KTP40115
+P3V3_WARN_UPPER_RANGE = 16382  # KTP40116
+P3V3_FAIL_UPPER_RANGE = 16382  # KTP40117
+P3V3_LVDS_WARN_LOWER_RAN = 0  # KTP40118
+P3V3_LVDS_FAIL_LOWER_RAN = 0  # KTP40119
+P3V3_LVDS_WARN_UPPER_RAN = 16382  # KTP40120
+P3V3_LVDS_FAIL_UPPER_RAN = 16382  # KTP40121
+P2V5_WARN_LOWER_RANGE = 0  # KTP40122
+P2V5_FAIL_LOWER_RANGE = 0  # KTP40123
+P2V5_WARN_UPPER_RANGE = 16382  # KTP40124
+P2V5_FAIL_UPPER_RANGE = 16382  # KTP40125
+P1V8_WARN_LOWER_RANGE = 0  # KTP40126
+P1V8_FAIL_LOWER_RANGE = 0  # KTP40127
+P1V8_WARN_UPPER_RANGE = 16382  # KTP40128
+P1V8_FAIL_UPPER_RANGE = 16382  # KTP40129
+P1V2_WARN_LOWER_RANGE = 0  # KTP40130
+P1V2_FAIL_LOWER_RANGE = 0  # KTP40131
+P1V2_WARN_UPPER_RANGE = 16382  # KTP40132
+P1V2_FAIL_UPPER_RANGE = 16382  # KTP40133
+REF_WARN_LOWER_RANGE = 0  # KTP40134
+REF_FAIL_LOWER_RANGE = 0  # KTP40135
+REF_WARN_UPPER_RANGE = 16382  # KTP40136
+REF_FAIL_UPPER_RANGE = 16382  # KTP40137
+TEMP1_WARN_LOWER_RANGE = 0  # KTP40138
+TEMP1_FAIL_LOWER_RANGE = 0  # KTP40139
+TEMP1_WARN_UPPER_RANGE = 16382  # KTP40140
+TEMP1_FAIL_UPPER_RANGE = 16382  # KTP40141
+TEMP_CDD_WARN_LOWER_RANG = 0  # KTP40146
+TEMP_CDD_FAIL_LOWER_RANG = 0  # KTP40147
+TEMP_CDD_WARN_UPPER_RANG = 16382  # KTP40148
+TEMP_CDD_FAIL_UPPER_RANG = 16382  # KTP40149
+TEMP_FEE_WARN_LOWER_RANG = 0  # KTP40142
+TEMP_FEE_FAIL_LOWER_RANG = 0  # KTP40143
+TEMP_FEE_WARN_UPPER_RANG = 16382  # KTP40144
+TEMP_FEE_FAIL_UPPER_RANG = 16382  # KTP40145
+I_FEE_ANA_WARN_LOWER_RAN = 0  # KTP40150
+I_FEE_ANA_FAIL_LOWER_RAN = 0  # KTP40151
+I_FEE_ANA_WARN_UPPER_RAN = 16382  # KTP40152
+I_FEE_ANA_FAIL_UPPER_RAN = 16382  # KTP40153
+I_FEE_DIG_WARN_LOWER_RAN = 0  # KTP40154
+I_FEE_DIG_FAIL_LOWER_RAN = 0  # KTP40155
+I_FEE_DIG_WARN_UPPER_RAN = 16382  # KTP40156
+I_FEE_DIG_FAIL_UPPER_RAN = 16382  # KTP40157
+I_DPU_WARN_LOWER_RANGE = 0  # KTP40158
+I_DPU_FAIL_LOWER_RANGE = 0  # KTP40159
+I_DPU_WARN_UPPER_RANGE = 16382  # KTP40160
+I_DPU_FAIL_UPPER_RANGE = 16382  # KTP40161
+I_RSE_WARN_LOWER_RANGE = 0  # KTP40162
+I_RSE_FAIL_LOWER_RANGE = 0  # KTP40163
+I_RSE_WARN_UPPER_RANGE = 16382  # KTP40164
+I_RSE_FAIL_UPPER_RANGE = 16382  # KTP40165
+I_HEATER_WARN_LOWER_RANG = 0  # KTP40166
+I_HEATER_FAIL_LOWER_RANG = 0  # KTP40167
+I_HEATER_WARN_UPPER_RANG = 16382  # KTP40168
+I_HEATER_FAIL_UPPER_RANG = 16382  # KTP40169
+TEMP_PSU_WARN_LOWER_RANG = 0  # KTP40170
+TEMP_PSU_FAIL_LOWER_RANG = 0  # KTP40171
+TEMP_PSU_WARN_UPPER_RANG = 16382  # KTP40172
+TEMP_PSU_FAIL_UPPER_RANG = 16382  # KTP40173
+PARAM_CRC = 0  # KTP40174
+
+PARAM_CRC = cfl.calc_param_crc('DBS_TC_PARLOAD_ADCRANGES', P3V9_WARN_LOWER_RANGE, P3V9_FAIL_LOWER_RANGE, P3V9_WARN_UPPER_RANGE, P3V9_FAIL_UPPER_RANGE, P3V3_WARN_LOWER_RANGE, P3V3_FAIL_LOWER_RANGE, P3V3_WARN_UPPER_RANGE, P3V3_FAIL_UPPER_RANGE, P3V3_LVDS_WARN_LOWER_RAN, P3V3_LVDS_FAIL_LOWER_RAN, P3V3_LVDS_WARN_UPPER_RAN, P3V3_LVDS_FAIL_UPPER_RAN, P2V5_WARN_LOWER_RANGE, P2V5_FAIL_LOWER_RANGE, P2V5_WARN_UPPER_RANGE, P2V5_FAIL_UPPER_RANGE, P1V8_WARN_LOWER_RANGE, P1V8_FAIL_LOWER_RANGE, P1V8_WARN_UPPER_RANGE, P1V8_FAIL_UPPER_RANGE, P1V2_WARN_LOWER_RANGE, P1V2_FAIL_LOWER_RANGE, P1V2_WARN_UPPER_RANGE, P1V2_FAIL_UPPER_RANGE, REF_WARN_LOWER_RANGE, REF_FAIL_LOWER_RANGE, REF_WARN_UPPER_RANGE, REF_FAIL_UPPER_RANGE, TEMP1_WARN_LOWER_RANGE, TEMP1_FAIL_LOWER_RANGE, TEMP1_WARN_UPPER_RANGE, TEMP1_FAIL_UPPER_RANGE, TEMP_CDD_WARN_LOWER_RANG, TEMP_CDD_FAIL_LOWER_RANG, TEMP_CDD_WARN_UPPER_RANG, TEMP_CDD_FAIL_UPPER_RANG, TEMP_FEE_WARN_LOWER_RANG, TEMP_FEE_FAIL_LOWER_RANG, TEMP_FEE_WARN_UPPER_RANG, TEMP_FEE_FAIL_UPPER_RANG, I_FEE_ANA_WARN_LOWER_RAN, I_FEE_ANA_FAIL_LOWER_RAN, I_FEE_ANA_WARN_UPPER_RAN, I_FEE_ANA_FAIL_UPPER_RAN, I_FEE_DIG_WARN_LOWER_RAN, I_FEE_DIG_FAIL_LOWER_RAN, I_FEE_DIG_WARN_UPPER_RAN, I_FEE_DIG_FAIL_UPPER_RAN, I_DPU_WARN_LOWER_RANGE, I_DPU_FAIL_LOWER_RANGE, I_DPU_WARN_UPPER_RANGE, I_DPU_FAIL_UPPER_RANGE, I_RSE_WARN_LOWER_RANGE, I_RSE_FAIL_LOWER_RANGE, I_RSE_WARN_UPPER_RANGE, I_RSE_FAIL_UPPER_RANGE, I_HEATER_WARN_LOWER_RANG, I_HEATER_FAIL_LOWER_RANG, I_HEATER_WARN_UPPER_RANG, I_HEATER_FAIL_UPPER_RANG, TEMP_PSU_WARN_LOWER_RANG, TEMP_PSU_FAIL_LOWER_RANG, TEMP_PSU_WARN_UPPER_RANG, TEMP_PSU_FAIL_UPPER_RANG, PARAM_CRC)
+
+cfl.Tcsend_DB('DBS_TC_PARLOAD_ADCRANGES', P3V9_WARN_LOWER_RANGE, P3V9_FAIL_LOWER_RANGE, P3V9_WARN_UPPER_RANGE, P3V9_FAIL_UPPER_RANGE, P3V3_WARN_LOWER_RANGE, P3V3_FAIL_LOWER_RANGE, P3V3_WARN_UPPER_RANGE, P3V3_FAIL_UPPER_RANGE, P3V3_LVDS_WARN_LOWER_RAN, P3V3_LVDS_FAIL_LOWER_RAN, P3V3_LVDS_WARN_UPPER_RAN, P3V3_LVDS_FAIL_UPPER_RAN, P2V5_WARN_LOWER_RANGE, P2V5_FAIL_LOWER_RANGE, P2V5_WARN_UPPER_RANGE, P2V5_FAIL_UPPER_RANGE, P1V8_WARN_LOWER_RANGE, P1V8_FAIL_LOWER_RANGE, P1V8_WARN_UPPER_RANGE, P1V8_FAIL_UPPER_RANGE, P1V2_WARN_LOWER_RANGE, P1V2_FAIL_LOWER_RANGE, P1V2_WARN_UPPER_RANGE, P1V2_FAIL_UPPER_RANGE, REF_WARN_LOWER_RANGE, REF_FAIL_LOWER_RANGE, REF_WARN_UPPER_RANGE, REF_FAIL_UPPER_RANGE, TEMP1_WARN_LOWER_RANGE, TEMP1_FAIL_LOWER_RANGE, TEMP1_WARN_UPPER_RANGE, TEMP1_FAIL_UPPER_RANGE, TEMP_CDD_WARN_LOWER_RANG, TEMP_CDD_FAIL_LOWER_RANG, TEMP_CDD_WARN_UPPER_RANG, TEMP_CDD_FAIL_UPPER_RANG, TEMP_FEE_WARN_LOWER_RANG, TEMP_FEE_FAIL_LOWER_RANG, TEMP_FEE_WARN_UPPER_RANG, TEMP_FEE_FAIL_UPPER_RANG, I_FEE_ANA_WARN_LOWER_RAN, I_FEE_ANA_FAIL_LOWER_RAN, I_FEE_ANA_WARN_UPPER_RAN, I_FEE_ANA_FAIL_UPPER_RAN, I_FEE_DIG_WARN_LOWER_RAN, I_FEE_DIG_FAIL_LOWER_RAN, I_FEE_DIG_WARN_UPPER_RAN, I_FEE_DIG_FAIL_UPPER_RAN, I_DPU_WARN_LOWER_RANGE, I_DPU_FAIL_LOWER_RANGE, I_DPU_WARN_UPPER_RANGE, I_DPU_FAIL_UPPER_RANGE, I_RSE_WARN_LOWER_RANGE, I_RSE_FAIL_LOWER_RANGE, I_RSE_WARN_UPPER_RANGE, I_RSE_FAIL_UPPER_RANGE, I_HEATER_WARN_LOWER_RANG, I_HEATER_FAIL_LOWER_RANG, I_HEATER_WARN_UPPER_RANG, I_HEATER_FAIL_UPPER_RANG, TEMP_PSU_WARN_LOWER_RANG, TEMP_PSU_FAIL_LOWER_RANG, TEMP_PSU_WARN_UPPER_RANG, TEMP_PSU_FAIL_UPPER_RANG, PARAM_CRC, pool_name='LIVE')
+
+
+#! CCS.BREAKPOINT
+cfl.Tcsend_DB('DBS_TC_PARLOAD_ARM', pool_name='LIVE')
+# PARAM_SID = RSE_PARAM  # KTP40100 [NOT EDITABLE]
+MOTOR_CUR = 150  # KTP40190
+SETTL_TIME = 20  # KTP40191
+CHOP_DUTY = 150  # KTP40192
+MAX_MOTOR_TEMP = 150  # KTP40193
+MAX_ELEC_TEMP = 150  # KTP40194
+MAX_STEPS = 2600  # KTP40195
+RSE_CONFIG = 0  # KTP40196
+MAX_MOTOR_CUR = 225  # KTP40197
+EMERGENCY_STEPS = 2816  # KTP40198
+PARAM_CRC = 0
+
+PARAM_CRC = cfl.calc_param_crc('DBS_TC_PARLOAD_RSEPARAM', MOTOR_CUR, SETTL_TIME, CHOP_DUTY, MAX_MOTOR_TEMP, MAX_ELEC_TEMP, MAX_STEPS, RSE_CONFIG, MAX_MOTOR_CUR, EMERGENCY_STEPS, PARAM_CRC)
+
+cfl.Tcsend_DB('DBS_TC_PARLOAD_RSEPARAM', MOTOR_CUR, SETTL_TIME, CHOP_DUTY, MAX_MOTOR_TEMP, MAX_ELEC_TEMP, MAX_STEPS, RSE_CONFIG, MAX_MOTOR_CUR, EMERGENCY_STEPS, PARAM_CRC, pool_name='LIVE')
+
+#! CCS.BREAKPOINT
+HctrlParExecPer = 40
+HctrlParMaxDeltaVoltage = 0.5
+HctrlParVctrlLowerVolt = 0.30000001192092896
+HctrlParVctrlUpperVolt = 2.9000000953674316
+HctrlParTempRefLL = -120.0
+HctrlParTempRefUL = -114.0
+HctrlParTempRef = -117.0
+HctrlParCoeffP = 50.0
+HctrlParCoeffI = 0.0
+HctrlParOffset = 30.0
+Spare16 = 0 
+ADCParamCrc = cfl.calc_param_crc('SASW SetParValHeatCtlCmd', HctrlParExecPer, HctrlParMaxDeltaVoltage, HctrlParVctrlLowerVolt, HctrlParVctrlUpperVolt, HctrlParTempRefLL, HctrlParTempRefUL, HctrlParTempRef, HctrlParCoeffP, HctrlParCoeffI, HctrlParOffset, ADCParamCrc)
+
+cfl.Tcsend_DB('DBS_TC_PARLOAD_ARM', pool_name='LIVE')
+cfl.Tcsend_DB('SASW SetParValHeatCtlCmd', HctrlParExecPer, HctrlParMaxDeltaVoltage, HctrlParVctrlLowerVolt, HctrlParVctrlUpperVolt, HctrlParTempRefLL, HctrlParTempRefUL, HctrlParTempRef, HctrlParCoeffP, HctrlParCoeffI, HctrlParOffset, ADCParamCrc, pool_name='LIVE')
+
+