# Step5 Projekte, gelöschte Bausteine.



## Jochen Kühner (28 Dezember 2010)

Weis jemand ob es in Step5 Projekten auch möglich ist Bausteine nur als gelöscht zu markieren, ähnlich wie in Step7 Projekten. (Dort sind die Bausteine ja in DbBase Datenbanken, in welchen dann die Datensätze als gelöscht markiert werden!)

Ich hab das Problem das Ich es nun schaffe die Liste der Bausteine aus dem Projekt auszulesen, aber manche Bausteine sind darin doppelt enthalten, aber in Step5 laufen die Projekte ohne Probleme!


----------



## Corosop15 (28 Dezember 2010)

Hallo Jochen,

bei STEP5 werden gelöschte oder überschriebene Bausteine im Programm genauso wie im AG behandelt. Sie werden nur für ungültig erklärt. Bei überschriebenen wird neue Anfangsadresse geändert.
Seit irgendeiner Version kann (ich meine 6er) kann man die Bausteine im Programm genauso komprimieren wie es im AG möglich ist. Die Größe der S5D-Datei verringert sich.

Gruß
Corosop15


----------



## Jochen Kühner (28 Dezember 2010)

Corosop15 schrieb:


> Hallo Jochen,
> 
> bei STEP5 werden gelöschte oder überschriebene Bausteine im Programm genauso wie im AG behandelt. Sie werden nur für ungültig erklärt. Bei überschriebenen wird neue Anfangsadresse geändert.
> Seit irgendeiner Version kann (ich meine 6er) kann man die Bausteine im Programm genauso komprimieren wie es im AG möglich ist. Die Größe der S5D-Datei verringert sich.
> ...



Dache mir sowas schon fast, ne Doku wie die für Ungültig markiert werden gibts wohl nicht? Das Problem ist, wenn ich mir einen neues Projekt erstelle, dann welche lösche, dann sind die auch wirklich gelöscht. Mal schaun wie Ich das rausfinden kann.


----------



## argv_user (28 Dezember 2010)

Ich vermute, eigentlich: glaube mich zu erinnern, dass die "gelöschten" Bausteine einfach nicht mehr
im Bausteinverzeichnis auftauchen.

Hilft Dir vielleicht weiter.


----------



## Jochen Kühner (28 Dezember 2010)

argv_user schrieb:


> Ich vermute, eigentlich: glaube mich zu erinnern, dass die "gelöschten" Bausteine einfach nicht mehr
> im Bausteinverzeichnis auftauchen.
> 
> Hilft Dir vielleicht weiter.



Heißt das in der s5d File gibts noch ein abschnitt in dem die ganzen gültigen Bausteine gelistet sind?


----------



## argv_user (29 Dezember 2010)

Jochen Kühner schrieb:


> Heißt das in der s5d File gibts noch ein abschnitt in dem die ganzen gültigen Bausteine gelistet sind?



Es gibt ein Inhaltsverzeichnis. Darin sind die Adressen der gültigen Bausteine 
abgelegt, als Vielfaches der CP/M-Blockgröße von 128 Bytes.


----------



## Jochen Kühner (29 Dezember 2010)

argv_user schrieb:


> Es gibt ein Inhaltsverzeichnis. Darin sind die Adressen der gültigen Bausteine
> abgelegt, als Vielfaches der CP/M-Blockgröße von 128 Bytes.



Woher weisst du das? Steht das irgendwo Beschrieben?

Mal schaun, vielleicht finde Ich es ja...


----------



## eNDe (29 Dezember 2010)

*Gelöschte Bausteine Step5*

