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.

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
Ausgänge
Name | Typ | Beschreibung |
---|---|---|
ipResultMessage | 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 |
bNewResult | BOOL | Wenn ein neues Ergebnis berechnet wurde, ist der Ausgang |
bConfigured | BOOL | Zeigt |
bProducing | BOOL | Gibt an, dass das Produktionsintervall aktiv ist. |
bCycleFinished | BOOL |
|
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. |
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. |
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 |