... Wenn ich nun mehrere Eingangswörter einlesen lassen will, heißt das dann, daß wenn ich z.B. EW20 definiere, dann als nächstes EW22 nehmen muß und dann EW24? Also EW21 und EW23 existieren dann nicht, weil der Platz als Teil von EW20 und EW22 gebraucht wird?
"... existieren dann nicht, weil der Platz als Teil von ... gebraucht wird" kann man so nicht sagen. Die EingangsBytes existieren im ProzessAbbild und sie sind fortlaufend durchnummeriert.
Wenn Du sie in ZweierGruppen (EW) lesen willst oder in ViererGruppen (ED), kannst und darfst Du das natürlich. Und Du musst dabei auch nicht berücksichtigen, ob "mittendrin" die Grenze zwischen der einen und der nächsten EingangsKarte liegt. Inwieweit es sinnvoll ist, mehrere Bytes in einem Rutsch zu adressieren, das liegt in Deinem Ermessen (und im Ermessen der anderen ForumsTeilnehmer hier in der Runde - wobei natürlich jeder wieder seine eigenen Massstäbe und "musts" und "no gos" anlegt ;o).
Du musst Dir nur darüber im Klaren sein, dass
- die Bytes fortlaufend durchnummeriert sind
- die Worte 2 aufeinander folgende Bytes enthalten und Du als WortNr die kleinste in der Gruppe enthaltene ByteNr angibst
- die DoppelWorte 4 aufeinander folgende Bytes enthalten und Du als DoppelWortNr die kleinste in der Gruppe enthaltene ByteNr angibst
- die grösste in der Gruppe enthaltene ByteNr existieren muss (WortNr + 1 bzw. DoppelWortNr + 3 dürfen nicht grösser sein als die maximal zulässige ByteNr).
Die Worte und DoppelWorte beanspruchen keinen zusätzlichen Speicherplatz und nehmen sich nicht gegenseitig etwas weg - sie sind nur unterschiedliche Gruppierungen der ohnehin vorhandenen Bytes.
Dies gilt gleichermassen für die Daten in (Instanz-)DatenBausteinen (DI, DB) unter S7.
Dies gilt aber ausdrücklich
nicht für die Daten in DatenBausteinen (DB, DX) unter
S5, weil hier nämlich die
Worte fortlaufend durchnummeriert sind.
Gruss, Heinileini