Esempio: KPI efficienza tecnica
In questo esempio viene creato un nuovo indicatore KPI denominato efficienza tecnica (ISO_22400). L'efficienza tecnica di un'unità di lavorazione è la relazione tra il tempo effettivo di produzione (APT) e la somma del tempo effettivo di produzione (APT) e del tempo effettivo di ritardo dell'unità (ADET), compresi i ritardi e le interruzioni causate da malfunzionamento.
APT/(APT+ADET)
L'elemento KPI tempo effettivo di ritardo dell'unità (ADET) viene creato in questo esempio. Gli esempi di codice in questo esempio presuppongono che l'indicatore KPI rapporto di rilavorazione sia già stato implementato.
1. Creare una nuova thing shape ACME_CORP.KPI.TechnicalEfficiencyThingShape con le proprietà seguenti:
TechnicalEfficiency_currentValue, con Tipo di base=Number
TechnicalEfficiency_lastCalculatedTime, con Tipo di base=DateTime
TechnicalEfficiency_unitOfMeasure, con Tipo di base=String
Assicurarsi che la casella di controllo Persistente sia selezionata per ciascuna di queste proprietà.
2. Implementare i seguenti servizi nella thing shape ACME_CORP.KPI.TechnicalEfficiencyThingShape:
Get_TechnicalEfficiency_CurrentValue
Get_TechnicalEfficiency_ThresholdValues
Get_TechnicalEfficiency_Trend
TechnicalEfficiency_Calculate
Set_TechnicalEfficiency_CurrentValue
3. Nel modello di oggetto di ciascun tipo di impianto per cui deve essere calcolato l'indicatore KPI, sostituire il servizio GetKPINames per aggiungere la thing shape ACME_CORP.KPI.TechnicalEfficiencyThingShape. Ad esempio:
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. Dichiarare le soglie per l'indicatore KPI efficienza tecnica. Nella pagina Configurazione dell'oggetto PTC.SCA.SCO.DefaultKPIManager, aggiungere una nuova tabella di configurazione.
a. Nell'oggetto PTC.SCA.SCO.DefaultKPIManager, aggiungere una tabella di configurazione con i valori seguenti:
Nome tabella - TechnicalEfficiencyThresholdValues
Data shape - PTC.SCA.SCO.KPIThresholdValues
Consenti più righe - Assicurarsi che questa casella di controllo sia selezionata.
b. Aggiungere righe alla tabella di configurazione TechnicalEfficiencyThresholdValues per gli intervalli di valori desiderati.
5. Definire l'elemento KPI tempo effettivo di ritardo dell'unità (ADET).
a. Creare una proprietà actualUnitDelayTime_ADET nella thing shape ACME_CORP.KPI.TechnicalEfficiencyThingShape, con Number come Tipo di base e con la casella di controllo Persistente selezionata.
b. Creare un nuovo servizio actualUnitDelayTime_ADET_Calculate nella thing shape ACME_CORP.KPI.TechnicalEfficiencyThingShape con il codice seguente:
var adet = me.CalculateTimeElement({
elementName: "ADET", /* STRING */
TimeInfo : TimeInfo
});
me.actualUnitDelayTime_ADET = adet;
var result = adet;
c. Nel modello di oggetto di ciascun tipo di impianto per cui deve essere calcolato questo indicatore KPI, sostituire il servizio GetKPIElementNames. Aggiungere la nuova proprietà all'elenco degli elementi KPI. Ad esempio:
result = "actualProductionTime_APT,goodQuantity_GQ,plannedBusyTime_PBT,plannedRunTimePerItem_PRI,producedQuantity_PQ,reworkQuantity_RQ,actualUnitDelayTime_ADET";
d. Aggiornare il servizio TechnicalEfficiency_Calculate creato al passo 2 per includere il nuovo elemento KPI tempo effettivo di ritardo dell'unità (ADET). Ad esempio:
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. Poiché l'elemento KPI tempo effettivo di ritardo dell'unità (ADET) è un elemento temporale, aggiornare le definizioni di stato appropriate per includere ADET come valore timeElement. Si tengono in considerazione gli stati con valori timeElement quando vengono calcolati gli elementi KPI specificati. Per questo esempio, configurare lo stato Custom1 in modo che abbia un valore timeElement di ADET,PBT. In questo modo, si tiene conto dello stato Custom1 durante il calcolo di ADET e PBT.
Per ulteriori informazioni, vedere Configurazione degli stati dell'impianto.