Merkerwort Bitweise Adressierung

Elektro Wolf

Level-1
Beiträge
38
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leute,

ich bin gerade ein wenig verwirrt...:confused:

Ich habe ein Array of Word erstellt ( Write_Data AT %MW0: ARRAY [0..3] OF WORD ; ). Ein Datentyp von WORD ist ja 2 Byte / 16 Bit groß.

Wenn ich bitweise die Bits umschalte, beschreiben die ersten 8 Bits ( %MX0.0 bis %MX0.7) nur den %MW0.
Die nächsten 8 Bits beschreibt die Adresse %MW1.

Dabei dachte ich, dass %MW0 den Bereich %MX0.0 bis %MX1.7 abdecken soll...


2021-03-03 15_13_32-CoDeSys - 880_ETH_Test.pro_ - [PLC_PRG (PRG-FUP)].jpg

Habe ich da einen Denkfehler oder weißt da jemand genaueres darüber?

Gruß
Wolf
 
Hallo,

da gibt es irgendwo eine Einstellung ob das Byte- oder Wordorientiert arbeitet. Such danach mal in der Hilfe.

Wenn Wordorientiert gearbeitet wird ist es dann MX0.8- MX0.15

Gruß

EDIT
Auszug aus e!Cockpit Hilfe
Speicherposition
So stellen Sie sicher, dass die Adresse gültig ist:
Um in einer Applikation eine gültige Adresse zuzuweisen, muss Ihnen zunächst die geforderte Position im Prozessabbild bekannt sein; das bedeutet der zuständige Speicherbereich: Eingangs- (I), Ausgangs- (Q) oder Merkerspeicherbereich (M), siehe oben. Weiterhin müssen Sie das erforderliche Größenpräfix angeben: Bit, BYTE, WORD, DWord (siehe oben: X, B, W, D)
Eine entscheidende Rolle spielen die aktuell verwendete Gerätekonfiguration und -einstellungen (Hardwarestruktur, Gerätebeschreibung, E/A-Einstellungen). Beachten Sie hier besonders die Unterschiede in der Interpretation von Bitadressen, die es zwischen den Geräten mit "Byteadressierungsmodus" und denen mit "Wordorientiertem IEC-Adressierungsmodus" gibt: Beispielweise adressiert die Nummer vor dem Punkt der Bitadresse %IX5.5 in einem byteadressierenden Gerät Byte 5, während es in einem wordadressierenden Gerät Word 5 adressiert wird. Dagegen ist die Adressierung mit Word- oder Byteadresse unabhängig vom Gerätetyp: Mit %IW5 wird immer Word 5 angesprochen und mit Byteadresse %IB5 immer Byte 5. Abhängig von der Größe und dem Adressierungsmodus können Sie deshalb mit der gleichen Adressangabe unterschiedliche Speicherzellen ansprechen.
Die nachfolgende Tabelle zeigt die Gegenüberstellung der Byteadressierung und wordorientierten IEC-Adressierung für Bits, Bytes, Words und Double Words. Auch zeigt sie die überlappenden Speicherbereiche, die im Falle der Byteadressierung vorliegen (siehe auch das Beispiel im Anschluss an die Tabelle).
Beachten Sie bei der Syntax, dass der IEC-Adressierungsmodus immer wordorientiert ist. Dabei steht vor dem Punkt die Wordnummer und nach dem Punkt die Bitnummer.
 
Zuletzt bearbeitet:
Moin,

bin mir nicht sicher, ob das nicht auf die Steuerung ankommt. Wago macht z.B. alles wortweise.

Aber gut gemeinter Rat: Wenn Du die Merker nicht aus irgendeinem speziellen Grunde benötigst (z.B. um mit einem HMI zu kommunizieren oder zwischen Tasks zu kommunizieren), nutze die Variablendeklariation ohne AT irgendwas...
Einfach

Code:
Write_Data : ARRAY [0..3] OF WORD;

und dann kannst Du mit

Code:
Write_Data[0].1

auf die Bits zugreifen.

Auf diese Weise hast Du auch kein Risiko, daß Du auf Merker in verschiedenen Teilen oder auf verschiedene Arten zugreifst und Dir was kaputt schreibst.

Gruß
Jens
 
Ok, mein Fehler war, dass ich sehr Siemens orientiert gedacht habe.

%MW0 deckt den Bereich %MX0.0 bis MX0.15.

Ich muss aufhören wie in der Siemens Steuerung zu denken...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ihr vom Streichen der Siemens-Denkweise sprecht, meine Empfehlung: Streicht die Merker gleich komplett.
Bitweise adressierung geht am besten mit nTestVariable.0 für Bit 0 und nTestVariable.31 für Bit 31. Ganz ohne fixe Adressierung.
 
Morgen Leute.

Ich versuche eine Modbus TCP Kommunikation zwischen einer WAGO Steuerung und einer Steuerung vom anderen Hersteller zu erstellen.
Aktuell habe ich nur zwei WAGO Steuerung (eine 750-890 und 750-880) zur Hand.

Laut Handbuch habe ich bei der 750-890 einer Register Adresse von 12288 (0x3000) bis 24575 (0x5FFF) welches die Merkerwörter %MW0 bis %MW12287 abdeckt.
Deswegen dachte ich, dass ich mit Merkern arbeiten muss :s17:

Grüße
Wolf
 
Moin Wolf,

dann ist das richtig, dann mußt Du über die Merker gehen.

Oder Du benutzt direkt die E/A-Bereiche. Auch hier hast Du - ich glaube ab 256 - Bereiche, die abgekoppelt von der Hardware sind und für die Kommunikation dienen.
Das ist dann aber immer nur Einbahnstraße: Entweder rein oder raus.

Wenn Du z.B. ein HMI hast, wo Du im HMI setzt und in der SPS zurücksetzt, mußt Du über Merker gehen.

Bei Kommunikation zwischen zwei SPSen würde ich aber die E/A-Bereiche nehmen.

Bei den WAGO-Steuerungen gibt es auch was, was sich "Netzwerkvariablen" nennt, die dienen der Kommunikation zwischen zwei WAGOs. Habe ich aber noch nicht benutzt, kann Dir daher nicht sagen, wie das genau funktioniert.

Gruß
Jens
 
Zurück
Oben