Out-Bereich eines FB einlesen

Zuviel Werbung?
-> Hier kostenlos registrieren
Du suchst dir die Wortgrenze in deinen Outdaten.

Dort steht z.Bsp. ein Bit.

Dann

L P##Erstes_Bit_an_Wordgrenze
LAR1 (Adresse Ins AR1 laden)

Nun kannst z.Bsp. mit

L W[AR1, P0.0]

dieses komplette Wort laden und hinspeichern wohi du willst. Deine Bits sind dann an der ensprechenden Stelle irgendwo in dem Wort.

Was ich hier schreib gilt für FB, die nicht als Multiinstanzen eingesetzt werden.
@Christian
Da Du mit Multiinstanzen arbeitest musst Du den von mir vorhin schon erwähnten "Adressregisteroffset" berücksichtigen.

so sollte das Ganze eigentlich funktionieren:
Code:
LAR1 P##Bereit     //Erstes bit im OUT-Bereich
TAR2              //Adressoffset in Akku1
+AR1             //Adressoffset zum AR1 addieren; Bereichskennung wird nicht verändert 
L W [AR1,P#0.0]
......
.....
quelle
 
Oh Mann heute sitz ich echt schon zu lang dran!! :confused:
Ich wusste doch das ich aus irgendeinem Grund oben (bei der sache mit dem 3 mal laden) zuerst das "Outword" geladen hatte.

Die Lösung mit dem TAK (kannte ich bisher noch nicht) gefällt mir. Danke !

*EDIT*
oha da, bin ich zu spät gekommen. OHGN war schneller.

mit dem Adressoffset den du da verwendest bekomme ich schon mal einen Wert, nähmlich 1280 was mit den Ausgangsdaten übereinstimmt. Endlich JUHU.

Jetzt brennt mir geradezu die Frage warum man dieses Offset braucht??? Ich lade ja schließlich den Inhalt von AR2 in den Akku 1 und addiere in dan zu AR1.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt brennt mir geradezu die Frage warum man dieses Offset braucht??? Ich lade ja schließlich den Inhalt von AR2 in den Akku 1 und addiere in dan zu AR1.
Hallo Christian,
lies dir zu der frage bitte mal den Beitrag hier durch. Vor Allem aber die Beiträge, die Hovonlo geschrieben hat. Das sollte die Frage beantworten ...

Gruß
LL
 
Aha, auch gut zu wissen. Das heisst also wenn man Multiinstanzen verwendet wird der Anfagspunkt, der dem akutell aufgerufenen FB zugehörigen Multiinstanz im Multiinstanz-DB, im AR2 hinterlegt. Diesen muss man dann bei Pointern berücksichtigen. Und vorsichtig sollte man auch noch damit sein. ;)

Ja is schon interressant wie ein eigentlich trivial scheinender Codeteil (Wort auslesen; Wort mit zuletzt gespeicherten Wort vergleichen, Wort speichern) ausarten kann. :)

Hier noch der fertige Code:
Code:
      TAR2  #Back_AR2                   //Adressregister 2 sichern

      LAR1  P##Bereit                   //Pointer auf erstes Bit im Out-Bereich
      TAR2                              //Adressoffset in Akku1
      +AR1                              //ZU AR1 addieren
      L     W [AR1,P#0.0]               //Wort des Out-Bereiches lesen
      L     28
      UW                                //Bits ausmaskieren
      L     #Outword
      <>I                               //Vergleichen
      S     #HM_umschalten              //Aktion setzen

      TAK                               //Akku1 mit Akku2 tauschen wieder an das Ergebnis der UND-Verknüpfung zu gelangen   
      T     #Outword                    //Zustand des Out-Bereiches speichern

      LAR2  #Back_AR2                   //AR2 wiederherstellen

Vielen dank noch mal an alle die mir dabei geholfen haben. :cool:
 
Zurück
Oben