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 计算:
/api/kpicalculation/v3/computekpi
示例请求:
/api/kpicalculation/v3/computekpi?from=2017-05-03T23:30:00.000Z&to=2017-05-04T08:30:00.000Z&variableName=kpistatus&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]> | 计划停运的日历(带起始和结束时间) |
输出:
请求示例:
/api/kpicalculation/v3/calculatekpistates?from=2016-12-31T23:30:00.000Z&to=2017-01-01T07:30:00.000Z&variableName=sensor&initialState=RSH&defaultState=FOH&threshold=1.1&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&to=2017-01-01T07:30:00.000Z&variableName=sensor&initialState=RSH&defaultState=FOH&threshold=1.1&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