Deklaration Datenbaustein

AxelK83

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

Habe einen Datenbaustein erstellt. Screenshot.jpg

In diesen wird möchte ich Daten von einem Profibusteilnehmer schreiben. Dabei habe ich diesen nach einer Vorgabe des Kunden erstellt. Darin soll ab Byte 10 Tag, ab Byte 11 Lfd Nummer, ab Byte 15 WT Nummer usw. stehen. Habe mich an alles gehalten (Datentypen...).
Aber warum lässt S7 Byte 11 aus?? Der Tag steht doch in als Byte in Byte 10, daher müsste doch Byte 11 frei sein?? Was soll diese Reserve?

Danke für eure Hilfe.
 
Zuletzt bearbeitet:
in einem db wird immer ein ganzes wort belegt wenn der datentyp wechselt.
byte 11 ist in deinem fall ein weiteres freies byte wird aber nicht angezeigt.
auch wenn du z.b. dbx10.0 nimmst ist der nächstmögliche für 1 byte dbb11 für int und größer dbw12.
d.h. datentypen die 16bit oder größer sind beginnen immer an einer geraden adresse.
lfd nr. was ist das fürn datentyp? int oder 3 byte (was eine äußertst schlechte wahl wäre)? wie willst du 3 byte mit eine laufenden nummer beschreiben
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen

Habe einen Datenbaustein erstellt. Anhang anzeigen 16626

In diesen wird möchte ich Daten von einem Profibusteilnehmer schreiben. Dabei habe ich diesen nach einer Vorgabe des Kunden erstellt. Darin soll ab Byte 10 Tag, ab Byte 11 Lfd Nummer, ab Byte 15 WT Nummer usw. stehen. Habe mich an alles gehalten (Datentypen...).
Aber warum lässt S7 Byte 11 aus?? Der Tag steht doch in als Byte in Byte 10, daher müsste doch Byte 11 frei sein?? Was soll diese Reserve?

Danke für eure Hilfe.

Hallo!

Würde mal sagen das alles ab 16Bit nur bei einer geraden Zahl beginnen kann!

Mfg
 
In Lfd Nummer wird die Bauteilnummer des Tages geschrieben, also 1, 2, 3 .... und um 24Uhr wird wieder bei 1 begonnen.

So weit so gut, aber die Idee kommt nicht von mir, hat der Kunde so vorgegeben. In einem älteren Projekt war der Teilnehmer aus dem gelesen wurde innerhalb des Prozeßabbilds, hier nicht mehr möglich. Da hat es eben so ausgesehenScreenshot2.jpg
Jetzt wollte ich eben alles 1:1 in den DB schreiben und anders herum.
 
definiere 2 byte und kopiere Sie einzel in die Byte eines korrekt liegenden Wortees und greife dann auf das Wort zu
 
Als etwas unkonventionellen Vorschlag, könntest du auch auf den DB verzichten, und ein paar Merkwerwörter "opfern",
diese kannst du ebenfalls belegen wie du lustig bist, ohne dich an irgendwelche konventionen zu halten.

Da die Vorgabe des Kunden nunmal so ist, hast du imho keine schönere Möglichkeit, vorallem keine symbolische.

Mfg
Manuel
 
Danke für die Vorschläge.
Hab nun folgendes gemacht. Lese jetzt einfach alles seperat aus und leg es mir dort im DB ab, wo ich es haben will. D.h. einmal lese ich eben ein Byte ein, dann wieder 2 Byte oder dergleichen ...... . Ist halt einmal etwas Tipparbeit und nicht nur schön einfach alles als mehrere Doppelwörter lesen und schreiben.
 
Zurück
Oben