Sprunganweisung

blurry333

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

also ich hab meinen ImpulsTimer der 5 sekunden laufen soll.

code dafür

U A 0.0
L S5T#5S
SI T 0
NOP 0
NOP 0
NOP 0
U T 0
= A 0.0

ich möchte nun dass solange der Timer nicht abgelaufen ist keine andere Anweisung ausgeführt wird. Dafür brauch ich wohl einen Sprung SPA ist der Befehl . Aber ich kenn jetzt leider die Syntax nicht . wie muss ich das label setzen.
 
Der Befehl den du möchtest ist bedingt, daher SPB oder Baustein ganz beenden mit BEB, also

U A0.0
SPB MARK
...
MARK: nop 0

oder

U A0.0
BEB
 
Zuviel Werbung?
-> Hier kostenlos registrieren
also ich hab jetzt folgenden Code

U A 0.0
SPB MARK
L S5T#5S
SI T 0
NOP 0
NOP 0
NOP 0
U T 0
= A 0.0
Mark: NOP 0


nun bekomm ich die Fehlermeldung :

Die in Netzwerk2 verwendete Sprungmarke "mark" ist nicht definiert .
 
also die Anweisungen nach dem Timer werden weiterhin ausgeführt.
vielleicht gibt es einen wait befehl.

Mäuseklavier ich versuch jetzt mal deinen Code
 
Zuletzt bearbeitet:
also die Anweisungen nach dem Timer werden weiterhin ausgeführt.
vielleicht gibt es einen wait befehl.

Mäuseklavier ich versuch jetzt mal deinen Code

Den Wait-Befehl hat dir 4L schon gegeben. Problem wird sein, die SPS wieder aus dem Stop zu bekommen. Da darfst du dann jede Mal hindackeln oder du hast eine Fernwartung am Start.

Spaß beiseite: Den Timer mußt du immer im laufenden Programm belassen und nicht überspringen, denn sobald du ihn überspringst wird er ja nichts mehr tun. Außerdem benötigt ein Timer am Input einen Signalwechsel, welcher nicht erkannt wird, wenn du den Timer in dem Moment abarbeiten läßt, in welchem auch dein Startsignal wieder ansteht.
 
noch nee grundsätzliche frage

die Sps arbeitet das Programm von zeile 1 beginnend bis zur letzten Zeile
ab und beginnt dann wieder in der 1.zeile. Das ganze geht unendlich so weiter bis ich stop drücke ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
noch nee grundsätzliche frage

die Sps arbeitet das Programm von zeile 1 beginnend bis zur letzten Zeile
ab und beginnt dann wieder in der 1.zeile. Das ganze geht unendlich so weiter bis ich stop drücke ?

jopp, man könnte es ungefähr so darstellen:

Code:
*

try{
     OB100();
     do{
        OB1();
     }while(CPU.State == "RUN");
}
catch(Exception e){
     switch(e){
     case "BUSFault": OB82();
         break;
     case...
     }
     CPU.State = "STOP";
}
 
Zuletzt bearbeitet:
U A 0.0
L S5T#5S
SI T 0
NOP 0
NOP 0
NOP 0
U T 0
= A 0.0

Ist Dir schon aufgefallen, dass es so überhaupt nicht gehen kann?
Wann soll der Ausgang denn "1" sein? Solange die Impulszeit läuft?
Und wann startet die Impulszeit? - Wenn am Eingang des Timers der Wechsel von "0" nach "1" stattfindet.
Und wie lange dauert der Impuls? - Die angegebene Dauer des Timers, aber: das funktioniert nur so lange, solange der Eingang noch "1" ist.

Schon mal die Hilfe zu AWL von Step7 angeschaut?

Bleiben wir bei dem Beispiel von oben: wenn A 0.0 nicht gerade irgendwo anders im Programm gesetzt wird, dann passiert gar nichts.

Wenn A 0.0 hinter dem Timeraufruf gesetzt wird, und man auf jeden fall A0.0 0,5 sec auf "1" halten möchte, kann man es auch mit einem Sprung machen,
aaaaaber:
warum soll es nicht mit einem verlängertem Impuls gehen (SV)? Oder habe ich das Problem ganz falsch verstanden? Die Hilfe zu AWL ist wie immer der Freund.

Rafikus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

also ich hab meinen ImpulsTimer der 5 sekunden laufen soll.

code dafür

U A 0.0
L S5T#5S
SI T 0
NOP 0
NOP 0
NOP 0
U T 0
= A 0.0

ich möchte nun dass solange der Timer nicht abgelaufen ist keine andere Anweisung ausgeführt wird. Dafür brauch ich wohl einen Sprung SPA ist der Befehl . Aber ich kenn jetzt leider die Syntax nicht . wie muss ich das label setzen.

So dann versuche ich mich auch einmal, obwohl der Code bzw. der Impuls in meinen Augen keinen Sinn macht! Grundsätzlich interpretiere ich es mal so, bzw. muss anmerken das es für den Code ein paar Zustände gibt!

Vor dem Impuls, während des Impulses und danach (gleich wie davor)! Daher sehe ich es genau wie Rafikus.


Ich würde meinen, du möchtest z.B. die Bearbeitung des Anwenderprogramms nach dem einschalten der Steurung um 5 Sekund verzögern. Dann solltest es mit SE versuchen

U true
L S5T#5S
SE T 0
NOP 0
NOP 0
NOP 0
u T0
spb W
BEB

W: nop 0
U T 0
= A 0.0
...
 
Zuletzt bearbeitet:
Zurück
Oben