Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 24 von 24

Thema: Out-Bereich eines FB einlesen

  1. #21
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Ralle Beitrag anzeigen
    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
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  2. Folgende 2 Benutzer sagen Danke zu OHGN für den nützlichen Beitrag:

    ChristianPaier (23.07.2009),Ralle (23.07.2009)

  3. #22
    Registriert seit
    14.10.2008
    Beiträge
    44
    Danke
    8
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Oh Mann heute sitz ich echt schon zu lang dran!!
    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.
    Geändert von ChristianPaier (23.07.2009 um 18:16 Uhr)
    If at first you don't succeed, you're not Chuck Norris.

  4. #23
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Zitat Zitat von ChristianPaier Beitrag anzeigen
    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

  5. #24
    Registriert seit
    14.10.2008
    Beiträge
    44
    Danke
    8
    Erhielt 3 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    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.
    If at first you don't succeed, you're not Chuck Norris.

Ähnliche Themen

  1. Einlesen eines Bereiches aus einem DB???
    Von Vassily im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 21.10.2010, 13:58
  2. Antworten: 40
    Letzter Beitrag: 08.12.2008, 13:38
  3. Antworten: 7
    Letzter Beitrag: 11.07.2008, 09:44
  4. Einlesen eines Eingansworts
    Von Tobi P. im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.08.2007, 07:01
  5. einlesen eines Analogeinganges
    Von Noudels im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 16.01.2006, 18:48

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •