Step 7 Frage zum Erstabfragebit

Zuviel Werbung?
-> Hier kostenlos registrieren
[FONT=Verdana,Arial,Tahoma,Calibri,Geneva,sans-serif]
.. Eine CPU 318-2 habe ich noch nicht getestet, da habe ich keine mit Fernzugriff...
Das ist jetzt nicht wahr, oder? Du machst diese Tests alle aus der Ferne an produktiven Anlagen?[/FONT]
[FONT=Verdana,Arial,Tahoma,Calibri,Geneva,sans-serif][/FONT]

Im SCL-Compiler ist diese Eigentschaft berücksichtigt. Dort wird nach Sprüngen und vor Abfragen CLR gesetzt. Das reicht mir auch. Wer im Jahr 2020 nach Christus AWL benutzt, ist selber schuld und ihm ist vermutlich auch nicht mehr zu helfen, um das mal klar zu formulieren.
Draco, es sei dir gegönnt, dass du der Modernste und Klügste unter uns bist, aber dein Beitrag ist genau so hilfreich wie die Demos gegen Corona-Maßnahmen.
 
Im SCL-Compiler ist diese Eigentschaft berücksichtigt. [...] Wer im Jahr 2020 nach Christus AWL benutzt, ist selber schuld und ihm ist vermutlich auch nicht mehr zu helfen, um das mal klar zu formulieren.
Das Verhalten war auch im Jahr 2000 schon so. Hast Du da (in weiser Voraussicht?) auch schon nur in SCL programmiert? ;)
In FUP und KOP spielt dieses Verhalten auch keine Rolle. Und in AWL nur, wenn man in eine Verknüpfungskette hineinspringt.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
[FONT=Verdana,Arial,Tahoma,Calibri,Geneva,sans-serif]Das ist jetzt nicht wahr, oder? Du machst diese Tests alle aus der Ferne an produktiven Anlagen?[/FONT]
Die Anlagen sind gerade nicht produktiv. Es sind meine Anlagen, nicht die von Kunden. Und wenn man weiß was man tut und konzentriert ist ... der Testcode hier ist ja nun nicht sonderlich gefährlich.

Harald
 
Draco, es sei dir gegönnt, dass du der Modernste und Klügste unter uns bist, aber dein Beitrag ist genau so hilfreich wie die Demos gegen Corona-Maßnahmen.

Völlig unabhängig von dem Klugheitsgehalt deiner hilfreichen Aussage, in einem technischen Forum ohne Not auf aktuelle Politik umzuschwenken und damit noch mehr Konflikt zu provozieren, als ohnehin schon da ist, ist unterirdischer 'mauvais ton' und schlicht unanständig. Ich habe bereits an anderer Stelle erwähnt, daß ich in meinen Steuerungen weder Corona- noch Klimadebatten, oder irgendwelche andere Inhalte aus niveaulosen Stammtischdiskussionen und Kneipengesprächen haben möchte. Ich denke, die Mehrheit der zurechnungsfähigen Ingenieure wird mir hier zustimmen.

Durch zunehmende Verrohung der Sprache und archaisches Freund-Feind Denken mit klarer Kriegsrethorik gibt es in unserem Land zunehmend kaum noch Bereiche, wo man auch bei unterschiedlichen politischen Einstellungen noch im Frieden miteinander auskommen kann. Möchtest du auch dieses Forum in ein place d'armes sinnloser politischer Auseinandersetzungen verwandeln und jegliche Sachdiskussion verhindern ? Ich möchte mich jedenfalls nicht auf deine Provokationen einlassen, und mich gegen eine solche Entwicklung entschieden zur Wehr setzen.

Das Verhalten war auch im Jahr 2000 schon so. Hast Du da (in weiser Voraussicht?) auch schon nur in SCL programmiert? :wink:
In FUP und KOP spielt dieses Verhalten auch keine Rolle. Und in AWL nur, wenn man in eine Verknüpfungskette hineinspringt.
Um 2000 habe ich allenfalls einen Taschenrechner programmiert, aber sicher keine Steuerungen. Es gibt viel seltsames bei der Firma Siemens. Manches hält sich seit ewigen Un-zeiten. Manches stirbt aus. Wenn man tiefer in die Entwicklerküche dort blickt, kann man leicht einen Schock bekommen. Und dabei ist das der führende Konzern in der Automatisierung. Wie läufts denn erst bei Beckhoffs & Co.
 
