# logiBUS_PI ```{index} single: logiBUS_PI ``` * * * * * * * * * * ## Einleitung Der Funktionsblock `logiBUS_PI` ist eine Sammlung globaler Konstanten für die Konfiguration von Puls-Eingängen (Pulse Inputs) in logiBUS-Systemen. Er definiert vorkonfigurierte Strukturen, die die physischen Eingangspins eines logiBUS I/O-Moduls repräsentieren. Diese Konstanten dienen der einfachen und fehlerfreien Zuweisung von Hardware-Pins in übergeordneten Funktionsblöcken oder Anwendungen. ## Schnittstellenstruktur Bei `logiBUS_PI` handelt es sich um einen GlobalConstants-Block, nicht um einen klassischen Funktionsblock mit Ereignis- oder Datenschnittstellen. Daher besitzt er keine Ereignis-Eingänge, -Ausgänge, Daten-Eingänge, -Ausgänge oder Adapter. Die Schnittstelle besteht ausschließlich aus den definierten globalen Konstanten. Jede Konstante ist vom Datentyp `logiBUS::io::PI::logiBUS_PI_S` und wird mit einem spezifischen Initialwert instanziiert. ### **Definierte Konstanten** Die folgenden Konstanten werden bereitgestellt: * `PulseInput_I1` bis `PulseInput_I9`: Repräsentieren die physischen Puls-Eingänge 1 bis 9. Der Initialwert setzt das Strukturfeld `Pin` auf den entsprechenden Wert (1-9). * `Invalid`: Stellt einen ungültigen oder nicht belegten Eingang dar. Der Initialwert setzt das Strukturfeld `Pin` auf den Wert 255. ## Funktionsweise Der Block `logiBUS_PI` selbst führt keine aktive Funktionalität aus. Er stellt lediglich eine Bibliothek von vordefinierten Werten bereit. Diese Werte sind vom Typ `logiBUS_PI_S`, einer Struktur, die vermutlich mindestens das Mitglied `Pin` enthält. Die Konstanten werden zur Kompilierzeit in den Anwendungscode eingefügt. Wenn ein anderer Funktionsblock (z.B. ein Treiber- oder Messbaustein) einen Parameter vom Typ `logiBUS_PI_S` erwartet, kann eine dieser Konstanten übergeben werden, um eindeutig einen bestimmten Hardware-Eingang auszuwählen. ## Technische Besonderheiten * **Typisierung:** Alle Konstanten sind streng vom strukturierten Datentyp `logiBUS_PI_S`. Dies erzwingt eine typsichere Verwendung und verhindert die unbeabsichtigte Zuweisung einfacher Integer-Werte. * **Initialisierung:** Die Initialwerte werden in der ST-Syntax `(Pin := X)` angegeben, was auf eine strukturierte Initialisierung hindeutet. * **Ungültiger Zustand:** Die Konstante `Invalid` mit dem Pin-Wert 255 bietet eine standardisierte Möglichkeit, einen nicht genutzten oder fehlerhaften Kanal zu kennzeichnen. ## Zustandsübersicht Da es sich um einen Konstanten-Block handelt, besitzt `logiBUS_PI` keinen internen Zustand oder Zustandsautomaten. Die Werte der Konstanten sind unveränderlich (read-only) und während der gesamten Laufzeit der Anwendung konstant. ## Anwendungsszenarien * **Hardware-Konfiguration:** Primärer Einsatz zur Konfiguration von logiBUS I/O-Modulen, die Puls-Eingänge (z.B. für Encoder, Frequenz- oder Drehzahlmessung) bereitstellen. * **Parametrierung von Funktionsblöcken:** Vereinfachte und lesbare Parametrierung von Funktionsblöcken, die einen spezifischen Puls-Eingang benötigen. Statt der magischen Zahl `3` wird die selbsterklärende Konstante `PulseInput_I3` verwendet. * **Wartung und Lesbarkeit:** Erhöht die Wartbarkeit und Lesbarkeit des Anwendungscodes, da die Hardware-Zuordnung direkt im Konstantennamen ersichtlich ist. ## ⚖️ Vergleich mit ähnlichen Bausteinen Im Gegensatz zu Funktionsblöcken wie `E_SR` (Flip-Flop) oder `E_CYCLE` (zyklischer Event-Generator) implementiert `logiBUS_PI` keine Logik oder Algorithmen. Er ist vergleichbar mit anderen Konstanten-Blöcken oder ENUM-Definitionen in der IEC 61499, die hardwarenahe Parameter kapseln (z.B. `GPIO_PIN_XX` Konstanten für Raspberry Pi). Sein Zweck ist rein deklarativ und konfigurativ. ## Fazit Der `logiBUS_PI` GlobalConstants-Block ist ein essentielles Hilfsmittel für die hardwarenahe Programmierung von logiBUS-Systemen. Durch die Bereitstellung typsicher, vordefinierter Konstanten für Puls-Eingänge ermöglicht er eine saubere, fehlerresistente und gut wartbare Konfiguration der Ein-/Ausgabe-Hardware. Seine Verwendung fördert Best Practices in der industriellen Automatisierungsprogrammierung.