easy-forum

Deutsch - Hardware => easyE4 => Thema gestartet von: SphaeroX am Februar 08, 2021, 19:22:18 Nachmittag

Titel: (ST) Frage wenn etwas über die Zeit angesteuert werden soll.
Beitrag von: SphaeroX am Februar 08, 2021, 19:22:18 Nachmittag
Guten Tag,

ich habe eine Frage bezüglich der Programmierung in ST.

Wenn ich z.b. einen DigtalOut 500ms ansteuern möchte kann ich das ja nicht so einfach über das Zeitrelai machen, da ich mir ja einen extra Merker setzen muss dass das Zeitrelai einmal ausgeführt wurde, sonst wird es ständig beschaltet, richtig?

// MW100 ist die Zeit wie lange Q1 angesteuert wird, 500 der Sollwert
IF MW100 = 500 THEN
M1 := TRUE; // Schritt auf fertig setzen
    Q1 := FALSE; // Signal aus
ELSIF
M1 := FALSE; // Schritt auf nicht fertig setzen
Q1 := TRUE; // Signal an
MW100 + 1;
END_IF;


Das würde ja anhand der Zyklustakte das ganze 500 Zyklen an schalten, geht das auch irgendwie mit millisekunden?
Die SPS müsste doch einen internen Zähler als Variable oder sowas haben dachte ich mir...

Oder wie wäre das ganze am geschicktesten, so das man es auch zurücksetzen kann und später nochmals 500ms ansteuern kann.

Sorry ich bin noch ganz neu, programmiere normalerweise andere Sachen und muss mich erst noch rein finden in die Welt in der nicht alles von einer Programmiersprache vorgegeben wird :D
Titel: Antw:(ST) Frage wenn etwas über die Zeit angesteuert werden soll.
Beitrag von: radar17892 am Februar 08, 2021, 20:19:33 Nachmittag
Hallo Sphaerox,

das geht einfach mit einem Timer als Impuls eingestellt.
M100:= 500;  //oder auch anderer Wert variabel zuweisbar
//Timer 01 Impulsformend, Auflösung 5ms konfiguriert
T01 (
EN := M01, //Start des Impulses
RE := ,
ST := ,
I1 := M100, //oder direkt T#500ms als fester wert
I2 := ,
Q1 => ,
QV => );
Q01:= T01Q1; //Q01 ansteuern

Gruß Thomas
Titel: Antw:(ST) Frage wenn etwas über die Zeit angesteuert werden soll.
Beitrag von: weiss_nix am Februar 09, 2021, 09:15:58 Vormittag
Hallo SphaeroX,
so wie Thomas hätte ich es auch vorgeschlagen ...
Alternativ kannst du die Millisekunden mit dieser (https://easy-forum.net/index.php?topic=8248.msg35139#msg35139) Anwenderfunktion gesondert auswerten und eigene Timer bauen, aber ohne triftigen Grund nimm die Systembausteine ... ist einfacher.

@Thomas: im Codeschnipsel sollte vmtl. MW100 sein (Finger schneller als der PC  ;) )

Gruß
Titel: Antw:(ST) Frage wenn etwas über die Zeit angesteuert werden soll.
Beitrag von: SphaeroX am Februar 09, 2021, 22:43:36 Nachmittag
Beide antworten genial und genau das was ich gesucht habe, vielen Dank euch!
Titel: Antw:(ST) Frage wenn etwas über die Zeit angesteuert werden soll.
Beitrag von: radar17892 am Februar 13, 2021, 08:44:13 Vormittag
Ja, natürlich sollte es MW100 sein.
Das Forum ist aber fast wie ein Compiler und meckert auch, wenn der Code Fehlerhaft ist.  ;)
Titel: Antw:(ST) Frage wenn etwas über die Zeit angesteuert werden soll.
Beitrag von: weiss_nix am Februar 13, 2021, 09:03:09 Vormittag
@Thomas; *gggg*, ich hoffe du verstehst es als Joke ...

PS: ich für meinen Teil bin froh über meckernde Compiler! Sonst würden meine Programm nie funktionieren  ;D