Sensor Calibration, Drift Compensation and Measurement Uncertainty (GUM) for Industrial IoT (2026)

Sensor Calibration, Drift Compensation and Measurement Uncertainty (GUM) for Industrial IoT (2026)

Sensor Calibration, Drift Compensation and Measurement Uncertainty for Industrial IoT

A temperature transmitter that reads 120.00 °C is making a claim, and almost nobody on the plant floor can say how strong that claim is. The display has two decimals, the historian stores them faithfully, and the digital twin consumes them as if they were exact. Yet the number is only as good as the last sensor calibration, the drift accumulated since, the wiring, the electronics, and the physics of the probe itself. A control loop, an energy model or a machine-learning anomaly detector all inherit that hidden error.

This matters more in 2026 because plants now feed sensor streams into state estimators, soft sensors and AI models that treat the inputs as truth. Resolution is not accuracy, and accuracy is not uncertainty. This post shows how to turn a reading into a defensible result: a value plus a stated uncertainty, traceable to a standard, corrected for drift, and stored where the twin can use it.

You will leave with a working vocabulary, a least-squares calibration routine, a full GUM uncertainty budget with computed numbers for a Pt100 channel, a drift-driven calibration-interval calculation, and a pattern for carrying calibration metadata into a digital twin.

What this covers: accuracy, precision and resolution; traceability and ISO/IEC 17025; RTD and thermocouple linearization; compensation and cross-sensitivity; drift models; GUM Type A and Type B budgets with Python; calibration intervals; and digital twin and AAS metadata.

Context and Background

The reference text for expressing how good a result is remains the Guide to the Expression of Uncertainty in Measurement, published by the Joint Committee for Guides in Metrology (JCGM) at BIPM. JCGM 100:2008 is the corrected edition of the 1995 GUM and is still the document most laboratories and most auditors mean when they say “GUM”. The newer JCGM GUM-1:2023 introduces a restructured suite of documents; it does not replace JCGM 100:2008, which it treats as part of the suite, and it points to Monte Carlo propagation (JCGM 101 and 102) as a companion method. In practice, an uncertainty budget built with the law of propagation of uncertainty from JCGM 100 is what accredited certificates still carry.

Accredited calibration laboratories work to ISO/IEC 17025:2017, the general requirements for the competence of testing and calibration laboratories. Its metrological traceability requirements are the reason a certificate from an accredited lab is worth more than a vendor’s “factory calibrated” sticker. The UKAS policy on metrological traceability, which implements ILAC policy, states that traceability is a property of a measurement result, not of an instrument: the result links to a reference through a documented, unbroken chain of calibrations, each contributing to the uncertainty. You can read their policy document for the exact wording.

On the plant side, the problem has two halves. The metrology half says what a measurement result is. The data half says where it lives. A calibration certificate is traditionally a PDF in a quality system, while the number it governs flows through OPC UA, MQTT and a historian with no memory of it. The practical goal of this post is to close that gap, and it connects directly to loop behaviour: the quality of a sensor limits how tightly a controller can hold a setpoint, which we covered in PID controller tuning, anti-windup and cascade control for industrial loops, and it limits what a state estimator can infer, as discussed in Kalman versus particle filters for digital twin state estimation.

The thesis of this post is simple and slightly contrarian. Most plants over-invest in the calibration event and under-invest in the calibration record. A perfect calibration whose coefficients, uncertainty and as-found error are not available to downstream software is, from the twin’s point of view, a sensor of unknown quality. The fix is not exotic. It is a disciplined uncertainty budget, a drift model, and structured metadata.

Sensor Calibration Fundamentals: From Reading to Traceable Result

Sensor calibration is the documented comparison of a sensor’s indications against a reference of known, traceable uncertainty, followed by a model that maps indications to corrected values. A complete calibration yields correction coefficients and an uncertainty statement. Without the uncertainty and the traceability chain, you only have an adjustment.

Sensor calibration traceability chain from SI definition through national institute and accredited lab to the field sensor

Figure 1: The traceability chain. Each link adds uncertainty, so the field sensor is always less certain than the reference above it.