Hallo,
hier mal mein bescheidener Beitrag zu deinem Problem:
Im Gegensatz zu Step7 hat Siemens für Step5 die Befehlscodierung und den Programmaufbau exakt veröffentlicht.
Deshalb kann hier folgendes festgehalten werden:
- Jeder Baustein hat einen Bausteinkopf, bestehend aus 5 Worten. Die Bedeutung der einzelnen Worte ist:
-- 1. Wort - Codierung KH=7070 als Synchronisationsmuster
-- 2. Wort - Bausteinart und -nummer
Im linken Byte wird die Bausteinart codiert und ob der Baustein gültig ist oder nicht (00... - ungültig, 01... - gültig)
Die restlichen 6 Bit sind für die Bausteinart reserviert (1 - DB, 10 - SB, 100 - PB, 101 - FX, 1000 - FB, 1100 - DX, 10000 - OB)
Im rechten Byte steht die Bausteinnummer als Dualzahl
-- 3. Wort - linkes Byte - Kennung für das PG, rechtes Byte - ein Teil der Bibliotheksnummer
-- 4. Wort - Rest der Bibliotheksnummer
-- 5. Wort - Länge des Bausteins als Dualzahl einschließlich der Länge des Bausteinkopfes
Was bedeutet das?
Da diese Aussagen sowohl für das Projekt (im PC) als auch für die Codierung im AG gilt, kann es durchaus ungültige Bausteine auch im Projekt geben,
erkennbar an der Codierung im 2. Bausteinwort (beginnt dann dual mit 00..., bei gültig 01...)
Ein Baustein endet immer mit dem Befehl BE, entspricht der Codierung 65 00. 
Der eigentliche Baustein beginnt deshalb immer 5 Worte nach der Codierung 70 70 und endet an der Stelle 65 00.
Ist alles recht einfach, erlaubt aber (leider) erhebliche Möglichkeiten der Programmmanipulation. 
Man kann das Wissen um diese Codierungen aber auch dazu nutzen, manipulierte Programme wieder lesbar zu machen - und das ist eben der Vorteil.
Hoffe das hilft dir weiter! 
MfG
eNDe


----------



## Jochen Kühner (29 Dezember 2010)

eNDe schrieb:


> Hallo,
> hier mal mein bescheidener Beitrag zu deinem Problem:
> Im Gegensatz zu Step7 hat Siemens für Step5 die Befehlscodierung und den Programmaufbau exakt veröffentlicht.
> Deshalb kann hier folgendes festgehalten werden:
> ...



Das weis Ich schon, aber es gibt bei mir in Projekten eben auch Bausteine welche öfters im Projekt vorkommen, aber bei allen die Codierung auf gültig sitzt!

Desweiteren gibt es auch noch Bausteine welche nicht mit 7070 beginnen, Vorköpf von Datenbausteinen z.B!

Und den Bausteinaufbau haben Sie vielleicht veröffentlicht, soweit ich weiss aber nicht den aufbau der s5d Dateien.

Trotzdem Danke für die Infos!


----------



## argv_user (29 Dezember 2010)

Jochen Kühner schrieb:


> Woher weisst du das?


Ich habe es ausprobiert, wie bestimmt schon einige vor mir.
Meine diesbezüglichen Versuche liegen allerdings schon etwa
20 Jahre zurück; nochmal würde ich mir das höchstens gegen
ordentliche Bezahlung antun...


----------



## eNDe (29 Dezember 2010)

*Step5 Bausteine*

Hallo nochmal
mir ist auch nicht bekannt, ob Siemens den Dateiaufbau .S5D irgendwo separat veröffentlicht hat. Aber zu deiner Aussage habe ich Anmerkungen:
- Bausteine, auch DB, beginnen immer mit 7070 (ohne jede Ausnahme). Etwas Anderes habe ich nie gehört.
- Wie sieht denn der Hex-Code aus, wenn es einen mehrfach gültigen Baustein gibt?
- Habe ich nie probiert was passiert, wenn ich einen ungültigen Baustein (als Manipulation) nachträglich als gültig erkläre (per Hex-Manipulation). 
Dann gäbe es ja 2 gültige Bausteine mit der gleichen Bezeichnung. Das genau wird ja normalerweise vom PG "automatisch" verhindert.
Habe mir mal mit einem Hex-Editor ein Uralt-Projekt angesehen. Jede Menge ungültige Bausteine (auch DB). Zwischen den Bausteinen gibt es tatsächlich irgendwelche Daten, aber keine Bausteine.
MfG
eNDe


----------



## Jochen Kühner (29 Dezember 2010)

eNDe schrieb:


> Hallo nochmal
> mir ist auch nicht bekannt, ob Siemens den Dateiaufbau .S5D irgendwo separat veröffentlicht hat. Aber zu deiner Aussage habe ich Anmerkungen:
> - Bausteine, auch DB, beginnen immer mit 7070 (ohne jede Ausnahme). Etwas Anderes habe ich nie gehört.



Ja, auch DB sogar DK. Aber der Vorkopf (DV) beginnt nicht mit 70 70 (soweit Ich es jetzt rausgefunden habe, und das auslesen der Vorköpfe funktioniert ja) (Auch die Vorköpfe bei FB, DX und FX beginnen nicht mit 70 70).



eNDe schrieb:


> - Wie sieht denn der Hex-Code aus, wenn es einen mehrfach gültigen Baustein gibt?


Schau Ich morgen nach.



eNDe schrieb:


