dw laden und als db.dw adressen verwenden

Merlin9000

Level-1
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen also ich stehe vor volgendem problemm ich habe eine 315/2dp cpu. step7 v5.3

mal angenommen in meinem db100 im datenwort 26 befindet sich die aktuelle wt nummer in diesem fall sagen wir (10) als int zahl und jetzt will ich das er mir aus dem db100 dw(10) eine int zahl lädt (die geladene zahl stellt also die neue adresse dar aus der wieder eine zahl geladebnn werden soll)


man sollte noch dazu sagen das ich neuling bin im step 7 progammieren bin und an alle die antworten schonmal ein dickes danke

P.s.: ich hoffe ich habe mich halbwegs verständlich ausgerückt
 
ich sollte vllt noch dazu schreiben das die wt nr automatisch ausgelesen wird und in adresse 26 geschrieben wird es laufen wts 1-37 auf dem band

was soll man mit dieser information anfangen?

zu allererst einmal: WTF ist eine "wt nr"?
dann: was heißt automatisch ausgelesen?
und: bist du dem link gefolgt und hast gelesen?
 
also ein wt ist ein werkstückträger (bezeichnung stammt aus der industie)
und ich habe ein balluff BIS C60_2 auslesesystem welches mir die wtnr. in den db an adresse 26 schreibt, und ja ich habe das mit dem pointer gelesen aber wenn ich das rictig interpretiere kann ich damit nicht die int zahl als neue db.dw adresse laden oder??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
aber wenn ich das rictig interpretiere kann ich damit nicht die int zahl als neue db.dw adresse laden oder??

du willst mir also unterstellen, dir den falschen link gegeben zu haben? :ROFLMAO:

[edit] bin ja nicht so:

Code:
*
      AUF   DB   100                    //den datenbaustein mit den entsprechenden infos öffnen
      L     DBW   26                    //adresse laden
      SLD   3                           //bits maskieren
      LAR1                              //pointer erzeugen
      L     DBW [AR1,P#0.0]             //mit dem pointer das DBW mit der nummer aus 26 laden
      T     MW    10                    //und in MW10 speichern
wie du das jetzt noch bedingst bleibt erstmal dir überlassen [/edit]
 
Zuletzt bearbeitet:
nachdem ich gestern einige zeit daran verbracht hab bin ich zu einer ähnlichen lösung ohne pointer gekommen

[ AUF DB 100

L DBW 26 // aktuelle nr des wt der bearbeitet werden soll
L 2 // multiplizieren der zahl um auf die richtige adresse im db zu kommen *I
*I
T #zw1 // transferieren in den zwischenspeicher1

L DBW [#zw1] // rundenzahl des gelesenen wts laden
]


aber trotzdem danke für die antwort 4l
 
damit mußt du allerdings immer wenn du auf mehrere elemente zugreifen willst den zwischenspeicher erhöhen, mit dem pointer kannste einfach z.b. DBW[AR1,P#2.0] adressieren und hast gleich den offset drinnen ... aber deine lösung funktioniert natürlich auch und reicht für einfache anwendungsfälle mit sicherheit auch aus
 
Code:
*
      AUF   DB   100
      L     DBW   26                    // aktuelle nr des wt der bearbeitet werden soll
      L     2                           // multiplizieren der zahl um auf die richtige adresse im db zu kommen    *I    
      *I    
      [COLOR=Red][B]SLD 3[/B][/COLOR]
      T     #zw1                        // transferieren in den zwischenspeicher1 

      L     DBW [#zw1]                  // rundenzahl des gelesenen wts laden
so müßte es gehen :ROFLMAO:
 
Zuletzt bearbeitet:
Hallo Vierlagig,

entschuldige, aber du solltest statt SLW 3 lieber SLD 3 verwenden.
Der Akkuinhalt stellt einen bereichsinternen Zeiger dar und dieser hat eigentlich 32 Bit. Wenn du mit SLW 3 arbeitest, dann kannst du nur bis max
8192 Bytes adressieren. Ich bin damit schon mal auf die Nase gefallen.

Allso bei Pointeroperationen immer SLD statt SLW verwenden.

mfG. klaly
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hatte es im zweiten schon vor deiner kritik (berechtigt) geändert ...

da die adresse aber nur als INT vorliegt und der bereich als nicht so groß erschien hatte ich mich im ersten für die wort-schieberei entschieden ... wie gesagt, berechtigte kritik und sollte so anfängern nicht präsentiert werden ... asche auf mein haupt! :rolleyes:

werde das andere auch noch ändern :cool:
 
mal angenommen in meinem db100 im datenwort 26 befindet sich die aktuelle wt nummer in diesem fall sagen wir (10) als int zahl und jetzt will ich das er mir aus dem db100 dw(10) eine int zahl lädt (die geladene zahl stellt also die neue adresse dar aus der wieder eine zahl geladebnn werden soll)

ich sollte vllt noch dazu schreiben das die wt nr automatisch ausgelesen wird und in adresse 26 geschrieben wird es laufen wts 1-37 auf dem band
Code:
AUF   DB   100
      L     DBW   26                    // aktuelle nr des wt der bearbeitet werden soll
      L     2                           // multiplizieren der zahl um auf die richtige adresse im db zu kommen    *I    
      *I    
      SLD 3
      T     #zw1                        // transferieren in den zwischenspeicher1 

      L     DBW [#zw1]                  // rundenzahl des gelesenen wts laden
Den WT mit der Nummer 13 solltest du vom Band nehmen. ;)

Grüße von HaDi
 
Zurück
Oben