Figure 1 shows the chain from the SI definition down to a process value. A national metrology institute realizes the unit, an accredited laboratory calibrates your reference against it, your reference calibrates the working sensors, and the sensors produce readings. Uncertainty never shrinks on the way down. A common rule of thumb is a test uncertainty ratio of at least 4:1 between the reference and the device under test, so that the reference contributes little to the final budget. It is a rule of thumb, not a standard requirement, and the budget later in this post shows why a ratio is the wrong thing to optimize when drift dominates.

Accuracy, precision, resolution and uncertainty are different things

Four words get mixed up on every plant. Resolution is the smallest change in indication that the display or the converter can represent. A 16-bit ADC spanning 0 to 200 °C has a step of 200 / 65536, about 0.003 °C, which says nothing about whether the value is right. Precision, in the sense of repeatability, is the closeness of repeated readings under the same conditions: it is a statement about scatter. Accuracy, in current VIM usage, is closeness of a single measured value to the true value, and the VIM prefers to express it qualitatively. Trueness is the closeness of the mean of many readings to the true value.

Measurement uncertainty is the quantity you can actually state numerically. It is a parameter characterizing the dispersion of values that could reasonably be attributed to the measurand. A sensor can have a resolution of 0.001 °C, a repeatability of 0.01 °C, a systematic offset of 0.4 °C and an uncertainty of 0.5 °C. All four numbers are true at once. Marketing specifications that quote only resolution or “accuracy of 0.1 percent” without conditions, range and coverage factor are not uncertainty statements.

The practical consequence is that systematic error and random error are treated differently. Random scatter averages down with more samples, as one over the square root of N. Systematic error does not. If a probe sits 0.07 °C high because of a calibration offset, averaging a million readings gives you a very precise wrong answer. Calibration removes the known part of the systematic error. What remains, plus everything you cannot know, is the uncertainty.

Traceability and what 17025 actually demands

Under ISO/IEC 17025:2017, a calibration laboratory must ensure its results are metrologically traceable and must evaluate the measurement uncertainty. UKAS describes the preferred sources of traceability as a national metrology institute covered by the CIPM Mutual Recognition Arrangement, or an accredited calibration laboratory under the ILAC Arrangement. Each certificate in the chain must state an uncertainty, and the policy says that compliance with a specification alone is accepted only exceptionally.

For an industrial plant, this has three practical implications. First, buy reference calibrations from an accredited provider whose scope covers your range and uncertainty, and check the scope rather than the logo. Second, read the certificate for the stated expanded uncertainty and coverage factor, because these become inputs to your own budget. Third, remember that traceability belongs to the result. A traceable reference thermometer used with a damaged lead, in a dry block with a poor axial gradient, does not yield a traceable result.

Calibration points, direction and the as-found record

A useful calibration has three properties. It covers the operating range and a margin, it is performed both ascending and descending to expose hysteresis, and it records the as-found error before any adjustment. The as-found record is the most valuable and most often skipped artifact. It is the only direct evidence of how far the sensor drifted since the last calibration, which is the input every interval decision needs.

Linearization, Compensation and Cross-Sensitivity

Before any calibration correction, the raw electrical signal has to become a temperature or a pressure, and each sensor family does this through a published model. Using the right standard model matters, because the calibration then only has to capture the small deviation from it.

RTD linearization with Callendar-Van Dusen

A platinum resistance thermometer (RTD) changes resistance with temperature along a smooth curve described by IEC 60751. The Callendar-Van Dusen (CVD) equation gives, for T at or above 0 °C, R(T) = R0 × (1 + A·T + B·T²). Below 0 °C there is an additional cubic term, R(T) = R0 × [1 + A·T + B·T² + C·(T − 100)·T³]. For standard platinum with a temperature coefficient of 0.00385 per kelvin, the IEC 60751 constants are A = 3.9083 × 10⁻³, B = −5.775 × 10⁻⁷ and C = −4.183 × 10⁻¹², with T in degrees Celsius, as published for example in the Texas Instruments application note on RTD measurements. For a Pt100, R0 is 100 Ω at 0 °C.

