TIA Setzen in SCL geht nicht

Zuviel Werbung?
-> Hier kostenlos registrieren
Aber das Konstrukt geht nur, wenn #Ausgang ein INOUT ist.. oder stehe ich jetzt entgültig auf dem Schlauch???




Ich habe beim TIA Lehrgang gelernt, dass im gegesatz zu Classic der L-Stack im TIA immer abgelöscht wird.
Habe ich auch mal so an einer Siemens Veranstaltung gehört und bin danach voll drein gelaufen! Dachte dann ist das Verhalten auch so bei einem nicht optimierten FB. Das gab dann ganz komische Zustände an der Maschine. Das ganze auf "optimiert" gestellt und voila alles lief wie es sollte.
 
So ein Konstrukt macht die Sache nur unübersichtlicher, hilft nicht beim von
TE beschriebene Problem,
Dieses Konstrukt war nicht als Behebung des Problems gemeint, sondern sollte bewusst machen, worin das Problem besteht.
Der FC gibt jedesmal "etwas" am Output aus, aber es wird nicht jedesmal etwas sinnvolles ausgegeben, weil der Else-Zweig ins Leere greift, soll heissen er benutzt den Zustand einer Variablen, die weder im FC noch beim Aufruf des FC "zweckdienlich" mit Inhalt gefüllt wurde. Dabei ist es schnuppe, ob diese Variable sauber gelöscht wurde oder aus dem Stack einen Wert unbekannter Bedeutung übernommen hat.
Um ein Setzen zu realisieren, würde niemand den Else-Zweig explizit hinschreiben, aber er lauert insofern im Hintergrund, als der FC auch im Else-Fall nicht ganz untätig ist und eine Zuweisung ausführt, die niemand explizit in den FC hineinprogrammiert hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber das Konstrukt geht nur, wenn #Ausgang ein INOUT ist.
Ja, InOut ist richtig. Der FC muss den Zustand kennen, den er nicht verändern soll - so verrückt das auch klingen mag.

Ob die L-Variablen aus dem Stack gelöscht sind oder nicht, ist ein anderes Problem. Sind sie gelöscht, dann muss man sie nicht selber noch löschen, sofern man gelöschte Werte haben möchte. So kann man sich den einen oder anderen Befehl ersparen. Das hat aber nichts mit dem Problem dieses Thread zu tun und das Stichwort "optimiert" auch nicht.
 
hab's verstanden, danke an alle.
Auch schön zu sehen, wie mein banales Problem eine konstruktive Diskussion in der Fachwelt hervorruft :p

Kann jemand ein gutes Buch (oder sonstige Lektüre) empfehlen, wo man SCL für TIA (vornehmlich 15.1) im Selbststudium erlernen bzw. vervollkommnen kann?
Ein Problem, was wir wohl alle haben, dass wir alte AWL Bausteine dank der zukünftigen Nicht-Mehr-Unterstützung von AWL in SCL umschreiben müssen. :confused::confused::confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei der S7-300/400 gibt es noch die Besonderheit, dass dein Konstrukt aus deinem ersten Post wie gewünscht funktioniert wenn du dem Ausgang eine Lokaldaten-, Merker- oder Ausgangsvariable (Eingang würde sogar auch gehen) zuweist. Denn auf diese Bereiche werden die Parameter eines FC als Zeiger übergeben. Wenn du dem Ausgangsparameter aber eine Variable aus eine DB (vollqualifiziert DBx.DBXy.z) oder in einem FB mit einer statischen Variable beschaltest dann funktioniert das nicht mehr. Weil der FC dann als Parameter eine Variable des nicht genutzten Lokaldatenbereichs des Aufruferbausteins übermittelt bekommt, und diese anschließend dem eigentlichen Parameter zuweist. Und da der Lokaldatenbereich nicht initialisiert wird, erhält dein Ausgang wenn "trigger" false ist dann den Wert der zufällig zuletzt in den Lokaldaten stand, das kann false aber auch true sein.

Da muss man immer genau aufpassen, wenn man an einem S7-Programm Änderungen macht wo man sehen kann, dass da ein S5-Hase gewerkelt hat. Da wird dann auch mal gerne auf einen Eingang geschrieben und solche Zaubereien, was auch nur bei den oben genannten Speicherbereichen funktioniert. Gerne sind solche Bausteine dann mit Know-How-Schutz versehen.
 
