範例︰技術效率 KPI
此範例會建立名為「技術效率」的新 KPI (ISO_22400)。工作單位的技術效率是實際生產時間 (APT) 與實際生產時間 (APT) 及實際單位延遲時間 (ADET) 之總和之間的關係,包括延遲與因故障導致的中斷。
APT/(APT+ADET)
會將實際的單位延遲時間 (ADET) KPI 元素建立為此範例的一部份。此範例中的編碼範例假設已實行重工比率 KPI。
1. 使用下列屬性建立名為 ACME_CORP.KPI.TechnicalEfficiencyThingShape 的新物形式︰
TechnicalEfficiency_currentValue「基礎類型」=Number
TechnicalEfficiency_lastCalculatedTime「基礎類型」=DateTime
TechnicalEfficiency_unitOfMeasure「基礎類型」= String
請確保已針對這些屬性中的每個屬性選取「持續」核取方塊。
2. ACME_CORP.KPI.TechnicalEfficiencyThingShape 物形式上實行下列服務︰
Get_TechnicalEfficiency_CurrentValue
Get_TechnicalEfficiency_ThresholdValues
Get_TechnicalEfficiency_Trend
TechnicalEfficiency_Calculate
Set_TechnicalEfficiency_CurrentValue
3. 在要針對其計算此 KPI 的每個設備類型的物範本上,取代 GetKPINames 服務以新增 ACME_CORP.KPI.TechnicalEfficiencyThingShape 物形式。例如:
var kpiInfoJSON = new Object();
// JSON of KPI information we want to test if they are implemented on "me"
// For custom KPI, please add into this JSON and following given format
// Warning the order is important
kpiInfoJSON.kpiInfoArray = [
{kpiThingShapeName: 'PTC.SCA.SCO.AvailabilityThingShape', kpiName: 'Availability'},
{kpiThingShapeName: 'PTC.SCA.SCO.QualityRatioThingShape', kpiName: 'QualityRatio'},
{kpiThingShapeName: 'PTC.SCA.SCO.EffectivenessThingShape', kpiName: 'Effectiveness'},
{kpiThingShapeName: 'PTC.SCA.SCO.OEEThingShape', kpiName: 'OEE'},
{kpiThingShapeName: 'ACME_CORP.KPI.ReworkRatioThingShape', kpiName: 'ReworkRatio'},
{kpiThingShapeName: 'ACME_CORP.KPI.TechnicalEfficiencyThingShape', kpiName: 'TechnicalEfficiency'}
];
var result = Things["PTC.SCA.SCO.DefaultKPIManager"].GetImplementedKPIsOnThing({
thingName: me.name,
kpiInfo: kpiInfoJSON
});
4. 宣告技術效率 KPI 的臨界值。在 PTC.SCA.SCO.DefaultKPIManager 項目的「組態」頁面上,新增新的組態表。
a. PTC.SCA.SCO.DefaultKPIManager 項目上新增具有下列值的組態表︰
「表格名稱」TechnicalEfficiencyThresholdValues
「資料形式」PTC.SCA.SCO.KPIThresholdValues
「允許多列」—確保已選取此核取方塊。
b. 將列新增至所需值範圍的 TechnicalEfficiencyThresholdValues 組態表。
5. 定義實際的單位延遲時間 (ADET) KPI 元素。
a. 在名為 actualUnitDelayTime_ADET「基礎類型」Number 且選取「持續」核取方塊的 ACME_CORP.KPI.TechnicalEfficiencyThingShape 物形式上建立內容。
b. 使用下列編碼在命名為 actualUnitDelayTime_ADET_CalculateACME_CORP.KPI.TechnicalEfficiencyThingShape 物形式上建立新服務︰
var adet = me.CalculateTimeElement({
elementName: "ADET", /* STRING */
TimeInfo : TimeInfo
});
me.actualUnitDelayTime_ADET = adet;
var result = adet;
c. 在要針對其計算此 KPI 的每個設備類型的物範本上,取代 GetKPIElementNames 服務。將新內容新增至 KPI 元素清單。例如:
result = "actualProductionTime_APT,goodQuantity_GQ,plannedBusyTime_PBT,plannedRunTimePerItem_PRI,producedQuantity_PQ,reworkQuantity_RQ,actualUnitDelayTime_ADET";
d. 更新在步驟 2 中建立的 TechnicalEfficiency_Calculate 服務,以包括新的實際單位延遲時間 (ADET) KPI 元素。例如:
customLogger = logger.getLoggerContext().getLogger(logger.getName()+".com.ptc.sca.sco.KPICalculation.TechnicalEfficiency");
var technicalEfficiency = 0;
var aptTime = me.actualProductionTime_APT;
var adetTime = me.actualUnitDelayTime_ADET;
customLogger.debug("TechnicalEfficiency_Calculate aptTime:"+aptTime+" adetTime:"+adetTime);
if ( aptTime !== 0){
technicalEfficiency = aptTime / (aptTime+adetTime);
}else{
technicalEfficiency = 1;
}
customLogger.debug("TechnicalEfficiency_Calculate TechnicalEfficiency:"+technicalEfficiency);
me.Set_TechnicalEfficiency_CurrentValue({
value: technicalEfficiency
});
me.TechnicalEfficiency_lastCalculatedTime = Date.now();
var result = technicalEfficiency;
6. 由於實際的單位延遲時間 (ADET) KPI 元素是時間元素,因此請更新對應的狀態定義,以包括 ADET 作為 timeElement 值。當計算指定的 KPI 元素時,會考慮含 timeElement 值的狀態。在此範例中,將 Custom1 狀態設定為具有 ADET,PBTtimeElement 值,以便在計算 ADET 與 PBT 時考慮 Custom1 狀態。
若需進一步資訊,可參閱 設定設備狀態