Two checks make these numbers concrete. At 100 °C the equation gives 138.5055 Ω, which is the familiar table value. At 200 °C it gives 175.856 Ω. The slope near 0 °C is R0 × A, about 0.39 Ω per kelvin, so a measurement chain that must resolve 0.01 °C has to resolve about 4 mΩ. That is why lead-wire resistance is the first thing a metrologist looks at: a 2-wire connection with 0.2 Ω of total lead resistance reads about 0.5 °C high, while 3-wire or 4-wire connections remove most or all of that term.

To convert measured resistance back to temperature above 0 °C you solve the quadratic, T = [−A + √(A² − 4B(1 − R/R0))] / (2B). Below zero there is no closed form, and firmware either iterates with Newton’s method or uses a lookup table with interpolation. Production firmware should use the same inversion that the calibration used, otherwise a software difference masquerades as a sensor error.

The CVD equation represents the ideal curve of the standard. It is explicitly not meant to calibrate an individual thermometer. A high-accuracy RTD is characterized by its own constants, fitted at several fixed points. An industrial probe of a given tolerance class is expected to stay within the class band around the standard curve. The IEC 60751 tolerance bands, in °C with |T| the temperature magnitude, are:

Class Tolerance At 0 °C At 120 °C
AA ±(0.10 + 0.0017·|T|) ±0.10 ±0.30
A ±(0.15 + 0.002·|T|) ±0.15 ±0.39
B ±(0.30 + 0.005·|T|) ±0.30 ±0.90
C ±(0.60 + 0.01·|T|) ±0.60 ±1.80

The temperature range over which each class applies depends on probe construction, so check the datasheet. The table has a useful lesson: an installed class A probe can be wrong by almost 0.4 °C at 120 °C before any electronics are involved. If your process needs better, you must calibrate the individual sensor, and then the question becomes the uncertainty of that calibration rather than the class.

Thermocouples and the ITS-90 polynomials

Thermocouples generate a voltage proportional to the temperature difference between a measuring junction and a reference junction. The relationship between voltage and temperature for the letter-designated types (K, J, T, E, N, R, S, B) is defined by the International Temperature Scale of 1990 (ITS-90) reference functions, which NIST publishes as polynomial coefficients and tables in its thermocouple database. Do not copy coefficients from blog posts or from memory. Take them from the NIST ITS-90 thermocouple tables for your type, note that coefficient sets change with temperature sub-range, and use the inverse polynomials for voltage-to-temperature conversion.

Two firmware details dominate thermocouple error in practice. The first is cold-junction compensation: the reference junction temperature, measured with a thermistor or a small RTD on the terminal block, must be converted to the equivalent thermoelectric voltage and added before converting the total to temperature. Doing the conversion on temperature instead of voltage is a classic mistake that creates errors proportional to the nonlinearity. The second is that for a type K near room temperature the sensitivity is on the order of 40 microvolts per kelvin, a rough figure that varies with temperature, so a 1 °C error in the cold-junction reading is a 1 °C error in the result, and a 10 microvolt amplifier offset is a quarter of a degree.

Temperature compensation and cross-sensitivity

Pressure transmitters, load cells, strain gauges, MEMS accelerometers and electrochemical gas sensors all respond to quantities other than the measurand. The datasheet usually states a temperature effect on zero and on span, for example as a percentage of full scale per 10 kelvin. These coefficients are not fixed truths, but a bounded specification. Using them as a first-order correction is reasonable, and treating their bound as a rectangular distribution in the uncertainty budget is the standard GUM practice.

The better approach for demanding applications is to characterize the device in a temperature chamber and fit a surface. Let y be the indicated value, x the true value, and T the sensor body temperature. A common compensation model is x ≈ a0 + a1·y + a2·T + a3·y·T + a4·T². Fitting it requires a design of experiment that varies y and T independently, which is a calibration with a grid instead of a line. It costs more chamber time, but it converts a ±0.5 percent datasheet bound into a residual that can be 10 times smaller, and it produces a correction you can execute on the edge.

Cross-sensitivity to another measurand needs a similar treatment. Electrochemical gas sensors respond to interfering gases, humidity affects capacitive sensors, and vibration contaminates accelerometer-based inclination readings. If you can measure the interfering quantity, include it in the model. If you cannot, its bound goes into the budget as an additional Type B term, and you should say so on the certificate or data sheet.

Least-Squares Calibration and Drift Compensation

Once the signal is linearized with the standard model, the remaining deviation from the reference is small and smooth, so a low-order polynomial correction is usually enough. The workflow is a loop, shown in Figure 2, and its exit conditions matter as much as the fit itself.

Sensor calibration workflow with fit validation and a drift check that triggers recalibration

Figure 2: The calibration loop. Residual checks gate acceptance, and the in-service drift check decides when the loop restarts.

Figure 2 has two decision points. The first is the residual test after fitting: if residuals show structure, such as a systematic bow, the model order is too low or the sensor is faulty, and raising the order blindly just overfits. The second is the periodic check in service, where the as-found error against a reference decides whether the sensor goes back into the loop or into recalibration.

A worked Pt100 calibration

Consider an illustrative Pt100 probe with a transmitter that linearizes with the IEC 60751 curve. The synthetic data below were generated for this article and are not measurements from a real plant. A stirred bath is set to nine temperatures from 0 to 200 °C in 25 K steps, with a reference thermometer reading the true bath temperature. The device under test is modelled with a small resistance offset of +0.04 Ω and a span error of −0.01 percent, plus 1.5 mΩ of random noise.

The indicated values come out between 0.059 and 0.077 °C above the reference at every point, as the table summarises. The error is mostly a constant offset of about 0.07 °C, with a slight slope. That structure is what a straight-line correction removes.

Reference (°C) Indicated (°C) As-found error (°C)
0 0.077 +0.077
50 50.072 +0.072
100 100.067 +0.067
150 150.065 +0.065
200 200.059 +0.059

A least-squares fit of reference against indication gives, for the linear model, a slope of 1.000076 and an intercept of −0.0758 °C, with a residual standard deviation of 0.0030 °C on seven degrees of freedom. A quadratic term does not improve it: the residual standard deviation stays at 0.0030 °C, and the quadratic coefficient is about −2.7 × 10⁻⁷ per °C, below anything meaningful. Parsimony wins, so the linear correction is accepted. The covariance of the fit yields the standard uncertainty of a corrected value at 120 °C of about 0.0010 °C. That is the fit contribution to the budget, and, as we will see, it is by far the smallest.

The code below performs the fit, the prediction uncertainty, the GUM budget and a Monte Carlo cross-check. It is deliberately dependency-light, using NumPy and SciPy only.

import numpy as np
from scipy import stats

def fit_calibration(x_ind, y_ref, deg=1):
    """Fit y_ref = poly(x_ind). Returns coefficients, residual std, covariance, dof."""
    X = np.vander(x_ind, deg + 1)
    beta, *_ = np.linalg.lstsq(X, y_ref, rcond=None)
    res = y_ref - X @ beta
    dof = len(x_ind) - (deg + 1)
    s2 = res @ res / dof
    cov = s2 * np.linalg.inv(X.T @ X)
    return beta, np.sqrt(s2), cov, dof

def predict_u(x0, cov, deg=1):
    """Standard uncertainty of the corrected value at indication x0."""
    g = np.vander(np.atleast_1d(x0), deg + 1)[0]
    return float(np.sqrt(g @ cov @ g))

def gum_budget(rows, p=0.95):
    """rows: (name, u, sensitivity c, dof). Returns uc, effective dof, k, U."""
    uc = np.sqrt(sum((c * u) ** 2 for _, u, c, _ in rows))
    nu = uc ** 4 / sum((c * u) ** 4 / v for _, u, c, v in rows)
    k = stats.t.ppf(0.5 + p / 2, nu)
    return uc, nu, k, k * uc

x = np.array([0.077, 25.076, 50.072, 75.067, 100.067,
              125.063, 150.065, 175.068, 200.059])
y = np.arange(0, 201, 25, dtype=float)
beta, s, cov, dof = fit_calibration(x, y)
print(beta, s, predict_u(120.0, cov))

In production, resist the temptation to fit the correction with the calibrator’s own display values. Fit with the reference thermometer’s corrected readings, because the reference’s own certificate correction belongs inside the loop, not outside it.

What drift is and how to model it

Drift is a slow change in the sensor’s metrological properties with time. VIM defines instrument drift as a continuous or incremental change over time in indication, due to changes in metrological properties of a measuring instrument. It is different from noise, which is fast, and from a step fault, which is sudden. Industrial sensors drift for physical reasons that point to different models.

