Step 5 S5 zu S7 - SPB - was ist denn da los?!

Luke1986

Level-2
Beiträge
74
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich mal wieder mit einem kleinen Verständnisproblem:
Geht um den bedingten Sprung in Zeil 09. soll 4 Zeilen weiter gesprungen werden - also in Zeile 13?
oder hat das eine andere bewandnis.


Code:
Zeilennummer:  -> CODE
00:   A DB10 //Öffne DB10
01:   U(
02:    L    DW 80 //Lade DB10.DBW80 <- quasi S7 äquivalent 
03:    L    KH 0002 //lade Hex 2 
04:    ><F  //ungleich
05:    ) //also einfacher komperator, ob in DW80 eine 2 steht - richtig?!
06:    U    M  2.0 //Merker
07:    UN    M  4.0    ;PROGRAMM KWI --> BEHAELTER I
08:    S    M  4.0 //wenn... a,b,c erfüllt, dann setze M4.0
09:    SPB    =4   //<-- DA IST DAS PROBLEM - wohin wird gesprungen, wenn M4.0 = 1?? eine Sprungmarke "4" gibt es nicht - also? 4 Zeilen weiter??
10:    U    M  2.0
11:    U    M  4.0    ;PROGRAMM KWI --> BEHAELTER I
12:   M002:    R    M  4.0
13:   U(
14:    L    DW 81
15:    L    KH 0002
16:    ><F
17:    )
18:    U    M  2.1
19:    UN    M  4.1    ;PROGRAMM KWII --> BEHAELTER I
20:    S    M  4.1
21:    SPB    =4
22:    U    M  2.1
23:    U    M  4.1    ;PROGRAMM KWII --> BEHAELT
...

der code geht dann in ähnlicher form weiter, mal ist SPB =4, mal 6, mal 14

mit dem Sprung um x Zeilen würde sogar etwas sinn ergeben.

aber das ist halt nur eine vermutung.

vor allem: wie als FUP darstellen?

Vielen dank für eure Hilfe!

gruß Lukas
 
Zuletzt bearbeitet:
Sieht aus wie ein Sprung zu einer ganz normale Sprungmarke. Es soll tatsächlich Fälle geben, wo der Baustein nach dem BE noch nicht zu Ende ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
01:   U(02:    L    DW 80 //Lade DB10.DBW80 <- quasi S7 äquivalent
Diese Zeile sieht verunglückt aus, als ob hier 2 Zeilen unvollständig zu 1 zusammengefasst wären.
U( ist eine Zeile und
M002: L DW 80 die nächste.
"02:" gibt es nämlich nicht, habe ich zu M002: ergänzt. ABER M002: kommt anschliessend noch und das kann auch nicht sein.
KuddelMuddel also. Womit hast Du diese Art der Darstellung produziert?
Bei S5 werden alle Sprünge intern als relative Sprünge dargestellt (springe um x Worte vorwärts bzw. rückwärts - aufpassen, wie lang ein Befehl ist, so ist z.B. L KH xxxx 2 Worte lang).
In der Anzeige sieht man aber "normalerweise" die Darstellung als absoluten Sprung (springe nach Marke xxxx).
Warum in Deiner Darstellung eine Mischung aus beiden zu sehen ist … keine Ahnung! Ist das denn mit SiemensMitteln so produziert worden?

Gruss, Heinileini

PS:
Die ZeilenNumerierung mit einer 2-stelligen Dezimalzahl ist für mich auch sehr merkwürdig.
Stattdessen erscheint eigentlich eine 4-stellige HexZahl, die die Adresse bezogen auf den BausteinAnfang angibt und eher nicht bei 0 beginnt.
Ausserdem kann man an den Adressen (bzw. Differenz zur nächsten Adresse) sehen, wie lang die einzelnen Befehle sind.
 
Zuletzt bearbeitet:
die ziffern vorne habe ich hier im forum händisch hinzugefügt, damit wir zeilennummern haben.

einige sprungmarken mit Mxxx gibt es, da ist es auch verständlich.

EDIT oben - da ist ein "backspace" reingerutscht, welcher für deine verwirrung sorgt, Heinilein.

es ist tatsächlich um Zeile 09. da fehlt mein verständnis und in meiner doku zum S5 programmieren kann ich nichts finden.

das zeug wurde programmiert, als ich noch mit der trommel um den weihnachtsbaum gelaufen bin ....

gruß Lukas
 
Tja, wer wann das S5-Programm ursprünglich erstellt hat, ist eigentlich irrelevant.
Womit hast Du denn "zeitnah" den MC5-Code in die S5-AWL-Darstellung gebracht?
Ich kann mir nicht vorstellen, dass irgendein Siemens"Tool" ein solches KuddelMuddel aus Darstellung als relative Sprünge und aus Darstellung als absolute Sprünge produziert.
Falls doch: bitte bei Siemens reklamieren. ;o)

Gruss, Heinileini
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Programm habe ich als *.S5D-Datei vom Kunden
Geöffnet mit S5 für Windows auf einem Win97-Siemens-PG.

Wie gesagt: die Programmzeilen habe ich hier im Forums-Editor hinzugefügt.
der AWL-Code ist stumpf 1:1 kopiert. da kommt noch ein wenig davor, einiges danach.

Jedoch keinerlei Sprünge zu Sprungmarken Namens "4".

Wenn mit tatsächlichen Sprungmarken gesprungen wird, dann mit SPB M001 oder ähnlich (fortlaufende nummer)

hier geht es lediglich um zeile 09 und den befehl *SPB =4*

gruß Lukas
 
Bei S5 werden alle Sprünge intern als relative Sprünge dargestellt (springe um x Worte vorwärts bzw. rückwärts - aufpassen, wie lang ein Befehl ist, so ist z.B. L KH xxxx 2 Worte lang).
Anscheinend werden also die Sprünge relativ angezeigt und die SprungZiele absolut.
Wer diesen "Luxus" wohl erfunden hat?
Die SprungWeite wird - wie bereits in #3 gesagt - in Anzahl Worten angegeben.
Positiver Wert: Sprung vorwärts. Negativer Wert: Sprung zurück.
Die SprungMarken stehen hoffentlich an den richtigen Stellen, so dass Du Dich daran orientieren kannst.

Gruss, Heinileini

PS:
Zu "so ist z.B. L KH xxxx 2 Worte lang":
Das gilt auch für fast alle anderen Befehle, die eine Konstante in den Akku laden, L KF, L KC, L KT, L KZ, L KM, L KY,
aber nicht für L KB (belegt nur 1 Wort) und nicht für L DH und L KG (belegen 3 Worte).

Zu Tonys Link:
Ist denn Dein Code weder aus einem FB noch einem FX entnommen?
Dann muss ich meine Behauptung zurücknehmen, dass es egal ist, wer wann das Programm erzeugt hat:
er war nämlich der "ÜbelTäter" der die Beschränkungen ausgehebelt hat, die Siemens für die Verwendbarkeit der SprungBefehle in OB-, PB- bzw. SB-Bausteinen festgelegt hat.
Wir reden also gar nicht über ein unverfälschtes S5, das "Siemens-konform" ist.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
mit einem Trick kann man im AG aus einem PB einen FB machen.
dazu ist nötig:
unbenutztes AG
DB0 im ag
ausgabe addr
bausteinkopf und DB0 manipulieren
Systemhandbuch der cpu
hatte mit "soaws" vor wirklich zig jahren zu tun

nebenbei:
A DB10 //Öffne DB10
welchen nutzen hat der kommentar ? // frage nach kommentarsinn
 
Wenn gesprungen wird, dann sicher nicht um Anzahl Zeilen sondern um Anzahl Worte. Kannst Du mal die Demoversion von ACCON-PG installieren und schauen, was angezeigt wird wenn Du Dir die Adressen einblenden lässt. Ergibt dann das Sprungziel einen Sinn?
 
Sieht aus wie ein Sprung zu einer ganz normale Sprungmarke. Es soll tatsächlich Fälle geben, wo der Baustein nach dem BE noch nicht zu Ende ist.

Ich fühle mich missverstanden, kann es aber auch nicht wirklich erklären, wie so oft :ROFLMAO: .

Es gibt in der S5 einen Bausteinschutz. Dieser verhindert dass der Baustein komplett eingesehen werden kann. Der Programmcode ist am vermeintlichen Bausteinende (BE) nicht wirklich zu ende, sondern von dort an nicht mehr einsehbar. Ein typisches Merkmal sind Sprunganweisungen ohne sichtbares Sprungziel. Einen Beitrag von Peter Wahlen habe ich hierzu hier im Forum gefunden.

Die einzige Sprunganweisung, die wortweise springt, lautet "SPR", so weit mir bekannt ist. Die Syntax in der Zeile 9 sieht aber nun mal aus wie ein ganz normaler bedingter Sprung "SPB" zu einer ganz normalen Sprungmarke. Wobei ich mal annehme dass in Step5 eine Sprungmarke mit einer Ziffer beginnen darf.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich fühle mich missverstanden, kann es aber auch nicht wirklich erklären, wie so oft.
Schnüff.

Die einzige Sprunganweisung, die wortweise springt, lautet "SPR", so weit mir bekannt ist.
Guck mal in MC5 - da gibt es keine SprungMarken - nur relative Sprünge.

Die Syntax in der Zeile 9 sieht aber nun mal aus wie ein ganz normaler bedingter Sprung "SPB" zu einer ganz normalen Sprungmarke.
Wobei ich mal annehme dass in Step5 eine Sprungmarke mit einer Ziffer beginnen darf.
Du gehst leider fehl in Deiner Annahme.

nebenbei: A DB10 //Öffne DB10
welchen nutzen hat der kommentar ? // frage nach kommentarsinn
Könnte z.B. jemand dorthin geschrieben haben, der versucht die S5-AWL in S7 zu übersetzen?

Wenn gesprungen wird, dann sicher nicht um Anzahl Zeilen sondern um Anzahl Worte.
So weit waren wir schon in #3 gekommen:
... (springe um x Worte vorwärts bzw. rückwärts - aufpassen, wie lang ein Befehl ist, so ist z.B. L KH xxxx 2 Worte lang) ...

Gruss, Heinileini
 
Zuletzt bearbeitet:
Onkel Dagobert hat sowas von recht. Es war damals ( und ich kenne die Zeit noch gut ) durchaus üblich einen Baustein durch einen Sprung hinter BE zu schützen.
Das Ganze war aber wenn man sich auskannte relativ einfach zu knacken indem man sich den HEX Code für BEB im Siemens Handbuch raussuchte, sich den Baustein im HEX-Editor
angeschaut hat und den BE Befehl zB. durch ein BEB ersetzt hat.
Dann konnte man sich den "ganzen" Baustein ansehen. Zur richtigen Funktion musste dann später natürlich wieder BEB oder ein Sprung zum ende des Bausteins eingegben werden.
Würde sich in diesem Fall vermutlich lohnen mal nachzuschauen. Wenn man den Baustein im HEX Editor anschaut kann man zumindest schon mal sehen ob es hinter BE weitergeht.

peter(R)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Onkel Dagobert hat sowas von recht.
Stimmt!

Es war damals ( und ich kenne die Zeit noch gut ) durchaus üblich einen Baustein durch einen Sprung hinter BE zu schützen.
Stimmt auch! Aber wo sehen wir denn im Code des TE einen eindeutigen Hinweis darauf, dass hier ein solcher Fall vorliegt?
Dort ist nur zu sehen, dass das IBH-Tool angefangen hat, den MC5-Code wie üblich so darzustellen, dass die (eigentlich relativen) Sprünge wie absolute Sprünge aussehen.
Die SprungMarke "M002" - die es in MC5 nicht gibt - hat es nämlich erfolgreich produziert. Das befremdliche ist nur, dass es dieses Handeln anscheinend abgebrochen hat, um "aus lauter Verzweiflung" dann doch in eine absolut unüblche Darstellung (SPB =4) zu verfallen.
Das Tool müsste alle Sprünge auswerten, eine Liste der angesprungenen Adressen anlegen und ihnen dann die Namen M001, M002 u.s.w. zuweisen und in der AWL diese SprungMarken als SprungZiele ("Lable") und auch bei den SprungBefehlen eintragen.
Bei Siemens gibt es die Darstellung "SPB =4" meines Wissens nicht.
Das "=" spricht dafür, dass eine SprungMarke folgt und die "4" spricht dafür, dass es keine SprungMarke ist, da SprungMarken mit einem Buchstaben beginnen.
"SPB +4" bzw. "SPB -4" könnte man so deuten, dass die Sprungweite in Anzahl Worten gemeint ist - obwohl diese Darstellung nicht den "Gepflogenheiten" beim SPB entspricht.
Ich vermute, "SPB =4" ist ein "unfertiges ZwischenErgebnis", das nicht die SprungMarke zeigt, sondern den entsprechenden Index auf die o.g. AdressListe und somit vielleicht "M004" bedeuten könnte.
Oder es handelt sich tatsächlich um die Sprungweite, die dann aber falsch dargestellt wäre, weil das "=" dort nichts zu suchen hätte.
Egal wie man es zu deuten versucht, es ist und bleibt KuddelMuddel.
Ich habe keinerlei Erfahrung mit dem IBH-Tool und kann deshalb nur spekulieren.
Die Ursache des Problems könnte natürlich sein, dass in MC5 etwas steht, was das Tool verwirrt.
Z.B. dass der Code in einem OB, PB oder SB steht, in denen SprungBefehle "per Definition" nicht zulässig sind.
Vielleicht findet sich tatsächlich im MC5-Code ein Sprung hinter den BE, der ebenfalls "per Definition" nicht zulässig ist.
Vielleicht gibt es im MC5-Code ein Sprung, der - warum auch immer - auf eine Adresse springen soll, die mitten in einen aus mehreren Worten bestehenden Befehl springen soll.
Ob letzteres überhaupt geprüft wird, weiss ich nicht. Könnte mir vorstellen, dass so etwas erst zur Laufzeit des Programmes Ärger macht.
Ich würde erwaten, dass der MC5-Code, wenn man ihn mit SiemensMitteln als AWL anzuzeigen versucht, eine FehlerMeldung zur Folge hat oder korrekt erscheint.

Vielleicht kann uns der TE
- die S5D-Datei zur Verfügung stellen
- den kompletten, problematischen Baustein posten
- oder wenigstens darüber aufklären, ob es sich um einen FB/FX handelt oder einen "aufgebohrten" OB/PB/SB.

Gruss, Heinileini

PS:
Die S5D-Dateien enthalten meistens "Schrott" zwischen den Bausteinen - aber das erklärt leider auch nicht das Phänomen dieses Threads.
 
Die S5D-Dateien enthalten meistens "Schrott" zwischen den Bausteinen - aber das erklärt leider auch nicht das Phänomen dieses Threads.

Das ist kein Schrott, es handelt sich dabei in der Regel um Leerblöcke, die derzeit nicht benötigt werden aber für den späteren Gebrauch bereit stehen. Da ich "in meiner Jugend" eine STEP5-Programmiersoftware (ACCON-PG) geschrieben habe (einschließlich S5D-Verwaltung und -Bearbeitung), mein Hinweis, das ganze einmal mit dieser Demoversion anzusehen. Besser natürlich noch wenn die S5D-Datei hier eingestellt wird, damit ich mir das selbst einmal ansehen kann.
 
Heinileini hat auch recht :ROFLMAO:
Was mich aber verwundert ist dann warum ein Programm in dem SPB =4 steht überhaupt laufen sollte ???? Es müsste doch sofort in STOP gehen wenn es kein Sprungziel gibt.
Auszug aus dem Handbuch:
Neben der Sprungoperation muß immer ein symbolisches Sprungziel (Sprungmarke) eingegeben
werden, das aus maximal vier Zeichen bestehen darf. Dabei muß das erste Zeichen ein Buchstabe
sein.

Warum also funktioniert das Programm ?
Also in der Tat hätte man die Datei, dann könnte man sinnvoller helfen

Nachtrag: Sinnvoll in FUP darstellen ?? Vergiss es !!

peter(R)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Was mich aber verwundert ist dann warum ein Programm in dem SPB =4 steht überhaupt laufen sollte ???? Es müsste doch sofort in STOP gehen wenn es kein Sprungziel gibt.
Ein lauffähiges MC5-Programm ist eine Sache und dieses lauffähige MC5-Programm in gewohnter AWL-Weise darzustellen (z.B. am Bildschirm oder per Ausgabe auf einem Drucker) ist eine ganz andere - sozusagen "aufgepfropfte" - Sache.
In MC5 gibt es nicht den Fall, dass "es kein SprungZiel" gibt. Die Sprungweiten -128 bis 127 sind zunächst mal alle "möglich", aber nicht alle "sinnvoll" geschweige denn von Siemens erwünscht.
Sprünge, die vor dem Baustein landen oder hinter dem "tatsächlichen" Ende, sind natürlich kritisch und könnten im STOP resultieren, aber auch nur, wenn es z.B. zu einer ZyklusZeitÜberschreitung oder zum Aufruf eines nicht vorhandenen Bausteins käme.
Die SprungMarken sind nur ein Thema in der "Visualisierung" des MC5-Code, also im AWL-Editor oder wie auch immer man die für den Programmierer aufgesetzte BedienOberfläche bezeichnen möchte.
Ich glaube, wir haben jetzt reichlich hin und her spekuliert und warten mal ab, ob sich der TE wieder meldet.

Gruss, Heinileini
 
Auszug aus dem Handbuch:
Neben der Sprungoperation muß immer ein symbolisches Sprungziel (Sprungmarke) eingegeben
werden, das aus maximal vier Zeichen bestehen darf. Dabei muß das erste Zeichen ein Buchstabe
sein.
Das ist eine Einschränkung des Programmiersystems, nicht der Steuerung. Die Steuerung kann hier wortweise vor- und zurückspringen, egal ob dort eine Sprungmarke steht oder nicht.
 
Ein lauffähiges MC5-Programm ist eine Sache und dieses lauffähige MC5-Programm in gewohnter AWL-Weise darzustellen (z.B. am Bildschirm oder per Ausgabe auf einem Drucker) ist eine ganz andere - sozusagen "aufgepfropfte" - Sache.
In MC5 gibt es nicht den Fall, dass "es kein SprungZiel" gibt. Die Sprungweiten -128 bis 127 sind zunächst mal alle "möglich", aber nicht alle "sinnvoll" geschweige denn von Siemens erwünscht.
Sprünge, die vor dem Baustein landen oder hinter dem "tatsächlichen" Ende, sind natürlich kritisch und könnten im STOP resultieren, aber auch nur, wenn es z.B. zu einer ZyklusZeitÜberschreitung oder zum Aufruf eines nicht vorhandenen Bausteins käme.
Die SprungMarken sind nur ein Thema in der "Visualisierung" des MC5-Code, also im AWL-Editor oder wie auch immer man die für den Programmierer aufgesetzte BedienOberfläche bezeichnen möchte.
Ich glaube, wir haben jetzt reichlich hin und her spekuliert und warten mal ab, ob sich der TE wieder meldet.

Gruss, Heinileini
Grundsätzlich steht die Bausteinlänge im Bausteinkopf. Und diese berücksichtigt das Programmiersystem. Wenn nun allerdings ein BE erkannt wird, dann hört das Programmiersystem auf, den Code darzustellen, egal ob der nun sinnvoll wäre oder nicht.
Ich denke auch, das sinnvollste ist es abzuwarten, bis der TE seine S5D hier einstellt. dann können wir mehr dazu sagen.
 
Zurück
Oben