(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{147:function(e,t,n){"use strict";function o(e){for(var t=arguments,i=1;i<arguments.length;i++)for(var p in arguments[i])e[p]=t[i][p];return e}var r={functional:!0,props:{code:{type:String},inline:{type:Boolean,default:!1},language:{type:String,default:"markup"}},render:function(e,t){var code=t.props.code||(t.children&&t.children.length>0?t.children[0].text:""),n=t.props.inline,r=t.props.language,c=Prism.languages[r],l="language-"+r;return n?e("code",o({},t.data,{class:[t.data.class,l],domProps:o({},t.data.domProps,{innerHTML:Prism.highlight(code,c)})})):e("pre",o({},t.data,{class:[t.data.class,l]}),[e("code",{class:l,domProps:{innerHTML:Prism.highlight(code,c)}})])}};e.exports=r},174:function(e,t,n){},251:function(e,t,n){"use strict";var o=n(174);n.n(o).a},364:function(e,t,n){"use strict";n.r(t);var o=n(147),r={head:function(){return{title:"Specification"}},asyncData:function(e){return{isStatic:e.isStatic}},components:{prism:n.n(o).a}},c=(n(251),n(2)),component=Object(c.a)(r,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"specification"},[n("div",{staticClass:"content"},[e._m(0),e._v(" "),n("h2",[e._v("Rationale")]),e._v(" "),n("p",[e._v("\n      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.\n      ")]),e._v(" "),n("p",[e._v("\n      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.\n      ")]),e._v(" "),n("p",[e._v("\n      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.\n      ")]),e._v(" "),n("p",[e._v("\n      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.\n      ")]),e._v(" "),n("p",[e._v("\n      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.\n      ")]),e._v(" "),n("p",[e._v("\n      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.\n      ")]),e._v(" "),n("h2",[e._v("Validation")]),e._v(" "),n("p",[e._v("\n        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, "),n("a",{attrs:{href:"https://www.jsonschemavalidator.net"}},[e._v("jsonschemavalidator.net")]),e._v(" provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a "),n("code",[e._v("$ref")]),e._v(" in the schema. For example:\n        "),n("prism",{attrs:{language:"json"}},[e._v('{\n  "$ref": "https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"\n}')])],1)]),e._v(" "),n("div",{staticClass:"columns",attrs:{id:"messageDetail"}},[n("div",{staticClass:"column"},[n("nuxt-link",{attrs:{to:"/specification"+(e.isStatic?"#messageDetail":""),exact:""}},[e._v("\n          Overview\n        ")])],1),e._v(" "),n("div",{staticClass:"column"},[n("nuxt-link",{class:{"nuxt-link-active":e.$route.path.endsWith("machine-message")},attrs:{to:"/specification/machine-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          Machine Message\n        ")]),e._v("\n        (v\n        "),n("nuxt-link",{attrs:{to:"/specification/v2/machine-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          2\n        ")]),e._v("\n        /\n        "),n("nuxt-link",{attrs:{to:"/specification/v3/machine-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          3\n         ")]),e._v("\n        )\n      ")],1),e._v(" "),n("div",{staticClass:"column"},[n("nuxt-link",{class:{"nuxt-link-active":e.$route.path.endsWith("measurement-message")},attrs:{to:"/specification/measurement-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          Measurement Message\n        ")]),e._v("\n        (v\n        "),n("nuxt-link",{attrs:{to:"/specification/v2/measurement-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          2\n        ")]),e._v("\n        /\n        "),n("nuxt-link",{attrs:{to:"/specification/v3/measurement-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          3\n        ")]),e._v("\n        )\n      ")],1),e._v(" "),n("div",{staticClass:"column"},[n("nuxt-link",{class:{"nuxt-link-active":e.$route.path.endsWith("process-message")},attrs:{to:"/specification/process-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          Process Message\n        ")]),e._v("\n        (v\n        "),n("nuxt-link",{attrs:{to:"/specification/v2/process-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          2\n        ")]),e._v("\n        /\n        "),n("nuxt-link",{attrs:{to:"/specification/v3/process-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          3\n        ")]),e._v("\n        )\n      ")],1)]),e._v(" "),n("nuxt-child")],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"PPMP-Specification",title:"PPMP Specification"}}),this._v("\n        PPMP Specification\n      ")])}],!1,null,null,null);t.default=component.exports}}]);