Platinum RTDs drift from strain, contamination and thermal cycling, with the largest changes after exposure above their design range. Thermocouples drift through selective oxidation and inhomogeneity. Pressure transmitters drift because of diaphragm creep and electronics aging, which manufacturers typically specify as a long-term stability figure in percent of upper range limit per year, a number you should read as a bound under reference conditions rather than as a guarantee. Electrochemical and optical gas sensors drift through electrolyte depletion and source aging and often need a zero and span check on a schedule measured in months. Humidity sensors drift with contamination and exposure to condensing conditions.

Three practical drift models cover most plants.

  1. Bounded rectangular model. You assume the sensor stays within ±d of its last calibrated state until the next calibration. In the budget, d becomes a Type B term with standard uncertainty d divided by √3. It is easy, conservative and auditable, and it is what most accredited calibration labs recommend for recalibration-interval budgets.
  2. Linear-in-time model. Fit the as-found errors from successive calibrations against elapsed time and extrapolate. With three or more calibrations a rate r (for example in °C per year) can be estimated, and the drift term becomes r times the time since last calibration. This is the model behind a risk-based interval.
  3. State-space model. Treat the offset as a slowly varying hidden state and estimate it online from redundant sensors or from physical consistency, for example a Kalman filter with a random-walk offset state. This is the most powerful and the riskiest, because the filter will happily absorb a real process change into the offset.

For the third approach, a simple and robust implementation is an exponentially weighted estimate of the difference between a sensor and a trusted reference or a median of redundant sensors, applied only when the process is in a known steady condition. The code below shows the pattern. It deliberately freezes learning when the reference is not in steady state, and it raises an alarm rather than silently correcting when the offset exceeds a limit.

class OffsetTracker:
    """Track slow offset of a sensor against a trusted reference."""
    def __init__(self, alpha=0.01, limit=0.10):
        self.alpha, self.limit, self.offset = alpha, limit, 0.0

    def update(self, reading, reference, steady):
        if steady:                                  # learn only in steady state
            err = reading - reference
            self.offset += self.alpha * (err - self.offset)
        corrected = reading - self.offset
        alarm = abs(self.offset) > self.limit       # escalate, do not hide
        return corrected, self.offset, alarm

The design choice that matters is the alarm. Drift compensation can extend the time between calibrations, but it must never hide a failing sensor. Once the estimated offset exceeds a limit tied to the process tolerance, the right answer is a work order, not an ever larger software correction. That connects to the broader detection toolbox in anomaly detection in manufacturing, where sensor faults and process anomalies must be separated before either is acted on.

Hysteresis, repeatability and operating conditions

Drift is not the only non-ideal behaviour. Hysteresis is the difference between the indication on a rising and a falling input at the same true value. Pressure transmitters, load cells and some humidity sensors show it clearly, and a one-direction calibration hides it. Always calibrate in both directions at least at three points, and put the largest observed difference, as a rectangular bound, in the budget when the application can approach a value from either side.

Measurement Uncertainty with the GUM: A Full Budget

The GUM approach gives a result the form y ± U, where U is an expanded uncertainty with a stated coverage factor. The method is mechanical once you have a measurement model, and Figure 3 sets out the sequence.

Measurement uncertainty GUM workflow from model and inputs to Type A and Type B to expanded uncertainty

Figure 3: The GUM sequence. Type A and Type B inputs become standard uncertainties, are weighted by sensitivity coefficients, combined in quadrature, and expanded with a coverage factor.

Type A and Type B evaluation

A Type A evaluation estimates a standard uncertainty from the statistical analysis of repeated observations. The standard uncertainty of a mean of n readings is the experimental standard deviation divided by √n, with n − 1 degrees of freedom. If ten readings of the field sensor have a standard deviation of 0.015 °C, the Type A standard uncertainty of their mean is 0.015 / √10 = 0.0047 °C, with 9 degrees of freedom.

A Type B evaluation uses information other than repeated observations: calibration certificates, manufacturer specifications, handbook data, experience. The distribution you assign decides the divisor. A certificate quoting an expanded uncertainty U at k = 2 gives u = U / 2. A specification stating a symmetric bound ±a with no further information is treated as a rectangular distribution, so u = a / √3. A bound known to be more likely near the centre is treated as triangular, u = a / √6. Quantisation of a digital readout with resolution δ is rectangular with half-width δ / 2, so u = δ / (2√3).

