Skip to content

KPI Calculation Service - 示例

计算 KPI

本示例介绍计算常用 KPI 的一般步骤。输入是标有以下五个状态 KPI 的事件序列:

  • NoData(或 Unknown)- 无数据小时
  • SH - 服务小时
  • RSH - 备用停机小时
  • POH - 计划停运小时
  • FOH - 强制停运小时

这些事件将时间线划分为非重叠的时间间隔,每个间隔分配有准确的小时 KPI 标记。该属性允许对以下输入和输出进行简单的计算操作:

输入参数 描述
<From-Date,To-Date> 相关时间段
initialState 初始状态 {NoData, SH, RSH, POH, FOH}
<Timestamp[i],StateKPI[i]> 事件序列,其中每个 StateKPI[i] 均源自 {Unknown, SH, RSH, POH, FOH}

输出:

KPI Computation Procedure

使用以下端点进行 KPI 计算:

/api/kpicalculation/v3/computekpi

示例请求:

/api/kpicalculation/v3/computekpi?from=2017-05-03T23:30:00.000Z&amp;to=2017-05-04T08:30:00.000Z&amp;variableName=kpistatus&amp;initialState=RSH
请求正文
[
    {
        "_time":"2017-05-04T00:00:00.000Z"
    },
    {
        "_time":"2017-05-04T00:30:00.000Z"
    },
    {
        "_time":"2017-05-04T01:00:00.000Z",
        "kpistatus":"UNKNOWN"
    },
    {
        "_time":"2017-05-04T01:30:00.000Z",
        "kpistatus":"UNKNOWN"
    },
    {
        "_time":"2017-05-04T02:00:00.000Z",
        "kpistatus":"UNKNOWN"
    },
    {
        "_time":"2017-05-04T02:30:00.000Z",
        "kpistatus":"SH"
    },
    {
        "_time":"2017-05-04T03:00:00.000Z",
        "kpistatus":"SH"
    },
    {
        "_time":"2017-05-04T03:30:00.000Z",
        "kpistatus":"POH"
    },
    {
        "_time":"2017-05-04T04:00:00.000Z",
        "kpistatus":"SH"
    },
    {
        "_time":"2017-05-04T04:30:00.000Z",
        "kpistatus":"SH"
    },
    {
        "_time":"2017-05-04T05:00:00.000Z",
        "kpistatus":"POH"
    },
    {
        "_time":"2017-05-04T05:30:00.000Z"
    },
    {
        "_time":"2017-05-04T06:00:00.000Z"
    },
    {
        "_time":"2017-05-04T06:30:00.000Z",
        "kpistatus":"UNKNOWN"
    },
    {
        "_time":"2017-05-04T07:00:00.000Z",
        "kpistatus":"FOH"
    },
    {
        "_time":"2017-05-04T07:30:00.000Z",
        "kpistatus":"FOH"
    },
    {
        "_time":"2017-05-04T08:00:00.000Z",
        "kpistatus":"POH"
    }
]

示例响应:

响应
{
    "unknownHours": 2,
    "periodHours": 9,
    "availableHours": 3.5,
    "serviceHours": 2,
    "reserveShutdownHours": 1.5,
    "unavailableHours": 3.5,
    "forcedOutageHours": 1,
    "plannedOutageHours": 2.5,
    "availabilityFactor": 50,
    "unavailabilityFactor": 50,
    "reliabilityFactor": 85.71428571428571,
    "serviceFactor": 28.57142857142857,
    "forcedOutageFactor": 14.285714285714285,
    "meanTimeBetweenFailures": 1
}

根据传感器和日历数据确定单元状态

本示例介绍确定带速度传感器和维护日历的电机状态的一般步骤。以下是自动进行 KPI 计算的必要输入。

带速度传感器和维护日历的电机

要确定状态 KPI 的状态,必须满足特定条件。该属性允许对以下输入和输出进行计算操作:

输入参数 描述
<From-Date,To-Date> 相关时间段
initialState 初始状态 {Unknown, SH, RSH, POH, FOH}
defaultState 默认状态 {RSH, FOH},无传感器和日历数据可用时使用
R[i] = <Timestamp[i],S[i]> 传感器序列读数,其中每个 S[i] 是一个实数。
SIT 服务指示阈值
PO[m] = <Start-Date[m],End-Date[m]> 计划停运的日历(带起始和结束时间)

输出:

KPI State Calculation

请求示例:

/api/kpicalculation/v3/calculatekpistates?from=2016-12-31T23:30:00.000Z&amp;to=2017-01-01T07:30:00.000Z&amp;variableName=sensor&amp;initialState=RSH&amp;defaultState=FOH&amp;threshold=1.1&amp;shutdownCorrelationThreshold=5000
请求正文
{
"calendar": {
    "PlannedOutage": [
      {
        "from": "2017-01-01T10:00:00.000Z",
        "to": "2017-01-01T11:00:00.000Z"
      },
      {
        "from": "2017-01-01T06:00:00.000Z",
        "to": "2017-01-01T07:00:00.000Z"
      },
      {
        "from": "2017-01-01T00:00:00.000Z",
        "to": "2017-01-01T01:00:00.000Z"
      },
      {
        "from": "2017-01-01T04:00:00.000Z",
        "to": "2017-01-01T05:00:00.000Z"
      },
      {
        "from": "2017-01-01T02:00:00.000Z",
        "to": "2017-01-01T03:00:00.000Z"
      },
      {
        "from": "2017-01-01T08:00:00.000Z",
        "to": "2017-01-01T09:00:00.000Z"
      },
      {
        "from": "2016-12-31T22:00:00.000Z",
        "to": "2016-12-31T23:00:00.000Z"
      },
      {
        "from": "2017-01-01T03:00:00.000Z",
        "to": "2017-01-01T04:00:00.000Z"
      }
    ]
  },
  "timeseries": [
    {
      "_time": "2017-01-01T00:10:00.000Z",
      "sensor": "2.0",
      "sensor1": "2.0"
    },
    {
      "_time": "2017-01-01T00:50:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T01:00:00.000Z",
      "sensor": "2.0"
    },
    {
      "_time": "2017-01-01T01:30:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T02:00:00.000Z",
      "sensor": "2.0"
    },
    {
      "_time": "2017-01-01T03:00:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T03:30:00.000Z",
      "sensor": "2.0"
    },
    {
      "_time": "2017-01-01T04:30:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T05:10:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T05:30:00.000Z",
      "sensor1": "1.0"
    },
    {
      "_time": "2017-01-01T05:50:00.000Z",
      "sensor": "2.0"
    },
    {
      "_time": "2017-01-01T06:30:00.000Z",
      "sensor2": "3.0"
    },
    {
      "_time": "2017-01-01T07:10:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T07:20:00.000Z",
      "sensor": "2.0"
    }
  ]
}
响应
{
    "indications": [
        {
            "timestamp": "2016-12-31T23:30:00Z",
            "status": "RSH",
            "source": "DEFAULT"
        },
        {
            "timestamp": "2017-01-01T00:00:00Z",
            "status": "POH",
            "source": "CALENDAR"
        },
        {
            "timestamp": "2017-01-01T01:00:00Z",
            "status": "SH",
            "source": "SIGNAL"
        },
        {
            "timestamp": "2017-01-01T01:30:00Z",
            "status": "FOH",
            "source": "DEFAULT"
        },
        {
            "timestamp": "2017-01-01T02:00:00Z",
            "status": "POH",
            "source": "CALENDAR"
        },
        {
            "timestamp": "2017-01-01T03:00:00Z",
            "status": "POH",
            "source": "CALENDAR"
        },
        {
            "timestamp": "2017-01-01T04:00:00Z",
            "status": "POH",
            "source": "CALENDAR"
        },
        {
            "timestamp": "2017-01-01T05:00:00Z",
            "status": "FOH",
            "source": "DEFAULT"
        },
        {
            "timestamp": "2017-01-01T05:10:00Z",
            "status": "FOH",
            "source": "DEFAULT"
        },
        {
            "timestamp": "2017-01-01T05:30:00Z",
            "status": "FOH",
            "source": "DEFAULT"
        },
        {
            "timestamp": "2017-01-01T05:50:00Z",
            "status": "SH",
            "source": "SIGNAL"
        },
        {
            "timestamp": "2017-01-01T06:00:00Z",
            "status": "POH",
            "source": "CALENDAR"
        },
        {
            "timestamp": "2017-01-01T07:00:00Z",
            "status": "SH",
            "source": "SIGNAL"
        },
        {
            "timestamp": "2017-01-01T07:10:00Z",
            "status": "FOH",
            "source": "DEFAULT"
        },
        {
            "timestamp": "2017-01-01T07:20:00Z",
            "status": "SH",
            "source": "SIGNAL"
        },
        {
            "timestamp": "2017-01-01T07:30:00Z",
            "status": "SH",
            "source": "SIGNAL"
        }
    ]
}

根据传感器、控制单元和日历数据确定单元状态

本示例介绍确定带压力传感器、压缩机控制单元事件和维护日历的压缩机状态 的一般步骤。

带压力传感器、控制单元事件和维护日历的压缩机

要确定状态 KPI 的状态,必须满足特定条件。该属性允许对以下输入和输出进行计算操作:

输入参数 描述
<From-Date,To-Date> 相关时间段
initialState 初始状态 {Unknown, SH, RSH, POH, FOH}
defaultState 默认状态 {RSH, FOH},无传感器、控制单元和日历数据可用时使用
R[i] = <Timestamp[i],S[i]> 传感器读数序列,其中 S[i] 是一个实数。
SIT 服务指示阈值
E[k]=<Timestamp[k], L[k]> 带标记的事件序列,其中 L[k] 来自 {NormalStop, Shutdown}
SCT 停机相关阈值
PO[m] = <Start-Date[m],End-Date[m]> 计划停运的日历(带起始和结束时间)

输出:

请求示例:

{HOST}/calculatekpistates?from=2016-12-31T23:30:00.000Z&amp;to=2017-01-01T07:30:00.000Z&amp;variableName=sensor&amp;initialState=RSH&amp;defaultState=FOH&amp;threshold=1.1&amp;shutdownCorrelationThreshold=5000
请求正文
{
  "ControlSystemEvents": [
    {
      "_time": "2017-01-01T01:29:57.000Z",
      "type": "NORMAL_STOP"
    },
    {
      "_time": "2017-01-01T01:30:00.000Z",
      "type": "SHUTDOWN"
    },
    {
      "_time": "2017-01-01T04:30:01.000Z",
      "type": "SHUTDOWN"
    }
  ],
  "calendar": {
    "PlannedOutage": [
      {
        "from": "2017-01-01T10:00:00.000Z",
        "to": "2017-01-01T11:00:00.000Z"
      },
      {
        "from": "2017-01-01T06:00:00.000Z",
        "to": "2017-01-01T07:00:00.000Z"
      },
      {
        "from": "2017-01-01T00:00:00.000Z",
        "to": "2017-01-01T01:00:00.000Z"
      },
      {
        "from": "2017-01-01T04:00:00.000Z",
        "to": "2017-01-01T05:00:00.000Z"
      },
      {
        "from": "2017-01-01T02:00:00.000Z",
        "to": "2017-01-01T03:00:00.000Z"
      },
      {
        "from": "2017-01-01T08:00:00.000Z",
        "to": "2017-01-01T09:00:00.000Z"
      },
      {
        "from": "2016-12-31T22:00:00.000Z",
        "to": "2016-12-31T23:00:00.000Z"
      },
      {
        "from": "2017-01-01T03:00:00.000Z",
        "to": "2017-01-01T04:00:00.000Z"
      }
    ]
  },
  "timeseries": [
    {
      "_time": "2017-01-01T00:10:00.000Z",
      "sensor": "2.0",
      "sensor1": "2.0"
    },
    {
      "_time": "2017-01-01T00:50:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T01:00:00.000Z",
      "sensor": "2.0"
    },
    {
      "_time": "2017-01-01T01:30:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T02:00:00.000Z",
      "sensor": "2.0"
    },
    {
      "_time": "2017-01-01T03:00:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T03:30:00.000Z",
      "sensor": "2.0"
    },
    {
      "_time": "2017-01-01T04:30:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T05:10:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T05:30:00.000Z",
      "sensor1": "1.0"
    },
    {
      "_time": "2017-01-01T05:50:00.000Z",
      "sensor": "2.0"
    },
    {
      "_time": "2017-01-01T06:30:00.000Z",
      "sensor2": "3.0"
    },
    {
      "_time": "2017-01-01T07:10:00.000Z",
      "sensor": "1.0"
    },
    {
      "_time": "2017-01-01T07:20:00.000Z",
      "sensor": "2.0"
    }
  ]
}
响应
{
    "indications": [
        {
            "timestamp": "2016-12-31T23:30:00Z",
            "status": "RSH",
            "source": "DEFAULT"
        },
        {
            "timestamp": "2017-01-01T00:00:00Z",
            "status": "POH",
            "source": "CALENDAR"
        },
        {
            "timestamp": "2017-01-01T01:00:00Z",
            "status": "SH",
            "source": "SIGNAL"
        },
        {
            "timestamp": "2017-01-01T01:30:00Z",
            "status": "RSH",
            "source": "NORMAL_STOP"
        },
        {
            "timestamp": "2017-01-01T02:00:00Z",
            "status": "POH",
            "source": "CALENDAR"
        },
        {
            "timestamp": "2017-01-01T03:00:00Z",
            "status": "POH",
            "source": "CALENDAR"
        },
        {
            "timestamp": "2017-01-01T04:00:00Z",
            "status": "POH",
            "source": "CALENDAR"
        },
        {
            "timestamp": "2017-01-01T05:00:00Z",
            "status": "FOH",
            "source": "SHUTDOWN"
        },
        {
            "timestamp": "2017-01-01T05:10:00Z",
            "status": "FOH",
            "source": "DEFAULT"
        },
        {
            "timestamp": "2017-01-01T05:30:00Z",
            "status": "FOH",
            "source": "DEFAULT"
        },
        {
            "timestamp": "2017-01-01T05:50:00Z",
            "status": "SH",
            "source": "SIGNAL"
        },
        {
            "timestamp": "2017-01-01T06:00:00Z",
            "status": "POH",
            "source": "CALENDAR"
        },
        {
            "timestamp": "2017-01-01T07:00:00Z",
            "status": "SH",
            "source": "SIGNAL"
        },
        {
            "timestamp": "2017-01-01T07:10:00Z",
            "status": "FOH",
            "source": "DEFAULT"
        },
        {
            "timestamp": "2017-01-01T07:20:00Z",
            "status": "SH",
            "source": "SIGNAL"
        },
        {
            "timestamp": "2017-01-01T07:30:00Z",
            "status": "SH",
            "source": "SIGNAL"
        }
    ]
}

Last update: July 11, 2019