Zuletzt bearbeitet:
Im SCL-Compiler ist diese Eigentschaft berücksichtigt. Dort wird nach Sprüngen und vor Abfragen CLR gesetzt. Das reicht mir auch. Wer im Jahr 2020 nach Christus AWL benutzt, ist selber schuld und ihm ist vermutlich auch nicht mehr zu helfen, um das mal klar zu formulieren.

Könnte ja auch sein, das man in der Praxis auf einer Bestandsanlage trifft, wo
unter bestimmten Umständen dieses Phänomen auftritt und man einfach nicht
den Fehler erkennen kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie bist Du darauf gekommen? Hattest Du einen Hinweis von Siemens?
Nein, ich bin eher zufällig darauf gestoßen als ich im Netz zu dieser Sache recherchierte.
Dort wird nach Sprüngen und vor Abfragen CLR gesetzt.
(und der AWL-zu-MC7-Übersetzer ist auch nicht besonders schlau und merkt nicht daß der Code zwischen SPA und m1 nie ausgeführt wird und deshalb "U M2.5" die Erstabfrage sein muß)
Das ändert dann aber den Sinn des Codes. Es wäre ja durchaus möglich von einer anderen Programmstelle an den Anfang der Verknüpfungskette zu springen. Das funktioniert aber nur wenn das ER Bit live berechnet wird was bei der 300 offensichtlich nicht der Fall ist.
 
gerade noch einmal so eine Aussage im Berger Buch gefunden:
Die Sprungfunktion SPA wird immer, d.h. unabhängig von irgendwelchen
Bedingungen ausgeführt. SPA unterbricht die lineare Bearbeitung des Programms
und setzt sie an der Stelle fort, die durch die Sprungmarke gekennzeichnet ist.

Die Sprungfunktion SPA beeinflusst nicht die Statusbits. Stehen sowohl direkt
vor der Sprungfunktion als auch beim Sprungziel Abfageanweisungen, z.B. UE, OE
usw., so werden diese wie eine einzige Verknüpfung behandelt.
 
Die Problem-Ursache ist aber nicht die SPA-Anweisung, sondern daß die Verknüpfungsbefehle bei der S7-300 entgegen der AWL-Beschreibung von Siemens eben nicht immer das Erstabfragebit beachten.
Das kann bei Programmanalyse und Fehlersuche unerwartet ein Problem werden, wenn man testweise Programmcode überspringen will. Man muß da schon genau darauf achten, daß man keine VKE-begrenzenden Anweisungen deaktiviert (auskommentiert oder überspringt), man muß auch noch übersprungene Verknüpfungs-Anfänge komplett entfernen/auskommentieren oder direkt vor dem Sprungziel eine SET/CLR-Anweisung einfügen, damit der nicht ausgeführte übersprungene Programmcode nicht den Programmablauf verfälscht.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
habs grad unter TIA V13 SP1 Upd9 mit einer S7-1513 ausprobiert.

Beim Übersetzen gibts nen Fehler und es kann nicht geladen werden.
Wenn die Ziel-SPS eine S7-300 ist, dann wird der Code in TIA V15.1 anstandslos mit 0 Fehler und 0 Warnungen übersetzt.
Ich habe aber nicht getestet wie der Code sich auf der echten CPU verhält.

Harald
 
Zuletzt bearbeitet:
vielleicht sollte man sich einfach drauf einigen, dass SprÜnge aus Verknüpfungen oder in Verknüpfungen nen grober Programmierfehler ist, was zu nicht nachvollziehbaren Ergebnissen führt. So ähnlich wie Temp-Variablen zu lesen ohne vorher zu schreiben...

Gruß.

Code:
      U     M      0.0
      U     M      0.1
      =     M      0.2 [COLOR="#FF0000"]verknüpfung beendet[/COLOR]
      SPA   m1
      U     M      0.3
      U     M      0.4 
m1:   U     M      0.5  [COLOR="#FF0000"]eine neue Erstabfrage[/COLOR]
      =     M      0.6

Eigentlich ist doch die Verknüpfung beim SPA vorbei und das Sprungziel eine
Erstabfrage. Das SPA macht ja auch an der stelle keinen Sinn, es sei den man
möchte zu Testzwecken irgend etwas ausklammern. Da hätte ich diese Form
höchstwahrscheinlich auch so mal eben rein geschmiert. Dann irgend etwas
getestet, für gut befunden und die Wirklichkeit ist dann später irgendwie anders.
 
hmm, wenn man bei der 1513 anstatt SPA, SPB oder SPBN verwendet, kann man doch übersetzen... Es verhält sich dann m.M. nach "richtig", also nicht wie bei der 300er. (Zumindest wenn man dem Beobachten trauen kann...)

Warum man SPB übersetzen kann, aber SPA nicht, wird mir vermutlich immer ein Rätsel bleiben. Ich revidiere damit mal wieder meine Aussage zum TIA von #29.

awl2.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hmm, wenn man bei der 1513 anstatt SPA, SPB oder SPBN verwendet, kann man doch übersetzen... Es verhält sich dann m.M. nach "richtig", also nicht wie bei der 300er. (Zumindest wenn man dem Beobachten trauen kann...)

Warum man SPB übersetzen kann, aber SPA nicht, wird mir vermutlich immer ein Rätsel bleiben. Ich revidiere damit mal wieder meine Aussage zum TIA von #29.

Anhang anzeigen 49777

bist du in einer Simulation?
Übernehm mal den Orginal Code, vielleicht hat das Nop 0 auch schon wieder auswirkungen
 
Code:
      U     M      0.0
      U     M      0.1
      =     M      0.2 [COLOR=#FF0000]verknüpfung beendet[/COLOR]
      SPA   m1
      U     M      0.3
      U     M      0.4 
m1:   U     M      0.5  [COLOR=#FF0000]eine neue Erstabfrage[/COLOR]
      =     M      0.6

Eigentlich ist doch die Verknüpfung beim SPA vorbei und das Sprungziel eine
Erstabfrage. Das SPA macht ja auch an der stelle keinen Sinn, es sei den man
möchte zu Testzwecken irgend etwas ausklammern. Da hätte ich diese Form
höchstwahrscheinlich auch so mal eben rein geschmiert. Dann irgend etwas
getestet, für gut befunden und die Wirklichkeit ist dann später irgendwie anders.

Ja ist schon klar, dass es nen komisches "Feature" ist ;) Deshalb sollte man sich halt merken, dass es zu Ärger führt. Wenn Du zu Testzwecken das Beschreiben von ner Temp.-Variablen überspringst, kommt auch Quatsch raus ;)

Es werden halt nicht alle Programmierfehler abgefangen. Nur manche sind halt offensichtlicher und manche nicht.

Bei zwei Zeilen, würde ich normalerweise ja auskommentieren. Aber manchmal will man halt nen halbes Netzwerk auskommentieren, dann muss man aufpassen, nicht in ne Verknüpfung reinzuspringen ;)

Gruß.
 
Warum man SPB übersetzen kann, aber SPA nicht, wird mir vermutlich immer ein Rätsel bleiben.
Wenn es keine exakte Dokumentation einer Programmiersprache gibt und das bisschen Dokumentation dann auch noch nicht mal eingehalten wird, dann kann der Compiler auch nicht besser/penibler sein. Vermutlich werden Fehlermeldungen des Compilers nur "auf Zuruf" einzeln für genau das gemeldete Problem eingebaut ... und der arme Compiler-Entwickler hat/bekommt auch keine Zeit für weitergehende Tests?

Harald
 
Bei zwei Zeilen, würde ich normalerweise ja auskommentieren.
Auskommentieren ist manchmal nicht so gut wie gedacht. Wenn man z.B. ein FUP- oder KOP-Netzwerk hat und man will nicht den ganzen Code nach dem Test neu malen, dann kann man auf AWL umschalten und den Code manipulieren. Wenn man da nur auskommentiert und wieder auf FUP/KOP umschaltet und speichert, dann ist der auskommentierte Code weg...

Harald
 
Zurück
Oben