Degrees of freedom for Type B terms are a judgment: the GUM suggests ν ≈ ½ (Δu/u)⁻², where Δu/u is your relative uncertainty about the uncertainty itself. If you believe a rectangular bound is reliable to within 25 percent, ν is about 8. That detail feeds the effective degrees of freedom and so the coverage factor.

The Pt100 budget at 120 °C

Take the calibrated Pt100 channel above, measuring a process at 120 °C in service. The measurement model is simple: the reported temperature equals the corrected indication plus a set of zero-mean error terms, each with sensitivity coefficient 1 because they are all in °C. The inputs below are assumptions chosen for the example, clearly labelled illustrative, except the fit term, which comes from the regression in the previous section.

Source Evaluation Value Standard u (°C) dof Share of variance
Calibration fit Type A, regression covariance – 0.0010 7 0.2%
Reference thermometer Type B, certificate U = 0.020 at k = 2 – 0.0100 60 20.1%
Bath uniformity and stability Type B, rectangular ±0.010 ±0.010 0.0058 50 6.7%
Readout resolution Type B, rectangular, δ = 0.01 ±0.005 0.0029 very large 1.7%
Field repeatability Type A, s = 0.015, n = 10 – 0.0047 9 4.5%
Drift since calibration Type B, rectangular ±0.030 ±0.030 0.0173 8 60.2%
Lead and connection effects Type B, rectangular ±0.010 ±0.010 0.0058 50 6.7%

Combine in quadrature. The sum of squared standard uncertainties is about 4.99 × 10⁻⁴ °C², so the combined standard uncertainty is uc = 0.0223 °C. The Welch–Satterthwaite formula, ν_eff = uc⁴ / Σ(ui⁴ / νi), gives about 21.6 effective degrees of freedom. The two-sided 95 percent Student t factor for that is k ≈ 2.08, so the expanded uncertainty is U ≈ 0.046 °C. With the conventional k = 2 the result would be 0.045 °C. A Monte Carlo propagation of the same seven distributions, with one million trials, in the spirit of JCGM 101, gives a standard deviation of 0.0223 °C and a 95 percent coverage interval of about ±0.042 °C. The agreement is reassuring but not surprising: with seven mostly well-behaved terms and no dominant non-Gaussian contribution, the law of propagation is adequate, and Monte Carlo becomes valuable when the model is strongly nonlinear or one rectangular term dominates, which is the case here only mildly.

The stated result is “120.00 °C ± 0.05 °C, k = 2” after rounding to the sensible digit. Compare that with the class A tolerance of ±0.39 °C at the same temperature. The calibrated and budgeted channel is about eight times tighter than the uncalibrated probe class would justify, and, more importantly, you can say why.

What the budget teaches

The variance shares are the point. Drift contributes 60 percent of the variance. The reference thermometer contributes 20 percent. The calibration fit, the object of so much engineering effort, contributes 0.2 percent. This is typical: once you calibrate at all, the long pole is time, not curve fitting. Improving the fit by adding more calibration points would change the result in the fourth decimal. Calibrating twice as often, or choosing a more stable probe, would change it materially.

It is also a lesson about reference quality. If the reference were replaced by one with half the uncertainty, the reference term would fall from 0.0100 to 0.0050 °C and uc would fall from 0.0223 to about 0.0206 °C, an 8 percent improvement. A 4:1 test uncertainty ratio is therefore a sensible floor, not a goal to push far beyond when drift dominates.

Calibration intervals from the budget

Calibration intervals are often set by habit (annual, because the audit is annual). The budget gives a more principled handle. The ILAC guidance on recalibration intervals (ILAC-G24 / OIML D 10) and the UKAS policy both say intervals depend on required uncertainty, history of the equipment, frequency and severity of use, cross-checks, manufacturer recommendations and environment. None prescribes a number, which is the right stance: the interval is an engineering decision tied to risk.

