# LGF_Histogram_LReal (FB / 3.0.3)

Übersicht

Autor: Siemens Digital Industry

## Kurzbeschreibung

Das Histogramm stellt die Häufigkeitsverteilung einer Stichprobe nach Klassen dar. Eine Klasse beschreibt ein Werteintervall, in dem die einzelnen Häufigkeiten aufaddiert werden. Nach Vorgabe der Anzahl der Klassen wird die Klassenbreite und die jeweilige Klassenmitte berechnet. Die Klassenanzahl ist auf 15 Klassen begrenzt.

Die Verteilung stellt sich als Rechteck um den Klassenmittelwert mit der Klassenbreite und der aufsummierten Häufigkeit als Höhe dar.

Abbildung: Verteilung

### 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 "Histogramm"

### Baustein Schnittstelle

| LGF_Histogram_LReal (FB) |
--- | --- | ---
Bool |  |  | execute |  | error |  |  | Bool
UInt |  |  | numberOfClasses |  | status |  |  | Word
|  |  |  |  | subfunctionStatus |  |  | Word
|  |  |  |  | histValues |  |  | Array[0..1, 0..#CLASSES_COUNTER_UP_LIMIT] of LReal
|  |  |  |  | axis |  |  | Array[0..3] of LReal
|  |  |  |  | classWidth |  |  | LReal
Array[*] of LReal |  |  | values |  |  | Array[*] of LReal

### Input Parameter

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
execute | Bool | FALSE | Aktivierung der Berechnung mit jeder positiven Flanke.
numberOfClasses | UInt | 0 | Anzahl der gewünschten Klassen.

### 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
histValues | Array[0..1, 0..#CLASSES_COUNTER_UP_LIMIT] of LReal | Gibt in einem zweidimensionalen Array die errechneten Werte aus. • `histValues[0,0..14]` gibt die relative Häufigkeit der einzelnen Klassen aus. • `histValues[1,0..14]` gibt die Klassenmitten aus. • Falls weniger als 15 Klassen gewünscht sind, dann werden die nicht benötigten Arrayelemente mit 0 ausgegeben.
axis | Array[0..3] of LReal | Gibt die Achsenwerte an: • Unterer Wert der X-Achse • Oberer Wert der X-Achse • Unterer Wert der Y-Achse • Oberer Wert der Y-Achse
classWidth | LReal | Gibt die berechnete Klassenbreite aus.

### In/Out Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
values | Array[*] of LReal | 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#8600 | ERR_SHELL_SORT Fehler: Fehler in Anweisung `LGF_ShellSort_LRreal`. Weitere Infos in `subFunctionStatus`
16#9101 | ERR_WRONG_NO_CLASSES Fehler: Falsche Anzahl der Klassen. Übergeben Sie dem Parameter `numberOfClasses` einen gültigen Wert (1 bis 15).

## Funktionsbeschreibung

Der Baustein sortiert die übergebenen Daten und berechnet mithilfe der übergebenen Klassenanzahl und den Datenbereich die allgemeine Klassenbreite. Anschließend zählt der Baustein die Werte, die innerhalb einer Klasse liegen. Um ein Histogramm zeichnen zu können, errechnet der Baustein auch die nötigen X- und Y-Koordinaten.

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

Die Klassenanzahl kann mit folgender Faustformel angegeben werden:

Number~of~classes = \sqrt{number~of~elements}

z.B. 100 Werte --> Number~of~classes = \sqrt{100} = 10

### Formeln

Die Klassenbreite errechnet der Baustein mit folgender Formel:

classWidth = \frac{max - min}{Number~of~classes}

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 1.0.0 | Siemens Industry Online Support
| 23.11.2018 | First released version
| 2.0.0 | Simatic Systems Support
| 06.11.2019 | Code refactoring, comments added
| 3.0.0 | Simatic Systems Support
| 23.04.2020 | Set version to V3.0.0, harmonize the version of the whole library
| 3.0.1 | Simatic Systems Support
| 06.04.2021 | Insert documentation
| 3.0.2 | Simatic Systems Support
| 19.11.2024 | Fixed bug for histValues Array
| 3.0.3 | Simatic Systems Support
| 16.07.2025 | Fixed comments and block info header