> - Habe ich nie probiert was passiert, wenn ich einen ungültigen Baustein (als Manipulation) nachträglich als gültig erkläre (per Hex-Manipulation).
> Dann gäbe es ja 2 gültige Bausteine mit der gleichen Bezeichnung. Das genau wird ja normalerweise vom PG "automatisch" verhindert.
> Habe mir mal mit einem Hex-Editor ein Uralt-Projekt angesehen. Jede Menge ungültige Bausteine (auch DB). Zwischen den Bausteinen gibt es tatsächlich irgendwelche Daten, aber keine Bausteine.
> MfG
> eNDe


----------



## Jochen Kühner (30 Dezember 2010)

Also habe jetzt mal nachgeschaut, Ich habe in verschieden Projekten div. Bausteine mit sogar dem identischen Header, also darin ist keiner für ungültig markiert, von dahre denke Ich das es irgendwo anderst in der S5D Datei Bausteine für gültig bzw. ungültig erklärt werden.

Mach mich jetzt noch mal dran das Bausteinverzeichnis welches argv_user erwähnte zu finden.

Was Ich noch nicht weis: In jedem Baustein kommt nach einer Zeit wieder der eigene Dateiname, dies schenit irgenwie sektionen in der datei zu markieren.

dachte nun eigtendlich das Byte 20/21 nach dem Sektionstart, die größe der sektion *128 Byte angeben, genau so wie Byte 18 nach dem Sektionstart die größe des Sektionkopfes angeben (welche Infos auch immer in dem Kopf stecken, viel. welche Bausteine gültig sind?). Das scheint aber nicht immer zu stimmen. Viel. weis ja jemand noch was dazu?

Und vieleicht auch, was das erste Byte direkt nach dem Dateinamen in einer Sektion aussagt? (Ich nenne es mal Sektionstyp) (Sektionsstart +8)

Hab mal eine PNG angehängt was Ich so vermute...


----------



## Jochen Kühner (30 Dezember 2010)

Habs jetzt nochmals nachgeschaut, es scheint als gibt es in jeder Sektion einen Kopf, indem die in dieser Sektion stehenden Bausteine beschrieben sind. Mal schaun was sich da ändert wenn ein Baustein ungültig ist...


----------



## argv_user (30 Dezember 2010)

Einen kleinen Hinweis (der möglicherweise überfüssig ist) habe ich noch:
Die Dateiformate hängen auch noch von der STEP5-Version ab.


----------



## eNDe (30 Dezember 2010)

*Gelöschte S5-Bausteine*

Hallo,
habe heute mal mit Step5 etwas getestet und folgendes festgestellt:
- Mein Basispaket S5 Version 7.2 schreibt keine gelöschten Bausteine in die S5D-Datei.
- Wie bereits dargestellt, beginnen alle getesteten Bausteine mit 7070 (OB1, PB1, DB1, auch die Kommentarbereiche beginnen mit 7070)
- Wie jeder weiß, werden in das AG keine Kommentare übertragen
- Die Köpfe der Bausteine befinden sich unverändert im AG
- Wird ein Baustein ein zweites mal in das AG übertragen, wird der schon vorhandene nicht gelöscht sondern ungültig gemacht. 
Siemens erklärt, dass die linken Bit im 2. Kopfwort 00=gültig und 01=ungültig bedeutet.Das scheint nicht zu stimmen.
Ich habe getestet mit WinSPS-S5 Version 1.71(32Bit-Version) von mhj-Software. Dort werden ungültige Bausteine mit der einheitlichen Kennung Hex 11 (rechtes Byte bleibt unverändert) im Byte nach 7070 gekennzeichnet.
- Der Hex-Bereich der Kommentare in der S5D-Datei hat einen etwas komplizierteren Aufbau, der Kopf besteht hier aus 14 Worten + 1 Byte als Kommentarkennung.
- Netzwerk- und Zeilenkommentare werden in einem gemeinsamen Kommentarbereich gehalten und nur durch ein Kennbyte unterschieden.
So viel kurz vor dem Jahreswechsel.
Allen, die das hier lesen, wünsche ich einen guten Rutsch und ein erfolgreiches Jahr 2011. 

:sm20:

eNDe


----------



## Jochen Kühner (30 Dezember 2010)

eNDe schrieb:


> Hallo,
> habe heute mal mit Step5 etwas getestet und folgendes festgestellt:
> - Mein Basispaket S5 Version 7.2 schreibt keine gelöschten Bausteine in die S5D-Datei.


Meines auch nicht, aber Ich habe Projekte in denen es so ist, und da ist der Hex Code der Bausteine gleich, aber die Bausteinliste hab Ich noch nicht geprüft!



