{"id":100258,"date":"2026-02-15T20:30:13","date_gmt":"2026-02-15T20:30:13","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100258"},"modified":"2026-07-15T19:50:16","modified_gmt":"2026-07-15T19:50:16","slug":"thermography-limits","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/el\/calculators\/thermography-limits\/","title":{"rendered":"Controlled Thermography \u0394T and Uncertainty"},"content":{"rendered":"\n<style>\n#ir-tool{--ink:#17232d;--muted:#536473;--line:#d7e0e6;--soft:#f4f8fa;--accent:#9b3d19;--accent-soft:#fff2eb;--ok:#17643b;--bad:#a12525;max-width:980px;margin:0 auto;padding:24px 16px 44px;color:var(--ink);font:15px\/1.6 system-ui,-apple-system,\"Segoe UI\",sans-serif}#ir-tool *{box-sizing:border-box}#ir-tool h1,#ir-tool h2,#ir-tool h3{line-height:1.22;margin-top:0}#ir-tool h1{font-size:clamp(28px,5vw,42px);margin-bottom:12px}#ir-tool h2{font-size:23px}#ir-tool h3{font-size:17px;margin-bottom:8px}#ir-tool p{margin:0 0 12px}.ir-hero{text-align:center;padding:30px 18px}.ir-eyebrow{font-size:12px;font-weight:750;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.ir-sub{max-width:780px;margin:0 auto 18px!important;color:var(--muted);font-size:16px}.ir-badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.ir-badge{border:1px solid var(--line);border-radius:999px;padding:4px 10px;background:#fff;font-size:12px;font-weight:650}.ir-card{border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 8px 24px rgba(20,35,50,.06);padding:24px;margin:20px 0}.ir-warning{border-left:5px solid var(--accent);background:var(--accent-soft);padding:16px 18px;border-radius:8px;margin-bottom:20px}.ir-warning strong{color:#752b12}.ir-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.ir-field{display:flex;flex-direction:column;min-width:0}.ir-full{grid-column:1\/-1}.ir-label{font-size:13px;font-weight:720;margin-bottom:6px}.ir-hint{display:block;color:var(--muted);font-size:12px;font-weight:400}.ir-input{width:100%;border:1px solid #aeb9c3;border-radius:8px;background:#fff;color:var(--ink);font:inherit;padding:10px 12px}.ir-input:focus{outline:3px solid rgba(155,61,25,.14);border-color:var(--accent)}textarea.ir-input{min-height:72px;resize:vertical}.ir-check{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:9px;background:var(--soft);padding:12px}.ir-check input{margin-top:5px;flex:0 0 auto}.ir-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.ir-btn{appearance:none;border:1px solid var(--accent);border-radius:8px;padding:10px 17px;font:inherit;font-weight:750;cursor:pointer}.ir-primary{background:var(--accent);color:#fff}.ir-secondary{background:#fff;color:var(--accent)}.ir-status{min-height:25px;margin-top:15px!important;font-weight:700}.ir-status[data-kind=\"error\"]{color:var(--bad)}.ir-status[data-kind=\"ok\"]{color:var(--ok)}.ir-output{display:none;margin-top:20px;border-top:1px solid var(--line);padding-top:20px}.ir-output[data-visible=\"true\"]{display:block}.ir-result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ir-result{border:1px solid var(--line);border-radius:10px;background:var(--soft);padding:15px;min-width:0}.ir-result strong{display:block;font-size:19px;overflow-wrap:anywhere}.ir-result span{display:block;color:var(--muted);font-size:12px}.ir-primary-result{border:2px solid var(--accent);background:var(--accent-soft)}.ir-primary-result strong{color:#752b12;font-size:23px}.ir-note{margin-top:14px;border:1px solid var(--line);border-radius:9px;padding:13px;background:#fff;overflow-wrap:anywhere}.ir-formula{border:1px solid var(--line);border-radius:10px;background:var(--soft);padding:14px 18px;margin:12px 0;font:600 16px\/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;overflow-x:auto}.ir-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px}.ir-list{padding-left:21px;margin:8px 0}.ir-list li{margin-bottom:7px}.ir-source{border-top:1px solid var(--line);padding:12px 0}.ir-source:first-child{border-top:0}.ir-source a{color:#75402d;font-weight:700}.ir-small{color:var(--muted);font-size:13px}.ir-footer{text-align:center;color:var(--muted);font-size:13px;padding:18px}@media(max-width:700px){.ir-grid,.ir-columns{grid-template-columns:1fr}.ir-full{grid-column:auto}.ir-card{padding:18px}.ir-hero{padding:20px 6px}}@media(max-width:430px){.ir-result-grid{grid-template-columns:1fr}}\n<\/style>\n<main id=\"ir-tool\">\n  <header class=\"ir-hero\">\n    <p class=\"ir-eyebrow\">Measurement record, not an alarm table<\/p>\n    <h1>Controlled Thermography \u0394T and Uncertainty<\/h1>\n    <p class=\"ir-sub\">Calculate a signed target-minus-reference temperature difference and its combined standard uncertainty from a documented quantitative thermography measurement. No universal ISO, NETA, bearing, motor or electrical alarm limits are applied.<\/p>\n    <div class=\"ir-badges\"><span class=\"ir-badge\">ISO 18434 scope stated<\/span><span class=\"ir-badge\">Signed \u0394T<\/span><span class=\"ir-badge\">Standard uncertainty<\/span><span class=\"ir-badge\">No severity automation<\/span><\/div>\n  <\/header>\n\n  <section class=\"ir-card\" aria-labelledby=\"ir-calc-title\">\n    <h2 id=\"ir-calc-title\">Controlled-input calculation<\/h2>\n    <div class=\"ir-warning\"><strong>Do not infer condition severity or an action deadline from \u0394T alone.<\/strong> The reference must be technically comparable, and quantitative IRT depends on emissivity, reflected apparent temperature, transmission\/attenuation, calibration, spatial resolution, viewing geometry, environment and operating state. Use severity criteria only from the released site procedure, OEM limits and the governing licensed standard.<\/div>\n    <form id=\"ir-form\" novalidate>\n      <div class=\"ir-grid\">\n        <label class=\"ir-field\" for=\"ir-target\"><span class=\"ir-label\">Target temperature <span class=\"ir-hint\">Corrected quantitative surface-temperature result<\/span><\/span><input class=\"ir-input\" id=\"ir-target\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. 80\"><\/label>\n        <label class=\"ir-field\" for=\"ir-reference\"><span class=\"ir-label\">Reference temperature <span class=\"ir-hint\">Comparable reference defined below<\/span><\/span><input class=\"ir-input\" id=\"ir-reference\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. 30\"><\/label>\n        <label class=\"ir-field\" for=\"ir-unit\"><span class=\"ir-label\">Temperature unit <span class=\"ir-hint\">Applies to both values and uncertainties<\/span><\/span><select class=\"ir-input\" id=\"ir-unit\"><option value=\"\">Select unit<\/option><option value=\"C\">\u00b0C<\/option><option value=\"F\">\u00b0F<\/option><\/select><\/label>\n        <div class=\"ir-field\" aria-hidden=\"true\"><\/div>\n        <label class=\"ir-field\" for=\"ir-ut\"><span class=\"ir-label\">Target standard uncertainty u(Ttarget) <span class=\"ir-hint\">Non-negative, k=1-equivalent standard uncertainty in the selected unit<\/span><\/span><input class=\"ir-input\" id=\"ir-ut\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. 1.2\"><\/label>\n        <label class=\"ir-field\" for=\"ir-ur\"><span class=\"ir-label\">Reference standard uncertainty u(Tref) <span class=\"ir-hint\">Non-negative, k=1-equivalent standard uncertainty in the selected unit<\/span><\/span><input class=\"ir-input\" id=\"ir-ur\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. 0.8\"><\/label>\n        <label class=\"ir-field ir-full\" for=\"ir-reference-record\"><span class=\"ir-label\">Reference definition <span class=\"ir-hint\">Identify point\/component, comparability, load\/state and acquisition timing<\/span><\/span><textarea class=\"ir-input\" id=\"ir-reference-record\" autocomplete=\"off\" placeholder=\"e.g. matched phase under the same load and acquisition conditions\"><\/textarea><\/label>\n        <label class=\"ir-field ir-full\" for=\"ir-procedure-record\"><span class=\"ir-label\">Measurement procedure and corrections <span class=\"ir-hint\">Record camera\/calibration, emissivity, reflected apparent temperature, distance\/optics and transmission basis<\/span><\/span><textarea class=\"ir-input\" id=\"ir-procedure-record\" autocomplete=\"off\" placeholder=\"e.g. released IRT procedure, camera record and correction inputs\"><\/textarea><\/label>\n        <label class=\"ir-field ir-full\" for=\"ir-state-record\"><span class=\"ir-label\">Operating state \/ load record <span class=\"ir-hint\">Record actual load, environmental state and stability \u2014 do not extrapolate automatically<\/span><\/span><textarea class=\"ir-input\" id=\"ir-state-record\" autocomplete=\"off\" placeholder=\"e.g. 74% measured current, steady state, ambient and wind record\"><\/textarea><\/label>\n        <label class=\"ir-check ir-full\" for=\"ir-confirm-measurement\"><input id=\"ir-confirm-measurement\" type=\"checkbox\"><span>I confirm that both temperatures are corrected quantitative measurement results and that emissivity, reflected apparent temperature, attenuation\/transmission, calibration, spatial resolution, geometry and environmental effects are addressed by the recorded procedure.<\/span><\/label>\n        <label class=\"ir-check ir-full\" for=\"ir-confirm-uncertainty\"><input id=\"ir-confirm-uncertainty\" type=\"checkbox\"><span>I confirm that the two uncertainty inputs are standard uncertainties for this model and are sufficiently uncorrelated for root-sum-of-squares combination; covariance is handled elsewhere if this is not true.<\/span><\/label>\n      <\/div>\n      <div class=\"ir-actions\"><button class=\"ir-btn ir-primary\" type=\"submit\">Calculate controlled \u0394T<\/button><button class=\"ir-btn ir-secondary\" type=\"reset\">Clear<\/button><\/div>\n      <p class=\"ir-status\" id=\"ir-status\" data-kind=\"\" aria-live=\"polite\">Enter a controlled target\/reference measurement; no thresholds are preloaded.<\/p>\n    <\/form>\n    <div class=\"ir-output\" id=\"ir-output\" data-visible=\"false\" aria-live=\"polite\">\n      <h3>Measurement-model result<\/h3>\n      <div class=\"ir-result-grid\">\n        <div class=\"ir-result ir-primary-result\"><span>Signed \u0394T = Ttarget \u2212 Tref<\/span><strong id=\"ir-r-dt\">\u2014<\/strong><\/div>\n        <div class=\"ir-result\"><span>Combined standard uncertainty uc(\u0394T)<\/span><strong id=\"ir-r-uc\">\u2014<\/strong><\/div>\n        <div class=\"ir-result\"><span>\u0394T \u2212 uc(\u0394T)<\/span><strong id=\"ir-r-low\">\u2014<\/strong><\/div>\n        <div class=\"ir-result\"><span>\u0394T + uc(\u0394T)<\/span><strong id=\"ir-r-high\">\u2014<\/strong><\/div>\n      <\/div>\n      <p class=\"ir-note\" id=\"ir-r-note\"><\/p><p class=\"ir-note ir-small\" id=\"ir-r-record\"><\/p>\n    <\/div>\n  <\/section>\n\n  <section class=\"ir-card\" aria-labelledby=\"ir-method-title\"><h2 id=\"ir-method-title\">Model and units<\/h2><div class=\"ir-formula\">\u0394T = Ttarget \u2212 Tref<br>uc(\u0394T) = \u221a(u(Ttarget)\u00b2 + u(Tref)\u00b2)<\/div><p>The uncertainty relation is the uncorrelated-input special case of the JCGM law of propagation of uncertainty. Celsius temperature differences and kelvin differences have the same numerical value; Fahrenheit differences and their standard uncertainties are multiplied by 5\/9 before combination.<\/p><p class=\"ir-small\">The displayed \u0394T \u00b1 uc span uses one combined standard uncertainty. It is not automatically a confidence interval, an expanded uncertainty or an alarm band. If target and reference errors are correlated, use the covariance-aware model instead.<\/p><\/section>\n\n  <section class=\"ir-card\" aria-labelledby=\"ir-scope-title\"><h2 id=\"ir-scope-title\">Standards boundary<\/h2><ul class=\"ir-list\"><li>ISO 18434-1:2008 and ISO 18434-2:2019 provide procedures and guidance for establishing severity assessment criteria; their public ISO descriptions do not establish the six universal component tables formerly shown here.<\/li><li>ISO 18434-1 explicitly addresses reflected apparent temperature, emissivity and attenuating media for quantitative surface-temperature measurement.<\/li><li>ANSI\/NETA MTS-2023 is the current published electrical maintenance-testing edition and supersedes MTS-2019. Its exact proprietary table criteria require a licensed copy and the correct reference\/load conditions.<\/li><li>No motor insulation class, bearing seizure, coupling alignment, steam-trap loss, fire-risk or shutdown decision is calculated.<\/li><\/ul><\/section>\n\n  <section class=\"ir-card\" aria-labelledby=\"ir-evidence-title\"><h2 id=\"ir-evidence-title\">Official evidence<\/h2>\n    <div class=\"ir-source\"><a href=\"https:\/\/www.iso.org\/standard\/41648.html\" target=\"_blank\" rel=\"noopener\">ISO 18434-1:2008, Edition 1 (confirmed 2023)<\/a><p>General IRT procedures for machinery condition monitoring; includes guidance on establishing severity criteria and procedures for reflected apparent temperature, emissivity and attenuating media.<\/p><\/div>\n    <div class=\"ir-source\"><a href=\"https:\/\/www.iso.org\/standard\/67617.html\" target=\"_blank\" rel=\"noopener\">ISO 18434-2:2019, Edition 1 (confirmed 2024)<\/a><p>Image interpretation and diagnostics; provides guidance on establishing severity assessment criteria rather than one universal alarm table for every component.<\/p><\/div>\n    <div class=\"ir-source\"><a href=\"https:\/\/www.bipm.org\/doi\/10.59161\/JCGM100-2008E\" target=\"_blank\" rel=\"noopener\">JCGM 100:2008(E), GUM 1995 with minor corrections<\/a><p>Defines combined standard uncertainty and the law of propagation for uncorrelated and correlated input quantities.<\/p><\/div>\n    <div class=\"ir-source\"><a href=\"https:\/\/www.netaworld.org\/standards\/ansi-neta-mts\" target=\"_blank\" rel=\"noopener\">ANSI\/NETA MTS-2023 official status page<\/a><p>Approved 6 March 2023 and supersedes MTS-2019. The page establishes edition and scope; it does not publicly substantiate the former 10\/35\/75 \u00b0C table.<\/p><\/div>\n  <\/section>\n  <footer class=\"ir-footer\">Vibromera measurement reference \u00b7 No automated severity or action decision<\/footer>\n<\/main>\n<script>\n(function(){'use strict';\nfunction byId(id){return document.getElementById(id)}\nfunction parsePlain(raw,label){var s=String(raw==null?'':raw).trim();if(!\/^[+-]?(?:\\d+(?:[.,]\\d*)?|[.,]\\d+)$\/.test(s))throw new Error('Enter '+label+' as one signed plain decimal.');var n=Number(s.replace(',','.'));if(!Number.isFinite(n))throw new Error('Enter a finite '+label+'.');return n}\nfunction cleanText(raw,label){var s=String(raw==null?'':raw).trim();if(s.length<3||s.length>500||\/[\\u0000-\\u001F\\u007F]\/.test(s))throw new Error('Describe '+label+' in 3\u2013500 printable characters.');return s}\nfunction toCelsius(v,unit){if(unit==='C')return v;if(unit==='F')return(v-32)*5\/9;throw new Error('Select the temperature unit.')}\nfunction differenceToK(v,unit){if(unit==='C')return v;if(unit==='F')return v*5\/9;throw new Error('Select the temperature unit.')}\nfunction solve(target,reference,ut,ur,unit){if(!Number.isFinite(target)||!Number.isFinite(reference)||!Number.isFinite(ut)||!Number.isFinite(ur))throw new Error('All numeric inputs must be finite.');if(ut<0||ur<0)throw new Error('Standard uncertainties must be non-negative.');if(Math.abs(target)>10000000||Math.abs(reference)>10000000||ut>10000000||ur>10000000)throw new Error('Input magnitude must not exceed 10000000 in the selected unit.');var tc=toCelsius(target,unit),rc=toCelsius(reference,unit),utk=differenceToK(ut,unit),urk=differenceToK(ur,unit);if(tc<-273.15-1e-12||rc<-273.15-1e-12)throw new Error('A temperature value is below absolute zero.');var dtK=tc-rc,ucK=Math.hypot(utk,urk);if(![tc,rc,dtK,ucK].every(Number.isFinite))throw new Error('The supplied values exceed the computational range.');return{targetC:tc,referenceC:rc,dtK:dtK,ucK:ucK,lowK:dtK-ucK,highK:dtK+ucK,dtF:dtK*9\/5,ucF:ucK*9\/5}}\nfunction fmt(n){if(Object.is(n,-0)||Math.abs(n)<5e-13)n=0;return Number(n.toPrecision(12)).toString()}\nfunction pair(k,f){return fmt(k)+' K ('+fmt(f)+' \u00b0F difference)'}\nfunction clearOutput(message,kind){byId('ir-output').dataset.visible='false';byId('ir-status').dataset.kind=kind||'';byId('ir-status').textContent=message;['ir-r-dt','ir-r-uc','ir-r-low','ir-r-high'].forEach(function(id){byId(id).textContent='\u2014'});byId('ir-r-note').textContent='';byId('ir-r-record').textContent=''}\nfunction calculate(){try{var target=parsePlain(byId('ir-target').value,'target temperature'),reference=parsePlain(byId('ir-reference').value,'reference temperature'),ut=parsePlain(byId('ir-ut').value,'target standard uncertainty'),ur=parsePlain(byId('ir-ur').value,'reference standard uncertainty'),unit=byId('ir-unit').value,refRecord=cleanText(byId('ir-reference-record').value,'the reference definition'),procedure=cleanText(byId('ir-procedure-record').value,'the measurement procedure and corrections'),state=cleanText(byId('ir-state-record').value,'the operating state and load');if(!byId('ir-confirm-measurement').checked)throw new Error('Confirm the quantitative IRT measurement and correction basis.');if(!byId('ir-confirm-uncertainty').checked)throw new Error('Confirm the standard-uncertainty and uncorrelated-input basis.');var r=solve(target,reference,ut,ur,unit);byId('ir-r-dt').textContent=pair(r.dtK,r.dtF);byId('ir-r-uc').textContent=pair(r.ucK,r.ucF);byId('ir-r-low').textContent=pair(r.lowK,r.lowK*9\/5);byId('ir-r-high').textContent=pair(r.highK,r.highK*9\/5);byId('ir-r-note').textContent='Signed measurement difference only. No condition severity, priority or action is assigned.';byId('ir-r-record').textContent='Reference: '+refRecord+' | Procedure\/corrections: '+procedure+' | State\/load: '+state;byId('ir-output').dataset.visible='true';byId('ir-status').dataset.kind='ok';byId('ir-status').textContent='Controlled temperature-difference model evaluated.'}catch(e){clearOutput(String(e&&e.message||e),'error')}}\nbyId('ir-form').addEventListener('submit',function(e){e.preventDefault();calculate()});byId('ir-form').addEventListener('reset',function(){setTimeout(function(){clearOutput('Enter a controlled target\/reference measurement; no thresholds are preloaded.','')},0)});window.C100258Test={parsePlain:parsePlain,cleanText:cleanText,toCelsius:toCelsius,differenceToK:differenceToK,solve:solve};\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Calculate a signed target-minus-reference temperature difference and combined standard uncertainty from a documented quantitative IRT measurement without applying universal alarm thresholds.<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100258","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/el\/wp-json\/wp\/v2\/calculator\/100258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/el\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/el\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":3,"href":"https:\/\/vibromera.eu\/el\/wp-json\/wp\/v2\/calculator\/100258\/revisions"}],"predecessor-version":[{"id":102602,"href":"https:\/\/vibromera.eu\/el\/wp-json\/wp\/v2\/calculator\/100258\/revisions\/102602"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/el\/wp-json\/wp\/v2\/media?parent=100258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/el\/wp-json\/wp\/v2\/categories?post=100258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/el\/wp-json\/wp\/v2\/tags?post=100258"}],"curies":[{"name":"\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}