{"id":100294,"date":"2026-02-15T20:32:18","date_gmt":"2026-02-15T20:32:18","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100294"},"modified":"2026-07-17T05:56:04","modified_gmt":"2026-07-17T05:56:04","slug":"vibration-phase-angle","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/fi\/calculators\/vibration-phase-angle\/","title":{"rendered":"Coherent Phasor Worksheet | Sum, Difference &#038; Signed Phase"},"content":{"rendered":"\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Coherent Phasor Sum and Difference Worksheet\",\"description\":\"Combine or subtract two documented coherent same-frequency phasors while preserving signed relative phase, subtraction order and undefined phase at zero magnitude. This tool does not diagnose faults or calculate a balancing correction mass.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/vibration-phase-angle\/\",\"applicationCategory\":\"EngineeringApplication\",\"operatingSystem\":\"Any\",\"isAccessibleForFree\":true,\"creator\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"},\"dateModified\":\"2026-07-17\",\"inLanguage\":\"en\"}<\/script>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vibromera.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\/\/vibromera.eu\/calculators\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Coherent Phasor Worksheet\",\"item\":\"https:\/\/vibromera.eu\/calculators\/vibration-phase-angle\/\"}]}<\/script>\n<style>\n#vbm-ph{--ph-ink:#17313a;--ph-muted:#52656c;--ph-blue:#0b6477;--ph-blue2:#084b5a;--ph-line:#b9cbd0;--ph-bg:#f5f8f8;--ph-white:#fff;--ph-warn:#8a4b08;--ph-warnbg:#fff3d6;--ph-bad:#9a2f2f;--ph-badbg:#fff0ef;--ph-good:#17663d;--ph-goodbg:#e8f7ee;max-width:1160px;margin:24px auto;font:16px\/1.55 Arial,sans-serif;color:var(--ph-ink);background:var(--ph-white);border:1px solid var(--ph-line);border-radius:18px;overflow:hidden;box-shadow:0 12px 34px rgba(23,49,58,.12)}\n#vbm-ph *{box-sizing:border-box}#vbm-ph h1,#vbm-ph h2,#vbm-ph h3{line-height:1.2;margin:0 0 12px}#vbm-ph p{margin:0 0 12px}#vbm-ph a{color:#075f75;text-decoration:underline;text-underline-offset:2px}#vbm-ph .ph-hero{padding:34px;background:linear-gradient(135deg,var(--ph-blue2),var(--ph-blue));color:#fff}#vbm-ph .ph-hero h1{color:#fff;font-size:clamp(29px,5vw,46px);max-width:940px}#vbm-ph .ph-kicker{font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:13px;margin-bottom:10px}#vbm-ph .ph-hero p{max-width:940px;font-size:18px;color:#effcfd}#vbm-ph .ph-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}#vbm-ph .ph-tag{padding:6px 10px;border:1px solid rgba(255,255,255,.48);border-radius:999px;font-size:13px;font-weight:700}\n#vbm-ph .ph-body{padding:28px}#vbm-ph .ph-alert{padding:16px 18px;border-left:5px solid var(--ph-warn);background:var(--ph-warnbg);border-radius:8px;margin-bottom:22px}#vbm-ph .ph-alert strong{display:block;margin-bottom:4px}#vbm-ph form,#vbm-ph .ph-grid,#vbm-ph .ph-card,#vbm-ph .ph-section,#vbm-ph .ph-field{min-width:0}#vbm-ph .ph-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}#vbm-ph .ph-card{border:1px solid var(--ph-line);border-radius:12px;padding:20px;background:var(--ph-white)}#vbm-ph .ph-card h2{font-size:24px}#vbm-ph .ph-field{display:grid;align-content:start;gap:6px}#vbm-ph .ph-field label,#vbm-ph .ph-label,#vbm-ph legend{font-weight:700}#vbm-ph .ph-field input,#vbm-ph .ph-field select,#vbm-ph .ph-field textarea{width:100%;min-width:0;max-width:100%;border:1px solid #9fb5bc;border-radius:7px;padding:10px 11px;background:#fff;color:#17313a;font:inherit}#vbm-ph input:focus,#vbm-ph select:focus,#vbm-ph textarea:focus{outline:3px solid rgba(11,100,119,.2);border-color:var(--ph-blue)}#vbm-ph .ph-field textarea{min-height:96px;resize:vertical}#vbm-ph .ph-hint{font-size:13px;color:var(--ph-muted)}#vbm-ph .ph-wide{grid-column:1\/-1}#vbm-ph fieldset{border:0;padding:0;margin:0;min-width:0}#vbm-ph legend{font-size:24px;line-height:1.2;margin-bottom:10px}\n#vbm-ph .ph-checks{display:grid;gap:10px;margin-top:10px}#vbm-ph .ph-check{display:grid;grid-template-columns:22px 1fr;gap:9px;align-items:start;padding:10px;border:1px solid #d5e1e4;border-radius:8px;background:var(--ph-bg)}#vbm-ph .ph-check input{width:18px;height:18px;margin-top:3px}#vbm-ph .ph-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}#vbm-ph button{border:0;border-radius:8px;padding:11px 18px;font:700 15px Arial,sans-serif;cursor:pointer}#vbm-ph .ph-primary{background:var(--ph-blue);color:#fff}#vbm-ph .ph-secondary{background:#e7eff1;color:var(--ph-ink)}\n#vbm-ph .ph-result{display:none;margin-top:20px;border:2px solid var(--ph-line);border-radius:12px;padding:20px;background:var(--ph-bg)}#vbm-ph .ph-result.ph-visible{display:block}#vbm-ph .ph-result.ph-error{border-color:var(--ph-bad);background:var(--ph-badbg)}#vbm-ph .ph-result.ph-incomplete,#vbm-ph .ph-result.ph-stale{border-color:var(--ph-warn);background:var(--ph-warnbg)}#vbm-ph .ph-result.ph-ready{border-color:var(--ph-good);background:var(--ph-goodbg)}#vbm-ph .ph-result h2{font-size:23px}#vbm-ph .ph-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}#vbm-ph .ph-value{background:#fff;border:1px solid var(--ph-line);border-radius:8px;padding:13px}#vbm-ph .ph-value span{display:block;color:var(--ph-muted);font-size:13px}#vbm-ph .ph-value strong{display:block;font-size:19px;overflow-wrap:anywhere}#vbm-ph .ph-errors{margin:10px 0 0;padding-left:22px}\n#vbm-ph .ph-section{margin-top:24px}#vbm-ph .ph-section h2{font-size:26px}#vbm-ph .ph-formula{font-family:Consolas,monospace;background:#edf6f7;border:1px solid #b8d6dc;border-radius:8px;padding:14px;overflow-x:auto;margin:10px 0}#vbm-ph .ph-boundary{border-left:5px solid var(--ph-blue);background:#eaf6f8;padding:15px 17px;border-radius:8px;margin:14px 0}#vbm-ph .ph-table-wrap{width:100%;max-width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;border:1px solid var(--ph-line);border-radius:10px;margin-top:14px}#vbm-ph table{width:100%;min-width:790px;border-collapse:collapse;background:#fff}#vbm-ph th,#vbm-ph td{padding:10px 11px;border-bottom:1px solid #d9e3e5;text-align:left;vertical-align:top}#vbm-ph th{background:#e8f1f2}#vbm-ph tbody tr:last-child th,#vbm-ph tbody tr:last-child td{border-bottom:0}#vbm-ph details{border:1px solid var(--ph-line);border-radius:9px;padding:12px 14px;background:#fff;margin:9px 0}#vbm-ph summary{font-weight:700;cursor:pointer}#vbm-ph .ph-footer{margin-top:24px;padding:17px;background:#edf3f4;border-radius:10px;color:var(--ph-muted);font-size:14px}\n@media(max-width:760px){#vbm-ph{width:100%;max-width:100%;margin:12px 0;border-radius:12px}#vbm-ph .ph-hero,#vbm-ph .ph-body{padding:22px 16px}#vbm-ph .ph-grid{grid-template-columns:minmax(0,1fr)}#vbm-ph .ph-wide{grid-column:auto}#vbm-ph .ph-values{grid-template-columns:1fr 1fr}}@media(max-width:430px){#vbm-ph .ph-values{grid-template-columns:1fr}#vbm-ph button{width:100%}}\n<\/style>\n<main id=\"vbm-ph\">\n  <header class=\"ph-hero\"><div class=\"ph-kicker\">Traceable coherent-vector arithmetic<\/div><h1>Coherent Phasor Sum and Difference Worksheet<\/h1><p>Combine two documented same-frequency phasors, preserve the signed phase relation and choose the subtraction order explicitly. This worksheet does not diagnose a fault or calculate a balancing correction mass or angle.<\/p><div class=\"ph-tags\"><span class=\"ph-tag\">Signed relative phase<\/span><span class=\"ph-tag\">Explicit subtraction order<\/span><span class=\"ph-tag\">Zero-vector phase undefined<\/span><span class=\"ph-tag\">No automatic diagnosis<\/span><\/div><\/header>\n  <div class=\"ph-body\">\n    <div class=\"ph-alert\"><strong>Phasors are comparable only under one convention<\/strong>Use the same physical quantity, unit, amplitude convention, coherent frequency\/order, reference event, phase sign convention, sensor polarity and operating condition. A phase number copied from another analyzer mode can mean something different.<\/div>\n    <form id=\"ph-form\" novalidate>\n      <section class=\"ph-card\"><h2>Measurement identity<\/h2><p>Blank fields are deliberate. The worksheet cannot infer whether an entered phase is lead or lag, peak- or zero-crossing-referenced, or relative to a keyphasor or another order.<\/p><div class=\"ph-grid\">\n        <div class=\"ph-field\"><label for=\"ph-case\">Case \/ paired-record ID<\/label><input id=\"ph-case\" type=\"text\" maxlength=\"120\" required><\/div>\n        <div class=\"ph-field\"><label for=\"ph-quantity\">Physical quantity<\/label><input id=\"ph-quantity\" type=\"text\" maxlength=\"80\" required placeholder=\"e.g. 1x casing velocity\"><\/div>\n        <div class=\"ph-field\"><label for=\"ph-unit\">Amplitude unit and scaling<\/label><input id=\"ph-unit\" type=\"text\" maxlength=\"60\" required placeholder=\"e.g. mm\/s RMS\"><\/div>\n        <div class=\"ph-field\"><label for=\"ph-frequency\">Common frequency or order<\/label><input id=\"ph-frequency\" type=\"text\" maxlength=\"100\" required placeholder=\"e.g. 25 Hz \/ 1x at 1500 r\/min\"><\/div>\n        <div class=\"ph-field\"><label for=\"ph-convention\">Meaning of increasing entered phase<\/label><select id=\"ph-convention\" required><option value=\"\">Select declared convention<\/option><option value=\"lead\">Positive means lead from the declared reference<\/option><option value=\"lag\">Positive means lag from the declared reference<\/option><option value=\"other\">Other documented positive-angle convention<\/option><\/select><\/div>\n        <div class=\"ph-field\"><label for=\"ph-subtract\">Vector subtraction to report<\/label><select id=\"ph-subtract\" required><option value=\"\">Select subtraction order<\/option><option value=\"v2-v1\">V2 minus V1<\/option><option value=\"v1-v2\">V1 minus V2<\/option><\/select><\/div>\n        <div class=\"ph-field ph-wide\"><label for=\"ph-reference\">Reference event and processing convention<\/label><textarea id=\"ph-reference\" maxlength=\"1000\" required placeholder=\"Instrument\/mode, keyphasor or first-order reference, trigger edge and zero angle, lead\/lag and peak\/zero-crossing convention, sensor orientation\/polarity, filter\/averaging and operating condition\"><\/textarea><\/div>\n      <\/div><\/section>\n      <section class=\"ph-card ph-section\"><h2>Two coherent phasors<\/h2><div class=\"ph-grid\">\n        <div class=\"ph-field\"><label for=\"ph-a1\">V1 amplitude<\/label><input id=\"ph-a1\" type=\"text\" inputmode=\"decimal\" required><span class=\"ph-hint\">Finite and positive, in the declared common unit\/scaling.<\/span><\/div>\n        <div class=\"ph-field\"><label for=\"ph-p1\">V1 phase (degrees)<\/label><input id=\"ph-p1\" type=\"text\" inputmode=\"decimal\" required><span class=\"ph-hint\">Any finite angle; normalized for display.<\/span><\/div>\n        <div class=\"ph-field\"><label for=\"ph-a2\">V2 amplitude<\/label><input id=\"ph-a2\" type=\"text\" inputmode=\"decimal\" required><\/div>\n        <div class=\"ph-field\"><label for=\"ph-p2\">V2 phase (degrees)<\/label><input id=\"ph-p2\" type=\"text\" inputmode=\"decimal\" required><\/div>\n      <\/div><\/section>\n      <section class=\"ph-card ph-section\"><fieldset><legend>Evidence gates<\/legend><p>The arithmetic can be displayed with incomplete gates, but it must not be treated as a reviewed physical vector comparison until all six are documented.<\/p><div class=\"ph-checks\">\n        <label class=\"ph-check\" for=\"ph-ev-quantity\"><input id=\"ph-ev-quantity\" type=\"checkbox\"><span><strong>Same quantity, unit and amplitude scaling.<\/strong> Both amplitudes represent the same physical quantity and both are RMS, peak or another explicitly identical convention.<\/span><\/label>\n        <label class=\"ph-check\" for=\"ph-ev-frequency\"><input id=\"ph-ev-frequency\" type=\"checkbox\"><span><strong>Same coherent component.<\/strong> Both phasors refer to the same frequency\/order and compatible narrowband extraction.<\/span><\/label>\n        <label class=\"ph-check\" for=\"ph-ev-reference\"><input id=\"ph-ev-reference\" type=\"checkbox\"><span><strong>Same reference event.<\/strong> Trigger edge, keyphasor\/encoder mark or first-order reference and zero-angle definition are identical.<\/span><\/label>\n        <label class=\"ph-check\" for=\"ph-ev-convention\"><input id=\"ph-ev-convention\" type=\"checkbox\"><span><strong>Same phase convention and polarity.<\/strong> Lead\/lag, peak\/zero crossing, channel polarity and sensor orientation are consistent.<\/span><\/label>\n        <label class=\"ph-check\" for=\"ph-ev-condition\"><input id=\"ph-ev-condition\" type=\"checkbox\"><span><strong>Compatible operating condition.<\/strong> Speed, load, filter, averaging and acquisition state are stable or intentionally paired.<\/span><\/label>\n        <label class=\"ph-check\" for=\"ph-ev-quality\"><input id=\"ph-ev-quality\" type=\"checkbox\"><span><strong>Measurement quality.<\/strong> Calibration, phase repeatability, coherence and uncertainty are adequate; near-cancellation is not over-interpreted.<\/span><\/label>\n      <\/div><\/fieldset><div class=\"ph-actions\"><button class=\"ph-primary\" type=\"submit\">Calculate documented phasors<\/button><button class=\"ph-secondary\" id=\"ph-clear\" type=\"button\">Clear<\/button><\/div><\/section>\n    <\/form>\n    <section id=\"ph-result\" class=\"ph-result\" role=\"status\" aria-live=\"polite\"><h2 id=\"ph-result-title\">Not calculated<\/h2><p id=\"ph-result-summary\"><\/p><ul id=\"ph-errors\" class=\"ph-errors\"><\/ul><div class=\"ph-values\">\n      <div class=\"ph-value\"><span>Signed relative phase, V2 minus V1<\/span><strong id=\"ph-out-signed\">&#8211;<\/strong><\/div>\n      <div class=\"ph-value\"><span>Smallest unsigned separation<\/span><strong id=\"ph-out-absolute\">&#8211;<\/strong><\/div>\n      <div class=\"ph-value\"><span>Vector sum<\/span><strong id=\"ph-out-sum\">&#8211;<\/strong><\/div>\n      <div class=\"ph-value\"><span id=\"ph-diff-label\">Selected vector difference<\/span><strong id=\"ph-out-diff\">&#8211;<\/strong><\/div>\n      <div class=\"ph-value\"><span>Normalized V1 phase<\/span><strong id=\"ph-out-p1\">&#8211;<\/strong><\/div>\n      <div class=\"ph-value\"><span>Normalized V2 phase<\/span><strong id=\"ph-out-p2\">&#8211;<\/strong><\/div>\n    <\/div><div class=\"ph-table-wrap\"><table><thead><tr><th>Vector<\/th><th>x component<\/th><th>y component<\/th><th>Amplitude<\/th><th>Phase<\/th><\/tr><\/thead><tbody><tr><th>V1<\/th><td id=\"ph-x1\">&#8211;<\/td><td id=\"ph-y1\">&#8211;<\/td><td id=\"ph-ta1\">&#8211;<\/td><td id=\"ph-tp1\">&#8211;<\/td><\/tr><tr><th>V2<\/th><td id=\"ph-x2\">&#8211;<\/td><td id=\"ph-y2\">&#8211;<\/td><td id=\"ph-ta2\">&#8211;<\/td><td id=\"ph-tp2\">&#8211;<\/td><\/tr><tr><th>V1 + V2<\/th><td id=\"ph-xs\">&#8211;<\/td><td id=\"ph-ys\">&#8211;<\/td><td id=\"ph-tas\">&#8211;<\/td><td id=\"ph-tps\">&#8211;<\/td><\/tr><tr><th id=\"ph-tdiff-label\">Selected difference<\/th><td id=\"ph-xd\">&#8211;<\/td><td id=\"ph-yd\">&#8211;<\/td><td id=\"ph-tad\">&#8211;<\/td><td id=\"ph-tpd\">&#8211;<\/td><\/tr><\/tbody><\/table><\/div><\/section>\n\n    <section class=\"ph-section\"><h2>Equations and sign convention<\/h2><p>These are general complex-plane relations, not balancing formulas issued by ISO 21940. For each phasor with amplitude <em>A<\/em> and entered phase <em>phi<\/em>:<\/p>\n      <div class=\"ph-formula\">x = A cos(phi) &nbsp;&nbsp; ; &nbsp;&nbsp; y = A sin(phi)<\/div>\n      <div class=\"ph-formula\">V_sum = (x1 + x2) + j(y1 + y2)<\/div>\n      <div class=\"ph-formula\">V_2-1 = (x2 &#8211; x1) + j(y2 &#8211; y1) &nbsp;&nbsp; or &nbsp;&nbsp; V_1-2 = -V_2-1<\/div>\n      <div class=\"ph-formula\">A_result = hypot(x, y) &nbsp;&nbsp; ; &nbsp;&nbsp; phi_result = atan2(y, x)<\/div>\n      <div class=\"ph-formula\">delta_phi_signed = wrap_to_[-180,180)(phi2 &#8211; phi1)<\/div>\n      <p>A positive signed result means V2 is positive relative to V1 under the convention selected above: &ldquo;lead&rdquo; if positive angles are lead, &ldquo;lag&rdquo; if positive angles are lag. The smallest unsigned separation is the absolute value and intentionally discards direction.<\/p>\n      <div class=\"ph-boundary\"><strong>Zero magnitude has no phase.<\/strong> When an exact or floating-point-level cancellation makes the sum or difference magnitude zero, the worksheet reports phase as undefined. It does not display the arbitrary result of atan2 applied to numerical residue.<\/div>\n      <p><strong>Independent examples:<\/strong> 3 at 0 degrees plus 4 at 90 degrees gives 5 at 53.1301 degrees. For the same inputs, V2 minus V1 gives 5 at 126.8699 degrees. Equal opposing phasors have a zero sum with undefined phase; identical phasors have a zero difference with undefined phase.<\/p>\n    <\/section>\n\n    <section class=\"ph-section\"><h2>Balancing and diagnostic boundary<\/h2>\n      <p>The difference between a baseline response and a trial-run response can represent the measured response change only when the records are comparable. It is not by itself a correction weight. A balancing solution additionally needs the trial mass, radius, angular location, consistent measurement conventions, a valid influence coefficient and applicable safety\/procedure controls.<\/p>\n      <div class=\"ph-alert\"><strong>No &ldquo;0 degrees = unbalance&rdquo; fault rule<\/strong>Relative phase depends on sensor direction, reference and transfer path. In-phase, out-of-phase or quadrature observations do not uniquely diagnose unbalance, misalignment or resonance. This worksheet makes no condition classification.<\/div>\n    <\/section>\n\n    <section class=\"ph-section\"><h2>Source and standards boundary<\/h2><div class=\"ph-table-wrap\"><table><thead><tr><th>ID<\/th><th>Source<\/th><th>Verified public information<\/th><th>Use on this page<\/th><\/tr><\/thead><tbody>\n      <tr id=\"source-S1\"><td>S1<\/td><td><a href=\"https:\/\/www.iso.org\/standard\/56561.html\" target=\"_blank\" rel=\"noopener\">ISO 21940-13:2012, Edition 1<\/a><\/td><td>Published and confirmed in 2023; replaces ISO 20806:2009. It addresses criteria, instrumentation, safety, reporting and records for in-situ balancing of medium and large rotors. The public abstract explicitly says it does not provide methods for calculating correction masses from vibration data.<\/td><td>Balancing safety\/scope boundary only; not the source of the phasor equations.<\/td><\/tr>\n      <tr id=\"source-S2\"><td>S2<\/td><td><a href=\"https:\/\/downloads.dewesoft.com\/manuals\/dewesoft-order-tracking-manual-en.pdf\" target=\"_blank\" rel=\"noopener\">Dewesoft Order Analysis Manual V26-1<\/a><\/td><td>Public manual pp. 14, 18-19 and 33-34: absolute order phase needs zero-angle information; phase reference may be the frequency-source\/keyphasor position or the first order; extracted harmonics are complex channels with magnitude, phase, real and imaginary parts.<\/td><td>Evidence for reference identity and complex-channel representation.<\/td><\/tr>\n      <tr id=\"source-S3\"><td>S3<\/td><td><a href=\"https:\/\/downloads.dewesoft.com\/manuals\/dewesoft-orbit-analysis-manual-en.pdf\" target=\"_blank\" rel=\"noopener\">Dewesoft Orbit Analysis Manual V26-1<\/a><\/td><td>Public manual pp. 69-70 documents application-specific phase conventions: Order Analysis uses a leading zero-crossing convention while Orbit Analysis uses a lagging peak convention.<\/td><td>Evidence that phase values from different modes are not interchangeable without conversion.<\/td><\/tr>\n      <tr id=\"source-S4\"><td>S4<\/td><td><a href=\"https:\/\/www.fluke.com\/en-us\/learn\/blog\/vibration\/phase-in-vibration-analysis-theory-applications-and-examples\" target=\"_blank\" rel=\"noopener\">Fluke, Phase in Vibration Analysis<\/a><\/td><td>Official technical article describes balancing with a rotational-rate response relative to tachometer, a known trial weight\/angle and a subsequent program calculation.<\/td><td>Public evidence that a response-vector difference alone is not a correction mass\/angle method.<\/td><\/tr>\n    <\/tbody><\/table><\/div><div class=\"ph-alert\" style=\"margin-top:16px\"><strong>NEEDS_LICENSED_SOURCE<\/strong>The exact normative in-situ balancing conditions, instrumentation, safeguards, reporting and record requirements of ISO 21940-13 are protected. The official card verifies lifecycle and public scope only. No clause, tolerance, correction-mass method or acceptance criterion is invented here.<\/div><\/section>\n\n    <section class=\"ph-section\"><h2>Corrections made in this audit<\/h2>\n      <details><summary>Signed and unsigned phase are no longer conflated<\/summary><p>The former page reduced every phase relation to 0-180 degrees, losing which phasor led or lagged. The replacement reports signed V2 minus V1 in [-180, 180) and the unsigned separation separately.<\/p><\/details>\n      <details><summary>Subtraction order is explicit<\/summary><p>V2 minus V1 and V1 minus V2 have the same amplitude but phases separated by 180 degrees. The user must now select which operation is intended, and the result\/table label states it.<\/p><\/details>\n      <details><summary>Zero-vector phase is undefined<\/summary><p>The old engine called atan2 on floating residue for exact cancellation and could display a meaningless phase. The replacement uses a scale-aware numerical cancellation check and reports undefined phase.<\/p><\/details>\n      <details><summary>Measurement comparability is required<\/summary><p>Amplitude unit\/scaling, coherent component, phase reference, sign\/peak convention, sensor polarity, operating condition and measurement quality are now visible evidence gates.<\/p><\/details>\n      <details><summary>Balancing and diagnostic shortcuts were removed<\/summary><p>The old FAQ mapped 0\/90\/180-degree observations to specific faults and implied a simple phase shift supplied a correction angle. Those claims were removed; the page does not calculate a correction mass or diagnose a fault.<\/p><\/details>\n      <details><summary>Input and runtime integrity were rebuilt<\/summary><p>Defaults, presets, automatic calculation, browser history, clipboard export, dynamic HTML and external equation rendering were removed. Decimal point\/comma are accepted separately; mixed separators, zero\/negative amplitudes, non-finite\/overflow inputs and incomplete records are rejected.<\/p><\/details>\n    <\/section>\n    <div class=\"ph-footer\">Engineering boundary: this worksheet performs deterministic arithmetic on two declared coherent phasors. It is not a phase measurement instrument, order tracker, cross-spectrum\/coherence estimator, orbit analyzer, influence-coefficient solver, balancing procedure, correction-weight calculator, ISO compliance assessment, fault diagnosis or alarm setting. Last technical review: 17 July 2026.<\/div>\n  <\/div>\n<\/main>\n<script>\n(function(){'use strict';var root=document.getElementById('vbm-ph');if(!root)return;function byId(id){return document.getElementById(id)}function parseDecimal(raw){var s=String(raw).trim();if(!\/^[+-]?(?:\\d+(?:[.,]\\d*)?|[.,]\\d+)$\/.test(s)||(\/[.]\/.test(s)&&\/,\/.test(s)))return null;var n=Number(s.replace(',','.'));return Number.isFinite(n)?n:null}function wrap360(d){var v=d%360;if(v<0)v+=360;if(Math.abs(v-360)<1e-12||Object.is(v,-0))v=0;return v}function wrapSigned(d){var v=((d+180)%360+360)%360-180;if(Object.is(v,-0))v=0;return v}function fmt(n){var a=Math.abs(n);if(n===0)return'0';if(a>=1000000||a<0.0001)return n.toExponential(6);return Number(n.toPrecision(8)).toString()}function vec(a,p){var r=p*Math.PI\/180;return{x:a*Math.cos(r),y:a*Math.sin(r)}}function resolve(x,y,scale){var amp=Math.hypot(x,y),tol=64*Number.EPSILON*Math.max(scale,Number.MIN_VALUE);if(amp<=tol)return{x:x,y:y,amp:0,phase:null};return{x:x,y:y,amp:amp,phase:wrap360(Math.atan2(y,x)*180\/Math.PI)}}function setList(items){var list=byId('ph-errors');while(list.firstChild)list.removeChild(list.firstChild);items.forEach(function(item){var li=document.createElement('li');li.textContent=item;list.appendChild(li)})}function setState(kind,title,summary){var box=byId('ph-result');box.className='ph-result ph-visible ph-'+kind;byId('ph-result-title').textContent=title;byId('ph-result-summary').textContent=summary}function clearOutputs(){['ph-out-signed','ph-out-absolute','ph-out-sum','ph-out-diff','ph-out-p1','ph-out-p2','ph-x1','ph-y1','ph-ta1','ph-tp1','ph-x2','ph-y2','ph-ta2','ph-tp2','ph-xs','ph-ys','ph-tas','ph-tps','ph-xd','ph-yd','ph-tad','ph-tpd'].forEach(function(id){byId(id).textContent='-'});byId('ph-diff-label').textContent='Selected vector difference';byId('ph-tdiff-label').textContent='Selected difference'}function phasorText(v,unit){return fmt(v.amp)+' '+unit+' at '+(v.phase===null?'undefined phase':fmt(v.phase)+' degrees')}function phaseMeaning(delta,convention){if(delta===0)return'coincident phase';var sense=delta>0?'positive':'negative';if(convention==='lead')return sense+' (V2 '+(delta>0?'leads':'lags')+' V1)';if(convention==='lag')return sense+' (V2 '+(delta>0?'lags':'leads')+' V1)';return sense+' in the declared convention'}\n  var form=byId('ph-form'),result=byId('ph-result');function stale(){if(result.classList.contains('ph-visible')&&!result.classList.contains('ph-stale'))setState('stale','Result is stale','Inputs or evidence changed. Recalculate before using the displayed vectors.')}form.addEventListener('input',stale);form.addEventListener('change',stale);\n  form.addEventListener('submit',function(event){event.preventDefault();var errors=[],record=byId('ph-case').value.trim(),quantity=byId('ph-quantity').value.trim(),unit=byId('ph-unit').value.trim(),frequency=byId('ph-frequency').value.trim(),convention=byId('ph-convention').value,subtract=byId('ph-subtract').value,reference=byId('ph-reference').value.trim(),a1=parseDecimal(byId('ph-a1').value),p1=parseDecimal(byId('ph-p1').value),a2=parseDecimal(byId('ph-a2').value),p2=parseDecimal(byId('ph-p2').value);if(!record)errors.push('Case or paired-record ID is required.');if(!quantity)errors.push('Physical quantity is required.');if(!unit)errors.push('Amplitude unit and scaling are required.');if(!frequency)errors.push('Common frequency or order is required.');if(!convention)errors.push('Select the meaning of increasing phase.');if(!subtract)errors.push('Select the vector subtraction order.');if(!reference)errors.push('Reference event and processing convention are required.');if(a1===null||a1<=0||a1>1e150)errors.push('V1 amplitude must be finite, positive and no greater than 1e150.');if(a2===null||a2<=0||a2>1e150)errors.push('V2 amplitude must be finite, positive and no greater than 1e150.');if(p1===null||Math.abs(p1)>1e12)errors.push('V1 phase must be finite and within plus or minus 1e12 degrees.');if(p2===null||Math.abs(p2)>1e12)errors.push('V2 phase must be finite and within plus or minus 1e12 degrees.');if(errors.length){clearOutputs();setList(errors);setState('error','Cannot calculate','Correct the listed input or traceability errors.');return}var v1=vec(a1,p1),v2=vec(a2,p2),scale=a1+a2,sum=resolve(v1.x+v2.x,v1.y+v2.y,scale),dx=subtract==='v2-v1'?v2.x-v1.x:v1.x-v2.x,dy=subtract==='v2-v1'?v2.y-v1.y:v1.y-v2.y,diff=resolve(dx,dy,scale),delta=wrapSigned(p2-p1),absDelta=Math.abs(delta),diffName=subtract==='v2-v1'?'V2 minus V1':'V1 minus V2';if(![v1.x,v1.y,v2.x,v2.y,sum.x,sum.y,diff.x,diff.y,sum.amp,diff.amp].every(Number.isFinite)){clearOutputs();setList(['The Cartesian or resultant values exceed the finite numeric range.']);setState('error','Cannot calculate','Reduce the numeric range and verify the inputs.');return}byId('ph-out-signed').textContent=fmt(delta)+' degrees; '+phaseMeaning(delta,convention);byId('ph-out-absolute').textContent=fmt(absDelta)+' degrees';byId('ph-out-sum').textContent=phasorText(sum,unit);byId('ph-out-diff').textContent=phasorText(diff,unit);byId('ph-diff-label').textContent=diffName;byId('ph-out-p1').textContent=fmt(wrap360(p1))+' degrees';byId('ph-out-p2').textContent=fmt(wrap360(p2))+' degrees';byId('ph-tdiff-label').textContent=diffName;var rows=[['ph-x1','ph-y1','ph-ta1','ph-tp1',v1.x,v1.y,a1,wrap360(p1)],['ph-x2','ph-y2','ph-ta2','ph-tp2',v2.x,v2.y,a2,wrap360(p2)],['ph-xs','ph-ys','ph-tas','ph-tps',sum.x,sum.y,sum.amp,sum.phase],['ph-xd','ph-yd','ph-tad','ph-tpd',diff.x,diff.y,diff.amp,diff.phase]];rows.forEach(function(r){byId(r[0]).textContent=fmt(r[4])+' '+unit;byId(r[1]).textContent=fmt(r[5])+' '+unit;byId(r[2]).textContent=fmt(r[6])+' '+unit;byId(r[3]).textContent=r[7]===null?'undefined':fmt(r[7])+' degrees'});setList([]);var ev=['ph-ev-quantity','ph-ev-frequency','ph-ev-reference','ph-ev-convention','ph-ev-condition','ph-ev-quality'],done=ev.filter(function(id){return byId(id).checked}).length;if(done===ev.length)setState('ready','Coherent-vector arithmetic complete','All six evidence gates are recorded. The result remains arithmetic, not a balancing correction or fault diagnosis.');else setState('incomplete','Arithmetic complete; evidence incomplete','Only '+done+' of 6 evidence gates are recorded. Do not treat these vectors as a reviewed physical comparison.');});\n  byId('ph-clear').addEventListener('click',function(){form.reset();result.className='ph-result';setList([]);clearOutputs();byId('ph-case').focus()});\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Add or subtract two documented coherent same-frequency phasors with explicit phase convention and subtraction order. No fault diagnosis or balancing correction.<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100294","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/calculator\/100294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":3,"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/calculator\/100294\/revisions"}],"predecessor-version":[{"id":102643,"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/calculator\/100294\/revisions\/102643"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/media?parent=100294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/categories?post=100294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/tags?post=100294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}