TIA AWL Sprungbefehl TIA V16 SPB

deltarrr

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

ich habe eine kleine Frage bezüglich Sprungbefehle im TIA Portal.
Ich habe folgenden Programmausschnitt:
1676534994819.png
Müsste der Sprungbefehl SPB nicht in diesem Fall VKE 0 sein? denn die Bedingung ist nicht erfüllt. letztendlich werden Lade und Transer-Befehle immer ausgeführt. Gibt es eine alternaitve Möglichkeit wie ich das Laden und Transformieren überspringen kann bzw. an Bedingungen knüpfen kann?

Im 2. Bild ist die Bedingung dann 1. Die Ergebnisse übertrage ich auf ein HMI wo mir die Werte auch simuliert dargestellt werden. Mein Ziel ist es das im HMI eine EIngabe erfolgen kann, ohne benötigte freigabe dieser eingegeben Wert jedoch nicht geladen und transformiert wird. Erst sobald die Freigabe erfolgt

1676535130775.png

Liebe Grüße
 
Wenn du über die L und T Befehle hinwegspringen willst, dann musst du deine Sprungmarke auch danach setzen. Also z.B:

Code:
U #Freigabe_Handbetrieb_AGR
UN #Freigabe_Automatikbetrieb_AGR
SPBN Handbetrieb

L "DB58 Abgasrückführung".Hand_Ventil_Stellungswert
T "DB40 HDB PID Regler".Handwert_Manuell_ab_OP_4

Handbetrieb : NOP 0

Außerdem willst du das Laden und Transferieren nur ausführen, wenn Handbetrieb aktiv und Automatikbetrieb nicht aktiv ist oder? Das bedeutet, du willst nicht über die L und T befehle Springen wenn die Bedingungen wie gewählt sind, ansonsten immer Springen.

Bezüglich deiner DB Namen Deklaration, die sind nicht günstig gewählt. Die DB Nummer braucht man nicht in den Namen aufnehmen, Leerzeichen und Umlaute können im Zusammenspiel mit Fremdsystemen zu Problemen führen. Daher lieber gleich abgewöhnen ;)

Zusätzlich stellt sich die Frage, ob man in TIA V16 AWL verwenden muss. Grade diese Funktion ist deutlich übersichtlicher in KOP/FUP oder SCL darstellbar und damit für etwaige Anwender besser lesbar.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin deltarrr,

in dem Programm ist es egal, ob gesprungen wird oder nicht. Der Programmbereiche, der übersprungen wird, macht nichts.

Du musst die Sprungmarke hinter den Lade-/Transferbefehl schreiben.

Wo kommt das Programm her? Der NOP 0 deutet darauf hin, dass es aus KOP/FUP kommt.
 
Bezüglich deiner DB Namen Deklaration, die sind nicht günstig gewählt. Die DB Nummer braucht man nicht in den Namen aufnehmen, Leerzeichen und Umlaute können im Zusammenspiel mit Fremdsystemen zu Problemen führen. Daher lieber gleich abgewöhnen ;)
Ich glaube ich habe Gedanklich etwas missverstanden. Klar wenn meine Bedingungen nicht gegeben sind muss ich über die L und T Befehle hinwegspringen und wenn die Bedingung erfüllt ist / VKE=1 dann springe ich nicht, sondern lasse das Programm weiter Zeile für Zeile laufen richtig?

Bislang war mein Gedanke immer wenn die Bedingung erfüllt ist, möchte ich zu Zeile XX Springen, ist die Bedingung nicht gebenen, dann igniriere alles innerhalb des Sprungbefehles

Zu den DB Namen, das ist leider eine Vorgabe die ich befolgen muss. So ist die Programmstruktur aufgebaut.
 
Dann schau doch mal, welchen Teil deines Codes du zwischen Sprungbefehl und Sprungmarke überspringst. Es gibt kein "innerhalb eines Sprungbefehls", im AWL wird jede Anweisung Zeile für Zeile abgearbeitet. Ausnahme bildet hier der Sprung von einem Sprungbefehl, zu einer Sprungmarke (als Ziel) und danach geht es wieder Zeile für Zeile weiter.

Ich würde trotzdem nochmal die Frage stellen: Muss es AWL sein? Wenn ja, warum?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin deltarrr,

in dem Programm ist es egal, ob gesprungen wird oder nicht. Der Programmbereiche, der übersprungen wird, macht nichts.

Du musst die Sprungmarke hinter den Lade-/Transferbefehl schreiben.

Wo kommt das Programm her? Der NOP 0 deutet darauf hin, dass es aus KOP/FUP kommt.
Vielen Dank dir :) ich habe das von der falschen logik aus her betrachtet. Tatsächlich handelt es sich um ein bestehendes Programm was bislang ausschließlich in AWL programmiert wurde.
 
Dann schau doch mal, welchen Teil deines Codes du zwischen Sprungbefehl und Sprungmarke überspringst. Es gibt kein "innerhalb eines Sprungbefehls", im AWL wird jede Anweisung Zeile für Zeile abgearbeitet. Ausnahme bildet hier der Sprung von einem Sprungbefehl, zu einer Sprungmarke (als Ziel) und danach geht es wieder Zeile für Zeile weiter.

Ich würde trotzdem nochmal die Frage stellen: Muss es AWL sein? Wenn ja, warum?
Danke :) Habe den Fehler Gedanklich gefunden.

