Ejemplo: KPI Eficacia técnica
En este ejemplo se crea un nuevo KPI llamado Eficacia técnica (ISO_22400). La eficacia técnica de una unidad de trabajo es la relación entre el tiempo de producción real (APT) y la suma del tiempo de producción real (APT) y el tiempo real de demora de la unidad (ADET), incluidas las demoras y las interrupciones causadas por fallos.
APT/(APT+ADET)
El elemento KPI de tiempo real de demora de la unidad (ADET) se crea como parte de este ejemplo. En los extractos de código de este ejemplo, se asume que ya se ha implementado el KPI Índice de retrabajo.
1. Cree una nueva definición de cosa denominada ACME_CORP.KPI.TechnicalEfficiencyThingShape con las propiedades siguientes:
TechnicalEfficiency_currentValue, con Tipo base=Number
TechnicalEfficiency_lastCalculatedTime, con Tipo base=DateTime
TechnicalEfficiency_unitOfMeasure, con Tipo base= String
Asegúrese de que la casilla Persistente esté seleccionada para cada una de estas propiedades.
2. Implemente los siguientes servicios en la definición de cosa ACME_CORP.KPI.TechnicalEfficiencyThingShape:
Get_TechnicalEfficiency_CurrentValue
Get_TechnicalEfficiency_ThresholdValues
Get_TechnicalEfficiency_Trend
TechnicalEfficiency_Calculate
Set_TechnicalEfficiency_CurrentValue
3. En la plantilla de cosa de cada tipo de equipo para el que se debe calcular este KPI, sustituya el servicio GetKPINames para añadir la definición de cosa ACME_CORP.KPI.TechnicalEfficiencyThingShape. Por ejemplo:
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. Declare los umbrales para el KPI Eficacia técnica. En la página Configuración de la cosa PTC.SCA.SCO.DefaultKPIManager, añada una nueva tabla de configuración.
a. En la cosa PTC.SCA.SCO.DefaultKPIManager, añada una tabla de configuración con los valores siguientes:
Nombre de la tabla:TechnicalEfficiencyThresholdValues
Definición de datos:PTC.SCA.SCO.KPIThresholdValues
Permitir varias filas: asegúrese de que esta casilla esté marcada.
b. Añada filas a la tabla de configuración TechnicalEfficiencyThresholdValues para los rangos de valores deseados.
5. Defina el elemento de KPI de tiempo real de demora de la unidad (ADET).
a. Cree una propiedad en la definición de cosa ACME_CORP.KPI.TechnicalEfficiencyThingShape llamada actualUnitDelayTime_ADET, con un valor de Tipo base de Number, y la casilla Persistente seleccionada.
b. Cree un nuevo servicio en la definición de cosa ACME_CORP.KPI.TechnicalEfficiencyThingShape llamado actualUnitDelayTime_ADET_Calculate con el código siguiente:
var adet = me.CalculateTimeElement({
elementName: "ADET", /* STRING */
TimeInfo : TimeInfo
});
me.actualUnitDelayTime_ADET = adet;
var result = adet;
c. En la plantilla de cosa de cada tipo de equipo para el que se debe calcular este KPI, sustituya el servicio GetKPIElementNames. Añada la nueva propiedad a la lista de elementos de KPI. Por ejemplo:
result = "actualProductionTime_APT,goodQuantity_GQ,plannedBusyTime_PBT,plannedRunTimePerItem_PRI,producedQuantity_PQ,reworkQuantity_RQ,actualUnitDelayTime_ADET";
d. Actualice el servicio TechnicalEfficiency_Calculate creado en el paso 2 para incluir el nuevo elemento de KPI de tiempo real de demora de la unidad (ADET). Por ejemplo:
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. Puesto que el elemento de KPI de tiempo real de demora de la unidad (ADET) es un elemento de tiempo, actualice las definiciones de estado correspondientes para incluir ADET como valor de timeElement. Los estados con valores de timeElement se tienen en cuenta cuando se calculan los elementos de KPI especificados. Para este ejemplo, configure el estado de Custom1 para que tenga un valor de timeElement de ADET,PBT, de forma que el estado de Custom1 se tenga en cuenta cuando se calculan los valores de ADET y PBT.
Para obtener más información, consulte Personalización del estado de los equipos.