Sprungbefehl, Ausgang bleib gesetzt

Pockebrd

Level-1
Beiträge
327
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich teste eben die Sprungbefehle.
Hab folgendes gemacht:

U E1.0 „Fahrt nach oben“
U E1.1 „ Endschalter oben“
SPBN M1
= A1.2 "Antrieb nach oben"

M1: NOP 0

Was mich wundert ist, das der Ausgang A1.2 dauerd gesetzt bleibt. Müßte doch bei betädigen der Taster mal auf "0" gehn, oder ?

Gruß Markus



 
Die Anweisung =A1.2 wird nur bei VKE 1 bearbeitet und bei VKE 0 übersprungen, deswegen wird die 0 nicht auf A1.2 geschrieben.

Was willst Du eigentlich mit diesem Sprung erreichen?
 
Außerdem ist nach einem SPB oder SPBN das VKE immer 1, egal ob das VKE vor dem Sprung 0 bzw. 1 war
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das wäre mir neu.

Und wer hat recht ?


Ich wollte mit einem Starttaster verschiedene Antriebe nacheinander in Grundstellung fahren lassen.

Start, erster Antrieb (1) nach oben
dann, nach rechts,
dann einen weiteren Antrieb (2) zurück,
dann ein weiteren Antrieb (3) zurück
fertig

Antriebe sind jeweils mit Endschalter abfragt.
Wenn ein Antrieb schon in Position ist, wollte ich ihn überspringen.


Dachte wenn ich anstatt "setzten" A1.2 ein " = " verwende, geht der Ausgang wieder zurück auf 0
 
Und wenn die anweisung nicht bearbeitet wird? dann ist es völlig egal wer recht hat, ob das vke nun immer 1 wird oder nicht. du springst doch über die zuweisung des ausgangs weg. was soll da dann noch passieren? der bleibt solange auf 1 bis die cpu auf stop geht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gerade weil die Anweisung nicht bearbeitet wird, dachte ich es sollte wieder auf "0" gehn.
Aber wenn nach dem Sprung da VKE immer 1 ist dann, leuchtet mir das jetzt auch ein.

Das hat in diesem Fall nichts mit dem VKE zu tun.
Wenn du eine Zuweisung überspringst und danach auch nirgendwo mehr bearbeitest dann bleibt die letzte Zuweisung aktiv.

Beispiele:
Code:
         U E0.0
SPB      M001
         = A0.0
M001:    NOP 0
Wenn E0.0 das erste Mal TRUE wird, so wird A0.0 auch TRUE da die Schleife durchlaufen wird.
Fällt E0.0 wieder auf FALSE wird die Zuweisung = A0.0 nicht mehr abgearbeitet => A0.0 behält seinen letzten Status, in deinem Fall TRUE.

Code:
         U E0.0
SPB      M001
         L MW2
         + 1
         T MW2
M001:    NOP 0
Wenn E0.0 TRUE wird, dann wird das MW2 in jedem Zyklus um 1 erhöht.
Fällt E0.0 wieder auf FALSE (z.B. nach 128 Zyklen), dann beträgt der Wert im MW2 128 und bleibt es auch, da der Code nicht mehr abgearbeitet wird.
Wird E0.0 wieder TRUE, so wird das MW2 wieder in jedem Zyklus um 1 erhöht 129..130..131.. etc.
 
Da hat sich der "Panzerknacker" aber mit TRUE und FALSE vertan....

Der Sprungbefehl SPB wird ausgeführt wenn das VKE vor der Anweisung SPB M001 True ist.
Ist in den Beispielen von "Panzerrknacker" E0.0 = 1 und damit VKE = 1, dann werden die Anweisungen die zwischen dem Sprungbefehl SPB und der Marke M001: programmiert übersprungen, also nicht abgearbeitet/ausgeführt. Ist der E0.0 = 0 und somit das VKE = 0, wird der Sprungbefehl SPB nicht ausgeführt und der nachfolgende Programmcode ausgeführt. D.H. im ersten Beispiel bleibt der Ausgang immer 0, im zweiten Beispiel wird das MW2 bei jedem Zyklus um 1 hochgezählt.
 
Da hat sich der "Panzerknacker" aber mit TRUE und FALSE vertan....
(...)
D.H. im ersten Beispiel bleibt der Ausgang immer 0, im zweiten Beispiel wird das MW2 bei jedem Zyklus um 1 hochgezählt.
Bleibt er eben nicht, da wenn das VKE des E0.0 = 0 ist der Sprungbefehl nicht ausgeführt wird.
Da nach den Sprungbefehlen das VKE grundsätzlich 1 ist, wird der Ausgang auf 1 gesetzt wenn nicht gesprungen wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bleibt er eben nicht, da wenn das VKE des E0.0 = 0 ist der Sprungbefehl nicht ausgeführt wird.
Da nach den Sprungbefehlen das VKE grundsätzlich 1 ist, wird der Ausgang auf 1 gesetzt wenn nicht gesprungen wird.
*ACK*

Genau das ist der Haken an der Sache...

Das wo ich mich vertan habe war in der Beschreibung und muss wie folgt aussehen:

Wenn E0.0 das erste Mal FALSE wird, so wird A0.0 TRUE da die Schleife durchlaufen wird und das VKE damit auf 1 wechselt.
Wird E0.0 wieder auf TRUE wird die Zuweisung = A0.0 nicht mehr abgearbeitet => A0.0 behält seinen letzten Status, in deinem Fall TRUE.

Den Fehler bitte ich zu entschuldigen, da ich normalerweise immer mit SPBN arbeite!

Ein Blick auf die Screenshots sollte aber erklären wie ich es gemeint habe.
E0_0_FALSE.pngE0_0_TRUE.png

Dazu der Auszug aus der Siemens-Hilfe:
Siemens_Hilfe_zu_SPB.png

Gruß
Matthias
 
Bleibt er eben nicht, da wenn das VKE des E0.0 = 0 ist der Sprungbefehl nicht ausgeführt wird.
Da nach den Sprungbefehlen das VKE grundsätzlich 1 ist, wird der Ausgang auf 1 gesetzt wenn nicht gesprungen wird.

stümmt, da geb ich dir Recht. Das das VKE = 1 ist nach nicht ausgeführtem Sprungbefehl hab ich nicht dran gedacht. Asche auf mein Haupt...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gerade weil die Anweisung nicht bearbeitet wird, dachte ich es sollte wieder auf "0" gehn.
Aber wenn nach dem Sprung da VKE immer 1 ist dann, leuchtet mir das jetzt auch ein.

Dass das VKE auf 1 gesetzt wird bei bestimmten Sprüngen war schon bei der S5 so.
Übrigens betrifft das nur...
SPB
SPBN
SPBB (kopiert zusätzlich das VKE ins BIE)
SPBNB (kopiert zusätzlich das VKE ins BIE)

Alle anderen Sprünge lassen das VKE unverändert.
 
Zurück
Oben