A budget-driven procedure works like this. Decide the maximum acceptable expanded uncertainty for the application, say 0.05 °C. Remove the drift term from the budget: the remaining components give u0 of about 0.0141 °C. Model drift as a linear rate r times elapsed time t with a rectangular bound, so u_drift = r·t / √3. Then require 2·√(u0² + (r·t)² / 3) ≤ 0.05. Solving for r·t gives about 0.036 °C. If your as-found history suggests r = 0.02 °C per year, the interval comes out at about 1.8 years, and an annual interval has margin. If history shows r = 0.05 °C per year, the interval is about 0.7 years, and the plant has been over-trusting the sensor.

Calibration Metadata in the Digital Twin and AAS

A calibration that does not reach the software that uses the measurement is only half done. The sensor-to-twin path in Figure 4 shows where calibration data should enter: at linearization, at drift correction and at the state estimator.

Sensor calibration data flow from sensor through compensation to a digital twin and AAS calibration submodel

Figure 4: Signal chain with calibration metadata. The calibration record feeds both the on-device correction and the twin’s estimator, so uncertainty travels with the value.

What to store

Minimum useful metadata for each measurement channel includes the sensor identity (serial number, type, range), the calibration date and the due date, the certificate identifier and issuing laboratory, the reference’s traceability statement, the correction coefficients and their covariance, the expanded uncertainty with coverage factor and distribution assumption, the as-found and as-left errors, the environmental conditions of the calibration, and the drift model parameters. Without the covariance of the coefficients, correlations between coefficients are lost; for most single-point corrections that is a minor concern, but for a multi-parameter surface it can matter.

At runtime, publish not only the value but a standard uncertainty alongside it. A pragmatic scheme is to compute the in-service standard uncertainty on the edge from the stored components plus a time-dependent drift term, so that the uncertainty grows between calibrations and resets afterward. Downstream, a Kalman filter or any state estimator can use it as the measurement noise covariance instead of a hand-tuned constant. This is the single highest-leverage integration: the measurement noise matrix R becomes an evidence-based quantity, and sensor degradation automatically reduces the weight of that sensor in the fused estimate. The relationship is developed in the state estimation article on Kalman and particle filters. One caution: drift errors are correlated in time, while a standard Kalman filter assumes white noise. Treat a large drift term as a bias state, not as inflated white noise.

Asset Administration Shell and calibration records

The Asset Administration Shell (AAS) from the Industrial Digital Twin Association (IDTA) is the standardized container for this kind of metadata. Submodels such as Digital Nameplate (IDTA 02006, version 3.0.1 published, with version 4.0 shown as in development) identify the device, and the generic technical data frame (IDTA 02003) describes its specifications. For calibration documentation, IDTA released a Digital Quality Documents submodel, IDTA 02065-1, version 1.0 in March 2026. It is a template for transferring quality documents such as certificates and conformity reports across an asset’s lifecycle, and its structure is inspired by the Digital Calibration Certificate schema. Part 1 is deliberately minimal: asset identification and conformity status, with the certificate identifier and issue date. More detailed calibration data is deferred to later parts, which I could not verify as published at the time of writing.

Until richer standard parts exist, a practical approach is to use the standard submodels for identity and the quality-document submodel for the certificate reference, and to add a custom submodel with a semantic identifier of your own for coefficients, uncertainty components and drift parameters. Keep the custom submodel’s property names stable and documented, and map its fields to the VIM and GUM terms (expanded uncertainty, coverage factor, distribution). For a deeper treatment of submodel structure, see Asset Administration Shell submodels in practice.

Trade-offs, Gotchas, and What Goes Wrong

The most common failure is adjusting before recording. A technician sees 0.07 °C of error, trims the transmitter to zero, and the as-found evidence is gone. Without it, the interval cannot be justified and a drift trend cannot be built. Make the as-found entry a mandatory field in the work order before the as-left entry unlocks.

Third, compensation can hide faults. A software offset that creeps up by 0.01 °C per week looks like successful drift correction until the sensor fails outright. Escalation limits, as in the offset tracker above, keep correction from becoming concealment. Related to that, never apply a calibration correction twice, once in the transmitter and once in the gateway. Document where in the chain each correction lives, and store a flag with the data.

