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

FB_ALY_ParetoAnalysis 1: 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.

FB_ALY_ParetoAnalysis 2: 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.

FB_ALY_ParetoAnalysis 3: 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