fiftyone_88
Level-1
- Beiträge
- 23
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo miteinander, zuerst einmal möchte ich euch begrüßen. Ich studiere Windenergietechnik und in einem Messtechnik Labor habe ich die Aufgabe bekommen einen Algorithmus in Strukturiertem Text zu verfassen, um mit Hilfe von Codesys die Windgeschwindigkeit eines Anemometers zu messen, der an einem Raspberry Pi angeschlossen ist.
Der Anemometer gibt ein Rechtecksignal aus, von der ich die Frequenz bestimmen muss. Diese Frequenz ist proportional zum Wind ist ... Auf diese Geschichte möchte ich jetzt tiefer eingehen, es geht mir nur um die Frequenz.
Das folgende Schaubild an:
Mein Algorithmus:
var
LED,a:BOOL;
z:BYTE:=10;
ton0:TON
LED:=PiFace.byIn.4; (*Eingangssigsignal*)
IF (LED=1) THEN a:=1; END_IF; (*setzen einer Variablen (notwendig für dennächsten Schritt*)
IF (z=1) THEN a:=0; END_IF; (*a auf Null setzen, damit er nicht wieder in diese Bedingung rutscht, wenn z=1 *)
IF (a=1) AND (LED=0) THEN (*Bedingung um genau zum Zeitpunkt P0 anzufangen*)
ton0.IN:=TRUE; (*Timer aktivieren*)
ton0(); (*???*)
z:=0; (*Zaehler auf Null setzen*)
a:=0; (*a auf Null setzen, damit er nicht wieder in diese Bedingung rutscht*)
END_IF
IF (z=0) AND (LED=1) THEN (*Zaehler auf eins setzen*)
z:=1;
END_IF;
IF (z=1) AND (LED=0) THEN (*Periode abgeschlossen*)
T1=ton0.ET; (*Dauer übertragen*)
ton0.IN:=FALSE; (*Timer deakt.*)
ton0(); (*???*)
a:=0; (*Bedingung um wieder von vorne anzufangen*)
END_IF
Ich meine eigentlich, das das funktionieren müsste, aber das tut es nicht. Ich glaube ich mache etwas mit den Timern falsch, da diese nicht anspringen.
Dann weiss ich nicht, wie ich mit der Periodendauer weiter rechnen kann, da dieser als Time deklariert ist. ich kann die Frequenz nicht ausrechnen, er streikt. Wie wandel ich die Periodendauer in ein Real Format ?
Vielen dank im voraus.
Der Anemometer gibt ein Rechtecksignal aus, von der ich die Frequenz bestimmen muss. Diese Frequenz ist proportional zum Wind ist ... Auf diese Geschichte möchte ich jetzt tiefer eingehen, es geht mir nur um die Frequenz.
Das folgende Schaubild an:
Mein Algorithmus:
var
LED,a:BOOL;
z:BYTE:=10;
ton0:TON
LED:=PiFace.byIn.4; (*Eingangssigsignal*)
IF (LED=1) THEN a:=1; END_IF; (*setzen einer Variablen (notwendig für dennächsten Schritt*)
IF (z=1) THEN a:=0; END_IF; (*a auf Null setzen, damit er nicht wieder in diese Bedingung rutscht, wenn z=1 *)
IF (a=1) AND (LED=0) THEN (*Bedingung um genau zum Zeitpunkt P0 anzufangen*)
ton0.IN:=TRUE; (*Timer aktivieren*)
ton0(); (*???*)
z:=0; (*Zaehler auf Null setzen*)
a:=0; (*a auf Null setzen, damit er nicht wieder in diese Bedingung rutscht*)
END_IF
IF (z=0) AND (LED=1) THEN (*Zaehler auf eins setzen*)
z:=1;
END_IF;
IF (z=1) AND (LED=0) THEN (*Periode abgeschlossen*)
T1=ton0.ET; (*Dauer übertragen*)
ton0.IN:=FALSE; (*Timer deakt.*)
ton0(); (*???*)
a:=0; (*Bedingung um wieder von vorne anzufangen*)
END_IF
Ich meine eigentlich, das das funktionieren müsste, aber das tut es nicht. Ich glaube ich mache etwas mit den Timern falsch, da diese nicht anspringen.
Dann weiss ich nicht, wie ich mit der Periodendauer weiter rechnen kann, da dieser als Time deklariert ist. ich kann die Frequenz nicht ausrechnen, er streikt. Wie wandel ich die Periodendauer in ein Real Format ?
Vielen dank im voraus.