Wie erstelle ich einen Codesys-Funktionsbaustein zur Leckage-Erkennung?

Antwort

Um einen Funktionsbaustein in Codesys zu erstellen, der eine Leckage basierend auf einem Wasserzähler überwacht, kannst du folgende Schritte befolgen: 1. **Funktionsbaustein erstellen**: - Erstelle einen neuen Funktionsbaustein (FB) in deinem Codesys-Projekt. 2. **Eingangs- und Ausgangsvariablen definieren**: - Definiere Eingangsvariablen für den Wasserzählerstand und die Zeit. - Definiere eine Ausgangsvariable für die Störmeldung. 3. **Interne Variablen definieren**: - Definiere interne Variablen, um den Zählerstand und die Zeit zu speichern. 4. **Logik implementieren**: - Implementiere die Logik, um den Zählerstand alle 3 Stunden zu erfassen. - Überprüfe, ob der Zählerstand innerhalb von 3 Stunden um mehr als 50 Liter gestiegen ist. - Setze die Störmeldung, wenn die Bedingung erfüllt ist. Hier ist ein Beispiel in ST (Structured Text): ```pascal FUNCTION_BLOCK FB_Leckage VAR_INPUT Wasserzaehlerstand : REAL; // Aktueller Wasserzählerstand in Litern Zeit : TIME; // Aktuelle Zeit END_VAR VAR_OUTPUT Stoermeldung : BOOL; // Störmeldung END_VAR VAR LetzterZaehlerstand : REAL; // Letzter erfasster Zählerstand LetzteErfassung : TIME; // Zeitpunkt der letzten Erfassung Differenz : REAL; // Differenz des Zählerstands END_VAR IF (Zeit - LetzteErfassung) >= T#3H THEN Differenz := Wasserzaehlerstand - LetzterZaehlerstand; IF Differenz > 50.0 THEN Stoermeldung := TRUE; ELSE Stoermeldung := FALSE; END_IF LetzterZaehlerstand := Wasserzaehlerstand; LetzteErfassung := Zeit; END_IF ``` **Erklärung**: - `Wasserzaehlerstand` ist der aktuelle Stand des Wasserzählers. - `Zeit` ist die aktuelle Zeit. - `LetzterZaehlerstand` speichert den Zählerstand der letzten Erfassung. - `LetzteErfassung` speichert den Zeitpunkt der letzten Erfassung. - `Differenz` berechnet die Differenz des Zählerstands. - Alle 3 Stunden (`T#3H`) wird die Differenz des Zählerstands überprüft. - Wenn die Differenz größer als 50 Liter ist, wird die Störmeldung (`Stoermeldung`) gesetzt. Dieser Funktionsbaustein kann in einem Programm aufgerufen und mit den entsprechenden Eingangsvariablen versorgt werden.

Frage stellen und sofort Antwort erhalten