LGF_ShellSort_UDInt (FB / V3.0.1)


Autor: Siemens Industry Support

Kurzbeschreibung

Dieser Baustein sortiert ein Array vom Typ UDint mit beliebiger Anzahl an Elementen (max. 1000) aufsteigend oder absteigend und gibt es im selben Array wieder zurück.

Baustein Schnittstelle

LGF_ShellSort_UDInt (FB)
Bool  sortDirection error  Bool
    
   status  Word
    
Array[*] of UDInt  array  Array[*] of UDInt
       
   

Input Parameter

BezeichnerDatentypDefault WertBeschreibung
sortDirectionBoolFALSEFALSE := Sortierung aufsteigend
TRUE := Sortierung absteigend

Output Parameter

BezeichnerDatentypBeschreibung
errorBoolFALSE: Kein Fehler
TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten
statusWord16#0000-16#7FFF: Status des FB
16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle)

In/Out Parameter

BezeichnerDatentypBeschreibung
arrayArray[*] of UDIntArray, das sortiert werden soll

Status & Error Meldungen

Code / WertBezeichner / Beschreibung
16#0000STATUS_NO_ERROR
Status: Abarbeitung ohne Fehler beendet
16#8200ERR_NO_ARRAY
Fehler: Aktualparameter am Eingang `array` hat nur ein Element.
16#8201ERR_TOO_MANY_ELEMENTS
Fehler: Aktualparameter am Eingang `array` hat zu viele Elemente (maximal 1000).

Funktionsbeschreibung

Der Baustein sortiert nach dem Shell-Sortierverfahren. Beachten Sie, dass die Ausführungszeit des Bausteins stark davon abhängt, wie viele Elemente das zu sortierende Array hat. Folgende Übersicht zeigt einige Messwerte des Bausteins in Abhängigkeit der Anzahl der Array-Elemente.

Mittlere Anzahl an schritten bei der Ausführung: \mathcal{O}( n \cdot \log (n)^2 )

Tabelle: Ausführungszeiten des Bausteins LGF_ShellSort…

Anzahl der Array-Elemente S7-1212C DC/DC/DC S7-1516-3 PN/DP
100 ca. 11-16 ms ca. 1-2 ms
1000 ca. 185-205 ms ca. 10-12 ms
Hinweis
Der Baustein wird synchron ausgeführt und wird nicht auf mehrere SPS-Zyklen aufgeteilt. Somit wirkt sich die Ausführungszeit direkt auf die SPS-Zykluszeit aus. Beachten Sie dieses Verhalten bei ihrem Projekt der verwendeten Steuerung und passen Sie gegebenenfalls die Überwachungszeit der Steuerung an.

Änderungshistorie

Version & DatumÄnderungsbeschreibung
01.00.00Siemens Industry Online Support
19.08.2015First released version
01.01.00Siemens Industry Online Support
19.05.2016New function: reverse sort
01.01.01Siemens Industry Online Support
02.01.2017Upgrade: TIA Portal V14 Update 1
01.01.02Siemens Industry Online Support
17.08.2018Upgrade: TIA V15 Update 2
01.01.03Siemens Industry Online Support
23.11.2018Upgrade: TIA V15.1
02.00.00Siemens Industry Online Support
29.01.2019Output "done" removed (not necessary, because only one cycle)
02.00.01Simatic Systems Support
15.10.2019Code refactoring, comments added,
change data type from UInt to UDInt
03.00.00Simatic Systems Support
23.04.2020Set version to V3.0.0, harmonize the version of the whole library
03.00.01Simatic Systems Support
15.02.2021Insert documentation