eNDe schrieb:


> - Wie bereits dargestellt, beginnen alle getesteten Bausteine mit 7070 (OB1, PB1, DB1, auch die Kommentarbereiche beginnen mit 7070)


Ja, außer die Vorköpfe zu den DBs bzw FBs, die beginnen nicht mit 7070
(Enthalten die DB Struktur bzw. die FB Sprungmarken)



eNDe schrieb:


> - Die Köpfe der Bausteine befinden sich unverändert im AG


Weis jetzt nicht was du damit meinst, aber die Vorköpfe von DB bzw FB sind nicht im AG.


----------



## eNDe (31 Dezember 2010)

Hallo,
muss mich doch noch einmal zum Thema melden:
1. Ich teste das, was im AG vorhanden ist, mit dem Simulationsprogramm WinSPS-S5 von mhj. Eine reale S5 steht mir leider nicht zur Verfügung. 
Ich gehe davon aus, dass die interne Speichernutzung des Simulations-AG identisch ist mit dem realen AG. Falls nicht, kann ich leider nicht helfen.
Es wäre schön, wenn mhj hierzu etwas sagen würde.
2. Ich bleibe dabei: Alle Bausteine im AG beginnen mit 7070, das 2. Wort kennzeichnet die Bausteinart. Dabei bedeutet die Kodierung 1100 "ungültiger" Baustein. 
Dieser kann über "komprimieren" aus dem AG entfernt werden.
3. Datenbausteine enden einfach mit dem letzten Datenwort, schließen also nicht mit der Codierung 6500 ab.
4. Datenbausteine enthalten ihre Daten immer im Hex-Format. Die Struktur dieser Daten steht nicht im AG.
5. Ein FB (im AG) beginnt mit 7070. Ab dem 6. Wort beginnt der Bausteinkopf (die Struktur des FB). Im 5. Wort steht ein Sprungbefehl, 
der hinter den Bausteinkopf auf den Bausteinrumpf zeigt. Das hat nichts zu tun mit Sprüngen, die intern zum FB-Code gehören. Der FB endet mit 6500.
Beispiel 1: DB1 mit dem Inhalt KF = 12345; Codierung im AG: 70 70 01 01 80 00 00 00 00 06 30 39
Beispiel 2: FB 11
Name: SOLLVORG
Bez: SV1 E W
Bez: ADR1 A W
Bez: ADR2 A W
Bausteinrumpf:
L = SV1
T = ADR1
T = ADR2
BE
Codierung im AG:

```
70 70 - Bausteinkennung
08 0B - FB 11 (gültig)
84 00
00 00
00 17 - Bausteinlänge 23 Worte einschließlich Kopf
2D 0E - überspinge 15 Worte, dort beginnt der Bausteincode
53 4F - SO
4C 4C - LL
56 4F - VO
52 47 - RG
02 20 - Beginn 1. Parameter 
53 56 - SV
31 20 - 1
08 20 - Beginn 2. Parameter
41 44 - AD
52 31 - R1
08 20 - Beginn 3. Parameter
41 44 - AD
52 32 - R2
46 01 - L = SV1
66 02 - T = ADR1
66 03 - T = ADR2
65 00 - Bausteinende
```
(Die Codierungen 46 und 66 konnte ich im mir vorliegenden MC5-Code nicht finden)
Damit soll es für 2010 genügen.
Nochmals "Guten Rutsch"
eNDe


----------



## Rainer Hönle (31 Dezember 2010)

Zur Klärung: Der Vorkopfbaustein (nach jfk) ist nicht Bausteinheader (nach eNDe)
Die Frage kann ja auch sein, ob DV DB-Vorkopf oder DB-Verweis oder sonst etwas bedeutet. 
Sicher ist, dass die *V- und *K-Bausteine sich nicht in der SPS befinden.


----------



## Jochen Kühner (4 Januar 2011)

*Mhmmm*

Glaub Ich hab jetzt was.

Am Anfang in der S5D Datei stehen die Abschnitte welche noch gültig sind.

D.h. wenn ein Abschnitt nicht am Anfang in der S5D Datei erwähnt wurde, dann ist er auch nicht gültig.


----------



## Jochen Kühner (4 Januar 2011)

*So...*

Hab das auslesen der Bausteine denke mal soweit im griff, bei meinen vorhanden Projekten funktionierts.

Hab mal noch ne PNG angehängt wie Ichs jetzt implementiert habe.

Wenn jm. Lust hat es zu testen, ist in der ToolboxForSiemensPLCs integriert. (http://www.sps-forum.de/showthread.php?t=40921).


----------

