Sprungoptionen

sps-questioner

Level-1
Beiträge
88
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo freunde,
ich habe ein kleines problem mit sprungoptionen.
U E 0.1
SPB m001
SPA ende
m001 := A 0.0
SPA ende

ende :NOP 1
wenn ich bedingt von e0.1 in m001 springe wird mir der ausgang a0.0 gesetzt.
bis hierhin alles klar. aber wenn e0.1 nun abfällt bleibt mir der ausgang a0.0 gesetzt. normalerweise müsste die anweisung doch übergangen werden.
also ich möchte wenn e0.1 abfällt, dass a0.0 auch abfällt.
ich möchte durch sprünge automatik und handmodus ansteuern in einem programm, habe alles soweit fertig und merke dann, dass sobald ich auto angewählt habe ich hand nicht mehr anwählen kann. wie schaffe ich es dass alles was in der marke anweisung steht zurückgesetzt wird????
mfg
 
so hab ich auch schon probiert geht auch nicht:
U E 0.0
SPB m001
UN E 0.0
SPB m002
SPA ende
m001 := A 0.0
SPA ende
m002 :NOP 1
SPA ende
ende :NOP 1
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo freunde,
ich habe ein kleines problem mit sprungoptionen.
U E 0.1
SPB m001
SPA ende
m001 := A 0.0
SPA ende

ende :NOP 1
wenn ich bedingt von e0.1 in m001 springe wird mir der ausgang a0.0 gesetzt.
bis hierhin alles klar. aber wenn e0.1 nun abfällt bleibt mir der ausgang a0.0 gesetzt. normalerweise müsste die anweisung doch übergangen werden.
also ich möchte wenn e0.1 abfällt, dass a0.0 auch abfällt.
Also da gibt es natürlich wieder mal sehr viele Möglichkeiten.
Zuerst, wenn du innerhalb eines Sprunges etwas zuweist und dann drüber springst ist das gleichbedeutend mit setzen, es wird ja nicht mehr bearbeitet, sprich es wird kein VKE Wechsel erkannt.
Grundsätzlich finde ich persönlich das zuweisen der Ausgänge innerhalb von Sprüngen schrecklich.
Warum nicht einfach so?
Code:
   U E 0.1
   U #Hand
   O #Automatik
   = A0.0
Bei Deinem Beispiel wäre das eine Möglichkeit:
Code:
   CLR      // Am Programm Anfang immer ablöschen
   = A 0.0  
   = A 0.1
   U E 0.1  // Hand
   SPB m001
   U E0.2   // Auto
   SPB m002
   SPA ende
m001 := A 0.0
   SPA ende
m002: = A 0.1
 
die genaue anweisung lautet:
// HAND Betrieb

U "Handbetrieb Merker"
SPB m000

// AUTOMATIK Betrieb

U "Automatik Merker"
SPB m001
SPA ende

m000 :CALL "HAND"
SPA ende
m001 :CALL "AUTOMATIK"
SPA ende

ende :NOP 1
 
Also so by the way, für das was du vorhast würde sich ja wirklich mal KOP/FUP anbieten,
hier einfach den "EN"-Eingang entsprechend beschalten.

Mfg
Manuel
 
Was ist denn nun die Frage, die Sprünge die FC oder was?

Fakt ist folgendes. Sobald du eine Anweisung umspringst, wird diese nicht mehr bearbeitet, also wird der Ausgang auch nicht zurückgesetzt, da ja der Code überhaupt nicht mehr bearbeitet wird! Gleiches gilt für die FC, umspringst du diese, belieben Merker/Ausgänge/Datenbits, die du darin gesetzt oder mit =-Anweisungen bearbeitet hast so, wie sie beim letzten Aufruf des FC "standen". Abhilfe, du setzt sie in diesem Falle gezielt zurück!
 
Ja, so etwas ist generell nicht schön, jedenfalls nicht in deinem speziellen Fall, ist aber nur meine bescheidene Meinung. Besser ist es, den FC mit einem Enable-Eingang zu versehen oder den vorhandenen zu nutzen und dann, wenn der FC über diesen Eingang so zu sagen abgeschalten wird, die Ausgänge in den Zustand zu versetzen, der in diesem Falle benötigt wird! Es ist ohnehin nicht besonders schön und klug einen Ausgang an 10 verschiedenen Stellen im Programm zu setzen. Besser ist jedes Mal einen Merker oder ein Datenbit zu nutzen und diese dann am Ende zu verknüpfen.

Also

M0.0 wird im Hand-Betrieb gesetzt, M 1.0 im Automatikbetrieb.

Der Ausgang dann:

Code:
U #Hand
U M0.0
O
U #Auto
U M 1.0
= Ausgang 10.0
 
Zurück
Oben