Larry, das "also False" ist in deiner Aussage zu viel, glaube ich, "kein Zustand" ist aber richtig. Ich denke, du hast das auch so gemeint.

Wenn ich mich recht entsinne, beschreibt die FC konsequent ihre Ausgänge beim beenden der FC. Wenn ein Ausgang vorher nicht zugewiesen wurde, so steht dort ein zufälliger Wert aus dem L-Stack. Falls es, wie im betrachteten Beispiel, scheinbar mal funktionieren sollte, dann liegt es daran dass der L-Stack des Bausteins über den Zyklus hinweg nicht an anderer Stelle überschrieben wurde.

Entschuldige, ich habe meinen Beitrag so eben gelöscht. Ich war mir nicht mehr sicher, ob es hier nun um Baustein- oder um PLC-Ausgänge geht. Ich wollte nicht für noch mehr Missverständnisse sorgen ;) .

Entschuldige, ich habe deinen Beitrag wieder hergestellt und zitiert.
Man darf auch einmal etwas nicht richtiges annehmen und später einfach
korrigieren. Löschen ist für ein Forum garnicht gut.

Dieses Konstrukt war nicht als Behebung des Problems gemeint, sondern sollte bewusst machen, worin das Problem besteht.
Der FC gibt jedesmal "etwas" am Output aus, aber es wird nicht jedesmal etwas sinnvolles ausgegeben, weil der Else-Zweig ins Leere greift, soll heissen er benutzt den Zustand einer Variablen, die weder im FC noch beim Aufruf des FC "zweckdienlich" mit Inhalt gefüllt wurde. Dabei ist es schnuppe, ob diese Variable sauber gelöscht wurde oder aus dem Stack einen Wert unbekannter Bedeutung übernommen hat.
Um ein Setzen zu realisieren, würde niemand den Else-Zweig explizit hinschreiben, aber er lauert insofern im Hintergrund, als der FC auch im Else-Fall nicht ganz untätig ist und eine Zuweisung ausführt, die niemand explizit in den FC hineinprogrammiert hat.

Jetzt hast du mich auch noch verwirrt, ist das Absicht oder stehst
du mit deinen Smartphone in Bielefeld auf den Winachtsmarkt und
versuchtest den Bildschirm voll zu bekommen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Haben wir schon einen Termin oder weiß jemand etwas ???? Ab wann angeblich AWL nicht mehr unterstützt wird ????????????????????????????
In den 1200er wird es nicht mehr unterstützt, in einer 1500er würde ich
es nicht mehr verwenden, höchstens bei einen Steuerungstausch, wenn
die 300er den Geist aufgegeben hat.
 
@Heinileini:
dein Els_if-Konstrukt ändert an dem unbestimmten Ausgangsverhalten (@Onkel: du hast da natürlich vollkommen Recht) aber gar nichts ... ist also im Grunde nur verwirrend und sinnlos (weil : wenn Ausgang = False dann bleibt Ausgang = False und wenn Ausgang = True dann bleibt Ausgang auch = True).

Gruß
Larry
 
In den 1200er wird es nicht mehr unterstützt, in einer 1500er würde ich
es nicht mehr verwenden, höchstens bei einen Steuerungstausch, wenn
die 300er den Geist aufgegeben hat.

Ich denke das es in der 1200er nicht unterstützt wird ist 1. Politik von Siemens dito Graph und 2. weil es ein Nachfolger der
S7-200 meiner Meinung nach ist und hier die AWL eine andere Syntax hatte.

AWL benutze ich schon länger nicht mehr aber von einer Abkündigung in der 1500 habe ich noch nichts gehört.
Denke das es auch die nächsten 10 Jahre bestimmt nicht kommt oder sogar nie kommen wird in dieser Baureihe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn man Aussagen macht wie sich ein Output eines FC verhält, dann muß man immer dazu schreiben um welche CPU es sich handelt und welcher Operand "außen" angeschaltet ist.
Bei einer S7-1500 z.B. werden die Outputs eines (nur optimierten?) FC beim Aufruf initialisiert und geben dann sicher 0 aus wenn im FC keine Zuweisung erfolgt. Bei S7-300/400 kommt es darauf an was außen angeschaltet wird.

Nach den Aussagen des TE vermute ich daß er eine S7-1500 verwendet, oder sein Verhalten ist nur "zufällig" so.

Harald
 
