# START ```{index} single: START ``` ## 🎧 Podcast ![START](./START.svg) * [Ereignisse und IEC 61499: Der Startschuss fĂŒr intelligente Systeme](https://podcasters.spotify.com/pod/show/iec-61499-grundkurs-de/episodes/Ereignisse-und-IEC-61499-Der-Startschuss-fr-intelligente-Systeme-e368461) ## Einleitung Die `START`-Konstantendeklaration definiert eine Reihe von ganzzahligen Konstanten (vom Typ `UINT`) fĂŒr die Verwendung in Steuerungsprogrammen. Diese Konstanten reprĂ€sentieren spezifische ZustĂ€nde, die typischerweise in Sequenzsteuerungen, beispielsweise fĂŒr Schieber, verwendet werden. Sie dienen der Verbesserung der Code-Lesbarkeit und Wartbarkeit, indem sie numerische Werte durch aussagekrĂ€ftige Namen ersetzen. ## Schnittstellenstruktur Bei `START` handelt es sich um eine **GlobalConstants**-Deklaration und nicht um einen Funktionsblock. Daher besitzt sie keine ereignis- oder datenflussbasierten Schnittstellen wie EingĂ€nge oder AusgĂ€nge. Stattdessen definiert sie globale, konstante Werte, die innerhalb anderer Funktionsblöcke oder Programme referenziert werden können. ### **Ereignis-EingĂ€nge** *Nicht zutreffend.* Diese Deklaration enthĂ€lt keine EreigniseingĂ€nge. ### **Ereignis-AusgĂ€nge** *Nicht zutreffend.* Diese Deklaration enthĂ€lt keine EreignisausgĂ€nge. ### **Daten-EingĂ€nge** *Nicht zutreffend.* Diese Deklaration enthĂ€lt keine DateneingĂ€nge. ### **Daten-AusgĂ€nge** *Nicht zutreffend.* Diese Deklaration enthĂ€lt keine DatenausgĂ€nge. ### **Adapter** *Nicht zutreffend.* Diese Deklaration verwendet keine Adapter. ## Funktionsweise Die `START`-Konstantendeklaration weist den symbolischen Namen `STARTClosed`, `STARTOpened` und `STARTUnknown` feste, unverĂ€nderliche numerische Werte zu. Sobald diese Deklaration in einem Projekt enthalten ist, können die definierten Namen anstelle der rohen Zahlen (5, 6, 7) im gesamten Anwendungscode verwendet werden. Der Compiler ersetzt bei der Übersetzung jeden Verweis auf z.B. `STARTClosed` durch den Wert `UINT#5`. ## Technische Besonderheiten * **Typ:** Alle Konstanten sind vom Typ `UINT` (vorzeichenlose Ganzzahl). * **GĂŒltigkeitsbereich:** Die Konstanten sind global definiert (`VAR_GLOBAL CONSTANT`) und innerhalb des deklarierten Pakets (`logiBUS::utils::sequence::schieber::const`) verfĂŒgbar. * **UnverĂ€nderlichkeit:** Als Konstanten (`CONSTANT`) können ihre Werte zur Laufzeit nicht geĂ€ndert werden. * **Paketstruktur:** Die Konstanten sind in einer spezifischen Pakethierarchie organisiert, die auf ihre AnwendungsdomĂ€ne (Hilfsfunktionen fĂŒr Sequenzsteuerungen von Schiebern) hinweist. ## ZustandsĂŒbersicht Die Konstanten selbst reprĂ€sentieren abstrakte ZustĂ€nde: * `STARTClosed` (Wert 5): Steht fĂŒr den Zustand "geschlossen" oder "in Ausgangsposition". * `STARTOpened` (Wert 6): Steht fĂŒr den Zustand "geöffnet" oder "in Endposition". * `STARTUnknown` (Wert 7): Steht fĂŒr einen undefinierten, unbekannten oder Fehlerzustand. ## Anwendungsszenarien PrimĂ€r werden diese Konstanten in Zustandsautomaten (State Machines) oder Sequenzer-Funktionsblöcken eingesetzt, um die aktuelle Position oder den Status eines Aktors (wie einen linearen Schieber) eindeutig und lesbar zu kodieren. Beispielsweise könnte ein FB seinen internen Zustand oder einen Ausgangswert auf `STARTOpened` setzen, um anzuzeigen, dass der Schieber vollstĂ€ndig geöffnet ist. ## ⚖ Vergleich mit Ă€hnlichen Bausteinen Im Gegensatz zu Funktionsblöcken wie `E_SR` (Flip-Flop) oder `E_CYCLE` (Zyklusgeber) besitzt `START` keinerlei Algorithmus oder Verhaltenslogik. Es ist eine reine Datendeklaration. Ähnliche Konstrukte wĂ€ren andere `GlobalConstants`- oder `Type`-Deklarationen, die ebenfalls symbolische Namen fĂŒr Werte bereitstellen (z.B. fĂŒr Fehlercodes oder Betriebsmodi). ## Fazit Die `START`-Konstantendeklaration ist ein einfaches, aber wesentliches Werkzeug zur Strukturierung und Professionalisierung von IEC 61499-basierten Steuerungsanwendungen. Durch die Verwendung bedeutungsvoller Namen anstelle von "Magic Numbers" wird der Code deutlich verstĂ€ndlicher, weniger fehleranfĂ€llig und einfacher zu warten. Ihre Integration ist besonders in grĂ¶ĂŸeren Projekten oder wiederverwendbaren Bibliothekskomponenten zu empfehlen.