Um einen virtuellen Anlagenschalter in CoDeSys zu erstellen, der drei Zustände (Hand ein, Hand aus, Automatik) haben kann, kannst du einen Funktionsbaustein (FB) verwenden. Hier ist ein Beispiel, wie du das in Structured Text (ST) umsetzen kannst: 1. **Erstelle einen neuen Funktionsbaustein (FB):** - Öffne dein CoDeSys-Projekt. - Erstelle einen neuen Funktionsbaustein und nenne ihn z.B. `FB_Anlagenschalter`. 2. **Definiere die Zustände:** - Verwende einen ENUM-Typ, um die Zustände zu definieren. ```pascal TYPE E_AnlagenZustand : ( HAND_EIN, HAND_AUS, AUTOMATIK ) END_TYPE ``` 3. **Deklariere die Variablen im Funktionsbaustein:** ```pascal VAR eZustand : E_AnlagenZustand := HAND_AUS; // Initialzustand bHandEin : BOOL; // Eingang für Hand ein bHandAus : BOOL; // Eingang für Hand aus bAutomatik : BOOL; // Eingang für Automatik END_VAR ``` 4. **Implementiere die Logik im Funktionsbaustein:** ```pascal IF bHandEin THEN eZustand := HAND_EIN; ELSIF bHandAus THEN eZustand := HAND_AUS; ELSIF bAutomatik THEN eZustand := AUTOMATIK; END_IF ``` 5. **Verwende den Funktionsbaustein in deinem Programm:** - Erstelle eine Instanz des Funktionsbausteins in deinem Hauptprogramm (PRG). ```pascal PROGRAM PLC_PRG VAR fbAnlagenschalter : FB_Anlagenschalter; bHandEin : BOOL; // Eingang für Hand ein bHandAus : BOOL; // Eingang für Hand aus bAutomatik : BOOL; // Eingang für Automatik END_VAR // Zuweisung der Eingänge fbAnlagenschalter.bHandEin := bHandEin; fbAnlagenschalter.bHandAus := bHandAus; fbAnlagenschalter.bAutomatik := bAutomatik; // Aufruf des Funktionsbausteins fbAnlagenschalter(); ``` 6. **Simulation und Test:** - Simuliere das Programm und teste die Zustandsänderungen durch Setzen der Eingangsvariablen `bHandEin`, `bHandAus` und `bAutomatik`. Dieses Beispiel zeigt eine einfache Implementierung eines virtuellen Anlagenschalters mit drei Zuständen. Je nach Anforderungen kann die Logik erweitert und angepasst werden.