Das ist leider die Vorgabe vom Arbeitgeber.
 
Zeig ihm eine andere Lösung dafür bietet sich doch ein einfaches KOP-Netzwerk perfekt an. Da kann jeder der einen Stromlaufplan lesen kann drauf schauen und weiß was Sache ist.

Programmiert ihr die Anlagen für euch oder für Kunden? Wenn für euch, wer muss denn dann im Zweifel ins Programm schauen?

Aus Interesse: Um welchen CPU Typ handelt es sich? 300/400er oder 1500er?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zeig ihm eine andere Lösung dafür bietet sich doch ein einfaches KOP-Netzwerk perfekt an. Da kann jeder der einen Stromlaufplan lesen kann drauf schauen und weiß was Sache ist.

Programmiert ihr die Anlagen für euch oder für Kunden? Wenn für euch, wer muss denn dann im Zweifel ins Programm schauen?

Aus Interesse: Um welchen CPU Typ handelt es sich? 300/400er oder 1500er?
Es handelt sich um eine ET200SP - 1512SP, also 1500er CPU

Stimme dir voll und ganz zu, ist eher das Thema das die etwas älteren Programmierhasen nicht begeistert sind wenn sie auf einmal etwas erblicken was nicht wie gewohnt in AWL ist. Demnach sind mir da die Hände gebunden. Större mich jedoch auch nicht groß daran.
 
Also wer AWL kann, der kann auch KOP :D

Und auf ner 1500er gibt es absolut keine Gründe mehr noch AWL einzusetzen. Man kann alles wofür man früher AWL gebraucht hätte durch sinnvolle Datentyp Deklaration und SCL lösen. Wichtig ist dabei nur, dass man sich davon trennt es Gedanklich wie in AWL lösen zu wollen und stattdessen überlegt, was überhaupt umgesetzt werden soll.
 
Ich habe folgenden Programmausschnitt:
Anhang anzeigen 67044
Müsste der Sprungbefehl SPB nicht in diesem Fall VKE 0 sein?
(...)
Im 2. Bild ist die Bedingung dann 1. (...)
Anhang anzeigen 67045
Beim Beobachten der Programmzeilen wird der Status NACH der Anweisung dargestellt. Auch das VKE. Da die Anweisung SPB auf jeden Fall das VKE auf 1 setzt (egal ob gesprungen wird oder nicht), ist NACH der SPB-Anweisung das VKE = 1 und wird deshalb in der Zeile der Anweisung auch als VKE = 1 dargestellt. Ob bei dem SPB gesprungen wird, sieht man in der Zeile vor dem SPB - weil da das VKE = 0 ist, wird nicht gesprungen und die Anweisung "NOP 0" wird ausgeführt.
Das muß man sich bei dem TIA allerdings umständlich so zusammenreimen! Weil beim Beobachten der NOP-Anweisung in TIA ein Bug geändertes Systemverhalten ;) :rolleyes: gegenüber Step7 classic ist, daß da der Status nicht angezeigt wird. Vermutlich haben sich die TIA-Entwickler gedacht "wen interessiert schon der Status nach einer NOP-Anweisung, ist doch eh' der gleiche Status wie vorher". Durch dieses "intelligente" TIA-Verhalten kann man aber nicht direkt sehen, ob die NOP-Anweisung ausgeführt wird oder nicht. In Step7 classic wird hinter jeder Anweisung, die ausgeführt wird, auch der Status der Anweisung angezeigt, und dadurch kann man direkt sehen ob das NOP ausgeführt wird oder nicht. Das ist für mich eine Verschlechterung des TIA als neumodische "Verbesserung" gegenüber Step7 classic.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es handelt sich um eine ET200SP - 1512SP, also 1500er CPU

Stimme dir voll und ganz zu, ist eher das Thema das die etwas älteren Programmierhasen nicht begeistert sind wenn sie auf einmal etwas erblicken was nicht wie gewohnt in AWL ist. Demnach sind mir da die Hände gebunden. Större mich jedoch auch nicht groß daran.
Aber in einer neuen S7-1500 AWL zu nutzen ist ja das schlimmste überhaupt.
Warum Siemens das umgesetzt hat ist mir schleierhaft.
KOP & SCL reicht doch völlig.
Performance Vorteile bringt AWL auch nicht mehr wie früher.
 
Aber in einer neuen S7-1500 AWL zu nutzen ist ja das schlimmste überhaupt.
Warum Siemens das umgesetzt hat ist mir schleierhaft.
KOP & SCL reicht doch völlig.
Performance Vorteile bringt AWL auch nicht mehr wie früher.
Genau! und Crimpzangen werden auch nicht mehr benötigt. Geht alles mit einem Seitenschneider.
 
Eine graphische, eher KOP als FUP und eine textuelle Sprache.
Vielleicht möchte noch jemand Assembler weil das so gut ist.

Ich hätte auch niemals die 300er 400er und alten panel in TIA haben wollen, da ist step7 classic für und gut ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine graphische, eher KOP als FUP und eine textuelle Sprache.
Vielleicht möchte noch jemand Assembler weil das so gut ist.

Ich hätte auch niemals die 300er 400er und alten panel in TIA haben wollen, da ist step7 classic für und gut ist.
Denn stimme ich zu AWL hat auf einer 1500er nichts zu suchen,
das ist so 90er Jahre.
 
Zurück
Oben