Fourth, the model has limits. The GUM’s law of propagation assumes a model that is approximately linear over the range of the input uncertainties and, for the coverage factor, an approximately normal output. Heavy asymmetric terms, strongly nonlinear models and very few degrees of freedom are reasons to use Monte Carlo propagation instead. Also remember that the budget covers the calibration conditions you modelled. Process fouling, a loose thermowell, a wet cable gland, or a ground loop are outside it.

Practical Recommendations

Start with the sensors that matter. Rank channels by the consequence of a wrong value: product quality, safety interlocks, billing or custody transfer, energy balance, and model inputs. Spend metrology effort in that order, and accept class tolerances for the rest.

Then build the habit around the record rather than the event. Use accredited references where the result must be defensible, keep certificates with their uncertainty and coverage factor, and compute a budget per channel type. Let the budget tell you whether to buy a better reference, a more stable probe, or just calibrate more often, because the variance shares point to the dominant term. In our example it was drift, so a quarterly single-point check was worth more than a ten-point bench fit.

Finally, make uncertainty a first-class signal in your data platform. Publish values with standard uncertainty, version the coefficients, feed the uncertainty into the state estimator, and alert on drift trends rather than only on limit violations.

  • [ ] Rank measurement channels by consequence and assign a required uncertainty to each.
  • [ ] Record as-found errors before any adjustment, in both directions for hysteretic sensors.
  • [ ] Use the standard model (CVD for RTDs, NIST ITS-90 for thermocouples) and calibrate only the residual.
  • [ ] Build a GUM budget with Type A and Type B terms, and review the largest variance share.
  • [ ] Set intervals from drift history and the required uncertainty, with intermediate checks.
  • [ ] Store coefficients, uncertainty, certificate ID and validity in the twin or AAS, and version them.
  • [ ] Alert on offset trends, and never let compensation silently hide a degrading sensor.

Frequently Asked Questions

What is the difference between sensor calibration and adjustment?

Calibration compares a device’s indications with a traceable reference and documents the relation and its uncertainty. Adjustment then changes the device, or a software correction, to reduce the error. You can calibrate without adjusting, and you should always record the as-found result before any adjustment, because it is the evidence of drift. Adjustment without calibration leaves you with a device that reads correctly at one point and has no uncertainty statement at all.

How often should industrial sensors be calibrated?

There is no universal interval. ILAC-G24 and accreditation body policies say the interval depends on required uncertainty, the equipment’s history, frequency and severity of use, intermediate checks and environment. A defensible method is to estimate drift from as-found history and choose the interval at which the drift term keeps the expanded uncertainty inside what the application needs, then confirm with cheap intermediate checks.

What is the difference between Type A and Type B uncertainty?

Both are standard uncertainties in the GUM, differing only in how you evaluate them. Type A uses statistics on repeated observations, such as the standard deviation of the mean of ten readings. Type B uses other information: certificates, datasheet bounds, handbook values, experience, with an assumed distribution (normal, rectangular or triangular). They are combined in quadrature, weighted by sensitivity coefficients, without any distinction between them afterward.

Is accuracy the same as measurement uncertainty?

No. Accuracy is a qualitative notion of closeness to the true value, and a datasheet accuracy figure often omits the conditions and coverage. Measurement uncertainty is a quantified dispersion of values reasonably attributable to the measurand, stated with a coverage factor, and it includes calibration, drift, resolution and installation effects. Resolution is merely the smallest displayed step and says nothing about whether the value is right.

Can software drift compensation replace recalibration?

It can extend intervals and catch problems earlier, but not replace calibration. Online offset estimation needs a trusted reference or redundant sensors and a defined steady condition, and it cannot separate sensor drift from a real process change by itself. Cap the allowed correction, raise an alarm when it is exceeded, and still verify against a traceable reference at planned intervals so that the compensation model stays honest.

How do I store calibration data in a digital twin?

Keep a versioned record per sensor with identity, certificate ID, calibration and due dates, coefficients and covariance, expanded uncertainty with coverage factor, as-found and as-left errors, and drift parameters. In an Asset Administration Shell, use the standard identity submodels and the IDTA Digital Quality Documents submodel for the certificate reference, plus a custom submodel for coefficients. Publish standard uncertainty with live values so estimators can use it.

Further Reading

By Riju — about

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *