Strukturierter Text: 1. Programmierung einer Schaltschwelle, 2. Integrierer

Schlitzer05

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe noch nicht so viel Erfahrung in der Programmierung mittels ST. Von daher bestimmt eine einfache Aufgabe für Euch:

1. Ich möchte eine Art Schalter programmieren. Er soll einen bestimmten Wert (Bsp. 1) ausgeben, wenn die Eingangsgröße (läuft z.B. von -400 bis -600 und wieder zurück) eine bestimmte Schaltschwelle (Bsp. -500) überschreitet. Dabei soll der Wert nur ausgegeben werden, wenn der Eingangswert die Schaltschwelle von unten nach oben überschreitet. Also in der Beispielkurve im 2. Schnittpunkt.

IF ?????????
then rSignalSwitch1:=1
ELSE rSignalSwitch1:=0


2. Außerdem muss ich in dem ST einen Integrierer einbauen. Wie kann ich das machen?

Vielen Dank!!!
 
Ganz auf die schnelle und ohne Garantie auf Richtigkeit:

Code:
IF Inputvalue >= -500 AND Inputvalue_Old < -500 THEN
 rSignalSwitch1:=1;
ELSE
rSignalSwitch1:=0;
END_IF
Inputvalue_Old := Inputvalue;



So fragst du ab, ob der aktuelle Wert grösser als -500 und der Wert des letzten Zyklus kleiner als -500. Damit kannst du die Schwelle dedektieren.

2. Ich habe mir auch schon selbst einen Integriere gebaut, habe den Code aber gerade nicht zur Hand und bin etwas kurz angebunden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank!

Klingt erstmal gut, aber eine Frage stellt sich mir: Bin ich im nächsten Zyklus nicht wieder beim Ausgang 0, weil ja Inputvalue_Old < -500 nicht mehr erfüllt ist? Das sollte ja nicht so sein. Oder denk ich gerade falsch?
 
Hallo,

das ist richtig. So hast Du es doch aber auch beschrieben:

Dabei soll der Wert nur ausgegeben werden, wenn der Eingangswert die Schaltschwelle von unten nach oben überschreitet.

Wann soll der Wert denn wieder zurückgesetzt werden? Sonst sieh Dir mal einen Schmitt Trigger an.

Für den Integrator sieh Dir die digitale Regelungstechnik an.

Du kannst Dir aber auch mal die Oscat lib ansehen. Dort kannst Du Dir sehr gut ansehen, wie verschiedene Probleme gelöst wurden.

Gruß
 
Naja, jetz schreibst du am besten eine ähnliche Funktion wie ich sie gemacht habe, um den Zeitpunkt des Ausschaltens zu dedektieren. Dann hast du zwei Impulse, einen für das einschalten, einen für das ausschalten.
Damit solltest du sicher weiterkommen und es ist eine gute Übung um ST besser zu verstehen.
 
Hallo,
du solltest dir dafür eine Ablaufkette (Schrittkette / Statemaschine) programmieren in der du die einzelnen Zustände festhältst.
Für die Erkennung der Richtung ist es m.E. sinnvoller nicht unbedingt 2 direkt aufeinander folgende Werte zu betrachten, da je nachdem, woher dein Wert kommt, er auch bei stehendem Signal ein paar Digits hin- und herschwanken kann.
Also : Richtungserkennung mit geglätteten Werten (Mittelwert) und den 2 Punkt-Regler mit einer Schrittkette ...

Gruß
Larry
 
Zurück
Oben