# LGF_Boxplot_UDInt (FB / V3.0.1)

Autor: Siemens Digital Industry

## Kurzbeschreibung

Wenn Sie sich einen Überblick über bestehende Daten verschaffen wollen, dann können Sie ein Boxplot-Diagramm verwenden. Ein Boxplot zeigt Ihnen, in welchem Bereich die Daten liegen und wie sie sich über diesen Bereich verteilen. Ein Boxplot besteht aus den folgenden Kenngrößen:

- Minimum (kleinster auftretender Wert der Stichprobe)
- Unteres oder erstes Quartil (unterhalb dieses Wertes liegen 25% der Stichproben-Werte)
- Median oder zweites Quartil (unterhalb diesem Wert liegen 50% der Stichproben-Werte)
- Oberes oder drittes Quartil (unterhalb diesem Wert liegen 75% der Stichproben-Werte)
- Maximum (größter auftretender Wert der Stichprobe)

Abbildung: Boxplot

###### WinCC-Control

Zur Visualisierung des Boxplots bietet Ihnen der Siemens Industry Online Support ein .Net-Control, dass Sie in Verbindung mit WinCC Runtime Professional nutzen können. Di WinCC Controls finden Sie im `UserFiles` Ordner dieser Bibliothek.

Abbildung: .Net Control "Boxplot"

### Baustein Schnittstelle

| LGF_Boxplot_UDInt (FB) |
--- | --- | ---
Bool |  |  | execute |  | error |  |  | Bool
LReal |  |  | rangeOutlier |  | status |  |  | Word
|  |  |  |  | subfunctionStatus |  |  | Word
|  |  |  |  | outlierMax |  |  | LReal
|  |  |  |  | max |  |  | UDInt
|  |  |  |  | q75 |  |  | LReal
|  |  |  |  | median |  |  | LReal
|  |  |  |  | q25 |  |  | LReal
|  |  |  |  | min |  |  | UDInt
|  |  |  |  | outlierMin |  |  | LReal
|  |  |  |  | skewness |  |  | LReal
Array[*] of UDInt |  |  | values |  |  | Array[*] of UDInt

### Input Parameter

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
execute | Bool | FALSE | Aktivierung der Berechnung mit jeder positiven Flanke.
rangeOutlier | LReal | 1.5 | Ausreißer Erkennung: * 0: Ausreißer Erkennung ist deaktiviert * 0-1: Wert ist ungültig * >1: Ausreißer Erkennung ist aktiviert.

### Output Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
error | Bool | FALSE: Kein Fehler TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten
status | Word | 16#0000-16#7FFF: Status des FB 16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle)
subfunctionStatus | Word | Status oder Rückgabewert von aufgerufenen FB's / FC's und Systemfunktionen
outlierMax | LReal | Obere Ausreißer in %.
max | UDInt | Maximaler Wert, der kein Ausreißer ist.
q75 | LReal | 3.Quartil oder Q75 der Datenreihe.
median | LReal | 2.Quartil oder Median der Datenreihe.
q25 | LReal | 1.Quartil oder Q25 der Datenreihe.
min | UDInt | Minimaler Wert, der kein Ausreißer ist.
outlierMin | LReal | Untere Ausreißer in %.
skewness | LReal | Schiefe der Datenreihe.

### In/Out Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
values | Array[*] of UDInt | Das Array der Datenreihe, mit der gerechnet werden soll.

### Status & Error Meldungen

