(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},362: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 Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? 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 Production Performance Management Protocol 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:"Production Performance Management Protocol Specification"}}),this._v("\n        Production Performance Management Protocol Specification\n      ")])}],!1,null,null,null);t.default=component.exports}}]);