FB_ALY_ProductivityDiagnosis_3Ch

Der Algorithmus Productivity Diagnosis 3Ch berechnet die Produktivität des Prozesses während eines Produktionsintervalls. Die folgende Abbildung illustriert schematisch den Zusammenhang zwischen dem Produktionsprozess und den einzelnen Produktionszyklen.

FB_ALY_ProductivityDiagnosis_3Ch 1:

Das Produktionsintervall kann durch den Eingang Is Producing gestartet und gestoppt werden. Während der Ausführung des Produktionsintervalls werden die Produktionszyklen gezählt. Jeder Produktionszyklus entspricht einem produzierten Teil. Ein Produktionszyklus wird mit einer Flanke an Start Cycle gestartet und mit einer Flanke an Stop Cycle gestoppt. Die Produktivität über gesamte Produktionsintervall (Productivity) wird nach dem Stoppen des Intervalls, wenn das Signal Is Producing die Bedingung für Threshold Level Producing nicht mehr erfüllt, berechnet. Hierbei werden die vollständigen Produktionszyklen und demnach alle fertig gestellten Teile berücksichtigt. Die Produktivität ergibt sich als das Verhältnis der tatsächlich produzierten Teile pro Zeit und des Sollwerts der in einer bestimmten Zeit zu produzierenden Teile. Der Ausgang Productivity Last Cycle errechnet sich aus der für den letzten Produktionszyklus benötigten Zeit bezogen auf die konfigurierte Zeit für ein Teil. Eventuelle Pausenzeiten zwischen den Zyklen werden dabei nicht berücksichtigt. Der Ausgang Expected Productivity schätzt die Gesamtproduktivität während des Produktionsintervalls. Dafür erfolgt eine Hochrechnung der bisherigen Produktionszeit auf die Gesamtproduktivität für den Sollwert der zu produzierenden Teile. Der Algorithmus kann mit dem Sollwert der produzierten Teile (Produced Pieces) innerhalb eines konfigurierten Intervalls (Production Time) konfiguriert werden, z. B. 1 Teil in 30 Sekunden oder 50 Teile pro Stunde.

Syntax

Definition:

FUNCTION_BLOCK FB_ALY_ProductivityDiagnosis_3Ch
VAR_OUTPUT
    ipResultMessage: Tc3_EventLogger.I_TcMessage;
    bError: BOOL;
    bNewResult: BOOL;
    bConfigured: BOOL;
    bProducing: BOOL;
    bCycleFinished: BOOL;
    fProductivity: LREAL;
    fProductivityLastCycle: LREAL;
    fExpectedProductivity: LREAL;
    fbElapsedTime: FB_ALY_Timespan;
    nProductionCycles: ULINT;
END_VAR

FB_ALY_ProductivityDiagnosis_3Ch 2: Ausgänge

Name

Typ

Beschreibung

ipResultMessage

I_TcMessage

Beinhaltet nähere Informationen zum aktuellen Rückgabewert. Für diesen speziellen Schnittstellenzeiger ist intern sichergestellt, dass er immer gültig/zugewiesen ist.

bError

BOOL

Der Ausgang ist TRUE, wenn ein Fehler auftritt.

bNewResult

BOOL

Wenn ein neues Ergebnis berechnet wurde, ist der Ausgang TRUE.

bConfigured

BOOL

Zeigt TRUE an, wenn der Baustein erfolgreich konfiguriert ist.

bProducing

BOOL

Gibt an, dass das Produktionsintervall aktiv ist.

bCycleFinished

BOOL

TRUE, wenn ein Produktionszyklus abgeschlossen worden ist, ansonsten FALSE.

fProductivity

LREAL

Produktivität des gesamten Produktionsintervalls in Prozent.

fProductivityLastCycle

LREAL

Produktivität des letzten Produktionszyklus in Prozent.

fExpectedProductivity

LREAL

Schätzt die Produktivität des Produktionsintervalls. Angabe in Prozent.

fbElapsedTime

FB_ALY_Timespan

Zeitspanne seit dem Start des Produktionsintervalls.

nProductionCycles

ULINT

Anzahl der vollständigen Produktionszyklen im aktuellen Produktionsintervall.

FB_ALY_ProductivityDiagnosis_3Ch 3: Methoden

Name

Definitionsort

Beschreibung

Call()

Local

Methode zur Berechnung der Ausgänge für eine bestimmte Konfiguration.

Configure()

Local

Allgemeine Konfiguration des Algorithmus mit seinen parametrisierten Bedingungen.

ConfigureChannel()

Local

Kanalspezifische Konfiguration für den jeweiligen Algorithmus.

Reset()

Local

Setzt alle internen Zustände oder die bisher durchgeführten Berechnungen zurück.

SetChannelValue()

Local

Methode zur Übergabe von Werten an den Algorithmus.

FB_ALY_ProductivityDiagnosis_3Ch 4: Eigenschaften

Name

Typ

Zugriff

Definitionsort

Initialwert

Beschreibung

fTolerance

LREAL

Get, Set

Lokal

0.0

Toleranzwert für die Vergleiche Equal / NotEqual

Beispiel

VAR
    fbProductivityDiagnosis : FB_ALY_ProductivityDiagnosis_3Ch;
    fbSystemTime : FB_ALY_GetSystemTime;
    stThresholdIsProducing : ST_ALY_Threshold;
    stThresholdStartCycle : ST_ALY_Threshold;
    stThresholdStopCycle : ST_ALY_Threshold;    
    nNumProducedPieces : ULINT := 40;
    tProductionTime : LTIME := LTIME#1H;
    bConfigure : BOOL := TRUE;
    bIsProducing : BOOL;
    bStartProductionCycle : BOOL;
    bStopProductionCycle : BOOL;
END_VAR
// Configure algorithm
IF bConfigure THEN
    bConfigure := FALSE;
    
    stThresholdIsProducing.eComparisonOperator := E_ALY_ComparisonOperator.Equals; 
    stThresholdIsProducing.fThreshold := 1;
    stThresholdStartCycle.eComparisonOperator := E_ALY_ComparisonOperator.Equals; 
    stThresholdStartCycle.fThreshold := 1;
    stThresholdStopCycle.eComparisonOperator := E_ALY_ComparisonOperator.Equals; 
    stThresholdStopCycle.fThreshold := 1;
    
    fbProductivityDiagnosis.ConfigureChannel(1, stThresholdIsProducing);
    fbProductivityDiagnosis.ConfigureChannel(2, stThresholdStartCycle);
    fbProductivityDiagnosis.ConfigureChannel(3, stThresholdStopCycle);
    fbProductivityDiagnosis.Configure(nNumProducedPieces, tProductionTime);
END_IF

// Get current system time
fbSystemTime.Call();

// Call algorithm
fbProductivityDiagnosis.SetChannelValue(1, bIsProducing);
fbProductivityDiagnosis.SetChannelValue(2, bStartProductionCycle);
fbProductivityDiagnosis.SetChannelValue(3, bStopProductionCycle);
fbProductivityDiagnosis.Call(fbSystemTime.tSystemTime);

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4024.0

PC oder CX (x64, x86)

Tc3_Analytics