Ich denke das es in der 1200er nicht unterstützt wird ist 1. Politik von Siemens dito Graph und 2. weil es ein Nachfolger der
S7-200 meiner Meinung nach ist und hier die AWL eine andere Syntax hatte.

AWL benutze ich schon länger nicht mehr aber von einer Abkündigung in der 1500 habe ich noch nichts gehört.
Denke das es auch die nächsten 10 Jahre bestimmt nicht kommt oder sogar nie kommen wird in dieser Baureihe

In der IEC 61131-3 3rd Edition ist IL was dem Siemens AWL entspricht mittlerweile auch als "deprecated" gekennzeichnet. Bei Software deutet das darauf hin, dass bei der nächsten Version IL dann komplett zumindest aus der IEC 61131-3 entfallen wird. Vorhandenes wird man bei Siemens vermutlich nicht entfernen solange es keine Arbeit macht, aber bei Neuentwicklungen wird es nicht mehr berücksichtigt werden. Wobei es bei der IEC von der ersten Norm bis zur Dritten auch 20 Jahre gedauert hat, da wird man also noch warten können bis da was passiert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Heinileini:
dein Els_if-Konstrukt ändert an dem unbestimmten Ausgangsverhalten . . . aber gar nichts . . .
Natürlich nicht! Ich wollte damit doch nur klarstellen, dass der FC auch dann etwas tut, wenn die Bedingung der IfAbfrage nicht erfüllt ist.
Er weist dann dem Ausgang einen Wert zu (sauber gelöscht oder ohne Sinn und Verstand aus dem Stack geholt), aber keinesfalls den vorherigen Zustand von Ausgang, was das einzig richtige wäre.
Würde man - rein hypothetisch - den Else-Zweig hinschreiben, so hätte man die Chance zu erkennen, dass das erwartete NixTun des FCs in Wirklichkeit dem Ausgang einen Wert zuweist, der zum Zeitpunkt der Zuweisung noch nicht definiert ist. Mit nicht definiert meine ich entweder durch das BetriebsSystem sauber gelöscht oder eben nicht, so dass der Wert "zufallsabhängig" ist.
Mit Deinem Einwand "dein Els_if-Konstrukt ändert an dem unbestimmten Ausgangsverhalten . . . aber gar nichts . . . " bestätigst Du genau das, was ich geschrieben habe.
 
Ob Siemens bei S7-AWL irgendeine Rücksicht darauf nimmt was die IEC61131 tut bezweifle ich mal, zumal S7-AWL mit dem IEC61131-IL überhaupt gar nichts zu tun hat. (mal sehen, wer jetzt wieder um die Ecke kommt, daß Siemens irgendwo irgendeinen Grad von Kompatibilität behauptet ... ;))

Harald
 
Ob Siemens bei S7-AWL irgendeine Rücksicht darauf nimmt was die IEC61131 tut bezweifle ich mal, zumal S7-AWL mit dem IEC61131-IL überhaupt gar nichts zu tun hat.
Wenn Siemens AWL nicht unbedingt als Altlast hätten mitschleppen müssen, hätten sie sicher beachtet welche Sprachen in der IEC 61131-3 als aktuell angesehen werden. Zumindest wenn sich vom Trend her hätte ablesen lassen, dass IL/AWL noch gefragt ist, wäre vermutlich immer noch eine AWL/IL-artige Sprache umgesetzt worden auch wenn es keine Altlasten gegeben hätte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe gehört, dass ab TIA V16 AWL nicht mehr unterstützt werden soll.
Ist aber z.Z. von Siemens noch unbestätigt und damit Gerücht.
Trotzdem sollte man sich evtl. mit dem Gedanken langsam anfreunden ...
 
Ja ja, Prognosen sind schwierig, besonders wenn sie die Zukunft betreffen, da hat Senator42 schon Recht.
Ich kann ja verstehen, dass hier bezüglich der Weiterentwicklung Gerüchte und auch handfestere Informationen verbreitet sowie Wünsche geäussert werden.
Aber jetzt habe ich den Eindruck, dass wir hier im Forum dringend eine Rubrik brauchen, wo man Wetten abschliessen kann. :ROFLMAO:

Apropos Gerücht und auch off topic: hat schon jemand etwas gehört, ob wir dieses Jahr noch mit einem WeihnachtsRätsel oder notfalls SilvesterRätsel rechnen dürfen?
 
Zurück
Oben