S5 in S7 konvertieren

reekoh

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ich bin gerade dabei ein S5 Programm in S7 zu übersetzen. Dabei bin ich auf folgenden Programmcode gestoßen. Kann mir jemand sagen wie ich das in S7 schreiben kann?
Code:
   L    DL 25
    SLW    1
    L    DW 98
    +F
    LIR    2
    TAK
    T    DW 99
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo reekoh!

Du hast es hier mit einer Art indirekter Adressierung zu tun! Wichtig zu wissen ist, was
im DL 25 und im DW 98 steht. Damit wird die Speicherzelle errechnet, die mit dem
LIR-Befehl ausgelesen wird.

Grüße
Gebs
 
Hallo reekoh!

Du hast es hier mit einer Art indirekter Adressierung zu tun! Wichtig zu wissen ist, was
im DL 25 und im DW 98 steht. Damit wird die Speicherzelle errechnet, die mit dem
LIR-Befehl ausgelesen wird.

Grüße
Gebs

Genau! es ist nur im Zusammenhang zu verstehen.
Eine direkte Übersetzung in Step7 ist gar nicht möglich, denn in der S5 konntest Du mit LIR und TIR direkt im Hauptspeicher rumbauen, was IMHO in der S7 nicht geht. ( Falls doch irgendwie, dann werde ich dies trotzdem nie benutzen).

Benutzt wurde dies z.B für Blocktransfers, zusammen mit dem TNW / TNB -Befehl, das war noch OK, wenn auch mit manchmal wilden Auswirkungen
oder .. schlimmer: für selbst-modifizierenden Code. Das ist dann richtig übel.
( Das hat mir mal, Start Freitag abend, ein lustiges 50-Stunden-Wochenende beschert. !! Die Software war nicht von mir !! )

Schauen wir mal:

L DL 25 // l dbb 50
SLW 1 // * 2
L DW 98 // l dbw 196
+F // +I
LIR 2 // Lade das Speicherwort [dbw196 + dbb50 *2] in Akku 2 HI-Word
TAK // Tausche die Akkus (Akku0 <-> Akku2)
T DW 99 // t dbw 198, aber aus AKKU 2 Lo-Wort

Also : L Speicherwort [dbw196 + dbb50 *2]
T AKKU2-Hi
TAK // Tausche die Akkus (Akku0 <-> Akku2)
T dbb198 -- dies ist aber der ehemalige AKKU2 -LOW

das Gelesene wird also noch garnicht benutzt, den es steht im AKKU1-Hi

Die errechnete Adresse [dbw196 + dbb50 *2] steht jetzt noch im Akku 2.


Wie man sieht, ohne Zusammenhang geht nichts, da Du nicht weißt, woher Du liest, und was mit dem Ergebnis passiert.

Gruss Werner
 
Zuletzt bearbeitet:
Hallo Werner,

im großen und ganzen stimme ich Dir zu, aber das stimmt nicht so ganz:

das Gelesene wird also noch garnicht benutzt, den es steht im AKKU1-Hi

Die errechnete Adresse [dbw196 + dbb50 *2] steht jetzt noch im Akku 2.
Der LIR-Befehl ist abhängig von der eingesetzten CPU.
Bei einer 945 z.Bsp. Schreibt LIR 2 auf den AKKU 2-L.

Grüße
Gebs
 
Zurück
Oben