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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: in ein Schieberegister per Pointer zugreifen

  1. #11
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    (leider habe ich gerade keinen schönen Anwendungsfall parat).
    genau.
    ein beispiel wäre z.b. hier ganz unten.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  2. #12
    Avatar von Perfektionist
    Perfektionist ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    genau.
    ein beispiel wäre z.b. hier ganz unten.
    Hallo Volker,
    da hast Du mir irgendwie den falschen Link gegeben:


    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo Perfektionist,
    der Offset hinter dem AR-Register ist eine Konstante ...!
    ...
    genau - und P##Lokalvariable ist ein Pointer auf die die lokale Variable mit dem Namen #Lokalvariable - und damit m.E. zum Zeitpunkt der Codegenerierung (Übersetzung) eine Konstante

  3. #13
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Zitat Zitat von Perfektionist Beitrag anzeigen
    genau - und P##Lokalvariable ist ein Pointer auf die die lokale Variable mit dem Namen #Lokalvariable - und damit m.E. zum Zeitpunkt der Codegenerierung (Übersetzung) eine Konstante
    Nein,
    eine Lokalvariable ist schon von Haus aus keine Konstante ... und wird auch nie als solche behandelt ...

    Gruß
    LL

  4. #14
    Avatar von Perfektionist
    Perfektionist ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    Der Inhalt der Variablen, der ist, wie der Name sagt, variabel. Die Adresse, an der dieser Inhalt steht, ist aber während der Laufzeit (Programmausführung) konstant.

  5. #15
    Avatar von Perfektionist
    Perfektionist ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    Da ist mir doch gerade ein Codeschnipsel über den Weg gelaufen:
    Code:
    //  Schieberegister kopieren
     
          L     #SREGISTER                  // Kopieren in TEMP-Variable und
          T     #COPY_SREG                  // Zeiger auf Adresse vom Schieberegister
          LAR1  P##COPY_SREG                // ins Adressregister 1 laden
     
    
    // Schieberegisterbit ermitteln
     
          L     #PLATZNUMMER                // Platznummer mit Zahl 7
          L     7                           // auf größer vergleichen.
          >I                                // Wenn Platznummer zwischen
          SPB   MG07                        // 0-7 dann addiere die Zahl
          +AR1  P#3.0                       // 3 in die BYTE-Adresse vom 
          L     #PLATZNUMMER                // Adressregister 1.
          T     #SCHLEIFE                   // Die Schleife mit Wert von
          SPA   AKTI                        // Platznummer belegen.
     
    MG07: L     #PLATZNUMMER                // Wenn Platznummer zwischen
          L     15                          // 8-15 dann addiere die Zahl
          >I                                // 2 in die BYTE-Adresse vom
          SPB   MG15                        // Adressregister 1.
          +AR1  P#2.0                       // Die Schleife ermittelt sich
          L     #PLATZNUMMER                // aus dem Wert in Platznummer
          L     8                           // minus 8.
          -I    
          T     #SCHLEIFE
          SPA   AKTI
     
    MG15: L     #PLATZNUMMER                // Wenn Platznummer zwischen
          L     23                          // 16-23 dann addiere die Zahl
          >I                                // 1 in die BYTE-Adresse vom
          SPB   MG23                        // Adressregister 1.
          +AR1  P#1.0                       // Die Schleife ermittelt sich
          L     #PLATZNUMMER                // aus dem Wert in Platznummer
          L     16                          // minus 16.
          -I    
          T     #SCHLEIFE
          SPA   AKTI
     
    MG23: L     #PLATZNUMMER                // Wenn Platznummer zwischen
          L     31                          // 24-31 dann bleibt das 
          >I                                // Adressregister 1 unverändert.   
          BEB                               // Die Schleife ermittelt sich
          L     #PLATZNUMMER                // aus dem Wert in Platznummer
          L     24                          // minus 24.
          -I    
          T     #SCHLEIFE
     
    AKTI: L     #SCHLEIFE                   // Jetzt wird die BIT-Adresse
          L     0                           // vom Adressregister 1 so oft
          <=I                               // erhöht wie die
          SPB   END2                        // Anzahl der zuvor ermittelten
          +AR1  P#0.1                       // Schleifendurchläufe.
          L     #SCHLEIFE
          DEC   1
          T     #SCHLEIFE
          SPA   AKTI
     
    END2: NOP   0
    mit ein wenig Erstaunen nehme ich "LAR1 P##COPY_SREG" zur Kenntnis - die Hilfe zu AWL kennt diesen Befehl mit einer Konstanten als Operanden nicht

  6. #16
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Erstaunen ?
    Das verstehe ich nicht ... du lädst hier die Quell-Adresse der Variablen ins AR1-Register (also den Pointer auf die Variable). Dieser "Trick" ist hier im Forum schon öfter mal angewendet worden (ich glaube am liebsten von Kai) - gerne in Verbindung mit Schleifen.

  7. #17
    Avatar von Perfektionist
    Perfektionist ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Perfektionist Beitrag anzeigen
    ...
    mit ein wenig Erstaunen nehme ich "LAR1 P##COPY_SREG" zur Kenntnis - die Hilfe zu AWL kennt diesen Befehl mit einer Konstanten als Operanden nicht
    ... jedenfalls nicht, wenn man auf diesem Befehl F1 betätigt - wenn man dann weiterblättert in der Hilfe geht einem ein Licht auf. Ich weiß nicht warum - aber ich war irgendwie der Meinung, dass der Datenaustausch von/zum AR ähnlich eingeschränkt ist, wie der Datentrasfer von/zum STW.

    und ich raufe mir weiter meine Haare:

    Code:
    LAR1 P#M100.0  // geht
     
    LAR1 P#"Merkersymbol" // geht nicht
    ... aber ein wenig sehe ich das insofern ein, da ich ja immerhin ein UDT-Schieberegister von übergeordneter Instanz zu untergeordneter weiterreichen und zurückgeben kann und Siemens mir den Zugriff

    Code:
    LAR1 P##userdefined_SRG // geht
    erlaubt ...

Ähnliche Themen

  1. Auf DB mit Pointer zugreifen
    Von Holger Levetzow im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 03.11.2010, 06:41
  2. Mit Any- Pointer auf Lokaldaten zugreifen
    Von AJ67 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 25.06.2009, 10:01
  3. Indirekt (Any-Pointer) auf PEW zugreifen?
    Von thorsten im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 11.05.2009, 12:44
  4. Mit Any-Pointer auf PAW zugreifen?
    Von merlin im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.06.2007, 20:51
  5. Schieberegister (FIFO) mit Pointer
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 31.03.2004, 18:55

Lesezeichen

Berechtigungen

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