Step 7 Bytes in Datenstruktur erkennen

Zuviel Werbung?
-> Hier kostenlos registrieren
Ichhabe hier eine Aufgabe wo es heißt:

Es wird angenommen das für die Darstellung eines Bezeichners 4 Bytes benötigt werden. Dann ist eine Datenstruktur angegeben und die wollen wissen wieviel Bytes diese benötigt.

Das Thema find ich sehr kompliziert.:confused:
 
Achso, garnicht per SPS :)
Kannst du es denn mit Step7 oder TIA (nicht optimierte DB) erstellen? da siehst du die Adressen.

HINT: beide Systeme reservieren pro Strukturelement immer mindestens 1 Wort.

mfG René
 
Ich habs raus. Die Struktur ergibt ein Byte, dann das Unterelement , dann der Datentyp und zuletzt der Bezeichner.
 
So ist es hier beschrieben und wenn ich es mir angucke ist es irgendwie logisch. Könnte es mir nicht anders erklären. Mh wie meinst du kann an das anhand einer Struktur erkennen?
 
Bau dir doch die Struktur mal nach und sieh dir den Speicherbereich mal an.
Ich versteh ehrlichgesagt noch nicht wirklich die Frage und an der anzahl der Antworten bin ich glaub ich nicht der Einzige.

screenshot_1.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.
Wie kann ich an einer Datenstruktur erkennen wieviele Bytes diese enthält?

Ich geh davon aus, dass du eine Siemens CPU hast.
Wenn du auf ein Element zugreifst, das nicht vorhanden ist, kommt eine Fehler zurück.
Dann wird ein OB aufgerufen, in diesem kannst du den Fehler erkennen.


bike
 
es ist zu viel um hier reinzuschreiben. Wenn ich es schaffe scanne ich es mal ein und lade es hoch.

Es wurd ehalt in einem Lehrbrief die Aufgabe gestellt wieviel Bytes eine Datenstruktur benötigt. Vorher stand halt eine im Lehrbrief mit Unterelementen, Datentyp und Bezeichner. Daraus sollte ich das dann erkennen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
wenn es dir rein um die Größe der Struktur geht könntest du es so machen :
Du lädst dir den Pointer auf die Struktur. Dann lädst du dir den Pointer der Variablen, die auf die Struktur folgt (es muss da dann natürlich wenigstens eine geben). Die beiden Pointer maskierst und subtrahierst du - dann hast du die Bit-Breite der Struktur (da Pointer auf der Bit-Adresse arbeiten). Dieses Ergebnis dann noch durch 8 dividiert und du hast die Größe der Struktur in Byte ...

Gruß
Larry
 
Wenn er doch die Adresse der Struktur hat. Und die Adresse des nachfolgenden Elements. Dann weiss er doch schon die Grösse der Struktur. Wozu dann noch das Pointergeschupse?
 
Danke für die Antwort. Sorry das ich evtl. so ungeau schreibe aber ich habe es eigendlich so geschrieben wie es auch im Lehrbuch steht. Deswegen versteh ich es vielleicht auch nicht ;).
Da ich auch Anfänger bin weiß jetzt auch nicht was in dem Fall ein Pointer ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Pointner = Zeiger.
Das habt ihr wohl noch nicht gehabt.
Die Struktur eines Feldes musst du erstellen.
Dann diese vervielfälltigen und du hast die Start- und Endadresse auf die zugegriffen wird.


bike
 
@chipchap

ZUERST: Was für ein System hast du? SPS, Step7, TIA, gar kein Programmiersystem - AUKLÄRUNG JETZT

ich formuliere die Frage mal neu und du sagst uns ob es zu deiner Aufgabenstellunge passt:


Frage: Zu einer gegebenen Struktur soll ohne Programmierung die Bytegröße ermittelt werden
Ergebnis: Damit du lernst wie ein Datenblock aufgebaut ist
PASST das so in etwa?


Wenn ja sind für dich folgenden Punkte relevant:
-wieviel Bits brauchen deine Typen
-Alignment(Anordnung) und Padding(Füllbytes) der Typen


oder geht es echt nur um einen Strukt mit n Bytes?
 
Zuletzt bearbeitet:
Groesse, Alignment und Padding immer in Bits

Alingment und Padding - wenn die Bitaddresse nicht durch die Zahl teilbar ist dann auffüllen bis Teilbar

--
[Alignment]
type-size
[Padding]
--

Bool
Groesse: 1 Bit
Alignment: 1
Padding: 1

Byte
Groesse: 8 Bit (korrigiert auf 8 Bits - Danke vollmi)
Alignment: 8
Padding: 1

Word
Groesse: 16 Bit
Alignment: 16
Padding: 1

Struct
Groesse: Bitgroesse der Kinder
Alignment: 16
Padding: 16

Ergibt bei dir

Struct ein_struct
Byte ein_byte

Code:
byteoffset/bitoffset


0/0
      [struct.alignemnt = 16 ist hier erfuellt: 0 bits fuellung]
0/0   struct mein_struct
        [byte.alignment = 8 ist hier erfuellt: 0 bits fuellung]
0/0     byte mein_byte
        [byte.padding = 1 ist hier erfuellt: 0 bit fuellung]
1/8   [struct.padding = 16 ist nicht erfuellt also auffuellen auf 16 bits]
2/16  end

Ergibt 2 Bytes für deinen Strukt

Jetzt kannst du weiter Fragen stellen
 
Zuletzt bearbeitet:
Zurück
Oben