blob: df71deb6e2a3f1361ab7387decab78815ec35cf3 [file] [log] [blame]
<!doctype html>
<html data-n-head-ssr data-n-head="">
<head data-n-head="">
<title data-n-head="true">Eclipse unide - Specification for measurement messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/a2e27af4b290334c2591.css">
</head>
<body data-n-head="">
<div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
Home
</a> <a href="/unide/proposal" class="navbar-item">
Proposal
</a> <a href="/unide/specification" class="navbar-item is-active">
Specification
</a> <a href="/unide/blog" class="navbar-item">
Blog Archives
</a> <a href="/unide/faq" class="navbar-item">
FAQ
</a></div></div> <div class="navbar-brand"><div class="navbar-burger burger"><span></span> <span></span> <span></span></div> <a href="/unide/" class="navbar-item nuxt-link-active"><img src="logo.svg"></a></div></nav></div></header> <div class="container"><div class="header clearfix"></div> <div class="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
PPMP Specification
</h1> <h2>Rationale</h2> <p>
Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
</p> <p>
Production facilities and their performance have a huge impact on the overall performance of manufacturing processes. However, to identify bottlenecks and possibilities for improvements detailed data from machines are required.
</p> <p>
Such data is surely provided by machines either via modern protocols such as OPC UA or via proprietary access methods but it is not provided in a common and easily accessible format, which can be used to do performance analysis and optimization. This renders holistic process improvement efforts infeasible for many, especially smaller organizations.
</p> <p>
The Production Performance Management Protocol (PPMP) specifies a format that allows to capture data that is required to do performance analysis of production facilities. It allows monitoring backends to collect and evaluate key metrics of machines in the context of a production process. It is doing that by allowing to relate the machine status with currently produced parts.
</p> <p>
The specification is structured into three payload formats: Measurement payload, message payload and process payload. The Measurement payload contains measurements from machines such as the temperature of a machine at a specific point in time together with the currently produced part. The message payload contains arbitrary messages sent by a machine, e.g. alerts or the like. A process message consists of information about a discrete e.g. tightening or welding process with all their characterizing data, which are needed to describe and analyze it.
</p> <p>
The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
</p> <article class="message is-warning is-size-7"><div class="message-body">
Version 3 is still marked with a star (*), because it is not finally released with server and binding implementations and might be subject to minor fixes (addressed via <a href="https://github.com/eclipse/unide/issues">github</a>)
</div></article></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
Overview
</a></div> <div class="column"><a href="/unide/specification/machine-message#messageDetail">
Machine Message
</a>
(v
<a href="/unide/specification/v2/machine-message#messageDetail">
2
</a>
/
<a href="/unide/specification/v3/machine-message#messageDetail">
3*
</a>
)
</div> <div class="column"><a href="/unide/specification/measurement-message#messageDetail" class="nuxt-link-active">
Measurement Message
</a>
(v
<a href="/unide/specification/v2/measurement-message#messageDetail">
2
</a>
/
<a href="/unide/specification/v3/measurement-message#messageDetail">
3*
</a>
)
</div> <div class="column"><a href="/unide/specification/process-message#messageDetail">
Process Message
</a>
(v
<a href="/unide/specification/v2/process-message#messageDetail">
2
</a>
/
<a href="/unide/specification/v3/process-message#messageDetail">
3*
</a>
)
</div></div> <div class="measurement-message content"><h1><a id="Measurement-Payload" title="Measurement Payload"></a>
Measurement Payload
</h1> <p>The measurement message is the format to exchange simple (non-structured, non-complex ) measurement data. It also allows to transport multiple measurement data (eg. values over time), called 'series'.</p> <img src="images/specification/v2/measurementPayload.svg" alt="Class diagram of the measurement payload" title="Class diagram of the measurement payload" class="is-centered"> <div id="schema-detail" class="schemaDetail is-loading"><div class="accordion"><!----> <div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
Minimal message example
</p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
<span class="token property">"content-spec"</span><span class="token operator">:</span> <span class="token string">"urn:spec://eclipse.org/unide/measurement-message#v2"</span><span class="token punctuation">,</span>
<span class="token property">"device"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"deviceID"</span><span class="token operator">:</span> <span class="token string">"a4927dad-58d4-4580-b460-79cefd56775b"</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token property">"measurements"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token punctuation">{</span>
<span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-05-20T10:00:59.353Z"</span><span class="token punctuation">,</span>
<span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"$_time"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token number">0</span><span class="token punctuation">,</span>
<span class="token number">23</span><span class="token punctuation">,</span>
<span class="token number">24</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">"temperature"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token number">45.4231</span><span class="token punctuation">,</span>
<span class="token number">46.4222</span><span class="token punctuation">,</span>
<span class="token number">44.2432</span>
<span class="token punctuation">]</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">]</span>
<span class="token punctuation">}</span></code></pre></div></div></div> <div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
Multiple message example
</p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
<span class="token property">"content-spec"</span><span class="token operator">:</span> <span class="token string">"urn:spec://eclipse.org/unide/measurement-message#v2"</span><span class="token punctuation">,</span>
<span class="token property">"device"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"deviceID"</span><span class="token operator">:</span> <span class="token string">"a4927dad-58d4-4580-b460-79cefd56775b"</span><span class="token punctuation">,</span>
<span class="token property">"operationalStatus"</span><span class="token operator">:</span> <span class="token string">"MM"</span><span class="token punctuation">,</span>
<span class="token property">"metaData"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"swVersion"</span><span class="token operator">:</span> <span class="token string">"2.0.3.13"</span><span class="token punctuation">,</span>
<span class="token property">"swBuildID"</span><span class="token operator">:</span> <span class="token string">"41535"</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token property">"part"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"partTypeID"</span><span class="token operator">:</span> <span class="token string">"F00VH07328"</span><span class="token punctuation">,</span>
<span class="token property">"partID"</span><span class="token operator">:</span> <span class="token string">"420003844"</span><span class="token punctuation">,</span>
<span class="token property">"result"</span><span class="token operator">:</span> <span class="token string">"OK"</span><span class="token punctuation">,</span>
<span class="token property">"code"</span><span class="token operator">:</span> <span class="token string">"HUH289"</span><span class="token punctuation">,</span>
<span class="token property">"metaData"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"lotID"</span><span class="token operator">:</span> <span class="token string">"845849"</span><span class="token punctuation">,</span>
<span class="token property">"toolID"</span><span class="token operator">:</span> <span class="token string">"32324-432143"</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token property">"measurements"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token punctuation">{</span>
<span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-05-20T10:00:59.353Z"</span><span class="token punctuation">,</span>
<span class="token property">"code"</span><span class="token operator">:</span> <span class="token string">"190ABT"</span><span class="token punctuation">,</span>
<span class="token property">"result"</span><span class="token operator">:</span> <span class="token string">"OK"</span><span class="token punctuation">,</span>
<span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"$_time"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token number">0</span><span class="token punctuation">,</span>
<span class="token number">23</span><span class="token punctuation">,</span>
<span class="token number">24</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">"temperature"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token number">45.4231</span><span class="token punctuation">,</span>
<span class="token number">46.4222</span><span class="token punctuation">,</span>
<span class="token number">44.2432</span>
<span class="token punctuation">]</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token property">"limits"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"temperature"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"lowerError"</span><span class="token operator">:</span> <span class="token number">40</span><span class="token punctuation">,</span>
<span class="token property">"lowerWarn"</span><span class="token operator">:</span> <span class="token number">45</span><span class="token punctuation">,</span>
<span class="token property">"upperError"</span><span class="token operator">:</span> <span class="token number">50</span><span class="token punctuation">,</span>
<span class="token property">"upperWarn"</span><span class="token operator">:</span> <span class="token number">47.5</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span>
<span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-05-20T10:00:54.353Z"</span><span class="token punctuation">,</span>
<span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"$_time"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token number">0</span><span class="token punctuation">,</span>
<span class="token number">130</span><span class="token punctuation">,</span>
<span class="token number">2633</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">"pressure"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token number">52.4</span><span class="token punctuation">,</span>
<span class="token number">46.32</span><span class="token punctuation">,</span>
<span class="token number">44.2432</span>
<span class="token punctuation">]</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">]</span>
<span class="token punctuation">}</span></code></pre></div></div></div></div> <h1><a id="v2/measurement-schema-detail" title="v2/measurement Fields definition"></a>
Fields definition
</h1> </div></div></div></div> <footer class="footer"><div class="container"><div class="columns is-mobile is-multiline is-centered"><div class="column is-narrow"><a href="http://www.eclipse.org">Eclipse Foundation</a></div> <div class="column is-narrow"><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></div> <div class="column is-narrow"><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></div> <div class="column is-narrow"><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></div> <div class="column is-narrow"><a href="https://eclipse.org/security/">Security reports</a></div> <div class="column is-narrow"><a href="http://www.eclipse.org/legal/">Legal</a></div></div></div></footer></div></div></div><script>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/c90543b978064b5f2c13.js" defer></script><script src="/unide/files/f33c85efb667140a6849.js" defer></script><script src="/unide/files/5192bd18be1ea2d9d0a7.js" defer></script><script src="/unide/files/f19773743ef6c42ef1a3.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/77dcc0254c88ffffb5bd.js" defer></script>
</body>
</html>