From c38dd3d5361287afa793f437921a43e814b021cf Mon Sep 17 00:00:00 2001 From: conroy-chee Date: Mon, 29 Nov 2021 09:51:35 +0800 Subject: [PATCH 1/9] added new points for tpkd day2 work --- ontology/yaml/resources/subfields/subfields.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ontology/yaml/resources/subfields/subfields.yaml b/ontology/yaml/resources/subfields/subfields.yaml index 1cee4d5a74..d8114f3d06 100644 --- a/ontology/yaml/resources/subfields/subfields.yaml +++ b/ontology/yaml/resources/subfields/subfields.yaml @@ -19,6 +19,7 @@ aggregation: total: "Sum total of some set of values (e.g. total_request_heating_count)" component: battery: "A device used to store power for use at a later time (e.g. in an emergency where grid power is unavailable)." + bearing: "Machine element that constrains relative motion to only the desired motion, and reduces friction between moving parts." cable: "A length of wire, sometimes shielded externally, used for some purpose (e.g. steel braided wire for tensile support, CAT5 cable for communications, etc.)." coil: "Component that exchanges heat between two media streams." compressor: "Component which drives refrigerant compression (and thus cooling processes) within a device or system." @@ -39,6 +40,7 @@ component: heater: "Component which provides heat to media." humidifier: "Component which humidifies." lamp: "The component of a lighting device that emits the light." + motor: "The component of a compressor." pump: "Component used for the distribution of liquid media." shade: "Window covering." tank : "Storage device for media." @@ -46,6 +48,7 @@ component: valve: "Component which meters the flow of water within a system or device." vane: "Component for guiding media flow." wheel: "Component used for transfer of heat from incoming to outgoing air streams. " + winding: "Conductive wires wrapped around a magnetic core." #New component subfields for CH ZRH EURD switch: "Component to disrupt an electrical cirucit" riser: "Water riser for heating, cooling and so on" @@ -99,6 +102,7 @@ descriptor: humidification: "Process of adding moisture to air." id: "An identification or identifier." inlet: "Area of media entrance." + inhibit: "Prohibit from executing a function or starting an operation." input: "The input to a system." inter: "Represents something in between references (e.g. average_inter_line_voltage, the average voltage between lines)." isolation: "Process of isolating one component or process from another." @@ -123,6 +127,7 @@ descriptor: north: "Cardinal direction; opposite of south" occupancy: "State of being occupied." occupied: "State of being within scheduled (time of day or week) run-time parameters." + oil: "Oil in heater." ongoing: "Hapenning currently, right now." output: "The output of a control loop (e.g. PID Loop Output)" particle: "A very fine clump of solid matter." @@ -165,6 +170,7 @@ descriptor: supervisor: "A program that controls a device from a supervisory (i.e. remote or external) level." supply: "Measurement or process of media as it is supplied to the end-use equipment within the system." suppression : "a range of firefighting tactics used to suppress fire" + standby: "A state of waiting to secure an unreserved place for a journey or performance, allocated on the basis of earliest availability." sweeper: "Action performed in a sump to prevent sediment build-up via water turbulence." sync: "The simultaneous operation or activity of two or more things." tertiary: "Associated with the tertiary (peripheral) loops of a production process." From 5e1ad20b885f3def20d495e644cedf2042ef0b21 Mon Sep 17 00:00:00 2001 From: conroy-chee Date: Mon, 29 Nov 2021 13:53:43 +0800 Subject: [PATCH 2/9] revert back to original master changes --- ontology/yaml/resources/subfields/subfields.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ontology/yaml/resources/subfields/subfields.yaml b/ontology/yaml/resources/subfields/subfields.yaml index 714bfda238..0c88a19026 100644 --- a/ontology/yaml/resources/subfields/subfields.yaml +++ b/ontology/yaml/resources/subfields/subfields.yaml @@ -54,10 +54,6 @@ component: vane: "Component for guiding media flow." wheel: "Component used for transfer of heat from incoming to outgoing air streams. " winding: "Conductive wires wrapped around a magnetic core." - #New component subfields for CH ZRH EURD - switch: "Component to disrupt an electrical cirucit" - riser: "Water riser for heating, cooling and so on" - descriptor: air: "Atmospheric air, either conditioned or unconditioned." aisle: "Passage between two rows of server racks." From 4013a5de0e30acf747e36de3e70064aafcb43c45 Mon Sep 17 00:00:00 2001 From: conroy-chee Date: Mon, 6 Dec 2021 10:26:07 +0800 Subject: [PATCH 3/9] changed the description for motor and oil --- ontology/yaml/resources/subfields/subfields.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ontology/yaml/resources/subfields/subfields.yaml b/ontology/yaml/resources/subfields/subfields.yaml index 0c88a19026..51b781463f 100644 --- a/ontology/yaml/resources/subfields/subfields.yaml +++ b/ontology/yaml/resources/subfields/subfields.yaml @@ -43,7 +43,7 @@ component: heater: "Component which provides heat to media." humidifier: "Component which humidifies." lamp: "The component of a lighting device that emits the light." - motor: "The component of a compressor." + motor: "A machine, especially one powered by electricity or internal combustion, that supplies motive power for a vehicle or for some other device with moving parts." pump: "Component used for the distribution of liquid media." riser: "Water riser for heating, cooling and so on" shade: "Window covering." @@ -140,7 +140,7 @@ descriptor: north: "Cardinal direction; opposite of south" occupancy: "State of being occupied." occupied: "State of being within scheduled (time of day or week) run-time parameters." - oil: "Oil in heater." + oil: "A viscous liquid derived from petroleum, especially for use as a fuel or lubricant." ongoing: "Hapenning currently, right now." output: "The output of a control loop (e.g. PID Loop Output)" ozone: "Highly reactive gaseous compound comprised of three oxygen atoms." From bfac9760e752757d30923dc99eb0907ac2225431 Mon Sep 17 00:00:00 2001 From: conroy-chee Date: Wed, 8 Dec 2021 13:03:12 +0800 Subject: [PATCH 4/9] added new telemetry field point name --- .../resources/fields/telemetry_fields.yaml | 59 +++++++++++++++++++ .../yaml/resources/subfields/subfields.yaml | 1 + 2 files changed, 60 insertions(+) diff --git a/ontology/yaml/resources/fields/telemetry_fields.yaml b/ontology/yaml/resources/fields/telemetry_fields.yaml index 136c2fbaea..cc68f8bb66 100644 --- a/ontology/yaml/resources/fields/telemetry_fields.yaml +++ b/ontology/yaml/resources/fields/telemetry_fields.yaml @@ -694,6 +694,65 @@ literals: - PRESENT - ABSENT +# Added for TPKD day2 +- pump_speed_frequency_setpoint +- condensing_supply_water_isolation_valve_mode: + - MANUAL + - AUTO +- condensing_return_water_isolation_valve_mode: + - MANUAL + - AUTO +- chilled_supply_water_isolation_valve_mode: + - MANUAL + - AUTO +- chilled_return_water_isolation_valve_mode: + - MANUAL + - AUTO +- oil_heater_status: + - ON + - OFF +- inhibit_start_time_status +- limit_percentage_capacity +- total_compressor_count +- compressor_run_time_sensor +- guidevane_position_percentage_sensor +- oil_temperature_sensor +- oil_pump_differential_pressure_sensor +- exhaust_gas_compressor_temperature_sensor +- bearing_temperature_sensor +- winding_temperature_sensor +- start_mode: + - OFF + - ON +- compressor_temperature_setpoint +- compressor_percentage_setpoint +- compressor_power_sensor +- refrigerant_open_percentage_sensor +- standby_compressor_status +- pump_speed_mode +- run_time_sensor +- high_compressor_pressure_alarm: + - ACTIVE + - INACTIVE +- low_compressor_pressure_alarm: + - ACTIVE + - INACTIVE +- compressor_current_alarm: + - ACTIVE + - INACTIVE +- compressor_run_time_alarm: + - ACTIVE + - INACTIVE +- water_high_level_alarm: + - ACTIVE + - INACTIVE +- water_overflow_level_alarm: + - ACTIVE + - INACTIVE +- water_low_level_alarm: + - ACTIVE + - INACTIVE + # New alarms using alarm as a point type, and existing alarms moved here # TODO (tsodorff): change these to ALARM/NORMAL after determining how this can be done safely to existing translations. - fabric_protection_alarm: diff --git a/ontology/yaml/resources/subfields/subfields.yaml b/ontology/yaml/resources/subfields/subfields.yaml index c4f05cd1c1..39e4cb84c8 100644 --- a/ontology/yaml/resources/subfields/subfields.yaml +++ b/ontology/yaml/resources/subfields/subfields.yaml @@ -100,6 +100,7 @@ descriptor: flue: "Chimney for conveying exhaust gas." formaldehyde: "A simple, pungent organic compound (gas under standard conditions), simplest of the aldehydes." frost: "Freezing water on a surface." + overflow: "flow over the brim of a receptacle." ## TODO: make it so gas only has one meaning gas: "Process or component driven by natural gas (as to distinguish from electric)." glycol: "Liquid mixture consisting of glycol and water " From 292388afd9d77cc35c666a906e47ba439ed7bd56 Mon Sep 17 00:00:00 2001 From: conroy-chee Date: Tue, 21 Dec 2021 16:08:32 +0800 Subject: [PATCH 5/9] changes according to the comment --- .../resources/fields/telemetry_fields.yaml | 24 ++++++++++--------- .../yaml/resources/subfields/subfields.yaml | 1 + 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/ontology/yaml/resources/fields/telemetry_fields.yaml b/ontology/yaml/resources/fields/telemetry_fields.yaml index cc68f8bb66..2f90c5905f 100644 --- a/ontology/yaml/resources/fields/telemetry_fields.yaml +++ b/ontology/yaml/resources/fields/telemetry_fields.yaml @@ -695,7 +695,6 @@ literals: - ABSENT # Added for TPKD day2 -- pump_speed_frequency_setpoint - condensing_supply_water_isolation_valve_mode: - MANUAL - AUTO @@ -711,26 +710,24 @@ literals: - oil_heater_status: - ON - OFF -- inhibit_start_time_status -- limit_percentage_capacity +- inhibit_start_time_sensor +- load_limit_capacity - total_compressor_count - compressor_run_time_sensor -- guidevane_position_percentage_sensor +- guidevane_percentage_command - oil_temperature_sensor - oil_pump_differential_pressure_sensor - exhaust_gas_compressor_temperature_sensor - bearing_temperature_sensor - winding_temperature_sensor -- start_mode: - - OFF - - ON - compressor_temperature_setpoint -- compressor_percentage_setpoint +- load_compressor_percentage_setpoint - compressor_power_sensor -- refrigerant_open_percentage_sensor -- standby_compressor_status -- pump_speed_mode +- refrigerant_valve_percentage_sensor - run_time_sensor +- standby_compressor_alarm: + - ACTIVE + - INACTIVE - high_compressor_pressure_alarm: - ACTIVE - INACTIVE @@ -752,6 +749,8 @@ literals: - water_low_level_alarm: - ACTIVE - INACTIVE +- fan_speed_frequency_setpoint +- compressor_speed_frequency_setpoint # New alarms using alarm as a point type, and existing alarms moved here # TODO (tsodorff): change these to ALARM/NORMAL after determining how this can be done safely to existing translations. @@ -793,6 +792,9 @@ literals: - STANDBY - battery_charge_percentage_sensor - brightness_percentage_command +- speed_mode: + - MANUAL + - AUTO # New fields for emergency systems - broken_cable_alarm: diff --git a/ontology/yaml/resources/subfields/subfields.yaml b/ontology/yaml/resources/subfields/subfields.yaml index 39e4cb84c8..4299f0a689 100644 --- a/ontology/yaml/resources/subfields/subfields.yaml +++ b/ontology/yaml/resources/subfields/subfields.yaml @@ -124,6 +124,7 @@ descriptor: lighting: "Illumination of a room" limit: "A boundary condition for a control (e.g. low limit)." line: "Refers to the incoming electrical feed (e.g. line current)." + load: "A weight or source of pressure borne by someone or something." local: "A definite spatial location involving only a subset of the larger surrounding area." loop: "Recirculating loop." low: "Level of control or measurement; below medium and high; opposite of high." From bc6f5be0b693e2692aa45e3cdad6c28858d92ac8 Mon Sep 17 00:00:00 2001 From: conroy-chee Date: Wed, 5 Jan 2022 12:34:56 +0800 Subject: [PATCH 6/9] changed the definition of load, added compressor_temperature_sensor and other points --- ontology/yaml/resources/fields/telemetry_fields.yaml | 5 +++++ ontology/yaml/resources/subfields/subfields.yaml | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ontology/yaml/resources/fields/telemetry_fields.yaml b/ontology/yaml/resources/fields/telemetry_fields.yaml index 2f90c5905f..34db01724a 100644 --- a/ontology/yaml/resources/fields/telemetry_fields.yaml +++ b/ontology/yaml/resources/fields/telemetry_fields.yaml @@ -721,6 +721,7 @@ literals: - bearing_temperature_sensor - winding_temperature_sensor - compressor_temperature_setpoint +- compressor_temperature_sensor - load_compressor_percentage_setpoint - compressor_power_sensor - refrigerant_valve_percentage_sensor @@ -751,6 +752,10 @@ literals: - INACTIVE - fan_speed_frequency_setpoint - compressor_speed_frequency_setpoint +- start_mode +- reset_alarm +- chilled_water_isolation_valve_mode +- pump_speed_frequency_setpoint # New alarms using alarm as a point type, and existing alarms moved here # TODO (tsodorff): change these to ALARM/NORMAL after determining how this can be done safely to existing translations. diff --git a/ontology/yaml/resources/subfields/subfields.yaml b/ontology/yaml/resources/subfields/subfields.yaml index 4299f0a689..c827b38d6e 100644 --- a/ontology/yaml/resources/subfields/subfields.yaml +++ b/ontology/yaml/resources/subfields/subfields.yaml @@ -124,7 +124,7 @@ descriptor: lighting: "Illumination of a room" limit: "A boundary condition for a control (e.g. low limit)." line: "Refers to the incoming electrical feed (e.g. line current)." - load: "A weight or source of pressure borne by someone or something." + load: "The quantity or amount of work that can be carried or operated at one time by a specified means." local: "A definite spatial location involving only a subset of the larger surrounding area." loop: "Recirculating loop." low: "Level of control or measurement; below medium and high; opposite of high." @@ -174,6 +174,7 @@ descriptor: release: "To free from constraints (e.g. to release the door from its magnetic lock)." refrigerant: "Substance used in the mechanical refrigeration process (e.g. R-134a)" request: "A signal from a system device that calls for more of a particular conditioning process (e.g. pressure requests from terminal units)." + reset: "Return the value of a device to an initial state." return: "Measurement or process of media as it is returned from the end-use equipment within the system." reversing: "Reverses direction of flow (e.g. reversing valve on heat pump)." room: "A space that can be occupied, or a part or division of a building or floor enclosed by walls." From e291099f1edd8870d18f41c35e62e610bbd927eb Mon Sep 17 00:00:00 2001 From: conroy Date: Thu, 13 Jan 2022 12:22:06 +0800 Subject: [PATCH 7/9] added everything for day2 tpkd --- .../resources/HVAC/entity_types/CDWS.yaml | 14 ++ .../yaml/resources/HVAC/entity_types/CH.yaml | 136 ++++++++++++- .../resources/HVAC/entity_types/CHWS.yaml | 21 +++ .../yaml/resources/HVAC/entity_types/CT.yaml | 54 +++++- .../HVAC/entity_types/GENERALTYPES.yaml | 8 +- .../yaml/resources/HVAC/entity_types/PMP.yaml | 71 ++++++- .../yaml/resources/HVAC/entity_types/TK.yaml | 30 +++ .../resources/METERS/entity_types/HM.yaml | 14 ++ .../resources/fields/telemetry_fields.yaml | 178 +++++++++++++++++- .../yaml/resources/subfields/subfields.yaml | 9 +- ontology/yaml/resources/units/units.yaml | 4 + 11 files changed, 529 insertions(+), 10 deletions(-) create mode 100644 ontology/yaml/resources/HVAC/entity_types/TK.yaml diff --git a/ontology/yaml/resources/HVAC/entity_types/CDWS.yaml b/ontology/yaml/resources/HVAC/entity_types/CDWS.yaml index f2d74bda7f..84aa91cb85 100644 --- a/ontology/yaml/resources/HVAC/entity_types/CDWS.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/CDWS.yaml @@ -120,3 +120,17 @@ CDWS_US_MTV_2081_1: - return_water_isolation_valve_status_3 - supply_water_isolation_valve_status_4 - return_water_isolation_valve_status_4 + + +CDWS_TPKD: + description: "CDWS TPKD." + implements: + - CDWS + opt_uses: + - condensing_water_bypass_valve_percentage_command + - condensing_water_bypass_valve_percentage_sensor + - run_mode + - condensing_water_bypass_valve_percentage_setpoint + - condensing_supply_water_temperature_sensor + - condensing_return_water_temperature_sensor + - condensing_water_differential_pressure_sensor diff --git a/ontology/yaml/resources/HVAC/entity_types/CH.yaml b/ontology/yaml/resources/HVAC/entity_types/CH.yaml index 642635d793..625b217c80 100644 --- a/ontology/yaml/resources/HVAC/entity_types/CH.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/CH.yaml @@ -583,4 +583,138 @@ CH_SS_CHWSWISOVM_CWSISOVM_CWRISOVM_CHWRWISOVM_CHWDT: - condensing_supply_water_temperature_sensor opt_uses: - lost_power_alarm - - run_mode \ No newline at end of file + - run_mode + +CH_SS_TPKD: + description: "CH TPKD." + implements: + - CH + - SS + opt_uses: + - condensing_supply_water_temperature_sensor + - condensing_return_water_temperature_sensor + - chilled_supply_water_temperature_sensor + - chilled_return_water_temperature_sensor + - lost_power_alarm + - control_status + - speed_frequency_sensor + - speed_frequency_command + - control_mode + - reset_alarm + - simulation_command + - end_alarm + - start_alarm + - reset_command + - pump_speed_mode + - run_time_sensor + - pump_speed_frequency_setpoint + - condensing_supply_water_isolation_valve_open_status + - condensing_supply_water_isolation_valve_closed_status + - condensing_supply_water_isolation_valve_open_command + - condensing_supply_water_isolation_valve_closed_command + - condensing_supply_water_isolation_valve_mode + - open_command_1 + - closed_command_1 + - stop_command_1 + - condensing_supply_water_isolation_valve_failed_alarm + - closed_alarm_1 + - open_alarm_1 + - simulation_status_1 + - local_status_1 + - open_command_2 + - closed_command_2 + - stop_command_2 + - condensing_return_water_isolation_valve_failed_alarm + - closed_alarm_2 + - open_alarm_2 + - simulation_status_2 + - local_status_2 + - condensing_return_water_isolation_valve_open_status + - condensing_return_water_isolation_valve_closed_status + - condensing_return_water_isolation_valve_open_command + - condensing_return_water_isolation_valve_closed_command + - condensing_return_water_isolation_valve_mode + - chilled_supply_water_isolation_valve_percentage_sensor + - chilled_supply_water_isolation_valve_percentage_command + - chilled_supply_water_isolation_valve_mode + - chilled_return_water_isolation_valve_percentage_sensor + - chilled_return_water_isolation_valve_percentage_command + - chilled_return_water_isolation_valve_mode + - chilled_return_water_isolation_valve_percentage_setpoint + - chilled_water_flowrate_status + - condensing_water_flowrate_status + - compressor_run_status + - oil_heater_status + - chilled_supply_water_temperature_setpoint + - entering_chilled_water_temperature_sensor + - leaving_chilled_water_temperature_sensor + - refrigerant_evaporator_saturation_temperature_sensor + - evaporator_pressure_sensor + - entering_condensing_water_temperature_sensor + - leaving_condensing_water_temperature_sensor + - refrigerant_condenser_saturation_temperature_sensor + - condenser_pressure_sensor + - average_line_current_sensor + - line_current_sensor + - line_voltage_sensor + - powerfactor_sensor + - power_sensor + - compressor_speed_percentage_sensor + - run_mode + - failed_alarm + - inhibit_start_time_command + - limit_percentage_capacity + - total_compressor_count + - compressor_run_time_sensor + - guidevane_percentage_sensor + - oil_temperature_sensor + - oil_pump_differential_pressure_sensor + - exhaust_gas_compressor_temperature_sensor + - bearing_temperature_sensor + - winding_temperature_sensor + - failed_alarm_1 + - failed_alarm_2 + - compressor_temperature_setpoint_1 + - compressor_temperature_setpoint_2 + - compressor_run_time_sensor_1 + - load_compressor_percentage_setpoint_1 + - load_compressor_percentage_setpoint_2 + - compressor_power_sensor_1 + - compressor_open_percentage_command_1 + - compressor_open_percentage_command_2 + - high_pressure_sensor_1 + - high_temperature_sensor_1 + - low_pressure_sensor_1 + - low_temperature_sensor_1 + - compressor_current_sensor_1 + - compressor_current_sensor_2 + - compressor_run_time_sensor_2 + - compressor_percentage_sensor_1 + - compressor_percentage_sensor_2 + - compressor_power_sensor_2 + - refrigerant_valve_percentage_sensor_2 + - refrigerant_valve_percentage_sensor_1 + - high_pressure_sensor_2 + - high_temperature_sensor_2 + - low_pressure_sensor_2 + - low_temperature_sensor_2 + - current_sensor + - compressor_run_status_1 + - compressor_run_status_2 + - standby_compressor_alarm_1 + - standby_compressor_alarm_2 + - high_pressure_alarm_1 + - high_pressure_alarm_2 + - low_pressure_alarm_1 + - low_pressure_alarm_2 + - condensing_water_differential_pressure_alarm + - chilled_supply_water_low_temperature_alarm + - chilled_water_flowrate_alarm + - chilled_water_differential_pressure_alarm + - condensing_water_flowrate_alarm + - low_temperature_alarm_1 + - compressor_current_alarm_1 + - low_temperature_alarm_2 + - compressor_current_alarm_2 + - compressor_run_time_alarm_1 + - compressor_run_time_alarm_2 \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/CHWS.yaml b/ontology/yaml/resources/HVAC/entity_types/CHWS.yaml index 369196396d..7fda553d8b 100644 --- a/ontology/yaml/resources/HVAC/entity_types/CHWS.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/CHWS.yaml @@ -263,3 +263,24 @@ CHWS_US_SVL_TC6_1: uses: - production_differential_pressure_sensor - supply_water_flowrate_sensor # Need to rename to flowrate_sensor + +CHWS_TPKD: + description: "CHWS TPKD." + implements: + - CHWS + opt_uses: + - chilled_supply_water_flowrate_sensor + - chilled_supply_water_temperature_sensor_1 + - chilled_supply_water_temperature_sensor_2 + - chilled_supply_water_temperature_sensor_3 + - chilled_supply_water_temperature_sensor_4 + - chilled_supply_water_temperature_sensor_5 + - chilled_return_water_temperature_sensor_1 + - chilled_return_water_temperature_sensor_2 + - chilled_return_water_temperature_sensor_3 + - chilled_return_water_temperature_sensor_4 + - chilled_water_bypass_valve_percentage_command + - chilled_water_bypass_valve_percentage_sensor + - run_mode + - chilled_water_bypass_valve_percentage_setpoint + - chilled_water_differential_pressure_sensor \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/CT.yaml b/ontology/yaml/resources/HVAC/entity_types/CT.yaml index 2b6dde1ba1..2ef4df20e3 100644 --- a/ontology/yaml/resources/HVAC/entity_types/CT.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/CT.yaml @@ -179,4 +179,56 @@ CT_SS_CWDT_OA_VSFC_CSWIVS_CRWIVS_CSWTC: opt_uses: - control_mode - run_mode - - lost_power_alarm \ No newline at end of file + - lost_power_alarm + +CT_SS_TPKD: + description: "CT TPKD." + implements: + - CT + - SS + opt_uses: + - run_command + - run_status + - lost_power_alarm + - control_status + - speed_frequency_sensor + - speed_frequency_command + - run_mode + - end_alarm + - start_alarm + - reset_command + - pump_speed_mode + - run_time_sensor + - pump_speed_frequency_setpoint + - simulation_command + - start_mode + - reset_alarm + - power_sensor + - average_line_neutral_voltage_sensor + - average_line_current_sensor + - motor_energy_sensor + - motor_frequency_sensor + - heat_percentage_sensor + - fan_voltage_sensor + - break_time_command_1 + - break_time_command_2 + - fin_temperature_sensor + - heat_inverter_percentage_sensor + - electric_inverter_percentage_sensor + - max_inverter_current_sensor + - condensing_return_water_isolation_valve_open_status + - condensing_return_water_isolation_valve_closed_status + - condensing_return_water_isolation_valve_mode + - condensing_return_water_isolation_valve_command + - condensing_return_water_isolation_control_status + - condensing_return_water_isolation_closed_alarm + - condensing_return_water_isolation_open_alarm + - condensing_return_water_isolation_reset_alarm + - condensing_return_water_isolation_simulation_command + - condensing_return_water_isolation_alarm + - condensing_supply_water_isolation_valve_open_status + - condensing_supply_water_isolation_valve_closed_status + - condensing_supply_water_isolation_valve_command + - condensing_supply_water_isolation_valve_mode + - condensing_supply_water_isolation_valve_run_command + - condensing_return_water_isolation_valve_percentage_setpoint \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/GENERALTYPES.yaml b/ontology/yaml/resources/HVAC/entity_types/GENERALTYPES.yaml index cebc852709..b378feb2d9 100644 --- a/ontology/yaml/resources/HVAC/entity_types/GENERALTYPES.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/GENERALTYPES.yaml @@ -347,4 +347,10 @@ DOAS: this distinguishes it from AHUs, which have the capability to recirculate the air as well." is_abstract: true implements: - - EQUIPMENT \ No newline at end of file + - EQUIPMENT + +TK: + description: "Water tank." + is_abstract: true + implements: + - EQUIPMENT \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/PMP.yaml b/ontology/yaml/resources/HVAC/entity_types/PMP.yaml index e2175e27d1..1fad46aad1 100644 --- a/ontology/yaml/resources/HVAC/entity_types/PMP.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/PMP.yaml @@ -140,4 +140,73 @@ PMP_S_VSCF_ISV: uses: - mixing_valve_percentage_command - chilled_supply_water_temperature_setpoint - - chilled_supply_water_temperature_sensor \ No newline at end of file + - chilled_supply_water_temperature_sensor + +PMP_SS_TPKD_CHWP_SHWP: + description: "TPKD pump." + implements: + - PMP + - SS + uses: + - speed_frequency_command + - speed_frequency_sensor + - pump_speed_mode + - pump_speed_frequency_setpoint + - chilled_water_isolation_valve_percentage_command + - chilled_water_isolation_valve_percentage_sensor + - chilled_water_isolation_valve_mode + - chilled_water_isolation_valve_percentage_setpoint + opt_uses: + - lost_power_alarm + - control_status + - chilled_water_flowrate_alarm + - run_mode + - reset_command + - low_differential_pressure_alarm + - end_alarm + - start_alarm + - run_time_sensor + - start_mode + - simulation_command + - reset_alarm + - power_sensor + - average_line_neutral_voltage_sensor + - average_line_current_sensor + - motor_energy_sensor + - motor_frequency_sensor + - heat_percentage_sensor + - fan_voltage_sensor + - break_time_command_1 + - break_time_command_2 + - fin_temperature_sensor + - heat_inverter_percentage_sensor + - electric_inverter_percentage_sensor + - max_inverter_current_sensor + +PMP_SS_TPKD_PCWP: + description: "TPKD PCWP pump." + implements: + - PMP + - SS + uses: + - condensing_water_isolation_valve_percentage_command + - condensing_water_isolation_valve_percentage_sensor + - condensing_water_isolation_valve_mode + - condensing_water_isolation_valve_percentage_setpoint + - speed_frequency_command + - speed_frequency_sensor + - pump_speed_frequency_setpoint + opt_uses: + - lost_power_alarm + - control_status + - low_differential_pressure_alarm + - run_mode + - reset_command + - simulation_command + - end_alarm + - start_alarm + - pump_speed_mode + - start_mode + - reset_alarm + - run_time_sensor + - condensing_water_flowrate_alarm diff --git a/ontology/yaml/resources/HVAC/entity_types/TK.yaml b/ontology/yaml/resources/HVAC/entity_types/TK.yaml new file mode 100644 index 0000000000..09b10e4eca --- /dev/null +++ b/ontology/yaml/resources/HVAC/entity_types/TK.yaml @@ -0,0 +1,30 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the License); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an AS IS BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +######################## +### Canonical Types ### +######################## + +TK_TPKD: + description: "Tpkd water tank." + implements: + - TK + uses: + - water_high_level_alarm_1 + - water_high_level_alarm_2 + - water_high_level_alarm_3 + - water_low_level_alarm_1 + - water_low_level_alarm_2 + - water_overflow_level_alarm_1 + - water_overflow_level_alarm_2 \ No newline at end of file diff --git a/ontology/yaml/resources/METERS/entity_types/HM.yaml b/ontology/yaml/resources/METERS/entity_types/HM.yaml index 15ef5214a6..296dd9019d 100644 --- a/ontology/yaml/resources/METERS/entity_types/HM.yaml +++ b/ontology/yaml/resources/METERS/entity_types/HM.yaml @@ -48,3 +48,17 @@ HM_HW: - heating_return_water_temperature_sensor - heating_thermal_power_sensor - heating_thermal_energy_accumulator + + +HM_TPKD: + description: "Cooling load heat meter with total chilled water volume accumulator." + implements: + - HM + is_canonical: true + uses: + - condensing_return_water_temperature_sensor + - condensing_supply_water_temperature_sensor + - condensing_water_flowrate_sensor + - cooling_thermal_energy_accumulator + - cooling_thermal_power_sensor + - water_volume_accumulator \ No newline at end of file diff --git a/ontology/yaml/resources/fields/telemetry_fields.yaml b/ontology/yaml/resources/fields/telemetry_fields.yaml index 34db01724a..6984f6fad0 100644 --- a/ontology/yaml/resources/fields/telemetry_fields.yaml +++ b/ontology/yaml/resources/fields/telemetry_fields.yaml @@ -600,7 +600,9 @@ literals: - heat_exchange_supply_water_isolation_valve_percentage_sensor - heat_exchange_return_water_isolation_valve_percentage_sensor -- condensing_return_water_isolation_valve_command +- condensing_return_water_isolation_valve_command: + - OPEN + - CLOSED - chilled_return_water_isolation_valve_percentage_sensor - chilled_return_water_isolation_valve_percentage_command @@ -651,6 +653,8 @@ literals: - control_mode: - AUTO - MANUAL + - LOCAL + - REMOTE - OFF - cooling_thermal_energy_accumulator - particle_concentration_sensor @@ -752,10 +756,162 @@ literals: - INACTIVE - fan_speed_frequency_setpoint - compressor_speed_frequency_setpoint -- start_mode -- reset_alarm -- chilled_water_isolation_valve_mode +- start_mode: + - ON + - OFF +- reset_alarm: + - ACTIVE + - INACTIVE +- reset_command: + - ON + - OFF +- chilled_water_isolation_valve_mode: + - AUTO + - MANUAL - pump_speed_frequency_setpoint +- chilled_water_isolation_valve_percentage_setpoint +- chilled_water_flowrate_alarm: + - ACTIVE + - INACTIVE +- end_alarm: + - ACTIVE + - INACTIVE +- start_alarm: + - ACTIVE + - INACTIVE +- simulation_command: + - ON + - OFF +- condensing_supply_water_isolation_simulation_command: + - ON + - OFF +- stop_command: + - ON + - OFF +- closed_command: + - ON + - OFF +- closed_alarm: + - ACTIVE + - INACTIVE +- open_alarm: + - ACTIVE + - INACTIVE +- simulation_status: + - ON + - OFF +- local_status: + - REMOTE + - LOCAL +- compressor_open_percentage_command +- high_pressure_sensor +- low_pressure_sensor +- high_temperature_sensor +- low_temperature_sensor +- compressor_current_sensor +- high_pressure_alarm: + - ACTIVE + - INACTIVE +- low_pressure_alarm: + - ACTIVE + - INACTIVE +- high_temperature_alarm: + - ACTIVE + - INACTIVE +- low_temperature_alarm: + - ACTIVE + - INACTIVE +- condensing_water_differential_pressure_alarm: + - ACTIVE + - INACTIVE +- chilled_supply_water_low_temperature_alarm: + - ACTIVE + - INACTIVE +- chilled_water_differential_pressure_alarm: + - ACTIVE + - INACTIVE +- condensing_water_flowrate_alarm: + - ACTIVE + - INACTIVE +- current_alarm: + - ACTIVE + - INACTIVE + +- motor_energy_sensor +- motor_frequency_sensor +- heat_percentage_sensor +- fan_voltage_sensor +- break_time_command +- fin_temperature_sensor +- heat_inverter_percentage_sensor +- electric_inverter_percentage_sensor +- max_inverter_current_sensor +- condensing_return_water_isolation_control_status: + - LOCAL + - REMOTE +- condensing_return_water_isolation_closed_alarm: + - ACTIVE + - INACTIVE +- condensing_return_water_isolation_open_alarm: + - ACTIVE + - INACTIVE +- condensing_return_water_isolation_reset_alarm: + - ACTIVE + - INACTIVE +- condensing_return_water_isolation_simulation_command: + - ON + - OFF +- condensing_return_water_isolation_alarm: + - ACTIVE + - INACTIVE +- condensing_supply_water_isolation_alarm: + - ACTIVE + - INACTIVE +- condensing_supply_water_isolation_closed_alarm: + - ACTIVE + - INACTIVE +- condensing_supply_water_isolation_open_alarm: + - ACTIVE + - INACTIVE +- condensing_supply_water_isolation_reset_alarm: + - ACTIVE + - INACTIVE +- open_command: + - ON + - OFF +- condensing_supply_water_isolation_valve_run_command: + - ON + - OFF +# These points only true or false +- condensing_return_water_isolation_valve_open_status +- condensing_return_water_isolation_valve_closed_status +- condensing_return_water_isolation_valve_open_command +- condensing_return_water_isolation_valve_closed_command +- chilled_return_water_isolation_valve_percentage_setpoint +- condensing_supply_water_isolation_valve_failed_alarm: + - INACTIVE + - ACTIVE +- condensing_return_water_isolation_valve_failed_alarm: + - INACTIVE + - ACTIVE +- chilled_supply_water_isolation_valve_percentage_setpoint +- chilled_water_bypass_valve_percentage_setpoint +- condensing_water_bypass_valve_percentage_setpoint +- condensing_water_isolation_valve_percentage_setpoint +- condensing_water_isolation_valve_mode: + - AUTO + - MANUAL +- pump_speed_mode: + - AUTO + - MANUAL +- condensing_supply_water_isolation_control_status: + - AUTO + - MANUAL +- average_line_electric_percentage_sensor +- condensing_return_water_isolation_valve_percentage_setpoint + + + # New alarms using alarm as a point type, and existing alarms moved here # TODO (tsodorff): change these to ALARM/NORMAL after determining how this can be done safely to existing translations. @@ -821,6 +977,20 @@ literals: - position_status - condensing_water_valve_percentage_sensor - entering_cooling_coil_temperature_sensor +- condensing_supply_water_isolation_valve_open_status +- condensing_supply_water_isolation_valve_closed_status +- condensing_supply_water_isolation_valve_open_command +- condensing_supply_water_isolation_valve_closed_command +- entering_chilled_water_temperature_sensor +- leaving_chilled_water_temperature_sensor +- line_voltage_sensor +- inhibit_start_time_command +- limit_percentage_capacity +- guidevane_percentage_sensor +- compressor_percentage_sensor +- entering_condensing_water_temperature_sensor +- leaving_condensing_water_temperature_sensor + # We should not use this... represents scavenged outside air from near some heat pumps... - mixed_outside_air_temperature_sensor diff --git a/ontology/yaml/resources/subfields/subfields.yaml b/ontology/yaml/resources/subfields/subfields.yaml index c827b38d6e..661b480770 100644 --- a/ontology/yaml/resources/subfields/subfields.yaml +++ b/ontology/yaml/resources/subfields/subfields.yaml @@ -24,6 +24,7 @@ aggregation_descriptor: component: battery: "A device used to store power for use at a later time (e.g. in an emergency where grid power is unavailable)." bearing: "Machine element that constrains relative motion to only the desired motion, and reduces friction between moving parts." + break: "A device for slowing or stopping a moving vehicle, typically by applying pressure to the wheels" cable: "A length of wire, sometimes shielded externally, used for some purpose (e.g. steel braided wire for tensile support, CAT5 cable for communications, etc.)." coil: "Component that exchanges heat between two media streams." compressor: "Component which drives refrigerant compression (and thus cooling processes) within a device or system." @@ -40,9 +41,11 @@ component: evaporator: "The component of a refrigeration system that evaporates refrigerant." fan: "Component used for the distribution of air." filter: "Component used for removing dust and other particulate matter from the air." + fin: "A component attached to the shaft help in heat transfer from the inside of the motor housing to the outer environment" guidevane: "Control vanes that meter refrigerant (on a centrifugal chiller) or air (on an AHU)." heater: "Component which provides heat to media." humidifier: "Component which humidifies." + inverter: "An apparatus which converts direct current into alternating current." lamp: "The component of a lighting device that emits the light." motor: "A machine, especially one powered by electricity or internal combustion, that supplies motive power for a vehicle or for some other device with moving parts." pump: "Component used for the distribution of liquid media." @@ -185,7 +188,8 @@ descriptor: secondary: "Associated with the secondary (distribution) loop of a produciton process." seismic: "Related to seismic activity (such as seismic gas shutoff valves)." side: "Position relative to an an object." - signal: "An electric current or electromagnetic field used to convey data from one device to another." + signal: "An electric current or electromagnetic field used to convey data from one device to another." + simulation: "The production of a computer model of something, especially for the purpose of study." smoke: "Visible, suspended particles created during a fire." source: "The upstream source of conditioning (used specifically for heat exchangers)." south: "Cardinal direction; opposite of north" @@ -243,7 +247,7 @@ measurement: resistance: "Electrical resistance." specificenthalpy: "Measure of energy of air per unit mass." temperature: "Measures the temperature of media within a process or system." - time: "defined duration of something." + time: "Defined duration of something." voltage: "Electrical potential difference between two reference points." voltageratio: "The ratio of the Primary voltage of the transformer to the secondary voltage." volume: "The quantity of three-dimensional space contained by a closed surface." @@ -276,6 +280,7 @@ measurement_descriptor: speed: "Numeric setting of how fast to run a device, in the specified untis. Typically used to describe revolutions of a motor as a fraction of nominal or maximum." start: "Indicates a point in time or space at which something has its origin or beginning." static: "Resting or stagnant value (e.g. static_pressure_sensor)." + stop: "cause (an action, process, or event) to come to an end" thermal: "Relating to the transfer of heat." tilt: "Degree of radial rotation." wetbulb: "Describes air temperature measured at 100% relative humidity (saturation)." diff --git a/ontology/yaml/resources/units/units.yaml b/ontology/yaml/resources/units/units.yaml index 18e777a9b9..994f35e9a3 100644 --- a/ontology/yaml/resources/units/units.yaml +++ b/ontology/yaml/resources/units/units.yaml @@ -37,6 +37,7 @@ energy: - kilowatt_hours - megawatt_hours - therms +- newton_meters flowrate: - cubic_meters_per_second: STANDARD - cubic_feet_per_minute @@ -47,6 +48,7 @@ flowrate: - kilograms_per_hour frequency: - hertz: STANDARD +- revolutions_per_minute humidity: - percent_relative_humidity: STANDARD illuminance: @@ -104,5 +106,7 @@ volume: - liters time: - seconds: STANDARD +- minutes +- hours rate: - inv_second: STANDARD From 907e9a7a0d8e19daaebf1e1f350dc370c5fdaee6 Mon Sep 17 00:00:00 2001 From: Terry Ter Date: Wed, 2 Mar 2022 12:21:34 +0800 Subject: [PATCH 8/9] update pull request --- .../resources/HVAC/entity_types/ABSTRACT.yaml | 63 ++++++- .../resources/HVAC/entity_types/CDWS.yaml | 28 ++- .../yaml/resources/HVAC/entity_types/CH.yaml | 170 +++++++++--------- .../resources/HVAC/entity_types/CHWS.yaml | 25 +-- .../yaml/resources/HVAC/entity_types/CT.yaml | 63 +++---- .../yaml/resources/HVAC/entity_types/PMP.yaml | 96 +++++----- .../resources/METERS/entity_types/HM.yaml | 11 +- .../resources/fields/telemetry_fields.yaml | 82 +-------- python.exe | Bin 0 -> 97352 bytes 9 files changed, 255 insertions(+), 283 deletions(-) create mode 100644 python.exe diff --git a/ontology/yaml/resources/HVAC/entity_types/ABSTRACT.yaml b/ontology/yaml/resources/HVAC/entity_types/ABSTRACT.yaml index b222ecd251..c99b7bef24 100644 --- a/ontology/yaml/resources/HVAC/entity_types/ABSTRACT.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/ABSTRACT.yaml @@ -4375,4 +4375,65 @@ EC2SC: - supply_air_temperature_sensor - supply_air_temperature_setpoint implements: - - CONTROL \ No newline at end of file + - CONTROL + +CHWISVPCM: + description: "Chllled water isolation valve percentage control and monitoring" + is_abstract: true + implements: + - OPERATIONAL + opt_uses: + - chilled_water_flowrate_alarm + - chilled_water_isolation_valve_mode + - chilled_water_isolation_valve_percentage_setpoint + uses: + - chilled_water_isolation_valve_percentage_command + - chilled_water_isolation_valve_percentage_sensor + +CDWISVPCM: + description: "Condensing water isolation valve percentage control and monitoring" + is_abstract: true + implements: + - OPERATIONAL + opt_uses: + - condensing_water_flowrate_alarm + - condensing_water_isolation_valve_mode + - condensing_water_isolation_valve_percentage_setpoint + uses: + - condensing_water_isolation_valve_percentage_command + - condensing_water_isolation_valve_percentage_sensor + +PSMC: + description: "Pump multi-speed control." + is_abstract: true + uses: + - pump_speed_mode + - pump_speed_frequency_setpoint + +CRWISVC: + description: "Condensing return water isolation valve control." + is_abstract: true + implements: + - OPERATIONAL + opt_uses: + - condensing_return_water_isolation_valve_failed_alarm + uses: + - condensing_return_water_isolation_valve_command_1 + - condensing_return_water_isolation_valve_command_2 + - condensing_return_water_isolation_valve_status_1 + - condensing_return_water_isolation_valve_status_2 + - condensing_return_water_isolation_valve_mode + +CSWISVC: + description: "Condensing return water isolation valve control." + is_abstract: true + implements: + - OPERATIONAL + opt_uses: + - condensing_supply_water_isolation_valve_failed_alarm + uses: + - condensing_supply_water_isolation_valve_command_1 + - condensing_supply_water_isolation_valve_command_2 + - condensing_supply_water_isolation_valve_status_1 + - condensing_supply_water_isolation_valve_status_2 + - condensing_supply_water_isolation_valve_mode \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/CDWS.yaml b/ontology/yaml/resources/HVAC/entity_types/CDWS.yaml index 84aa91cb85..72de210bd9 100644 --- a/ontology/yaml/resources/HVAC/entity_types/CDWS.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/CDWS.yaml @@ -102,6 +102,18 @@ CDWS_SWTC_WDPM_SWPSS: - WDPM - SWPSS +CDWS_BYPVPM_WDPM_CWDT: + description: "Condensing water header pipe bypass valve, control via differential pressure sensor" + is_canonical: true + implements: + - CDWS + - BYPVPM + - WDPM + - CWDT + opt_uses: + - bypass_valve_percentage_setpoint + - run_mode + ################################### ### Existing Non-standard Types ### ################################### @@ -119,18 +131,4 @@ CDWS_US_MTV_2081_1: - supply_water_isolation_valve_status_3 - return_water_isolation_valve_status_3 - supply_water_isolation_valve_status_4 - - return_water_isolation_valve_status_4 - - -CDWS_TPKD: - description: "CDWS TPKD." - implements: - - CDWS - opt_uses: - - condensing_water_bypass_valve_percentage_command - - condensing_water_bypass_valve_percentage_sensor - - run_mode - - condensing_water_bypass_valve_percentage_setpoint - - condensing_supply_water_temperature_sensor - - condensing_return_water_temperature_sensor - - condensing_water_differential_pressure_sensor + - return_water_isolation_valve_status_4 \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/CH.yaml b/ontology/yaml/resources/HVAC/entity_types/CH.yaml index 625b217c80..eba65d101a 100644 --- a/ontology/yaml/resources/HVAC/entity_types/CH.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/CH.yaml @@ -585,133 +585,139 @@ CH_SS_CHWSWISOVM_CWSISOVM_CWRISOVM_CHWRWISOVM_CHWDT: - lost_power_alarm - run_mode -CH_SS_TPKD: - description: "CH TPKD." +CH_SS_CHPM_REFSM_SCHWTC_DXSWC: + description: "Non standard water cooled chiller single stage" implements: - CH - SS + - CHPM + - REFSM + - SCHWTC + - DXSWC opt_uses: - - condensing_supply_water_temperature_sensor - - condensing_return_water_temperature_sensor - - chilled_supply_water_temperature_sensor - - chilled_return_water_temperature_sensor - lost_power_alarm - - control_status - - speed_frequency_sensor - - speed_frequency_command - control_mode - - reset_alarm - - simulation_command - - end_alarm - - start_alarm - reset_command - - pump_speed_mode - - run_time_sensor - - pump_speed_frequency_setpoint - - condensing_supply_water_isolation_valve_open_status - - condensing_supply_water_isolation_valve_closed_status - - condensing_supply_water_isolation_valve_open_command - - condensing_supply_water_isolation_valve_closed_command - - condensing_supply_water_isolation_valve_mode - - open_command_1 - - closed_command_1 - - stop_command_1 - - condensing_supply_water_isolation_valve_failed_alarm - - closed_alarm_1 - - open_alarm_1 - - simulation_status_1 - - local_status_1 - - open_command_2 - - closed_command_2 - - stop_command_2 - - condensing_return_water_isolation_valve_failed_alarm - - closed_alarm_2 - - open_alarm_2 - - simulation_status_2 - - local_status_2 - - condensing_return_water_isolation_valve_open_status - - condensing_return_water_isolation_valve_closed_status - - condensing_return_water_isolation_valve_open_command - - condensing_return_water_isolation_valve_closed_command - - condensing_return_water_isolation_valve_mode - - chilled_supply_water_isolation_valve_percentage_sensor - - chilled_supply_water_isolation_valve_percentage_command - - chilled_supply_water_isolation_valve_mode - - chilled_return_water_isolation_valve_percentage_sensor - - chilled_return_water_isolation_valve_percentage_command - - chilled_return_water_isolation_valve_mode - - chilled_return_water_isolation_valve_percentage_setpoint + - run_mode + - failed_alarm + - control_status - chilled_water_flowrate_status - condensing_water_flowrate_status - - compressor_run_status - oil_heater_status - - chilled_supply_water_temperature_setpoint + - oil_temperature_sensor + - oil_pump_differential_pressure_sensor + - total_compressor_count + - guidevane_percentage_sensor + - exhaust_gas_compressor_temperature_sensor + - bearing_temperature_sensor + - winding_temperature_sensor - entering_chilled_water_temperature_sensor - leaving_chilled_water_temperature_sensor - - refrigerant_evaporator_saturation_temperature_sensor - - evaporator_pressure_sensor - entering_condensing_water_temperature_sensor - leaving_condensing_water_temperature_sensor - - refrigerant_condenser_saturation_temperature_sensor - - condenser_pressure_sensor - - average_line_current_sensor + - average_line_electric_percentage_sensor - line_current_sensor - line_voltage_sensor - - powerfactor_sensor - - power_sensor - - compressor_speed_percentage_sensor + +CH_SS_CHPM_REFSM_SCHWTC_DXSWC_CHWSWISOVPM_CHWRWISOVPM_CWDT_CSWISVC_CSWISVC: + description: "Non standard water cooled chiller single stage with chilled/condensing supply/return water isolation valve control. Chilled water flowrate status" + implements: + - CH + - SS + - CHPM + - REFSM + - SCHWTC + - DXSWC + - VSFC + - PSMC + - CHWSWISOVPM + - CHWRWISOVPM + - CWDT + - CSWISVC + - CRWISVC + opt_uses: + - lost_power_alarm + - control_status + - control_mode + - reset_command - run_mode - failed_alarm - - inhibit_start_time_command - - limit_percentage_capacity + - condensing_water_flowrate_status + - chilled_water_flowrate_status + - chilled_supply_water_isolation_valve_mode + - chilled_supply_water_isolation_valve_percentage_setpoint + - chilled_return_water_isolation_valve_mode + - chilled_return_water_isolation_valve_percentage_setpoint + - open_command_1 + - closed_command_1 + - stop_command_1 + - local_status_1 + - open_command_2 + - closed_command_2 + - stop_command_2 + - local_status_2 + - average_line_electric_percentage_sensor + - line_current_sensor + - line_voltage_sensor - total_compressor_count - - compressor_run_time_sensor - guidevane_percentage_sensor + - oil_heater_status - oil_temperature_sensor - oil_pump_differential_pressure_sensor - exhaust_gas_compressor_temperature_sensor - bearing_temperature_sensor - winding_temperature_sensor - - failed_alarm_1 - - failed_alarm_2 + - entering_chilled_water_temperature_sensor + - leaving_chilled_water_temperature_sensor + - entering_condensing_water_temperature_sensor + - leaving_condensing_water_temperature_sensor + +CH_SS_CHDX2SC_CWDT: + description: "Non standard water cooled chiller single stage with compressor & condenser control" + implements: + - CH + - SS + - CHDX2SC + - CWDT + opt_uses: + - lost_power_alarm + - control_mode + - reset_command + - start_mode + - control_status + - chilled_water_flowrate_status + - condensing_water_flowrate_status + - condensing_water_differential_pressure_alarm + - chilled_supply_water_low_temperature_alarm + - chilled_water_flowrate_alarm + - chilled_water_differential_pressure_alarm + - condensing_water_flowrate_alarm - compressor_temperature_setpoint_1 - - compressor_temperature_setpoint_2 - - compressor_run_time_sensor_1 - load_compressor_percentage_setpoint_1 - - load_compressor_percentage_setpoint_2 - compressor_power_sensor_1 - compressor_open_percentage_command_1 - - compressor_open_percentage_command_2 - high_pressure_sensor_1 - high_temperature_sensor_1 - low_pressure_sensor_1 - low_temperature_sensor_1 - compressor_current_sensor_1 - - compressor_current_sensor_2 - - compressor_run_time_sensor_2 - - compressor_percentage_sensor_1 - - compressor_percentage_sensor_2 + - compressor_temperature_setpoint_2 + - load_compressor_percentage_setpoint_2 - compressor_power_sensor_2 - - refrigerant_valve_percentage_sensor_2 - - refrigerant_valve_percentage_sensor_1 + - compressor_open_percentage_command_2 - high_pressure_sensor_2 - high_temperature_sensor_2 - low_pressure_sensor_2 - low_temperature_sensor_2 - - current_sensor - - compressor_run_status_1 - - compressor_run_status_2 + - compressor_current_sensor_2 + - failed_alarm_1 + - failed_alarm_2 - standby_compressor_alarm_1 - standby_compressor_alarm_2 - high_pressure_alarm_1 - high_pressure_alarm_2 - low_pressure_alarm_1 - low_pressure_alarm_2 - - condensing_water_differential_pressure_alarm - - chilled_supply_water_low_temperature_alarm - - chilled_water_flowrate_alarm - - chilled_water_differential_pressure_alarm - - condensing_water_flowrate_alarm - low_temperature_alarm_1 - compressor_current_alarm_1 - low_temperature_alarm_2 diff --git a/ontology/yaml/resources/HVAC/entity_types/CHWS.yaml b/ontology/yaml/resources/HVAC/entity_types/CHWS.yaml index 7fda553d8b..c3ee5a8361 100644 --- a/ontology/yaml/resources/HVAC/entity_types/CHWS.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/CHWS.yaml @@ -214,6 +214,17 @@ CHWS_SWTC_WDPC2X_BYPVPM_WFRM_CLPM: - WFRM - CLPM +CHWS_CHWBYPVPM_CHWDPM: + description: "Chilled water header pipe bypass valve, control via differential pressure sensor" + is_canonical: true + implements: + - CHWS + - CHWBYPVPM + - CHWDPM + opt_uses: + - run_mode + - chilled_water_bypass_valve_percentage_setpoint + ################################### ### Existing Non-standard Types ### ################################### @@ -264,23 +275,15 @@ CHWS_US_SVL_TC6_1: - production_differential_pressure_sensor - supply_water_flowrate_sensor # Need to rename to flowrate_sensor -CHWS_TPKD: - description: "CHWS TPKD." +CHWS_CHWDT2X: + description: "Chilled water header pipe sensors" implements: - CHWS + - CHWDT2X opt_uses: - chilled_supply_water_flowrate_sensor - - chilled_supply_water_temperature_sensor_1 - - chilled_supply_water_temperature_sensor_2 - chilled_supply_water_temperature_sensor_3 - chilled_supply_water_temperature_sensor_4 - chilled_supply_water_temperature_sensor_5 - - chilled_return_water_temperature_sensor_1 - - chilled_return_water_temperature_sensor_2 - chilled_return_water_temperature_sensor_3 - chilled_return_water_temperature_sensor_4 - - chilled_water_bypass_valve_percentage_command - - chilled_water_bypass_valve_percentage_sensor - - run_mode - - chilled_water_bypass_valve_percentage_setpoint - - chilled_water_differential_pressure_sensor \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/CT.yaml b/ontology/yaml/resources/HVAC/entity_types/CT.yaml index 2ef4df20e3..0351ef4bca 100644 --- a/ontology/yaml/resources/HVAC/entity_types/CT.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/CT.yaml @@ -131,6 +131,22 @@ CT_SS_VSFC: - run_mode - lost_power_alarm +CT_SS_VSFC_CDWISVPCM_PSMC: + description: "Cooling tower with condensing water isolation valve control" + is_canonical: true + implements: + - CT + - SS + - VSFC + - CDWISVPCM + - PSMC + opt_uses: + - lost_power_alarm + - control_status + - run_mode + - schedule_run_command + - reset_command + ################################### ### Existing Non-standard Types ### ################################### @@ -181,54 +197,21 @@ CT_SS_CWDT_OA_VSFC_CSWIVS_CRWIVS_CSWTC: - run_mode - lost_power_alarm -CT_SS_TPKD: - description: "CT TPKD." +CT_SS_VSFC_PSMC_CSWISVC_CRWISVC: + description: "Non standard cooling tower with condensing return/supply isolation valve control" implements: - CT - SS + - VSFC + - PSMC + - CSWISVC + - CRWISVC opt_uses: - - run_command - - run_status - lost_power_alarm - control_status - - speed_frequency_sensor - - speed_frequency_command - run_mode - - end_alarm - - start_alarm - reset_command - - pump_speed_mode - - run_time_sensor - - pump_speed_frequency_setpoint - - simulation_command - - start_mode - - reset_alarm - - power_sensor - - average_line_neutral_voltage_sensor - average_line_current_sensor - - motor_energy_sensor - - motor_frequency_sensor - heat_percentage_sensor - - fan_voltage_sensor - - break_time_command_1 - - break_time_command_2 - - fin_temperature_sensor - - heat_inverter_percentage_sensor - - electric_inverter_percentage_sensor - - max_inverter_current_sensor - - condensing_return_water_isolation_valve_open_status - - condensing_return_water_isolation_valve_closed_status - - condensing_return_water_isolation_valve_mode - - condensing_return_water_isolation_valve_command - condensing_return_water_isolation_control_status - - condensing_return_water_isolation_closed_alarm - - condensing_return_water_isolation_open_alarm - - condensing_return_water_isolation_reset_alarm - - condensing_return_water_isolation_simulation_command - - condensing_return_water_isolation_alarm - - condensing_supply_water_isolation_valve_open_status - - condensing_supply_water_isolation_valve_closed_status - - condensing_supply_water_isolation_valve_command - - condensing_supply_water_isolation_valve_mode - - condensing_supply_water_isolation_valve_run_command - - condensing_return_water_isolation_valve_percentage_setpoint \ No newline at end of file + - condensing_supply_water_isolation_control_status \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/PMP.yaml b/ontology/yaml/resources/HVAC/entity_types/PMP.yaml index 1fad46aad1..61e49c1ed5 100644 --- a/ontology/yaml/resources/HVAC/entity_types/PMP.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/PMP.yaml @@ -119,6 +119,39 @@ PMP_SS_CWCS_VSFC: - run_mode - lost_power_alarm +PMP_SS_PSMC_VSFC_CDWISVPCM: + description: "Primary condenser water pump" + is_canonical: true + implements: + - PMP + - SS + - PSMC + - VSFC + - CDWISVPCM + opt_uses: + - lost_power_alarm + - control_status + - low_differential_pressure_alarm + - run_mode + - reset_command + +PMP_SS_PSMC_VSFC_CHWISVPCM: + description: "Generic chilled & secondary chilled water pump with chilled water isolation valve control" + is_canonical: true + implements: + - PMP + - SS + - PSMC + - VSFC + - CHWISVPCM + opt_uses: + - lost_power_alarm + - control_status + - low_differential_pressure_alarm + - chilled_water_flowrate_status + - run_mode + - reset_command + ################################### ### Existing Non-standard Types ### ################################### @@ -142,71 +175,30 @@ PMP_S_VSCF_ISV: - chilled_supply_water_temperature_setpoint - chilled_supply_water_temperature_sensor -PMP_SS_TPKD_CHWP_SHWP: - description: "TPKD pump." +PMP_SS_CHWP_PCWP: + description: "Non standard chilled & Primary water pump" implements: - PMP - SS - uses: - - speed_frequency_command - - speed_frequency_sensor - - pump_speed_mode - - pump_speed_frequency_setpoint - - chilled_water_isolation_valve_percentage_command - - chilled_water_isolation_valve_percentage_sensor - - chilled_water_isolation_valve_mode - - chilled_water_isolation_valve_percentage_setpoint opt_uses: - - lost_power_alarm - control_status - - chilled_water_flowrate_alarm - run_mode - - reset_command + - lost_power_alarm - low_differential_pressure_alarm - - end_alarm - - start_alarm - - run_time_sensor - - start_mode - - simulation_command - - reset_alarm - - power_sensor - - average_line_neutral_voltage_sensor - - average_line_current_sensor - - motor_energy_sensor - - motor_frequency_sensor - - heat_percentage_sensor - - fan_voltage_sensor - - break_time_command_1 - - break_time_command_2 - - fin_temperature_sensor - - heat_inverter_percentage_sensor - - electric_inverter_percentage_sensor - - max_inverter_current_sensor + - reset_command -PMP_SS_TPKD_PCWP: - description: "TPKD PCWP pump." +PMP_SS_PSMC_VSFC: + description: "Non standard secondary chilled water pump" implements: - PMP - SS - uses: - - condensing_water_isolation_valve_percentage_command - - condensing_water_isolation_valve_percentage_sensor - - condensing_water_isolation_valve_mode - - condensing_water_isolation_valve_percentage_setpoint - - speed_frequency_command - - speed_frequency_sensor - - pump_speed_frequency_setpoint + - PSMC + - VSFC opt_uses: - lost_power_alarm - control_status - - low_differential_pressure_alarm + - chilled_water_flowrate_status - run_mode - reset_command - - simulation_command - - end_alarm - - start_alarm - - pump_speed_mode - - start_mode - - reset_alarm - - run_time_sensor - - condensing_water_flowrate_alarm + - average_line_current_sensor + - heat_percentage_sensor \ No newline at end of file diff --git a/ontology/yaml/resources/METERS/entity_types/HM.yaml b/ontology/yaml/resources/METERS/entity_types/HM.yaml index 296dd9019d..1da1de154c 100644 --- a/ontology/yaml/resources/METERS/entity_types/HM.yaml +++ b/ontology/yaml/resources/METERS/entity_types/HM.yaml @@ -50,15 +50,14 @@ HM_HW: - heating_thermal_energy_accumulator -HM_TPKD: - description: "Cooling load heat meter with total chilled water volume accumulator." +HM_CW: + description: "Cooling load heat meter for condensing water header pipe." implements: - HM is_canonical: true uses: - - condensing_return_water_temperature_sensor - - condensing_supply_water_temperature_sensor - condensing_water_flowrate_sensor - - cooling_thermal_energy_accumulator + - condensing_supply_water_temperature_sensor + - condensing_return_water_temperature_sensor - cooling_thermal_power_sensor - - water_volume_accumulator \ No newline at end of file + - cooling_thermal_energy_accumulator \ No newline at end of file diff --git a/ontology/yaml/resources/fields/telemetry_fields.yaml b/ontology/yaml/resources/fields/telemetry_fields.yaml index 34444bc1e7..7c75965d4b 100644 --- a/ontology/yaml/resources/fields/telemetry_fields.yaml +++ b/ontology/yaml/resources/fields/telemetry_fields.yaml @@ -716,7 +716,6 @@ literals: - ON - OFF - inhibit_start_time_sensor -- load_limit_capacity - total_compressor_count - compressor_run_time_sensor - guidevane_percentage_command @@ -730,7 +729,6 @@ literals: - load_compressor_percentage_setpoint - compressor_power_sensor - refrigerant_valve_percentage_sensor -- run_time_sensor - standby_compressor_alarm: - ACTIVE - INACTIVE @@ -760,9 +758,6 @@ literals: - start_mode: - ON - OFF -- reset_alarm: - - ACTIVE - - INACTIVE - reset_command: - ON - OFF @@ -774,36 +769,15 @@ literals: - chilled_water_flowrate_alarm: - ACTIVE - INACTIVE -- end_alarm: - - ACTIVE - - INACTIVE -- start_alarm: - - ACTIVE - - INACTIVE -- simulation_command: - - ON - - OFF -- condensing_supply_water_isolation_simulation_command: - - ON - - OFF - stop_command: - ON - OFF - closed_command: - ON - OFF -- closed_alarm: - - ACTIVE - - INACTIVE -- open_alarm: - - ACTIVE - - INACTIVE -- simulation_status: - - ON - - OFF - local_status: - - REMOTE - - LOCAL + - REMOTE + - LOCAL - compressor_open_percentage_command - high_pressure_sensor - low_pressure_sensor @@ -838,56 +812,17 @@ literals: - ACTIVE - INACTIVE -- motor_energy_sensor -- motor_frequency_sensor - heat_percentage_sensor -- fan_voltage_sensor -- break_time_command -- fin_temperature_sensor -- heat_inverter_percentage_sensor -- electric_inverter_percentage_sensor -- max_inverter_current_sensor - condensing_return_water_isolation_control_status: - LOCAL - REMOTE -- condensing_return_water_isolation_closed_alarm: - - ACTIVE - - INACTIVE -- condensing_return_water_isolation_open_alarm: - - ACTIVE - - INACTIVE -- condensing_return_water_isolation_reset_alarm: - - ACTIVE - - INACTIVE -- condensing_return_water_isolation_simulation_command: - - ON - - OFF -- condensing_return_water_isolation_alarm: - - ACTIVE - - INACTIVE -- condensing_supply_water_isolation_alarm: - - ACTIVE - - INACTIVE -- condensing_supply_water_isolation_closed_alarm: - - ACTIVE - - INACTIVE -- condensing_supply_water_isolation_open_alarm: - - ACTIVE - - INACTIVE -- condensing_supply_water_isolation_reset_alarm: - - ACTIVE - - INACTIVE +- condensing_supply_water_isolation_control_status: + - LOCAL + - REMOTE - open_command: - ON - OFF -- condensing_supply_water_isolation_valve_run_command: - - ON - - OFF # These points only true or false -- condensing_return_water_isolation_valve_open_status -- condensing_return_water_isolation_valve_closed_status -- condensing_return_water_isolation_valve_open_command -- condensing_return_water_isolation_valve_closed_command - chilled_return_water_isolation_valve_percentage_setpoint - condensing_supply_water_isolation_valve_failed_alarm: - INACTIVE @@ -897,7 +832,7 @@ literals: - ACTIVE - chilled_supply_water_isolation_valve_percentage_setpoint - chilled_water_bypass_valve_percentage_setpoint -- condensing_water_bypass_valve_percentage_setpoint +- bypass_valve_percentage_setpoint - condensing_water_isolation_valve_percentage_setpoint - condensing_water_isolation_valve_mode: - AUTO @@ -905,9 +840,6 @@ literals: - pump_speed_mode: - AUTO - MANUAL -- condensing_supply_water_isolation_control_status: - - AUTO - - MANUAL - average_line_electric_percentage_sensor - condensing_return_water_isolation_valve_percentage_setpoint @@ -985,8 +917,6 @@ literals: - entering_chilled_water_temperature_sensor - leaving_chilled_water_temperature_sensor - line_voltage_sensor -- inhibit_start_time_command -- limit_percentage_capacity - guidevane_percentage_sensor - compressor_percentage_sensor - entering_condensing_water_temperature_sensor diff --git a/python.exe b/python.exe new file mode 100644 index 0000000000000000000000000000000000000000..15eba5c1f5c171ea9a7cfb652ddf4488ca475fae GIT binary patch literal 97352 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 RYJT8d_gt4gMb Date: Fri, 10 Mar 2023 15:26:54 +0800 Subject: [PATCH 9/9] update tpkd day 2 types --- .../resources/HVAC/entity_types/ABSTRACT.yaml | 85 +++++---- .../yaml/resources/HVAC/entity_types/CH.yaml | 173 +++++------------- .../yaml/resources/HVAC/entity_types/CT.yaml | 46 ++--- .../yaml/resources/HVAC/entity_types/PMP.yaml | 52 +++--- .../yaml/resources/HVAC/entity_types/TK.yaml | 13 +- .../resources/fields/telemetry_fields.yaml | 114 +----------- 6 files changed, 151 insertions(+), 332 deletions(-) diff --git a/ontology/yaml/resources/HVAC/entity_types/ABSTRACT.yaml b/ontology/yaml/resources/HVAC/entity_types/ABSTRACT.yaml index c99b7bef24..0471c0b863 100644 --- a/ontology/yaml/resources/HVAC/entity_types/ABSTRACT.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/ABSTRACT.yaml @@ -4377,63 +4377,76 @@ EC2SC: implements: - CONTROL -CHWISVPCM: - description: "Chllled water isolation valve percentage control and monitoring" +CWRISOVM2X: + description: "Condensing return water isolation valve control." is_abstract: true implements: - OPERATIONAL opt_uses: - - chilled_water_flowrate_alarm - - chilled_water_isolation_valve_mode - - chilled_water_isolation_valve_percentage_setpoint + - condensing_return_water_isolation_control_status uses: - - chilled_water_isolation_valve_percentage_command - - chilled_water_isolation_valve_percentage_sensor + - condensing_return_water_isolation_valve_command_1 + - condensing_return_water_isolation_valve_command_2 + - condensing_return_water_isolation_valve_status_1 + - condensing_return_water_isolation_valve_status_2 + - condensing_return_water_isolation_valve_mode + -CDWISVPCM: - description: "Condensing water isolation valve percentage control and monitoring" +CWSISOVPM2X: + description: "Condensing return water isolation valve control." is_abstract: true implements: - OPERATIONAL opt_uses: - - condensing_water_flowrate_alarm - - condensing_water_isolation_valve_mode - - condensing_water_isolation_valve_percentage_setpoint + - condensing_supply_water_isolation_control_status uses: - - condensing_water_isolation_valve_percentage_command - - condensing_water_isolation_valve_percentage_sensor + - condensing_supply_water_isolation_valve_command_1 + - condensing_supply_water_isolation_valve_command_2 + - condensing_supply_water_isolation_valve_status_1 + - condensing_supply_water_isolation_valve_status_2 + - condensing_supply_water_isolation_valve_mode -PSMC: - description: "Pump multi-speed control." + +WLAM: + description: "Water level alarm monitoring, generally for a water tank." is_abstract: true uses: - - pump_speed_mode - - pump_speed_frequency_setpoint + - water_high_level_alarm + - water_low_level_alarm + - water_overflow_level_alarm -CRWISVC: - description: "Condensing return water isolation valve control." +WLAM3X: + description: "Water level alarm monitoring, generally for a water tank with three independent sets of alarms." + is_abstract: true + uses: + - water_high_level_alarm_1 + - water_high_level_alarm_2 + - water_high_level_alarm_3 + - water_low_level_alarm_1 + - water_low_level_alarm_2 + - water_low_level_alarm_3 + - water_overflow_level_alarm_1 + - water_overflow_level_alarm_2 + - water_overflow_level_alarm_3 + +ECHWTM: + description: "Entering chilled water temperature monitoring." is_abstract: true implements: - - OPERATIONAL + - MONITORING opt_uses: - - condensing_return_water_isolation_valve_failed_alarm + - chilled_water_flowrate_status + - leaving_chilled_water_temperature_sensor uses: - - condensing_return_water_isolation_valve_command_1 - - condensing_return_water_isolation_valve_command_2 - - condensing_return_water_isolation_valve_status_1 - - condensing_return_water_isolation_valve_status_2 - - condensing_return_water_isolation_valve_mode + - entering_chilled_water_temperature_sensor -CSWISVC: - description: "Condensing return water isolation valve control." +ECWTM: + description: "Entering condensing water temperature monitoring." is_abstract: true implements: - - OPERATIONAL + - MONITORING opt_uses: - - condensing_supply_water_isolation_valve_failed_alarm + - condensing_water_flowrate_status + - leaving_condensing_water_temperature_sensor uses: - - condensing_supply_water_isolation_valve_command_1 - - condensing_supply_water_isolation_valve_command_2 - - condensing_supply_water_isolation_valve_status_1 - - condensing_supply_water_isolation_valve_status_2 - - condensing_supply_water_isolation_valve_mode \ No newline at end of file + - entering_condensing_water_temperature_sensor \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/CH.yaml b/ontology/yaml/resources/HVAC/entity_types/CH.yaml index eba65d101a..7d4f7bf908 100644 --- a/ontology/yaml/resources/HVAC/entity_types/CH.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/CH.yaml @@ -499,6 +499,39 @@ CH_SS_SCHWTC_CHDX2SC_REFSM2X_REFPM2X_CWDT: - REFPM2X - CWDT +CH_SS_CHPM_REFSM_CHDXSC_ECHWTM_ECWTM: + description: "water cooled chiller single stage" + is_canonical: true + implements: + - CH + - SS + - CHPM + - REFSM + - CHDXSC + - ECHWTM + - ECWTM + opt_uses: + - lost_power_alarm + - control_mode + - reset_command + - control_status + +CH_SS_CHDX2SC_CWDT: + description: "water cooled chiller single stage with compressor & condenser control" + is_canonical: true + implements: + - CH + - SS + - CHDX2SC + - CWDT + opt_uses: + - lost_power_alarm + - control_mode + - reset_command + - control_status + - chilled_water_flowrate_status + - condensing_water_flowrate_status + ################################### ### Existing Non-standard Types ### ################################### @@ -585,142 +618,26 @@ CH_SS_CHWSWISOVM_CWSISOVM_CWRISOVM_CHWRWISOVM_CHWDT: - lost_power_alarm - run_mode -CH_SS_CHPM_REFSM_SCHWTC_DXSWC: - description: "Non standard water cooled chiller single stage" - implements: - - CH - - SS - - CHPM - - REFSM - - SCHWTC - - DXSWC - opt_uses: - - lost_power_alarm - - control_mode - - reset_command - - run_mode - - failed_alarm - - control_status - - chilled_water_flowrate_status - - condensing_water_flowrate_status - - oil_heater_status - - oil_temperature_sensor - - oil_pump_differential_pressure_sensor - - total_compressor_count - - guidevane_percentage_sensor - - exhaust_gas_compressor_temperature_sensor - - bearing_temperature_sensor - - winding_temperature_sensor - - entering_chilled_water_temperature_sensor - - leaving_chilled_water_temperature_sensor - - entering_condensing_water_temperature_sensor - - leaving_condensing_water_temperature_sensor - - average_line_electric_percentage_sensor - - line_current_sensor - - line_voltage_sensor - -CH_SS_CHPM_REFSM_SCHWTC_DXSWC_CHWSWISOVPM_CHWRWISOVPM_CWDT_CSWISVC_CSWISVC: +CH_SS_VSFC_CWDT_CWSISOVPM2X_CWRISOVM2X_CHWSWISOVPM_CHWRWISOVPM_REFSM_CHDXSC_CHPM_ECHWTM_ECWTM: description: "Non standard water cooled chiller single stage with chilled/condensing supply/return water isolation valve control. Chilled water flowrate status" implements: - - CH - SS - - CHPM - - REFSM - - SCHWTC - - DXSWC - VSFC - - PSMC + - CWDT + - CWSISOVPM2X + - CWRISOVM2X - CHWSWISOVPM - CHWRWISOVPM - - CWDT - - CSWISVC - - CRWISVC + - REFSM + - CHDXSC + - CHPM + - ECHWTM + - ECWTM opt_uses: - lost_power_alarm - control_status - - control_mode - - reset_command - run_mode - - failed_alarm - - condensing_water_flowrate_status - - chilled_water_flowrate_status - - chilled_supply_water_isolation_valve_mode - - chilled_supply_water_isolation_valve_percentage_setpoint - - chilled_return_water_isolation_valve_mode - - chilled_return_water_isolation_valve_percentage_setpoint - - open_command_1 - - closed_command_1 - - stop_command_1 - - local_status_1 - - open_command_2 - - closed_command_2 - - stop_command_2 - - local_status_2 - - average_line_electric_percentage_sensor - - line_current_sensor - - line_voltage_sensor - - total_compressor_count - - guidevane_percentage_sensor - - oil_heater_status - - oil_temperature_sensor - - oil_pump_differential_pressure_sensor - - exhaust_gas_compressor_temperature_sensor - - bearing_temperature_sensor - - winding_temperature_sensor - - entering_chilled_water_temperature_sensor - - leaving_chilled_water_temperature_sensor - - entering_condensing_water_temperature_sensor - - leaving_condensing_water_temperature_sensor - -CH_SS_CHDX2SC_CWDT: - description: "Non standard water cooled chiller single stage with compressor & condenser control" - implements: - - CH - - SS - - CHDX2SC - - CWDT - opt_uses: - - lost_power_alarm - - control_mode - reset_command - - start_mode - - control_status - - chilled_water_flowrate_status - - condensing_water_flowrate_status - - condensing_water_differential_pressure_alarm - - chilled_supply_water_low_temperature_alarm - - chilled_water_flowrate_alarm - - chilled_water_differential_pressure_alarm - - condensing_water_flowrate_alarm - - compressor_temperature_setpoint_1 - - load_compressor_percentage_setpoint_1 - - compressor_power_sensor_1 - - compressor_open_percentage_command_1 - - high_pressure_sensor_1 - - high_temperature_sensor_1 - - low_pressure_sensor_1 - - low_temperature_sensor_1 - - compressor_current_sensor_1 - - compressor_temperature_setpoint_2 - - load_compressor_percentage_setpoint_2 - - compressor_power_sensor_2 - - compressor_open_percentage_command_2 - - high_pressure_sensor_2 - - high_temperature_sensor_2 - - low_pressure_sensor_2 - - low_temperature_sensor_2 - - compressor_current_sensor_2 - - failed_alarm_1 - - failed_alarm_2 - - standby_compressor_alarm_1 - - standby_compressor_alarm_2 - - high_pressure_alarm_1 - - high_pressure_alarm_2 - - low_pressure_alarm_1 - - low_pressure_alarm_2 - - low_temperature_alarm_1 - - compressor_current_alarm_1 - - low_temperature_alarm_2 - - compressor_current_alarm_2 - - compressor_run_time_alarm_1 - - compressor_run_time_alarm_2 \ No newline at end of file + - control_mode + - chilled_supply_water_isolation_valve_mode + - chilled_return_water_isolation_valve_mode \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/CT.yaml b/ontology/yaml/resources/HVAC/entity_types/CT.yaml index 0351ef4bca..4101945988 100644 --- a/ontology/yaml/resources/HVAC/entity_types/CT.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/CT.yaml @@ -131,21 +131,40 @@ CT_SS_VSFC: - run_mode - lost_power_alarm -CT_SS_VSFC_CDWISVPCM_PSMC: +CT_SS_VSFC_CDWISOVPM: description: "Cooling tower with condensing water isolation valve control" is_canonical: true implements: - CT - SS - VSFC - - CDWISVPCM - - PSMC + - CDWISOVPM opt_uses: - lost_power_alarm - control_status - run_mode - schedule_run_command - reset_command + - condensing_water_isolation_valve_mode + - condensing_water_flowrate_status + - control_mode + +CT_SS_VSFC_CWSISOVPM2X_CWRISOVM2X: + description: "Non standard cooling tower with condensing return/supply isolation valve control" + is_canonical: true + implements: + - CT + - SS + - VSFC + - CWSISOVPM2X + - CWRISOVM2X + opt_uses: + - lost_power_alarm + - control_status + - run_mode + - reset_command + - heat_percentage_sensor + - control_mode ################################### ### Existing Non-standard Types ### @@ -195,23 +214,4 @@ CT_SS_CWDT_OA_VSFC_CSWIVS_CRWIVS_CSWTC: opt_uses: - control_mode - run_mode - - lost_power_alarm - -CT_SS_VSFC_PSMC_CSWISVC_CRWISVC: - description: "Non standard cooling tower with condensing return/supply isolation valve control" - implements: - - CT - - SS - - VSFC - - PSMC - - CSWISVC - - CRWISVC - opt_uses: - - lost_power_alarm - - control_status - - run_mode - - reset_command - - average_line_current_sensor - - heat_percentage_sensor - - condensing_return_water_isolation_control_status - - condensing_supply_water_isolation_control_status \ No newline at end of file + - lost_power_alarm \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/PMP.yaml b/ontology/yaml/resources/HVAC/entity_types/PMP.yaml index 61e49c1ed5..0bad1d6401 100644 --- a/ontology/yaml/resources/HVAC/entity_types/PMP.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/PMP.yaml @@ -119,38 +119,23 @@ PMP_SS_CWCS_VSFC: - run_mode - lost_power_alarm -PMP_SS_PSMC_VSFC_CDWISVPCM: - description: "Primary condenser water pump" +PMP_SS_CDWISOVPM_VSFC: + description: "Primary condenser water pump with condensing water isolation valve control" is_canonical: true implements: - PMP - SS - - PSMC + - CDWISOVPM - VSFC - - CDWISVPCM opt_uses: - lost_power_alarm - control_status - low_differential_pressure_alarm - run_mode - reset_command - -PMP_SS_PSMC_VSFC_CHWISVPCM: - description: "Generic chilled & secondary chilled water pump with chilled water isolation valve control" - is_canonical: true - implements: - - PMP - - SS - - PSMC - - VSFC - - CHWISVPCM - opt_uses: - - lost_power_alarm - - control_status - - low_differential_pressure_alarm - - chilled_water_flowrate_status - - run_mode - - reset_command + - condensing_water_isolation_valve_mode + - condensing_water_flowrate_status + - control_mode ################################### ### Existing Non-standard Types ### @@ -187,12 +172,11 @@ PMP_SS_CHWP_PCWP: - low_differential_pressure_alarm - reset_command -PMP_SS_PSMC_VSFC: +PMP_SS_VSFC_SHWP: description: "Non standard secondary chilled water pump" implements: - PMP - SS - - PSMC - VSFC opt_uses: - lost_power_alarm @@ -200,5 +184,23 @@ PMP_SS_PSMC_VSFC: - chilled_water_flowrate_status - run_mode - reset_command - - average_line_current_sensor - - heat_percentage_sensor \ No newline at end of file + - heat_percentage_sensor + - control_mode + + +PMP_SS_CHWISOVPM_VSFC_CHWP_PCWP: + description: "Non standard chilled & secondary chilled water pump with chilled water isolation valve control" + implements: + - PMP + - SS + - CHWISOVPM + - VSFC + opt_uses: + - lost_power_alarm + - control_status + - low_differential_pressure_alarm + - run_mode + - reset_command + - chilled_water_flowrate_status + - chilled_water_isolation_valve_mode + - control_mode \ No newline at end of file diff --git a/ontology/yaml/resources/HVAC/entity_types/TK.yaml b/ontology/yaml/resources/HVAC/entity_types/TK.yaml index 09b10e4eca..951b3a0c2f 100644 --- a/ontology/yaml/resources/HVAC/entity_types/TK.yaml +++ b/ontology/yaml/resources/HVAC/entity_types/TK.yaml @@ -16,15 +16,8 @@ ### Canonical Types ### ######################## -TK_TPKD: - description: "Tpkd water tank." +TK_WLAM3X: + description: "A water tank with three sets of alarms for high, low, and overflow alerting." implements: - TK - uses: - - water_high_level_alarm_1 - - water_high_level_alarm_2 - - water_high_level_alarm_3 - - water_low_level_alarm_1 - - water_low_level_alarm_2 - - water_overflow_level_alarm_1 - - water_overflow_level_alarm_2 \ No newline at end of file + - WLAM3X \ No newline at end of file diff --git a/ontology/yaml/resources/fields/telemetry_fields.yaml b/ontology/yaml/resources/fields/telemetry_fields.yaml index 7c75965d4b..d82d861c35 100644 --- a/ontology/yaml/resources/fields/telemetry_fields.yaml +++ b/ontology/yaml/resources/fields/telemetry_fields.yaml @@ -621,8 +621,9 @@ literals: - condensing_supply_water_isolation_valve_status: - OPEN - CLOSED -- condensing_supply_water_isolation_valve_command - +- condensing_supply_water_isolation_valve_command: + - OPEN + - CLOSED # Added 4/12/20 - supply_air_damper_percentage_sensor @@ -712,38 +713,6 @@ literals: - chilled_return_water_isolation_valve_mode: - MANUAL - AUTO -- oil_heater_status: - - ON - - OFF -- inhibit_start_time_sensor -- total_compressor_count -- compressor_run_time_sensor -- guidevane_percentage_command -- oil_temperature_sensor -- oil_pump_differential_pressure_sensor -- exhaust_gas_compressor_temperature_sensor -- bearing_temperature_sensor -- winding_temperature_sensor -- compressor_temperature_setpoint -- compressor_temperature_sensor -- load_compressor_percentage_setpoint -- compressor_power_sensor -- refrigerant_valve_percentage_sensor -- standby_compressor_alarm: - - ACTIVE - - INACTIVE -- high_compressor_pressure_alarm: - - ACTIVE - - INACTIVE -- low_compressor_pressure_alarm: - - ACTIVE - - INACTIVE -- compressor_current_alarm: - - ACTIVE - - INACTIVE -- compressor_run_time_alarm: - - ACTIVE - - INACTIVE - water_high_level_alarm: - ACTIVE - INACTIVE @@ -753,65 +722,12 @@ literals: - water_low_level_alarm: - ACTIVE - INACTIVE -- fan_speed_frequency_setpoint -- compressor_speed_frequency_setpoint -- start_mode: - - ON - - OFF - reset_command: - ON - OFF - chilled_water_isolation_valve_mode: - AUTO - MANUAL -- pump_speed_frequency_setpoint -- chilled_water_isolation_valve_percentage_setpoint -- chilled_water_flowrate_alarm: - - ACTIVE - - INACTIVE -- stop_command: - - ON - - OFF -- closed_command: - - ON - - OFF -- local_status: - - REMOTE - - LOCAL -- compressor_open_percentage_command -- high_pressure_sensor -- low_pressure_sensor -- high_temperature_sensor -- low_temperature_sensor -- compressor_current_sensor -- high_pressure_alarm: - - ACTIVE - - INACTIVE -- low_pressure_alarm: - - ACTIVE - - INACTIVE -- high_temperature_alarm: - - ACTIVE - - INACTIVE -- low_temperature_alarm: - - ACTIVE - - INACTIVE -- condensing_water_differential_pressure_alarm: - - ACTIVE - - INACTIVE -- chilled_supply_water_low_temperature_alarm: - - ACTIVE - - INACTIVE -- chilled_water_differential_pressure_alarm: - - ACTIVE - - INACTIVE -- condensing_water_flowrate_alarm: - - ACTIVE - - INACTIVE -- current_alarm: - - ACTIVE - - INACTIVE - - heat_percentage_sensor - condensing_return_water_isolation_control_status: - LOCAL @@ -819,32 +735,13 @@ literals: - condensing_supply_water_isolation_control_status: - LOCAL - REMOTE -- open_command: - - ON - - OFF + # These points only true or false -- chilled_return_water_isolation_valve_percentage_setpoint -- condensing_supply_water_isolation_valve_failed_alarm: - - INACTIVE - - ACTIVE -- condensing_return_water_isolation_valve_failed_alarm: - - INACTIVE - - ACTIVE -- chilled_supply_water_isolation_valve_percentage_setpoint - chilled_water_bypass_valve_percentage_setpoint - bypass_valve_percentage_setpoint -- condensing_water_isolation_valve_percentage_setpoint - condensing_water_isolation_valve_mode: - AUTO - MANUAL -- pump_speed_mode: - - AUTO - - MANUAL -- average_line_electric_percentage_sensor -- condensing_return_water_isolation_valve_percentage_setpoint - - - # New alarms using alarm as a point type, and existing alarms moved here # TODO (tsodorff): change these to ALARM/NORMAL after determining how this can be done safely to existing translations. @@ -916,13 +813,10 @@ literals: - condensing_supply_water_isolation_valve_closed_command - entering_chilled_water_temperature_sensor - leaving_chilled_water_temperature_sensor -- line_voltage_sensor -- guidevane_percentage_sensor - compressor_percentage_sensor - entering_condensing_water_temperature_sensor - leaving_condensing_water_temperature_sensor - # We should not use this... represents scavenged outside air from near some heat pumps... - mixed_outside_air_temperature_sensor