nacheinander bytes aus db in ein merker kopieren

Robert_k

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe S7 Profis,
Habe folgendes Problem:
In einem Datenbaustein habe ich mehrere Bytes hinterlegt.
Nun möchte ich aus einem FB ein Byte nach dem anderen in einen Merker laden, z.B. durch U e1.0.

sieht die Syntax in etwa so aus?:
auf db1
l dbb1
t mb1
....:confused:
und wie weiter?

Danke im vorraus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du
DBB1 nach MB1
DBB2 nach MB2
..
DBBn nach MBn

kopieren willst, dann gucke dir mal den SFC20 aus der Standardbibliothek an.
Den kannst du dann abhängig vom E1.0 aufrufen
 
Hallo!

Das Laden eines Bytes aus einem DB kannst du auch so machen.
L DB1.DBB0

und wenn du ein Lade bzw Transferbefehl vom Verknüpfungsergebniss abhängig machen willst dann musst du das mit einem Sprungbefehl durchführen.

Code:
U  E1.0
SPB next
L  DB1.DBB1
T  MB1
next: NOP 0

godi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ Larry Laffer

Genau,sobald e1.0 betätigt wird soll aus dem Datenbaustein das erste Byte gelesen werden und in den Merker 1 kopiert werden. Dieser Merker wird dann an anderen Stellen ausgelesen um mit den Werten weiter zu arbeiten.

Danke für die schnelle Antwort
 
Zuviel Werbung?
-> Hier kostenlos registrieren
habe die Syntax von Godi grad eingegeben und simuliert.
das erste Byte wird gelesen aber dann passiert bei betätigen von e 1.0 nix weiter... woran kann das liegen?
 
hmm... mein Problem liegt aber darin. Wie Kann ich durch betätigen von
E 1.0 das nächste Byte aus Db1 ansprechen?
 
bei mehreren bytes ginge aber auch:

Code:
U  E1.0
SPB next
L  DB1.DBd0
T  Md0

L  DB1.DBd4
T  Md4

// usw...

next: NOP 0


schreibt sich kürzer wenn es viele bytes sein sollen
( und die in der gleichen Reihenfolge liegen sollen)

peter(R)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
also mal im Groben.
da ist nen Förderband mit Packeten drauf. Jedem Packet ist ein Datenbausteinbyte zugeordnet. Die Packete passieren eine Lichtschranke.
in diesem Zeitpunkt muss das zugehörige Byte aus dem DB geladen werden.
es folgen zwei Abzweiguingen vom Förderband an dem auch zwei liegen Maschinen.
Beispiel , das Byte enthält 10
dann wird das Packet auf das hintere Förderband geleitet, weil 1.
im hinteren Förderband wird die erste Maschine angesprochen, weil 0.

mir geht es jetzt lediglich um die weiterschaltung von Packet zu Packet bzw. von Byte zum nächsten Byte.

so , hoffe das ist jetzt verständlich.
 
Nicht wirklich .... :rolleyes:

hinter jeder Abzweigung liegen 2 Maschinen ??
dh. 10 ist zweite Abzweigung erste Machine
und 01 ist erste Abzweigung zweite Maschine

oder sehe ich da was falsch ??

peter(R)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Maschine ist nicht real. Das ist nur ein Beispiel , was wir in der Schule bekommen haben.
nehmen wir mal an es befindet sich nur 1 Packet auf dem Förderband und wenn es die Maschine durchlaufen hat folgt ein nächstes. Dann brauchen wir nicht auf FIFO achten.:cool:
 
00 = erste Abzweigung , erste Machine
01 = erste Abzw. , zweite Masch.
10= zweite Abzw. , erste Masch.
11= zweite Abzw. , zweite Masch.
 
Zurück
Oben