BrickSchema / Brick

Uniform metadata schema for buildings
http://brickschema.org/
BSD 3-Clause "New" or "Revised" License
293 stars 79 forks source link

Proposal for adding Calibration Command to the Brick Ontology #479

Open connorjcantrell opened 1 year ago

connorjcantrell commented 1 year ago

The term "Calibration Command" is a broad term that includes both the Auto and Manual Zero functions, as well as other similar functions. While the closest concept to a Calibration Command in our ontology is the Reset Command, it is important to note that the two serve different purposes.

A Reset Command is used to restore a system to its original state or starting point after a malfunction or unexpected event. It wipes all settings, data, and configurations, effectively starting fresh.

In contrast, a Calibration Command is used to maintain the accuracy of sensor readings over time. It periodically corrects for long-term drift or variation in sensor readings, ensuring that the system operates as intended. This is a critical function for systems that rely on precise sensor data for optimal performance.

Therefore, it is essential to distinguish between the two commands in our ontology. I propose that we add a Calibration Command to better represent this important functionality.


For example, a pressure sensor measures the building static pressure, and this information is used to determine the required speed of the fans to achieve the desired building static setpoint. By maintaining the accuracy of the pressure readings through the Calibration Command, the speed of the fans can be controlled more accurately, resulting in improved energy efficiency and better HVAC system performance.

However, the readings from the pressure sensor may drift over time due to various factors, leading to inaccurate readings and issues with the HVAC system. To compensate for this drift, the pressure sensing device has an Auto Zero function, which corrects for long-term offset variations in the pressure sensor.

To ensure accurate pressure readings, the Calibration Command periodically corrects for offset drift by sampling the sensor output when a known reference, such as atmospheric pressure, is applied to the sensor. The microcontroller then follows a series of steps to determine the precise value of the pressure sensor's offset:

  1. The pressure sensor output is sampled at atmospheric pressure.
  2. The pressure sensor output is sampled at the current pressure in the HVAC system.
  3. The stored offset correction is subtracted from the current pressure sensor output.
  4. The final result is the precise value of the pressure sensor's offset, which is used to correct pressure readings.

The Calibration Command can be triggered automatically at set intervals or manually through a user interface. By adding the Calibration Command to our ontology, we can ensure we are classifying these types of command correctly.

gtfierro commented 1 year ago

Hi @connorjcantrell -- thanks for the detailed proposal! I don't think I've ever seen this exposed in a BMS before -- would a calibration command take on the units of whatever it is calibrating? Is a calibration command always going to be used with a sensor? Do you have a suggestion for how we might relate the calibration command to the sensor (or whatever else it is calibrating?)

I think this should be relatively straightforward to model -- do you want to take a stab at adding this to brick in a PR?

connorjcantrell commented 1 year ago

Would a calibration command take on the units of whatever it is calibrating?

This is a good question. From my understanding, the calibration command would offset the signal outputted by the sensor, and would not need to reference the actual units that the control signal represents.

Is a calibration command always going to be used with a sensor?

I have only observed this point for sensors, however it is possible for a Calibration Command to be used with other devices or components that require periodic adjustment or calibration to maintain their performance (I am not aware such use cases).

Do you have a suggestion for how we might relate the calibration command to the sensor (or whatever else it is calibrating?

To relate the Calibration Command to the sensor or the device it is calibrating, perhaps we could introduce a relationship in our ontology, such as "calibrates". For example, if we have a pressure sensor and a Calibration Command is associated with it, perhaps we could create a relationship like this:

Calibration Command --calibrates--> Pressure Sensor

I am also open to suggestions as to how it would be implemented from others in the community to refine the proposed relationship further.