Code / Wert | Bezeichner / Beschreibung
--- | ---
16#0000 | STATUS_EXECUTION_FINISHED Status: Abarbeitung ohne Fehler beendet
16#7000 | STATUS_NO_CALL Status: Kein Aufruf. Der Baustein wartet auf die Aktivierung durch den Parameter `enable`.
16#7001 | STATUS_FIRST_CALL Status: Erstaufruf des FB nach einschalten
16#8200 | ERR_NEG_ARR_BOUND Fehler: Negative Array-Grenze nicht zulässig. Prüfen Sie das Array am Eingang `values`.
16#8600 | ERR_SHELL_SORT Fehler: Fehler in Anweisung `LGF_ShellSort_UDInt`. Weitere Infos in `subFunctionStatus`
16#9101 | ERR_RANGE_NOT_OK Fehler: Der Parameter `rangeOutlier` ist ungültig. Geben Sie dem Parameter `rangeOutlier` einen gültigen Wert: * 0: Ausreißer Erkennung deaktiviert * >1 gültiger Wert.

## Funktionsbeschreibung

Der Baustein sortiert die Datenreihe und berechnet anschließend die sogenannte "Fünf-Punkte-Zusammenfassung":

Tabelle: Fünf-Punkte-Zusammenfassung

Kennwert der Fünf-Punkte-Zusammenfassung | Ausgangsparameter des Bausteins
--- | ---
Minimum (kleinster auftretender Wert der Stichprobe) | `min`
Unteres oder erstes Quartil (unterhalb dieses Wertes liegen 25% der Stichproben-Werte) | `q25`
Median oder zweites Quartil (unterhalb diesem Wert liegen 50% der Stichproben-Werte) | `median`
Oberes oder drittes Quartil (unterhalb diesem Wert liegen 75% der Stichproben-Werte) | `q75`
Maximum (größter auftretender Wert der Stichprobe) | `max`

Der Baustein berechnet, falls die Ausreißer Erkennung aktiviert ist, zuerst die Grenzen. Ab diesen Grenzwerten werden die Werte als Ausreißer erkannt:

Bound^{upper} = q_{75} + rangeOutlier \cdot (q_{75} - q_{25})

Bound_{lower} = q_{25} - rangeOutlier \cdot (q_{75} - q_{25})

Anschließend berechnet der Baustein neue Werte für die Parameter `max` und `min`, die innerhalb der Ausreißer Grenzen liegen. Die Ausreißer werden gezählt und in Prozent ausgegeben.

Um leichter beurteilen zu können, wie die Daten verteilt sind, berechnet der Baustein ebenfalls die Schiefe. Die Schiefe liegt zwischen den Werten `-1` und `1` mit folgender Bedeutung:

- `-1`: extrem linksschiefe Verteilung
- `0`: symmetrische Verteilung
- `1`: extrem rechtsschiefe Verteilung

Die Elemente des übergebenen Arrays werden vom Baustein aufsteigend sortiert. Zur Sortierung wird der `LGF_Shellsort_UDInt` Baustein verwendet.

Die Kenngrößen werden folgendermaßen berechnet:

Tabelle: Formeln Boxplot Parameter Formel

Parameters | Formula
--- | ---
q25 (1.Quartil) | q_{25} = x_{(k)} \qquad with \qquad k = \frac{\left[ \frac{1}{2} (n+1) \right] + 1}{2} = \frac{n + 3}{4}
q50 (2.Quartil) median | q_{50} = x_{(\frac{n+1}{2})}
q75 (3.Quartil) | q_{75} = x_{(n+1-k)} \qquad with \qquad (n + 1 - k) = \frac{3n+1}{4} n := Anzahl der Stichproben (Größe des Arrays) Ist das Ergebnis des zu ermittelnden Elements (aus dem sich das Quartil ableiten lässt) nicht ganzzahlig, errechnet sich das Quartil aus dem linearen Anteil zwischen den beiden benachbarten Stichproben.
skewness | skewness= \frac{(q_{75} + q_{25}) - 2 \cdot q_{50}}{q_{75} - q_{25}} Hinweis: Dies ist lediglich eine Näherungsformel.

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 01.00.00 | Siemens Industry Online Support
| 05.11.2019 | First released version
| 03.00.00 | Simatic Systems Support
| 23.04.2020 | Set version to V3.0.0, harmonize the version of the whole library
| 03.00.01 | Simatic Systems Support
| 06.04.2021 | Insert documentation