FB_ALY_ParetoAnalysis
Das Pareto Analysis-Modul ermöglicht die Kombination verschiedener Eingangsdaten zur Anzeige eines Pareto-Charts. Verwendung findet dies in unter anderem in folgenden Anwendungsfällen:
Fehleranalyse: Identifizierung der häufigsten Fehlerquellen
Qualitätsmanagement: Bestimmung der Hauptursachen von Qualitätsproblemen
Zeitmanagement: Diagnose, welche Aufgaben den größten Teil der Zeit beanspruchen
Syntax
Definition:
FUNCTION_BLOCK FB_ALY_ParetoAnalysis
VAR_OUTPUT
ipResultMessage: Tc3_EventLogger.I_TcMessage;
bError: BOOL;
bNewResult: BOOL;
bConfigured: BOOL;
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 |
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. |
FB_init | Local | Initialisieren der Anzahl der Eingangskanäle. |
GetOutputArray() | Local | Abrufen des Ergebnis-Arrays, ohne neue Werte hinzuzufügen. |
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. |
SetInitial() | Local | Methode zum Setzen von Startwerten. |
Eigenschaften
Name | Typ | Zugriff | Definitionsort | Initialwert | Beschreibung |
---|---|---|---|---|---|
fTolerance | LREAL | Get, Set | Lokal | 0.0 | Toleranzwert für die Vergleiche Equal / NotEqual |
Beispiel mit mehreren Eingangskanälen
VAR
fbParetoAnalysis : FB_ALY_ParetoAnalysis(nNumChannels := 3);
fbSystemTime : FB_ALY_GetSystemTime;
stConfig : ST_ALY_Threshold :=(eComparisonOperator := E_ALY_ComparisonOperator.Equals, fThreshold := 1.0);
aChannelNames : ARRAY[1..3] OF STRING(255) := ['First Channel', 'Second Channel', 'Third Channel'];
bConfigure : BOOL := TRUE;
fInput1 : LREAL;
bInput2 : BOOL;
nInput3 : INT;
aResult : ARRAY[1..3] OF ULINT;
aRelResult : ARRAY[1..3] OF LREAL;
aChannelNamesResult : ARRAY[1..3] OF STRING(255);
END_VAR
// Get current system time
fbSystemTime.Call();
// Configure algorithm
IF bConfigure THEN
bConfigure := FALSE;
fbParetoAnalysis.ConfigureChannel(1, stConfig, aChannelNames[1]);
fbParetoAnalysis.ConfigureChannel(2, stConfig, aChannelNames[2]);
fbParetoAnalysis.ConfigureChannel(3, stConfig, aChannelNames[3]);
fbParetoAnalysis.Configure(E_ALY_ParetoMode.Timespan);
END_IF
// Call algorithm
fbParetoAnalysis.SetChannelValue(1, fInput1);
fbParetoAnalysis.SetChannelValue(2, bInput2);
fbParetoAnalysis.SetChannelValue(3, nInput3);
fbParetoAnalysis.Call(fbSystemTime.tSystemTime);
fbParetoAnalysis.GetOutputArray(1, ADR(aResult), SIZEOF(aResult));
fbParetoAnalysis.GetOutputArray(2, ADR(aRelResult), SIZEOF(aRelResult));
fbParetoAnalysis.GetOutputArray(3, ADR(aChannelNamesResult), SIZEOF(aChannelNamesResult));
Beispiel mit einem Eingangskanal
VAR
fbParetoAnalysis : FB_ALY_ParetoAnalysis(bSingleInput := TRUE, nNumChannels := 3);
fbSystemTime : FB_ALY_GetSystemTime;
stConfig : ST_ALY_Threshold :=(eComparisonOperator := E_ALY_ComparisonOperator.Equals, fThreshold := 1.0);
aChannelNames : ARRAY[1..3] OF STRING(255) := ['Idle', 'Run', 'Error'];
bConfigure : BOOL := TRUE;
nState : INT;
aResult : ARRAY[1..3] OF ULINT;
aRelResult : ARRAY[1..3] OF LREAL;
aChannelNamesResult : ARRAY[1..3] OF STRING(255);
END_VAR
// Get current system time
fbSystemTime.Call();
// Configure algorithm
IF bConfigure THEN
bConfigure := FALSE;
stConfig.fThreshold := 0;
fbParetoAnalysis.ConfigureChannel(1, stConfig, aChannelNames[1]);
stConfig.fThreshold := 10;
fbParetoAnalysis.ConfigureChannel(2, stConfig, aChannelNames[2]);
stConfig.fThreshold := 99;
fbParetoAnalysis.ConfigureChannel(3, stConfig, aChannelNames[3]);
fbParetoAnalysis.Configure(E_ALY_ParetoMode.Timespan);
END_IF
// Call algorithm
fbParetoAnalysis.SetChannelValue(1, nState);
fbParetoAnalysis.Call(fbSystemTime.tSystemTime);
fbParetoAnalysis.GetOutputArray(1, ADR(aResult), SIZEOF(aResult));
fbParetoAnalysis.GetOutputArray(2, ADR(aRelResult), SIZEOF(aRelResult));
fbParetoAnalysis.GetOutputArray(3, ADR(aChannelNamesResult), SIZEOF(aChannelNamesResult));
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4024.0 | PC oder CX (x64, x86) | Tc3_Analytics |