Ablaufkette und Schiebefunktion

evolem

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bin gerade dabei ein bisschen die Schrittporgrammierung zu üben. Hier habe ich eine Übung herausgekramt.

http://www.kleissler-online.de/PDF/Schrittkette.pdf

Die Lösung verstehe ich leider nicht so ganz. Was die Schiebefunktion bewirkt verstehe ich zwar schon. Aber die Schiebefunktion ist in dieser Lösung für diese Aufgabe überflüssig. Sehe ich das so falsch oder was soll die Schiebefunktion in den einzelnen Netzwerken berwirken? Denn die Ausgänge setze ich doch mit dem Setzbefehl oder nicht?

Habt ihr da eine Erklärung dafür?

Gruß Evo
 
Mal abgesehen davon, dass diese Schulungsunterlage nicht mal die Bausteinschnittstelle enthält, finde ich den Code furchtbar und so gar nicht zum Lernen geeignet. Da wird auf eine Temp-Var geschrieben, die nur einen Zyklus lang Gültigkeit hat, man greift über Lx.y auf Lokaldaten zu, die der Lernende nicht mal kennt, da ja der Bausteinkopf fehlt. Was soll der Quatsch?

Suche dir bei Siemens die Schulungsunterlagen und suche hier im Forum zum Thema Schrittketten, da ist dir wirklich besser geholfen.

PS: Es wird eine 1 (das ist dann das 1. Bit in Temp0) immer um 1 weitergeschoben, das sind dann auf der anderen Seite die Lx.y, die er immer auswertet, das kannst du ohne den Bausteinkopf gar nicht vernünftig verstehen. :confused:
Darüber wird nicht direkt einer der Ausgänge beeinflusst (das macht S und R), sondern der Ersteller merkt sich darüber, welcher Schritt der aktuelle Schritt ist. In einer Temp-Var ist das aber, wie schon gesagt, Unsinn!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das bedeutet also, hier ist nirgendwo ersichtlich in welchem Schritt man sich befindet? Mein Problem war natürlich zu verstehen, wie in dieser Lösung mit dem Verschiebefunktion ein Netzwerk blockiert wird. Mir ist bekannt, das die Schritte mit den Setzbefehl und Rücksetzbefehl programmiert wird.

Was mir auch neu war, ist dieses Lx.y. Ich kenn das nur mit Mx.y oder Ex.y Was bedeutet das? Beim umschalten in AWL kam das desöfteren durch und blickte erst recht garnicht durch.

Ich werd das mal mit SCL programmieren. Die Netzwerke sind nahezu alle gleich, sodass man jede Menge Arbeit mit SCL ersparen kann. Hoffe ich zumindest. Muss sowieso noch ein bisschen in die Tiefe der SCl eintauchen.:s2:
 
Zuletzt bearbeitet:
Lx.y bedeutet, dass dort ein lokal definiertes Bit zugegriffen wird.

Also z.Bsp.

L2.1

Da der Bausteinkopf fehlt, kann man nur raten:
Temp0 ist als DWord definiert in den lokalen Daten das FC.
Nun kann man darauf zugreifen mit L Temp0 z.Bsp.
Aber auf die einzelne Bits kann man so nicht zugreifen, da Temp0 ja schon als DWord deklariert ist und Zugriffe auf solche Bits eines DWord wie in Codesys gehen bei Step7 nicht. Aber man kann auf den lokalen Stack zugreifen, in dem Temp0 liegt. Daher dann das L2.1 etc.
In Temp0 wird eine 1 geschoben, diese eins repräsentiert dann immer genau eines der Bits in Temp. Das passiert bei jedem Schritt, am Anfang (Startschritt) wird die 1 in das unterste Bit geschrieben. So "weiß" das Programm immer, in welchen Schritt es sich gerade befindet und nur dann, wenn z.Bsp. das 6. Bit gerade 1 ist, bewirkt auch der 6. IN einen Weitersprung der Schrittkette.
Wie schon geschrieben ist her noch zu beachten, dass Temp0 nur einen Zyklus lang gültig ist, weil es auf dem lokalen Stack liegt, daher ist das definitiv nicht zu benutzen. Zum Testen funktioniert es, solange kein anderer Baustein im Programm seinerseits Daten auf dem lokalen Stack ablegt, aber wehe, das Programm wird größer, dann macht die Schrittkette, was sie will!!!

Besser keine Schulungsunterlagen als solche, würde ich mal ganz böse sagen. :twisted:, Hoffentlich verbesserte der TE das irgendwann. Einzige Möglichkeit, eine INOUT statt der Temp-Var oder ein FB und dann statt TEMP, VAR benutzen. Aber auch dann ist der Baustein m.E. nicht wirklich gut, diese direkten Zugriffe auf den lokalen Stack sind auch Mist, 1. haben sie keine Symbolik, 2. verschieben sich die Adressen, wenn man davor Variablen einfügt. Vielleicht verbessert das der Erstellet ja in späteren Schulungseinheiten, dann wäre das ok, aber ich glaube das nicht wirklich. :-=
 
Zuletzt bearbeitet:
Hallo,

ich glaube jetzt ralle ich das ganze so ein bisschen. Schade, das es unvollständig ist :( und so wäre ich nie auf die Idee gekommen es so zu programmieren. Danke dir Ralle für die Aufklärungen!

Gruß Evo
 
Zurück
Oben