From 91a46945d649fbcc1cba519f6af75361d68c9975 Mon Sep 17 00:00:00 2001 From: Ji Man Sohn Date: Tue, 23 Mar 2021 15:20:43 -0700 Subject: [PATCH 1/2] updated ICD model files for cryostat env assembly --- sc/cryoenv-assembly/alarm-model.conf | 163 +++++++++++++ sc/cryoenv-assembly/new_publish_model.conf | 268 +++++++++++++++++++++ sc/cryoenv-assembly/publish-model.conf | 149 +++++------- 3 files changed, 489 insertions(+), 91 deletions(-) create mode 100644 sc/cryoenv-assembly/alarm-model.conf create mode 100644 sc/cryoenv-assembly/new_publish_model.conf diff --git a/sc/cryoenv-assembly/alarm-model.conf b/sc/cryoenv-assembly/alarm-model.conf new file mode 100644 index 0000000..5838f18 --- /dev/null +++ b/sc/cryoenv-assembly/alarm-model.conf @@ -0,0 +1,163 @@ +subsystem = IRIS +component = sc.cryoenv + +alarms= [ + { + name = watchdog + description = "Cryostat Environment Assembly has stopped responding" + severityLevels = [Major] + location = "TBD..." + alarmType = System + probableCause = "Software crash" + operatorResponse = "Re-start the assembly and file a bug report" + autoAck = false; + latched = true; + } + { + name = hcdDisconnected + description = "Connection to one(or more) of the HCDs for cryostat environment assembly has been lost" + severityLevels = [Major] + location = "Refer to hcdConnections event published" + alarmType = System + probableCause = "HCD crashed" + operatorResponse = "Verify which HCD is disconnected by checking hcdConnections event and re-start the HCD. File a bug report" + autoAck = false + latched = true + } + { + name = windowTemperature + description = "Window temperature interfacing the OIWFS is out of acceptable range." + severityLevels = [Major, Critical] + location = "IRIS interface window to OIWFS" + alarmType = System + probableCause = "Temperature control may be turned off or set incorrectly" + operatorResponse = """ + """ + autoAck = false + latched = true + } + { + name = windowTemperatureRapidChange + description = "The magnitude of the rate of change of the temperature for the window interfacing OIWFS is too big. " + severityLevels = [Major, Critical] + location = "IRIS interface window to OIWFS" + alarmType = System + probableCause = "Temperature control may be turned off or set incorrectly" + operatorResponse = """ + """ + autoAck = false + latched = true + } + { + name = imgDetectorTemperature + description = "Imager detector temperature is out of acceptable range." + severityLevels = [Major, Critical] + location = "IRIS Imager detector" + alarmType = System + probableCause = "Temperature control may be turned off or set incorrectly" + operatorResponse = """ + + """ + autoAck = false + latched = true + } + { + name = imgDetectorTemperatureRapidChange + description = "The magnitude of the rate of change of the temperature for the IMG detector is too big" + severityLevels = [Major, Critical] + location = "IRIS Imager detector" + alarmType = System + probableCause = "Temperature control may be turned off or set incorrectly" + operatorResponse = """ + """ + autoAck = false + latched = true + } + { + name = pvDetectorTemperature + description = "Pupil Viewing detector temperature is out of acceptable range." + severityLevels = [Major, Critical] + location = "IRIS Pupil Viewing detector" + alarmType = System + probableCause = "Temperature control may be turned off or set incorrectly" + operatorResponse = """ + + """ + autoAck = false + latched = true + } + { + name = pvDetectorTemperatureRapidChange + description = "The magnitude of the rate of change of the temperature for the pupil viewing detector is too big" + severityLevels = [Major, Critical] + location = "IRIS Pupil Viewing detector" + alarmType = System + probableCause = "Temperature control may be turned off or set incorrectly" + operatorResponse = """ + """ + autoAck = false + latched = true + } + { + name = ifsDetectorTemperature + description = "IFS detector temperature is out of acceptable range." + severityLevels = [Major, Critical] + location = "IRIS IFS detector" + alarmType = System + probableCause = "Temperature control may be turned off or set incorrectly" + operatorResponse = """ + + """ + autoAck = false + latched = true + } + { + name = IFSDetectorTemperatureRapidChange + description = "The magnitude of the rate of change of the temperature for the IFS detector is too big" + severityLevels = [Major, Critical] + location = "IRIS IFS detector" + alarmType = System + probableCause = "Temperature control may be turned off or set incorrectly" + operatorResponse = """ + """ + autoAck = false + latched = true + } + { + name = imgTemperature + description = "The temperature reading from one or more sensors located in the IMG side of dewar is out of the acceptable range." + severityLevels = [Major, Critical] + location = "TBD" + alarmType = System + probableCause = "Mechanism overheating" + operatorResponse = """ + + """ + autoAck = false + latched = true + } + { + name = ifsTemperature + description = "The temperature reading from one or more sensors located in the IFS side of dewar is out of the acceptable range." + severityLevels = [Major, Critical] + location = "TBD" + alarmType = System + probableCause = "Mechanism overheating" + operatorResponse = """ + """ + autoAck = false + latched = true + } + { + name = pressure + description = "IRIS Science Cryostat pressure is out of acceptable range." + severityLevels = [Major, Critical] + location = "IRIS Science Cryostat" + alarmType = System + probableCause = "Potential leak on the IRIS Science Cryostat" + operatorResponse = """ + """ + autoAck = false + latched = true + } +] \ No newline at end of file diff --git a/sc/cryoenv-assembly/new_publish_model.conf b/sc/cryoenv-assembly/new_publish_model.conf new file mode 100644 index 0000000..708bf82 --- /dev/null +++ b/sc/cryoenv-assembly/new_publish_model.conf @@ -0,0 +1,268 @@ +subsystem = IRIS +component = sc.cryoenv + +publish{ + event=[ + { + name = state + description =""" + Currnet state of the IRIS Cryostat Environment Assembly + """ + maxRate = 1 + archive = true + parameters = [ + { + name = cmd + description = "command state" + enum = [UNINITIALIZED,READY,BUSY,CONTINUOUS] + } + { + name = debug + description = debug level + enum = [DEBUG,INFO, WARN, ERROR] + } + { + name = engineeringMode + description = "Indicates whether engineering mode is enabled or disabled" + type = boolean + } + { + name = cryostatEnvState + description = thermal-vacuum state + enum = [WARM, PUMPING, WARM_VACUUM, COOLING, COLD, WARMING, PRESSURIZING] + } + { + name = oiwfsConnected + description = "Indicates whether IRIS is physically connected to OIWFS" + type = boolean + } + { + name = hcdConnections + description = """ + Connection status of the HCD's under the assembly. + """ + type = struct + parameters = [ + { + name = cryoTempControlHcd + description = "Connection status of the temperature controller for the window and cryostat" + type = boolean + } + { + name = imgTempControlHcd + description = "Connection status of the temperature controller for the imager detector" + type = boolean + } + { + name = pvTempControlHcd + description = "Connection status of the temperature controller for the pupil viewing camera detector" + type = boolean + } + { + name = ifsTempControlHcd + description = "Connection status of the temperature controller for the IFS detector" + type = boolean + } + { + name = cryoTempMonitorHcd + description = "Connection status of the temperature monitor for the cryostat" + type = boolean + } + { + name = imgTempMonitorHcd1 + description = "Connection status of the temperature monitor 1 for the imager mechanisms" + type = boolean + } + { + name = imgTempMonitorHcd2 + description = "Connection status of the temperature monitor 2 for the imager mechanisms" + type = boolean + } + { + name = ifsTempMonitorHcd + description = "Connection status of the temperature monitor for the IFS mechanisms" + type = boolean + } + ] + } + ] + } + + { + name = windowTemperature + description = """ + A temperature reading of sensor located on IRIS Cryostat Window to OIWFS + """ + maxRate = 1 + archive = true + parameters = [ + { + name = temperature + description = "Temperature sensor reading in kelvin" + type = double + units = K + } + ] + } + { + name = pupilDetectorTemperature + description = """ + A temperature reading of sensor located on IRIS Imager Pupil Viewing Camera detector + """ + ref = windowTemperature + } + { + name = imgDetectorTemperature + description = """ + A temperature reading of sensor located on IRIS Imager detectors + """ + ref = windowTemperature + } + { + name = ifsDetectorTemperature + description = """ + A temperature reading of sensor located on IRIS IFS detector + """ + ref = windowTemperature + } + { + name = windowHeaterStatus + description = """ + Current status of the heating element that controls the temperature of IRIS Cryostat Window to OIWFS + """ + maxRate = 1 + archive = yes + parameters = [ + { + name = "output" + description = "Heater output in percent of maximum current/power(TBD)" + type = double + } + { + name = "setpoint" + description = "current setpoint of heater control loop." + type = double + } + { + name = "heaterRangeStatus" + description = """ + The heater range is used to turn on/off temperature control as well as setting the output power range. High setting allows the maximum power, while the Med range provides 10% of maximum, and Low provides 1% of maximum. Also, depends on the output, only on or off options are available. + """ + enum = [off, on, high, med, low] + } + { + name = "rampEnabled" + description = "On/Off flag of the ramp control" + type = boolean + } + + ] + } + { + name = cryostatHeaterStatus + description = """ + Current status of the heating element that supports IRIS Cryostat warm up + """ + ref = windowHeaterStatus + } + { + name = pupilDetectorHeaterStatus + description = + requirements = """ + Current status of the heating element that controls the temperature of IRIS Imager Pupil Viewing Camera detector + """ + ref = windowHeaterStatus + } + { + name = imgDetectorHeaterStatus + description = """ + Current status of the heating element that controls the temperature of IRIS Imager detectors + """ + ref = windowHeaterStatus + } + { + name = ifsDetectorHeaterStatus + description = """ + Current status of the heating element that controls the temperature of IRIS IFS detector + """ + ref = windowHeaterStatus + } + { + name = imgTemperatures + description = """ + A List of temperature sensor readings that are located within the IRIS Imager side of cryostat. Mainly located on Imager mechanisms.The locations of the sensors are published as (#sc.cryoenv-publishes-Event-imgTemperatureLocations). The temperature readings and the sensor locations are placed in same index. + """ + maxRate = 0 + archive = true + parameters = [ + { + name = temperatures + description = "Array of temperature readings. " + type = array + units = K + minItems = 1 + maxItems = 8 + } + ] + } + { + name = ifsTemperatures + description =""" + A List of temperature sensor readings that are located within the IRIS IFS side of cryostat. Mainly located on IFS mechanisms. The locations of the sensors are published as (#sc.cryoenv-publishes-Event-ifsTemperatureLocations). The temperature readings and the sensor locations are placed in same index. + """ + ref = imgTemperatures + } + { + name = cryostatTemperatures + description = """ + A List of temperature sensor readings that are located throught IRIS Cryostat. Used to monitor overall cryostat environment. The locations of the sensors are published as (#sc.cryoenv-publishes-Event-cryostatTemperatureLocations). The temperature readings and the sensor locations are placed in same index. + """ + ref = imgTemperatures + } + { + name = imgTemperatureLocations + description = """ + A list of locations of sensors in (#sc.cryoenv-publishes-Event-imgTemperatures). This event will be published once upon the start-up of the assembly for the subscribers to referece sensor locations. Even though it's published only once, subscribers can get the latest published event. + """ + maxRate = 0 + archive = true + parameters = [ + name = temperatures + description = "Array of temperature sensor locations. " + type = array + minItems = 1 + maxItems = 16 + + ] + } + { + name = ifsTemperatureLocations + description = """ + A list of locations of sensors in (#sc.cryoenv-publishes-Event-ifsTemperatures). This event will be published once upon the start-up of the assembly for the subscribers to referece sensor locations. + """ + ref = imgTemperatureLocations + } + { + name = cryostatTemperatureLocations + description = """ + A list of locations of sensors in (#sc.cryoenv-publishes-Event-cryostatTemperatures). This event will be published once upon the start-up of the assembly for the subscribers to referece sensor locations. + """ + ref = imgTemperatureLocations + + } + { + name = cryostatPressure + description = """ + The pressure gauge reading for the entire IRIS Cryostat. + """ + maxRate = 1 + archive = true + parameters = [ + name = pressure + description = "Pressure reading in Torr" + type = double + units = "Torr" + ] + } + ] +} \ No newline at end of file diff --git a/sc/cryoenv-assembly/publish-model.conf b/sc/cryoenv-assembly/publish-model.conf index 031af52..5237d16 100644 --- a/sc/cryoenv-assembly/publish-model.conf +++ b/sc/cryoenv-assembly/publish-model.conf @@ -4,31 +4,60 @@ component = sc.cryoenv publish { events = [ - { - name = "IMG_STATE" - description = "IMG functional group state" - maxRate = 20 + { + name = state + description = The current overall state of Cryostat Environment assembly + maxRate = 1 + archive = true attributes = [ { - name = cmdState - description = "command state" - enum = [UNINITIALIZED,READY] + name = cmd + description = command state + enum = [UNINITIALIZED,READY,BUSY,CONTINUOUS] } { name = thermalVacuumState - description = "thermal-vacuum state" + description = thermal-vacuum state enum = [WARM, PUMPING, WARM_VACUUM, COOLING, COLD, WARMING, PRESSURIZING] } { name = debug - description = "debug level" - enum = [TBD1,TBD2] + description = debug level + enum = [DEBUG,INFO, WARN, ERROR] } + { + name = oiwfsConnected + description = + } ] } { - name = "IMGTEMP[XX]" - description = "IMG functional group temperature reading" + name = IMG_state + description = IMG functional group state + ref = state + } + { name = "IMGTMP[XX]" + description = IMG functional group temperature reading with key information + maxRate = 20 + archive = true + attributes = [ + { + name = location + description = Physical location of the sensor assigned for the temperature reading + type = string + } + { + name = reading + description = Temperature reading of the sensor in kelvin + type = double + units = K + + } + ] + } + { + name = "IMGSENSOR[XX]" + description = IMG functional group temperature sensor status detail maxRate = 20 attributes = [ { @@ -41,21 +70,10 @@ publish { description = "ID of the sensor assigned for the temperature reading" type = string } - { - name = location - description = "Physical location of the sensor assigned for the temperature reading" - type = string - } - { - name = reading - description = "Temperature reading of the sensor in kelvin" - type = double - } - { - name = "unit" - description = "Temperature unit" + { + name = unit + description = Temperature unit enum = [K, C, Sensor, Linear] - default = K } { name = "sensorreadingstatus" @@ -98,11 +116,10 @@ publish { } ] } - { + { name = "IMG_HTR" description = "Telemetry of the heater control loop" archive = true - maxRate = 1 attributes = [ { name = lakeshoreID @@ -196,28 +213,22 @@ publish { } ] } - { + { name = "IFS_STATE" description = "IFS functional group state" - maxRate = 20 - attributes = [ - { - name = cmdState - description = "command state" - enum = [UNINITIALIZED,READY] - } - { - name = thermalVacuumState - description = "thermal-vacuum state" - enum = [WARM, PUMPING, WARM_VACUUM, COOLING, COLD, WARMING, PRESSURIZING] - } - { - name = debug - description = "debug level" - enum = [TBD1,TBD2] - } - ] + ref = state + } + { + name = "WIN_STATE" + description = "WIN functional group state" + ref = state } + { + name = "PV_STATE" + description = "PV functional group state" + ref = state + } + { name = "IFSTEMP[XX]" description = "IFS functional group temperature reading" @@ -388,28 +399,6 @@ publish { } ] } - { - name = "WIN_STATE" - description = "WIN functional group state" - maxRate = 20 - attributes = [ - { - name = cmdState - description = "command state" - enum = [UNINITIALIZED,READY] - } - { - name = thermalVacuumState - description = "thermal-vacuum state" - enum = [WARM, PUMPING, WARM_VACUUM, COOLING, COLD, WARMING, PRESSURIZING] - } - { - name = debug - description = "debug level" - enum = [TBD1,TBD2] - } - ] - } { name = "WIN_TEMP[XX]" description = "WIN functional group temperature reading" @@ -580,28 +569,6 @@ publish { } ] } - { - name = "PV_STATE" - description = "PV functional group state" - maxRate = 20 - attributes = [ - { - name = cmdState - description = "command state" - enum = [UNINITIALIZED,READY] - } - { - name = thermalVacuumState - description = "thermal-vacuum state" - enum = [WARM, PUMPING, WARM_VACUUM, COOLING, COLD, WARMING, PRESSURIZING] - } - { - name = debug - description = "debug level" - enum = [TBD1,TBD2] - } - ] - } { name = "PV_TEMP[N]" description = "PV functional temperature reading" From 77be8e7457ff42896493213500754514b0a096f0 Mon Sep 17 00:00:00 2001 From: Ji Man Sohn Date: Thu, 25 Mar 2021 22:08:57 -0700 Subject: [PATCH 2/2] fixed model file errors for cryostat env assembly --- ifs/spectralres-assembly/publish-model.conf | 23 + sc/cryoenv-assembly/alarm-model.conf | 4 +- sc/cryoenv-assembly/new_publish_model.conf | 268 ----- sc/cryoenv-assembly/publish-model.conf | 1091 +++++-------------- 4 files changed, 281 insertions(+), 1105 deletions(-) delete mode 100644 sc/cryoenv-assembly/new_publish_model.conf diff --git a/ifs/spectralres-assembly/publish-model.conf b/ifs/spectralres-assembly/publish-model.conf index 7fd3c46..c15d7ca 100644 --- a/ifs/spectralres-assembly/publish-model.conf +++ b/ifs/spectralres-assembly/publish-model.conf @@ -3,6 +3,29 @@ component = ifs.res publish { events = [ + { + name = state + description = "IRIS IFS Spectral Resolution assembly overall state of positioning and mode selection mechanisms" + maxRate = 20 + archive = true + attributes = [ + { + name = cmd + description = "command state" + enum = [UNINITIALIZED,READY,BUSY,CONTINUOUS] + } + { + name = move + description = "At least one mechanism within the OIWFS POA (positioning or mode selection) is moving" + enum = [STOPPED,MOVING] + } + { + name = onTarget + description = "All of the OIWFS POA mechanisms (positioning and mode selection) are on target." + type = boolean + } + ] + } { name = GRATING_state description = "Standard assembly state as defiend in [Technical Document: Software Design Patterns for Device and Component Controllers (TMT.INS.TEC.16.079.REL01)](https://docushare.tmt.org/docushare/dsweb/Get/Document-57492/cc_design_patterns_REL01.pdf)." diff --git a/sc/cryoenv-assembly/alarm-model.conf b/sc/cryoenv-assembly/alarm-model.conf index 5838f18..3888f8a 100644 --- a/sc/cryoenv-assembly/alarm-model.conf +++ b/sc/cryoenv-assembly/alarm-model.conf @@ -10,8 +10,8 @@ alarms= [ alarmType = System probableCause = "Software crash" operatorResponse = "Re-start the assembly and file a bug report" - autoAck = false; - latched = true; + autoAck = false + latched = true } { name = hcdDisconnected diff --git a/sc/cryoenv-assembly/new_publish_model.conf b/sc/cryoenv-assembly/new_publish_model.conf deleted file mode 100644 index 708bf82..0000000 --- a/sc/cryoenv-assembly/new_publish_model.conf +++ /dev/null @@ -1,268 +0,0 @@ -subsystem = IRIS -component = sc.cryoenv - -publish{ - event=[ - { - name = state - description =""" - Currnet state of the IRIS Cryostat Environment Assembly - """ - maxRate = 1 - archive = true - parameters = [ - { - name = cmd - description = "command state" - enum = [UNINITIALIZED,READY,BUSY,CONTINUOUS] - } - { - name = debug - description = debug level - enum = [DEBUG,INFO, WARN, ERROR] - } - { - name = engineeringMode - description = "Indicates whether engineering mode is enabled or disabled" - type = boolean - } - { - name = cryostatEnvState - description = thermal-vacuum state - enum = [WARM, PUMPING, WARM_VACUUM, COOLING, COLD, WARMING, PRESSURIZING] - } - { - name = oiwfsConnected - description = "Indicates whether IRIS is physically connected to OIWFS" - type = boolean - } - { - name = hcdConnections - description = """ - Connection status of the HCD's under the assembly. - """ - type = struct - parameters = [ - { - name = cryoTempControlHcd - description = "Connection status of the temperature controller for the window and cryostat" - type = boolean - } - { - name = imgTempControlHcd - description = "Connection status of the temperature controller for the imager detector" - type = boolean - } - { - name = pvTempControlHcd - description = "Connection status of the temperature controller for the pupil viewing camera detector" - type = boolean - } - { - name = ifsTempControlHcd - description = "Connection status of the temperature controller for the IFS detector" - type = boolean - } - { - name = cryoTempMonitorHcd - description = "Connection status of the temperature monitor for the cryostat" - type = boolean - } - { - name = imgTempMonitorHcd1 - description = "Connection status of the temperature monitor 1 for the imager mechanisms" - type = boolean - } - { - name = imgTempMonitorHcd2 - description = "Connection status of the temperature monitor 2 for the imager mechanisms" - type = boolean - } - { - name = ifsTempMonitorHcd - description = "Connection status of the temperature monitor for the IFS mechanisms" - type = boolean - } - ] - } - ] - } - - { - name = windowTemperature - description = """ - A temperature reading of sensor located on IRIS Cryostat Window to OIWFS - """ - maxRate = 1 - archive = true - parameters = [ - { - name = temperature - description = "Temperature sensor reading in kelvin" - type = double - units = K - } - ] - } - { - name = pupilDetectorTemperature - description = """ - A temperature reading of sensor located on IRIS Imager Pupil Viewing Camera detector - """ - ref = windowTemperature - } - { - name = imgDetectorTemperature - description = """ - A temperature reading of sensor located on IRIS Imager detectors - """ - ref = windowTemperature - } - { - name = ifsDetectorTemperature - description = """ - A temperature reading of sensor located on IRIS IFS detector - """ - ref = windowTemperature - } - { - name = windowHeaterStatus - description = """ - Current status of the heating element that controls the temperature of IRIS Cryostat Window to OIWFS - """ - maxRate = 1 - archive = yes - parameters = [ - { - name = "output" - description = "Heater output in percent of maximum current/power(TBD)" - type = double - } - { - name = "setpoint" - description = "current setpoint of heater control loop." - type = double - } - { - name = "heaterRangeStatus" - description = """ - The heater range is used to turn on/off temperature control as well as setting the output power range. High setting allows the maximum power, while the Med range provides 10% of maximum, and Low provides 1% of maximum. Also, depends on the output, only on or off options are available. - """ - enum = [off, on, high, med, low] - } - { - name = "rampEnabled" - description = "On/Off flag of the ramp control" - type = boolean - } - - ] - } - { - name = cryostatHeaterStatus - description = """ - Current status of the heating element that supports IRIS Cryostat warm up - """ - ref = windowHeaterStatus - } - { - name = pupilDetectorHeaterStatus - description = - requirements = """ - Current status of the heating element that controls the temperature of IRIS Imager Pupil Viewing Camera detector - """ - ref = windowHeaterStatus - } - { - name = imgDetectorHeaterStatus - description = """ - Current status of the heating element that controls the temperature of IRIS Imager detectors - """ - ref = windowHeaterStatus - } - { - name = ifsDetectorHeaterStatus - description = """ - Current status of the heating element that controls the temperature of IRIS IFS detector - """ - ref = windowHeaterStatus - } - { - name = imgTemperatures - description = """ - A List of temperature sensor readings that are located within the IRIS Imager side of cryostat. Mainly located on Imager mechanisms.The locations of the sensors are published as (#sc.cryoenv-publishes-Event-imgTemperatureLocations). The temperature readings and the sensor locations are placed in same index. - """ - maxRate = 0 - archive = true - parameters = [ - { - name = temperatures - description = "Array of temperature readings. " - type = array - units = K - minItems = 1 - maxItems = 8 - } - ] - } - { - name = ifsTemperatures - description =""" - A List of temperature sensor readings that are located within the IRIS IFS side of cryostat. Mainly located on IFS mechanisms. The locations of the sensors are published as (#sc.cryoenv-publishes-Event-ifsTemperatureLocations). The temperature readings and the sensor locations are placed in same index. - """ - ref = imgTemperatures - } - { - name = cryostatTemperatures - description = """ - A List of temperature sensor readings that are located throught IRIS Cryostat. Used to monitor overall cryostat environment. The locations of the sensors are published as (#sc.cryoenv-publishes-Event-cryostatTemperatureLocations). The temperature readings and the sensor locations are placed in same index. - """ - ref = imgTemperatures - } - { - name = imgTemperatureLocations - description = """ - A list of locations of sensors in (#sc.cryoenv-publishes-Event-imgTemperatures). This event will be published once upon the start-up of the assembly for the subscribers to referece sensor locations. Even though it's published only once, subscribers can get the latest published event. - """ - maxRate = 0 - archive = true - parameters = [ - name = temperatures - description = "Array of temperature sensor locations. " - type = array - minItems = 1 - maxItems = 16 - - ] - } - { - name = ifsTemperatureLocations - description = """ - A list of locations of sensors in (#sc.cryoenv-publishes-Event-ifsTemperatures). This event will be published once upon the start-up of the assembly for the subscribers to referece sensor locations. - """ - ref = imgTemperatureLocations - } - { - name = cryostatTemperatureLocations - description = """ - A list of locations of sensors in (#sc.cryoenv-publishes-Event-cryostatTemperatures). This event will be published once upon the start-up of the assembly for the subscribers to referece sensor locations. - """ - ref = imgTemperatureLocations - - } - { - name = cryostatPressure - description = """ - The pressure gauge reading for the entire IRIS Cryostat. - """ - maxRate = 1 - archive = true - parameters = [ - name = pressure - description = "Pressure reading in Torr" - type = double - units = "Torr" - ] - } - ] -} \ No newline at end of file diff --git a/sc/cryoenv-assembly/publish-model.conf b/sc/cryoenv-assembly/publish-model.conf index 5237d16..f87bc1c 100644 --- a/sc/cryoenv-assembly/publish-model.conf +++ b/sc/cryoenv-assembly/publish-model.conf @@ -1,850 +1,271 @@ subsystem = IRIS component = sc.cryoenv -publish { - - events = [ - { - name = state - description = The current overall state of Cryostat Environment assembly - maxRate = 1 - archive = true - attributes = [ - { - name = cmd - description = command state - enum = [UNINITIALIZED,READY,BUSY,CONTINUOUS] +publish{ + events = [ + { + name = state + description =""" + Currnet state of the IRIS Cryostat Environment Assembly + """ + maxRate = 1 + archive = true + parameters = [ + { + name = cmd + description = "command state" + enum = [UNINITIALIZED,READY,BUSY,CONTINUOUS] + } + { + name = debug + description = debug level + enum = [DEBUG,INFO, WARN, ERROR] } - { - name = thermalVacuumState - description = thermal-vacuum state - enum = [WARM, PUMPING, WARM_VACUUM, COOLING, COLD, WARMING, PRESSURIZING] - } - { - name = debug - description = debug level - enum = [DEBUG,INFO, WARN, ERROR] + { + name = engineeringMode + description = "Indicates whether engineering mode is enabled or disabled" + type = boolean + } + { + name = cryostatEnvState + description = thermal-vacuum state + enum = [WARM, PUMPING, WARM_VACUUM, COOLING, COLD, WARMING, PRESSURIZING] } { - name = oiwfsConnected - description = + name = oiwfsConnected + description = "Indicates whether IRIS is physically connected to OIWFS" + type = boolean } - ] - } - { - name = IMG_state - description = IMG functional group state - ref = state - } - { name = "IMGTMP[XX]" - description = IMG functional group temperature reading with key information - maxRate = 20 - archive = true - attributes = [ - { - name = location - description = Physical location of the sensor assigned for the temperature reading - type = string - } - { - name = reading - description = Temperature reading of the sensor in kelvin - type = double - units = K - - } - ] - } - { - name = "IMGSENSOR[XX]" - description = IMG functional group temperature sensor status detail - maxRate = 20 - attributes = [ - { - name = lakeshoreID - description = "ID of the Lakeshore device that this reading is from" - type = string - } - { - name = sensorID - description = "ID of the sensor assigned for the temperature reading" - type = string - } - { - name = unit - description = Temperature unit - enum = [K, C, Sensor, Linear] - } - { - name = "sensorreadingstatus" - description = "Bit weighting of sensor status flags. 1=invalid reading, 2=old reading, 16=temp underrange, 32=temp overrange, 64=units zero, 128= units overrarnge" - type = integer - default = 0 - } - { - name = "highalarmstatus" - description = "Alarm status for highest value" - type = boolean - default = false - } - { - name = "lowalarmstatus" - description = "Alarm status for lowest value" - type = boolean - default = false - } - { - name = "min" - description = "Minimum temperature during current session" - type = float - } - { - name = "max" - description = "Maximum temperature during current session" - type = float - } - { - name = "minmaxstatus" - description = "Bit weighting of min/max status flags. 1=invalid reading, 2=old reading, 16=temp underrange, 32=temp overrange, 64=units zero, 128= units overrarnge" - type = array - dimensions = [2] - items = { - type = integer - minimum = 0 - maximum = 512 - } - } - ] - } - { - name = "IMG_HTR" - description = "Telemetry of the heater control loop" - archive = true - attributes = [ - { - name = lakeshoreID - description = "ID of the Lakeshore device that this reading is from" - type = string - } - { - name = "loopID" - description = "Control loop ID of the hardware" - type = string - } - { - name = "setpoint" - description = "current setpoint of control loop." - type = float - } - { - name = "heater_range" - description = "heater range. The power of the heater is decided by heater resistance, heater range, and maximum current." - type = integer - minimum = 1 - maximum = 5 - default = 1 - } - { - name = "input" - description = "Input this loop to control from." - enum = [A, B] - } - { - name = "units" - description = "Setpoint unit" - enum = [K, C, Sensor] - } - { - name = "enabled" - description = "On/Off flag of this control loop." - type = boolean - default = false - } - { - name = "powerup_enable" - description = "Flag specifying whether the control loop is on or off after power up." - type = boolean - default = false - } - { - name = "filterEnabled" - description = "On/Off flag of this control loop filter. It uses the same filter window and number of filter points as input." - type = boolean - default = false - } - { - name = "mode" - description = "Control loop PID mode. 1 = Manual PID, 2 = Zone, 3 = Open Loop, 4 = Autotune PID, 5 = AutoTune PI, 6 = AutoTune P" - type = integer - minimum = 1 - maximum = 6 - } - { - name = "pid" - description = "PID values for this control loop" - type = array - dimensions = [3] - items = { - type = integer - } - } - { - name = "rampEnabled" - description = "On/Off flag of the ramp control" - type = boolean - default = false - } - { - name = "ramp_value" - description = "How many kelvin per minute to ramp the setpoint" - type = float - } - { - name = "output" - description = "Heater output in percent" - type = float - } - { - name = "status" - description = "Errorcode in heater output" - type = integer - minimum = 0 - maximum = 6 - } - ] - } - { - name = "IFS_STATE" - description = "IFS functional group state" - ref = state - } - { - name = "WIN_STATE" - description = "WIN functional group state" - ref = state - } - { - name = "PV_STATE" - description = "PV functional group state" - ref = state - } - - { - name = "IFSTEMP[XX]" - description = "IFS functional group temperature reading" - maxRate = 20 - attributes = [ - { - name = lakeshoreID - description = "ID of the Lakeshore device that this reading is from" - type = string - } - { - name = sensorID - description = "ID of the sensor assigned for the temperature reading" - type = string - } - { - name = location - description = "Physical location of the sensor assigned for the temperature reading" - type = string - } - { - name = reading - description = "Temperature reading of the sensor in kelvin" - type = double - } - { - name = "unit" - description = "Temperature unit" - enum = [K, C, Sensor, Linear] - default = K - } - { - name = "sensorreadingstatus" - description = "Bit weighting of sensor status flags. 1=invalid reading, 2=old reading, 16=temp underrange, 32=temp overrange, 64=units zero, 128= units overrarnge" - type = integer - default = 0 - } - { - name = "highalarmstatus" - description = "Alarm status for highest value" - type = boolean - default = false - } - { - name = "lowalarmstatus" - description = "Alarm status for lowest value" - type = boolean - default = false - } - { - name = "min" - description = "Minimum temperature during current session" - type = float - } - { - name = "max" - description = "Maximum temperature during current session" - type = float - } - { - name = "minmaxstatus" - description = "Bit weighting of min/max status flags. 1=invalid reading, 2=old reading, 16=temp underrange, 32=temp overrange, 64=units zero, 128= units overrarnge" - type = array - dimensions = [2] - items = { - type = integer - minimum = 0 - maximum = 512 - } - } - ] - } - { - name = "IFS_HTR" - description = "Telemetry of the heater control loop" - archive = true - maxRate = 1 - attributes = [ - { - name = lakeshoreID - description = "ID of the Lakeshore device that this reading is from" - type = string - } - { - name = "loopID" - description = "Control loop ID of the hardware" - type = string - } - { - name = "setpoint" - description = "current setpoint of control loop." - type = float - } - { - name = "heater_range" - description = "heater range. The power of the heater is decided by heater resistance, heater range, and maximum current." - type = integer - minimum = 1 - maximum = 5 - default = 1 - } - { - name = "input" - description = "Input this loop to control from." - enum = [A, B] - } - { - name = "units" - description = "Setpoint unit" - enum = [K, C, Sensor] - } - { - name = "enabled" - description = "On/Off flag of this control loop." - type = boolean - default = false - } - { - name = "powerup_enable" - description = "Flag specifying whether the control loop is on or off after power up." - type = boolean - default = false - } - { - name = "filterEnabled" - description = "On/Off flag of this control loop filter. It uses the same filter window and number of filter points as input." - type = boolean - default = false - } - { - name = "mode" - description = "Control loop PID mode. 1 = Manual PID, 2 = Zone, 3 = Open Loop, 4 = Autotune PID, 5 = AutoTune PI, 6 = AutoTune P" - type = integer - minimum = 1 - maximum = 6 - } - { - name = "pid" - description = "PID values for this control loop" - type = array - dimensions = [3] - items = { - type = integer - } - } - { - name = "rampEnabled" - description = "On/Off flag of the ramp control" - type = boolean - default = false - } - { - name = "ramp_value" - description = "How many kelvin per minute to ramp the setpoint" - type = float - } - { - name = "output" - description = "Heater output in percent" - type = float - } - { - name = "status" - description = "Errorcode in heater output" - type = integer - minimum = 0 - maximum = 6 - } - ] - } - { - name = "WIN_TEMP[XX]" - description = "WIN functional group temperature reading" - maxRate = 20 - attributes = [ - { - name = lakeshoreID - description = "ID of the Lakeshore device that this reading is from" - type = string - } - { - name = sensorID - description = "ID of the sensor assigned for the temperature reading" - type = string - } - { - name = location - description = "Physical location of the sensor assigned for the temperature reading" - type = string - } - { - name = reading - description = "Temperature reading of the sensor in kelvin" - type = double - } - { - name = "unit" - description = "Temperature unit" - enum = [K, C, Sensor, Linear] - default = K - } - { - name = "sensorreadingstatus" - description = "Bit weighting of sensor status flags. 1=invalid reading, 2=old reading, 16=temp underrange, 32=temp overrange, 64=units zero, 128= units overrarnge" - type = integer - default = 0 - } - { - name = "highalarmstatus" - description = "Alarm status for highest value" - type = boolean - default = false - } - { - name = "lowalarmstatus" - description = "Alarm status for lowest value" - type = boolean - default = false - } - { - name = "min" - description = "Minimum temperature during current session" - type = float - } - { - name = "max" - description = "Maximum temperature during current session" - type = float - } - { - name = "minmaxstatus" - description = "Bit weighting of min/max status flags. 1=invalid reading, 2=old reading, 16=temp underrange, 32=temp overrange, 64=units zero, 128= units overrarnge" - type = array - dimensions = [2] - items = { - type = integer - minimum = 0 - maximum = 512 - } - } - ] - } - { - name = "WIN_HTR" - description = "Telemetry of the heater control loop" - archive = true - maxRate = 1 - attributes = [ - { - name = lakeshoreID - description = "ID of the Lakeshore device that this reading is from" - type = string - } - { - name = "loopID" - description = "Control loop ID of the hardware" - type = string - } - { + { + name = hcdConnections + description = """ + Connection status of the HCD's under the assembly. + """ + type = struct + parameters = [ + { + name = cryoTempControlHcd + description = "Connection status of the temperature controller for the window and cryostat" + type = boolean + } + { + name = imgTempControlHcd + description = "Connection status of the temperature controller for the imager detector" + type = boolean + } + { + name = pvTempControlHcd + description = "Connection status of the temperature controller for the pupil viewing camera detector" + type = boolean + } + { + name = ifsTempControlHcd + description = "Connection status of the temperature controller for the IFS detector" + type = boolean + } + { + name = cryoTempMonitorHcd + description = "Connection status of the temperature monitor for the cryostat" + type = boolean + } + { + name = imgTempMonitorHcd1 + description = "Connection status of the temperature monitor 1 for the imager mechanisms" + type = boolean + } + { + name = imgTempMonitorHcd2 + description = "Connection status of the temperature monitor 2 for the imager mechanisms" + type = boolean + } + { + name = ifsTempMonitorHcd + description = "Connection status of the temperature monitor for the IFS mechanisms" + type = boolean + } + ] + } + ] + } + + { + name = windowTemperature + description = """ + A temperature reading of sensor located on IRIS Cryostat Window to OIWFS + """ + maxRate = 1 + archive = true + parameters = [ + { + name = temperature + description = "Temperature sensor reading in kelvin" + type = double + units = K + } + ] + } + { + name = pupilDetectorTemperature + description = """ + A temperature reading of sensor located on IRIS Imager Pupil Viewing Camera detector + """ + ref = windowTemperature + } + { + name = imgDetectorTemperature + description = """ + A temperature reading of sensor located on IRIS Imager detectors + """ + ref = windowTemperature + } + { + name = ifsDetectorTemperature + description = """ + A temperature reading of sensor located on IRIS IFS detector + """ + ref = windowTemperature + } + { + name = windowHeaterStatus + description = """ + Current status of the heating element that controls the temperature of IRIS Cryostat Window to OIWFS + """ + maxRate = 1 + archive = true + parameters = [ + { + name = "output" + description = "Heater output in percent of maximum current/power(TBD)" + type = double + } + { name = "setpoint" - description = "current setpoint of control loop." - type = float - } - { - name = "heater_range" - description = "heater range. The power of the heater is decided by heater resistance, heater range, and maximum current." - type = integer - minimum = 1 - maximum = 5 - default = 1 + description = "current setpoint of heater control loop." + type = double } - { - name = "input" - description = "Input this loop to control from." - enum = [A, B] + { + name = "heaterRangeStatus" + description = """ + The heater range is used to turn on/off temperature control as well as setting the output power range. High setting allows the maximum power, while the Med range provides 10% of maximum, and Low provides 1% of maximum. Also, depends on the output, only on or off options are available. + """ + enum = [off, on, high, med, low] } - { - name = "units" - description = "Setpoint unit" - enum = [K, C, Sensor] - } - { - name = "enabled" - description = "On/Off flag of this control loop." - type = boolean - default = false - } - { - name = "powerup_enable" - description = "Flag specifying whether the control loop is on or off after power up." - type = boolean - default = false - } - { - name = "filterEnabled" - description = "On/Off flag of this control loop filter. It uses the same filter window and number of filter points as input." - type = boolean - default = false - } - { - name = "mode" - description = "Control loop PID mode. 1 = Manual PID, 2 = Zone, 3 = Open Loop, 4 = Autotune PID, 5 = AutoTune PI, 6 = AutoTune P" - type = integer - minimum = 1 - maximum = 6 - } - { - name = "pid" - description = "PID values for this control loop" - type = array - dimensions = [3] - items = { - type = integer - } - } - { + { name = "rampEnabled" description = "On/Off flag of the ramp control" type = boolean - default = false - } - { - name = "ramp_value" - description = "How many kelvin per minute to ramp the setpoint" - type = float - } - { - name = "output" - description = "Heater output in percent" - type = float - } - { - name = "status" - description = "Errorcode in heater output" - type = integer - minimum = 0 - maximum = 6 - } - ] - } - { - name = "PV_TEMP[N]" - description = "PV functional temperature reading" - maxRate = 20 - attributes = [ - { - name = lakeshoreID - description = "ID of the Lakeshore device that this reading is from" - type = string - } - { - name = sensorID - description = "ID of the sensor assigned for the temperature reading" - type = string - } - { - name = location - description = "Physical location of the sensor assigned for the temperature reading" - type = string - } - { - name = reading - description = "Temperature reading of the sensor in kelvin" - type = double - } - { - name = "unit" - description = "Temperature unit" - enum = [K, C, Sensor, Linear] - default = K - } - { - name = "sensorreadingstatus" - description = "Bit weighting of sensor status flags. 1=invalid reading, 2=old reading, 16=temp underrange, 32=temp overrange, 64=units zero, 128= units overrarnge" - type = integer - default = 0 - } - { - name = "highalarmstatus" - description = "Alarm status for highest value" - type = boolean - default = false - } - { - name = "lowalarmstatus" - description = "Alarm status for lowest value" - type = boolean - default = false - } - { - name = "min" - description = "Minimum temperature during current session" - type = float - } - { - name = "max" - description = "Maximum temperature during current session" - type = float } - { - name = "minmaxstatus" - description = "Bit weighting of min/max status flags. 1=invalid reading, 2=old reading, 16=temp underrange, 32=temp overrange, 64=units zero, 128= units overrarnge" + + ] + } + { + name = cryostatHeaterStatus + description = """ + Current status of the heating element that supports IRIS Cryostat warm up + """ + ref = windowHeaterStatus + } + { + name = pupilDetectorHeaterStatus + description = """ + Current status of the heating element that controls the temperature of IRIS Imager Pupil Viewing Camera detector + """ + ref = windowHeaterStatus + } + { + name = imgDetectorHeaterStatus + description = """ + Current status of the heating element that controls the temperature of IRIS Imager detectors + """ + ref = windowHeaterStatus + } + { + name = ifsDetectorHeaterStatus + description = """ + Current status of the heating element that controls the temperature of IRIS IFS detector + """ + ref = windowHeaterStatus + } + { + name = imgTemperatures + description = """ + A List of temperature sensor readings that are located within the IRIS Imager side of cryostat. Mainly located on Imager mechanisms.The locations of the sensors are published as (#sc.cryoenv-publishes-Event-imgTemperatureLocations). The temperature readings and the sensor locations are placed in same index. + """ + maxRate = 0 + archive = true + parameters = [ + { + name = temperatures + description = "Array of temperature readings. " + type = array + units = K + minItems = 1 + maxItems = 8 + } + ] + } + { + name = ifsTemperatures + description =""" + A List of temperature sensor readings that are located within the IRIS IFS side of cryostat. Mainly located on IFS mechanisms. The locations of the sensors are published as (#sc.cryoenv-publishes-Event-ifsTemperatureLocations). The temperature readings and the sensor locations are placed in same index. + """ + ref = imgTemperatures + } + { + name = cryostatTemperatures + description = """ + A List of temperature sensor readings that are located throught IRIS Cryostat. Used to monitor overall cryostat environment. The locations of the sensors are published as (#sc.cryoenv-publishes-Event-cryostatTemperatureLocations). The temperature readings and the sensor locations are placed in same index. + """ + ref = imgTemperatures + } + { + name = imgTemperatureLocations + description = """ + A list of locations of sensors in (#sc.cryoenv-publishes-Event-imgTemperatures). This event will be published once upon the start-up of the assembly for the subscribers to referece sensor locations. Even though it's published only once, subscribers can get the latest published event. + """ + maxRate = 0 + archive = true + parameters = [ + { + name = temperatures + description = "Array of temperature sensor locations. " type = array - dimensions = [2] - items = { - type = integer - minimum = 0 - maximum = 512 - } - } - ] - } - { - name = "PV_HTR" - description = "Telemetry of the heater control loop" - archive = true - maxRate = 1 - attributes = [ - { - name = lakeshoreID - description = "ID of the Lakeshore device that this reading is from" - type = string - } - { - name = "loopID" - description = "Control loop ID of the hardware" - type = string - } - { - name = "setpoint" - description = "current setpoint of control loop." - type = float - } - { - name = "heater_range" - description = "heater range. The power of the heater is decided by heater resistance, heater range, and maximum current." - type = integer - minimum = 1 - maximum = 5 - default = 1 - } - { - name = "input" - description = "Input this loop to control from." - enum = [A, B] - } - { - name = "units" - description = "Setpoint unit" - enum = [K, C, Sensor] - } - { - name = "enabled" - description = "On/Off flag of this control loop." - type = boolean - default = false - } - { - name = "powerup_enable" - description = "Flag specifying whether the control loop is on or off after power up." - type = boolean - default = false - } - { - name = "filterEnabled" - description = "On/Off flag of this control loop filter. It uses the same filter window and number of filter points as input." - type = boolean - default = false - } - { - name = "mode" - description = "Control loop PID mode. 1 = Manual PID, 2 = Zone, 3 = Open Loop, 4 = Autotune PID, 5 = AutoTune PI, 6 = AutoTune P" - type = integer - minimum = 1 - maximum = 6 - } - { - name = "pid" - description = "PID values for this control loop" - type = array - dimensions = [3] - items = { - type = integer - } - } - { - name = "rampEnabled" - description = "On/Off flag of the ramp control" - type = boolean - default = false - } - { - name = "ramp_value" - description = "How many kelvin per minute to ramp the setpoint" - type = float - } - { - name = "output" - description = "Heater output in percent" - type = float - } - { - name = "status" - description = "Errorcode in heater output" - type = integer - minimum = 0 - maximum = 6 - } - ] - } - { - name = "PRESS_STATE" - description = "PRESS functional group state" - maxRate = 20 - attributes = [ - { - name = cmdState - description = "command state" - enum = [UNINITIALIZED,READY] - } - { - name = thermalVacuumState - description = "thermal-vacuum state" - enum = [WARM, PUMPING, WARM_VACUUM, COOLING, COLD, WARMING, PRESSURIZING] - } - { - name = debug - description = "debug level" - enum = [TBD1,TBD2] - } - ] - } - { - name = "PESSURE" - description = "Telemetry for the pressure of the cryostat." - maxRate = 20 - attributes = [ - { - name = gaugeID - description = "command state" - type = string - } - { - name = unit - description = "Pressure unit" - enum = [atm, torr, pascal] - } - { - name = reading - description = "Pressure reading from the gauge specified." - type = float - } - ] - } - ] - - alarms = [ - { - name = TEMPERATURE - description = "Alarm when the temperature is out of range for current thermal-vacuum state." - // TODO FIXME: The fields below were automatically added and should be updated manually - severityLevels = [Major] - location = "TBD..." - alarmType = Calculated - probableCause = "TBD..." - operatorResponse = "TBD..." - autoAck = false - latched = false - } - { - name = TEMPERATURE_GRADIENT - description = "alarm when the temperature rate of change is greater than as configured." - // TODO FIXME: The fields below were automatically added and should be updated manually - severityLevels = [Major] - location = "TBD..." - alarmType = Calculated - probableCause = "TBD..." - operatorResponse = "TBD..." - autoAck = false - latched = false - } - { - name = PRESSURE - description = "Alarm when the pressure is out of range for current thermal-vacuum state." - // TODO FIXME: The fields below were automatically added and should be updated manually - severityLevels = [Major] - location = "TBD..." - alarmType = Calculated - probableCause = "TBD..." - operatorResponse = "TBD..." - autoAck = false - latched = false - } - { - name = PRESSURE_GRADIENT - description = "alarm when the temperature rate of change is greater than as configured." - // TODO FIXME: The fields below were automatically added and should be updated manually - severityLevels = [Major] - location = "TBD..." - alarmType = Calculated - probableCause = "TBD..." - operatorResponse = "TBD..." - autoAck = false - latched = false - } - { - name = LOST_CONNECTION - description = "Alarm when it's unable to communicate with one or more HCDs." - // TODO FIXME: The fields below were automatically added and should be updated manually - severityLevels = [Major] - location = "TBD..." - alarmType = Calculated - probableCause = "TBD..." - operatorResponse = "TBD..." - autoAck = false - latched = false - } - ] -} \ No newline at end of file + minItems = 1 + maxItems = 16 + } + ] + } + { + name = ifsTemperatureLocations + description = """ + A list of locations of sensors in (#sc.cryoenv-publishes-Event-ifsTemperatures). This event will be published once upon the start-up of the assembly for the subscribers to referece sensor locations. + """ + ref = imgTemperatureLocations + } + { + name = cryostatTemperatureLocations + description = """ + A list of locations of sensors in (#sc.cryoenv-publishes-Event-cryostatTemperatures). This event will be published once upon the start-up of the assembly for the subscribers to referece sensor locations. + """ + ref = imgTemperatureLocations + + } + { + name = cryostatPressure + description = """ + The pressure gauge reading for the entire IRIS Cryostat. + """ + maxRate = 1 + archive = true + parameters = [ + { + name = pressure + description = "Pressure reading in Torr" + type = double + units = "Torr" + } + + ] + } + ] +} \ No newline at end of file