CODESYS - das IEC 61131-3 Programmiersystem

Willkommen im offiziellen CODESYS - Forum von 3S-Smart Software Solutions
Deutsche Version English version russian version 
Aktuelle Zeit: Fr Dez 15, 2017 8:17 am

Alle Zeiten sind UTC




Ein neues Thema erstellen  Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Befehl "when" in codesys
BeitragVerfasst: Di Apr 25, 2017 12:47 pm 
Offline

Registriert: Fr Apr 21, 2017 12:33 pm
Beiträge: 13
Hallo.

Ich habe vorher mit Jetter gearbeitet. Dort gab es den Befehl "when", der auf ein Ereignis gewartet hat.

When A=true then b:=2 then...

Ich brauche so was oft bei meinen Maschinen, bei denen ich auf ein Eingangssignal warten muss bevor das Programm weiterlaufen soll.

Wie mache ich das am besten in Codesys?

So?
S1: IF g.BMedS3 = FALSE THEN JMP S1;
END_IF

Oder so? wobei dann a:=a irgendeine völlig sinnlose Aktion wäre.
While g.BMedS3 = FALSE do a:=a; END_WHILE

Danke.


Nach oben
   
 Betreff des Beitrags: Re: Befehl "when" in codesys
BeitragVerfasst: Mi Apr 26, 2017 12:33 pm 
Offline

Registriert: Mi Jun 03, 2009 5:41 am
Beiträge: 24
So geht's:

IF A THEN
b := 2;
END_IF

oder

IF NOT A THEN
b := 2;
END_IF



Must aber beachten dass b auf 2 bleibt wenn A = FALSE.

Oder so:

IF A THEN
b := 2;
ELSE
B := ?;
END_IF


Nach oben
   
 Betreff des Beitrags: Re: Befehl "when" in codesys
BeitragVerfasst: Do Apr 27, 2017 8:30 am 
Offline

Registriert: Fr Apr 21, 2017 12:33 pm
Beiträge: 13
Na ja, aber damit wartet der an der Stelle ja nicht darauf, dass A true wird, sondern läuft im Programm einfach weiter, wenn das nicht der Fall ist.
Was ich suche ist eine Möglichkeit im strukturierten Text, die so funktioniert wie eine Transition bei der AS Sprache.

Also,der soll an der Stelle "If A=true" so lange warten, bis das eintritt.


Nach oben
   
 Betreff des Beitrags: Re: Befehl "when" in codesys
BeitragVerfasst: Di Mai 02, 2017 9:31 am 
Offline

Registriert: Mo Nov 03, 2014 6:15 am
Beiträge: 10
Hallo rtist!

Du kannst ja nicht einfach das "Programm anhalten". Die willst nur in einem bestimmten Zustand bleiben, oder? So wie ich das sehe, würde dir eine state-machine helfen. Die einzelnen Zustände werden in einer CASE-Abfrage abgebildet, die "Transitionen" sind dann die Zuweisungen des jeweiligen Zustands. Z.B. so:

CASE Zustand OF

0: // Initialisierung
IF a THEN // "Transition" erfüllt
Zustand:= 10;
END_IF

10: // das soll passieren, wenn a high war
b:= TRUE;
(* weitere Anweisungen *)
IF NOT a THEN
Zustand:= 20;
END_IF

20: // nächster Zustand

Viel Erfolg!


Nach oben
   
 Betreff des Beitrags: Re: Befehl "when" in codesys
BeitragVerfasst: Do Mai 18, 2017 2:54 pm 
Offline

Registriert: Fr Apr 21, 2017 12:33 pm
Beiträge: 13
na ja, in der AS Sprache "hält" das Programm ja auch an den Transitions an, bis die Bedingung erfüllt ist.
Genau das ließe sich doch eigentlich auch in einen ST Befehl packen.

Wie gesagt, bei der Jetter Sps heißt der Befehl "When" und macht genau das, was die Transition macht.

state machine gefällt mir irgendwie nicht so.

Aber danke für die Mühe!


Nach oben
   
 Betreff des Beitrags: Re: Befehl "when" in codesys
BeitragVerfasst: Di Aug 29, 2017 12:44 pm 
Offline

Registriert: Di Jul 18, 2017 5:19 am
Beiträge: 21
Ich verstehe nicht genau was du willst.

Es gibt normale Ifs, Elses, Else_Ifs etc.

Dann gibts noch for,while,repeat loops

Das hier ist ganz gut:
http://www.plcacademy.com/structured-text-tutorial/


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de