Step 5 AWL in FUP/KOP Step 5

Zuviel Werbung?
-> Hier kostenlos registrieren
Achtung Werbung ;-):
Unser gutes altes ACCON-PG kann sowohl S5D-Dateien einlesen als auch entsprechende NOP 0-Befehle einfügen (wenn sinnvoll geschrieben und nur NOP 0 fehlen), damit das Netzwerk auch von der Siemens-Programmiersoftware in KOP oder FUP dargestellt werden kann. Genauso können natürlich auch die (für ACCON-PG) überflüssigen NOP 0 wieder automatisch entfern werden, damit Speicherplatz und Zykluszeit gespart wird. Hatten wir bereits im letzten Jahrtausend eingebaut.
 
Also es ist auch kein Stil, an verschiedenen Stellen Merker zu setzen und rückzusetzen.
Stil hin oder her ... .
Die Befehle Setzen und Rücksetzen - die heute von den "Hochsprachen-Programmierern" mit Grausen gesehen und nicht verstanden werden - stammen aus der "Elektriker-Sicht" und dem Phänomen der "Selbsthaltung" von Relais/Schützen.
Diese Befehle waren einst sehr nützlich und auch sehr leicht verständlich.
Heute werfen die "Hochsprachen-Programmierer" mit IF und CASE um sich und sehr oft konstruieren sie auf diesem Wege nichts anderes, nur in mehr Schreib- und LeseAufwand bestens versteckt.
"... an verschiedenen Stellen ...": Ja doch, einerseits dort wo die SetzBedingung zusammengebastelt wird und andererseits dort, wo die RücksetzBedingung gebildet wird.
Viele mögen das als schlechten Stil ansehen, aber viele finden das durchaus übersichtlich, um nicht zu sagen, wesentlich übersichtlicher.
"Missbrauch" kann man mit allen Befehlen treiben - das zeichnet nicht die Befehle S und R aus.

Hatte man eine S5 zum Spielen, dann war gar kein externer Hex-Editor notwendig. Mit Ausgabe Adresse konnte man online auch nachschauen.
... aber nicht eingeben, sondern nur nachschauen - und das auch nur, wenn der Baustein nicht geschützt war. Habe ich das so falsch in Erinnerung, oder fehlte mir damals das KnowHow?

Gruss, Heinileini
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
@Larry
So haben wir auch programmiert.
Bei uns war alles, das für den mechanischen Ablauf notwendig ist, ist so geschrieben, dass es in KOP bzw FUP bzw Graph beobachtet werden kann.
Aber z.B. die Werkzeugverwaltung war / ist in Quellen geschrieben, die nicht einmal Online anzuschauen waren, da zu groß, muss ja auch nicht sein.
Wegen Merkern oder so:
Wenn man programmiert, dann ist das nicht für die geistigen Ergüsse der Programmierer, sondern für die Kunden.
Der Programmierer / Inbetriebnehmer geht, die Maschine / Anlage bleibt und die Instandhalter müssen damit leben.

Ob da TIA ein echter Fortschritt ist, will bzw kann ich nicht beurteilen.

bike
 
Die Länge des Bausteines (einschließlich der Länge des Bausteinkopfes) steht doch im Header. Und soviel Code muss es geben, egal ob da ein BE, BEB, BEA dazwischen kommt.
Habe mal eine S5D-Datei mit 2 FBs "geHexDumpt".
Auf Vielfachen der ByteAdresse 0080 findet man die BausteinKennung '70 70' (oder auch nicht).
Als LängenAngabe finde ich in Byte 8+9 den Offset des Wortes hinter dem BE-Befehl (65 00),
BasisAdresse von '70 70' plus 2mal diesen Offset ergibt die ByteAdresse des 1. Wortes hinter dem BE.
Danach folgt die Liste der SprungMarken. Habe leider kein Beispiel, das auszuführenden Code hinter dem BE enthält.
Anhang anzeigen HexDump-S5D.pdf
Gruss, Heinileini
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Längenangabe (z.B. 0x0016 oder 0x001D) ist die Länge des Bausteins inklusive der Headerlänge(ab 0x7070 = Syncmuster) in Worten, deshalb auch der scheinbare Verweis auf das 1. Wort nach dem BE.
 
Noch 2 Fragen:

Ich habe hier ein S5 Projekt da ist z.B. ein Baustein FB240 (COD:B4) der scheint aber wirklich nur aus BLD255 und BE zu bestehen? Kann das sein. Ich ermittle die länge (ergibt 40 Bytes), da der Baustein aber 2 Parameter hat, und ich dann so die Codeadresse ermittle:

10 + ((pars.Count*3) + 5)*2

bleiben nur 2 Bytes übrig. Mach ich da was falsch?


Und habe gerade noch was entdeckt. Haben einen Baustein im Projekt der mit 6E anfängt (statt 7070), weiß jemand was das für einer ist?
(ich hab bisher: 0x06 db vorkopf, 0x11 dx vorkopf, 0x0d fb vorkopf, 0x0a fx vorkopf)
 
Die Längenangabe (z.B. 0x0016 oder 0x001D) ist die Länge des Bausteins inklusive der Headerlänge (ab 0x7070 = Syncmuster) in Worten, deshalb auch der scheinbare Verweis auf das 1. Wort nach dem BE.
Na klar! Länge = EndAdresse + 1 - AnfangsAdresse.
Verstehe nicht, was scheinbar sein soll an dem "scheinbaren Verweis" auf das 1. Wort nach dem BE ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
10 + ((pars.Count*3) + 5)*2
...
Haben einen Baustein im Projekt der mit 6E anfängt (statt 7070), weiß jemand was das für einer ist?
10 + 3 * AnzParameter in Worten sollte hinkommen bzw. doppelt soviel in Byte.

Meines Wissens fangen BausteinKöpfe immer mit '70 70' an und sind ab Adresse 0200h alle 80h Byte zu suchen.
Wenn dort etwas anderes als '70 70' steht, ist das kein Anfang eines BausteinKopfes.
 
10 + 3 * AnzParameter in Worten sollte hinkommen bzw. doppelt soviel in Byte.

Meines Wissens fangen BausteinKöpfe immer mit '70 70' an und sind ab Adresse 0200h alle 80h Byte zu suchen.
Wenn dort etwas anderes als '70 70' steht, ist das kein Anfang eines BausteinKopfes.

Mein Code funzt ja soweit auch für andere Typen. Glaub das 7070 war nur bei PB/FB etc... Bei den Kommentarbausteinen nicht! Ist aber schon sooo lang wieder her.
 
Kann ja auch sein, das meine Größenermittlung passt, und der Baustein wirklich keinen weiteren Code hat. Dachte nur alt weiß jemand mehr!
 
Sagen wir

pos und pos+1 sind jeweils die '70'. pos+2 der Blocktyp, pos+3 die Bausteinnummer, pos+8 u. pos+9 die länge
für was stehen pos+4, pos+5 und pos+6?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
d.h. aber der Baustein enthält bei mir nur ein "BE". woher weiß Step5 das es eine Systemfunktion ist?
Dein Link führt zum Thema ASM. Wo gab's das? Ich glaube bei der 840 C.
Das sind SiemensStandardBausteine, die aber nicht einsehbar sind (angeblich compilierte SW?).
Das sind sozusagen die Schnittstellen zu den Bausteinen, in denen zu den FB/FX-Nrn die entsprechenden Parameter aufgelistet sind, so dass man sie wie "normale" FB/FX aufrufen kann. Habe leider kein Beispiel gefunden, wie die HexCodierung in S5D aussieht.
Im Link ist die Rede davon, dass jede Menge davon vorhanden sind, aber nirgends aufgerufen werden.
Warum der Programmierer sie angelegt hat, obwohl er sie nirgends verwendet, ist damit auch klar:
Siemens stellt zur Verfügung, aber es wird in dem individuellen Programm nicht benutzt.
 
scheint die Bausteine sind wirklich leer, es wird dort eine Systemfunktion aufgerufen.
d.h. aber der Baustein enthält bei mir nur ein "BE". woher weiß Step5 das es eine Systemfunktion ist?

Ich habe erst kürzlich ein paar Änderungen auf einem S5-95F System durchgeführt. Dort waren auch mehrere FB2x0 im Programm verwendet.
Diese FB´s sind fest in der Firmware drin. Wenn ich die 95F urlösche und die FB2x0 übertragen möchte, dann meldet die S5, dass die Objekte bereits vorhanden
sind. Wenn man dass Eprom brennt, dann müssen die FB2x0 auch mit drauf allerdings nur die von Siemens sogenannten "Hüllen".
 
Zurück
Oben