Verständnisprobleme bei Adressierung

SlowDown

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

ich habe gerade angefangen mich in die SPS-Programmierung einzuarbeiten und habe Schwierigkeiten mit der Organisation der Adressen. Hoffe hier kann mir weitergeholfen werden.
Studiere ET und habe eine WAGO-750 vor mir. Nun habe ich in Codesys die Steuerung konfiguriert (DI 2 Kanal, DI 4 Kanal, 2x DO 8 Kanal, DO 4 Kanal, Serielle Klemme)
Daraufhin habe ich mir die zugehörigen Adressen angeschaut:

DI 2 Kanal: IX3.0, IX3.1
DI 4 Kanal: IX3.2 ... IX3.5
DO 8 Kanal: QX3.0 ... QX3.7
DO 8 Kanal: QX3.8 ... QX3.15
usw..

Bitweiser Zugriff stellt für mich kein Problem dar. Nun habe ich beispielsweise 2 * 8 LED's, die ich als ganzes jeweils ein oder ausschalten möchte (Blinklicht mit 2 LED-Feldern, anstatt zwei einzelner LED's). Ich benötige als zwei Bytes. Ich schliesse die 16 LED's so an, dass die ersten 8 durch QX3.0 bis QX3.7 und die anderen 8 durch QX3.8 bis QX3.15 erreichbar sind.

Wie deklariere ich nun zwei Variablen, die diese Speicherbereiche beschreiben?
Für das erste LED-Feld würde ich schreiben:

Code:
LEDFELD_1 AT%QB3 : BYTE;

und hoffe, dass QB3 den Bereich QX3.0...QX3.7 beschreibt

Nur wie sieht es jetzt mit Feld 2 aus?

Code:
LEDFELD_2 AT%QB4 : BYTE;

Ist nicht QB4 der Bereich QX4.0...QX4.7??

Ich hoffe ihr könnt mir zeigen, wie das funktioniert.
Danke schonmal

Mfg, SlowDown
 
Also Wago verwendet prinzipiell ein Word Alignment, d.h. das QX3.0 ... QX3.15 im QW3 stehen.

QW3 = QB6 / QB7 = Teil von QD1 (QW2/3)

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für deine Antwort.

Würde das in meinem Fall bedeuten, dass ich die Variablen so anlege?

Code:
LEDFELD_1 AT%QB6 : BYTE; 
LEDFELD_2 AT%QB7 : BYTE;

LEDFELD_1 spricht jetzt QX3.0 bis QX3.7 an
LEDFELD_2 spricht jetzt QX3.8 bis QX3.15 an?
 
So würde das ausschauen.

Wobei du überlegen solltest, ob du nicht ein anderes Wort den Ausgängen entsprechend zuweist,
weil solltest du 2/4 Kanal Klemmen vorher einbauen verschiebt sich das ganze entsprechend,
sodass nicht mehr alle Ausgänge in einem Byte sind.

Also z.B., wobei LED1_0 dann das Symbol des Ausgangs darstellt.
LED1_0 := myWord.0 ;
LED1_1 := myWord.1 ;

Mfg
Manuel
 
Zuletzt bearbeitet:
Zurück
Oben