Step 5 Step 5 DB/DX indirekt erzeugen

lul12

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

Ich programmiere zur Zeit einen Standard Baustein für unsere Firma.

Der Baustein soll je nachdem welche DB Nummer vorgegeben ist, den entsprechenden Datenbaustein erzeugen.

Der normale erzeugen Befehl lautet ja:

L 20
E DB 4

Für den DB4 in der Größe von zwanzig Word, ist es möglich die DB Nummer hier indirekt vor zu geben? Wenn ja, wie?




Danke für die Hilfe

Gruße

Edit:
Da noch niemand geantwortet hat noch eine zweite Frage.
Wie ermittelt man in S5 die Länge eines Datenbausteins? Würde mich grundlegend interessieren, in s7 besteht ja die Möglichkeit über den sfc24.

Danke nochmals
 
Zuletzt bearbeitet:
> Wie ermittelt man in S5 die Länge eines Datenbausteins?

das geht.

in den Adresse ab EA06 (S5 150U) stehen die Anfangsadressen aller bausteine (OB, PB, SP, FB, und auch DBs).
Ist dort 0, dann gibt es den Bst nicht. Sonst ist es die Adresse im Ram wo er beginnt.
Dort geht es mit 7070h los. Dann folgen Typ, Nummer und auch die Länge.

Das steht warscheinlich auch in den CPU-Handbüchern.
------------------------------------------------------------

nun zu E DB.

L 20
E DB 4

vieleicht so: ohne Gewähr, alles zu lange her.
L KF 4 // db Nummer
T MW 250 // MW als Zeiger

L 20 // DB Länge
B MW 250 // jetzt der Zeiger, in dem die DB Nummer steht
E DB 0
------------------------------------------------------------
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beispiel
Systemhandbuch 928


https://www.google.de/url?sa=t&rct=...21_d_OCR.pdf&usg=AOvVaw2Oa0D1pX57jRylubrhaHDR


8.2.1 Adreßraumaufteilung

im DB 0 stehen die Bst Anfangsadressen

8.3.1 Bausteinköpfe im Anwenderspeicher

8.3.2 Bausteinadreßlisten im Datenbaustein DB 0

ACHTUNG

Anfangsadressen der Adreßlisten

Für jeden Bausteintyp gibt es im DB 0 eine eigens reservierte, 256 Wörter lange Adreßliste, d. h. für jeden Baustein ist 1 Wort reserviert. Nicht geladene und gelöschte Bausteine haben die Anfangsadresse '0'.
Die Anfangsadressen der einzelnen Bausteinadreßlisten stehen außerdem in den Systemdaten BS 32 bis BS 38:
BS 32: Anfangsadresse der DX-Adreßliste,
BS 33: Anfangsadresse der FX-Adreßliste,
BS 34: Anfangsadresse der DB-Adreßliste,
BS 35: Anfangsadresse der SB-Adreßliste,
BS 36: Anfangsadresse der PB-Adreßliste,
BS 37: Anfangsadresse der FB-Adreßliste,
BS 38: Anfangsadresse der OB-Adreßliste (nur 48 Wörter lang).
Baustein-An- Die Baustein-Anfangsadressen in den Adreßlisten zeigen immer auf das erste
fangsadressen Wort nach dem Bausteinkopf:
bei Datenbausteinen jeweils auf das Datenwort DW 0,

bei Codebausteinen jeweils auf die erste STEP-5-Anweisung (bei FBs auf
den 'SPA'-Befehl vor dem Namen und der Parameterliste).

Die DB-Länge steht also bei (ADR - 1Wort) !

Obacht: kann bei jedem Typ CPU (150er, 135er, 115er etc.) wo anders stehen !
 
Hi,

ich bin mir nicht 100 pro sicher mit der Antwort, aber du müsstest dir die Speicheradresse des DBs raussuchen und dann hat jeder DB einen Kopf (glaube 5 Wörter) und irgendwo da steht auch die Länge drin. Weiss es aber nicht mehr genau, also vorsicht ^^
 
Zurück
Oben