S7 bit /byte

MyNameIsThoms

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe eine Frage zur bit/byte Vergabe bei s7.

Folgendes Problem: Kommunikation SPS mit Roboter.
Adressen im SEND bereich des DB der SPS sehen folgendermaßen aus:
AdresseNameTypRoboteradresse
0.0reservebyte
+1.0startboolin[17]
+1.1stopboolin[18]
+1.2gstbool...
+1.3autobool...
+1.4einzelbool...
+1.5fertigbool...
+1.6iobool...
+1.7nioboolin[24]
+2.0x-posreal
+6.0y-posreal
...





Bei den Kommentaren zu Adresse +0.0 steht "bit 9-16"
Da macht es ja dann Sinn dass beim Roboter der erste relevante Wert auf IN[17] liegt. Aber warum ist Adresse 0.0 bis 0.7 mit bit 9-16 belegt anstatt mit bit 1-8 oder noch besser 0-7? :confused:
Und wie geht es dann bei +2.0 weiter - hat der Roboter dann dort in[25] to in[56], bei +6.0 in[57] to in[88]?

Ein Kollege meinte das wäre was Siemensspezifisches, dass da irgendwie das erste byte eigentlich das zweite sei oder so...

Gibts da irgendwelche Literatur dazu? Ich suche schon ne weile danach, finde aber nichts. Und da das zu meiner Diplomarbeit gehört macht es sich da immer ganz gut wenn man das mit Literatur hinterlegen kann.

Danke schonmal für eure Antworten!
Gruz Thoms

Achso, die CPU ist 317-2 PN/DP
die S7 Version 5.4
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Stichwort für die Erklärung ist Little und Big Edian.

Diese Stichworte bei Wikipedia eingegeben, erklären dir das Phänomen.


bike
 
Erstmal vielen Dank!

Das hat mir schon ein ganzes Stück weitergeholfen und erklärt warum ich bei 4byte (dint/real) byte 1 mit 4 und 2 mit 3 tauschen musste.
Aber warum es nach dem ersten Byte mit 17 weiter geht versteh ich noch nicht so richtig

das hab ich:
1_______8 9______16
1111 0011 0000 0000

so ist es bei Siemens:

9______16 1______ 8
0000 0000 1111 0011

wenn also, nach meiner tabelle oben, die ersten 8 bit bit 9-16 sind dann sollte es doch dann mit 1-8 weiter gehen... also der roboter die eingänge in[1] bis in[8] einlesen und nicht in[17] bis in[24], oder?
oder dreht das nur bei den 8 ersten weil das reserve vom typ byte ist während die nachfolgenden die kleinste adressierbare einheit, also typ bit, haben?
was mich hier verwirrt ist einfach dass dann bei siemens, zumindest laut meiner tabelle mehr oder weniger 1 byte unterschlagen wird wenn man das byte, bit, bit, bit, bit, bit, bit, bit, bit, dint adressiert

weil laut tabelle:
9______16 17_____ 24
0000 0000 0000 0000

anstatt
9 ______16 1_____ 8 17_____ 24
0000 0000 0000 0000 0000 0000

thoms
 
Hi,

also bei Siemens sieht es immer noch so aus:

DW0 besteht aus DBB0 (High-Byte) und DBB1 (Low-Byte)

DW0: 00000000 - 00000000
_____15_____8 - 7______0
_______DBB0 _____DBB1

Beispiel: Bit 7 im DW0 = DBX1.7
Bit 14 im DW0 = DBX0.6

Gruß
Move
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

also bei Siemens sieht es immer noch so aus:

DW0 besteht aus DBB0 (High-Byte) und DBB1 (Low-Byte)

DW0: 00000000 - 00000000
_____15_____8 - 7______0
_______DBB0 _____DBB1

Beispiel: Bit 7 im DW0 = DBX1.7
Bit 14 im DW0 = DBX0.6

Gruß
Move

Das war nicht so ganz die Frage.
Es geht darum, dass der Roboter die Reihefolge der Bits und Bytes anders hat als die PLC.

Die Frage wegen der 3 Byte habe ich nicht verstanden.
Bei Wort zu griffen sind die Byte vertauscht, beiu einem Doppelwort aber auch.
Wie willst du auf die 3 Byte zugreifen?

Wenn du deine Frage so formulierst, dass diese verstanden wird, kann dir auch geholfen werden.


bike
 
Zurück
Oben