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

Ergebnis 1 bis 2 von 2

Thema: Pointer als IN im FC verarbeiten

  1. #1
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Beitrag von unserm registrierten User "Unregistrieter Gast":


    Forumsfrage
    Hallo!
    Wie kann ich einen FC Eingang der als Pointer deklariert ist, weiterverarbeiten?
    Am Eingang des FCs ist jetzt z.B. P#E0.0 angelegt. Wenn ich aber jetzt im
    FC den Aufruf 'L P##Eingang' mache, dann habe ich ja nur die Pointeradresse von der Variable "Eingang" und nicht von P#E0.0
    Genau das ist ja auch der Sinn eines Pointers.
    So wie du dein vorgehen beschreibst, würdest du ja keinen Pointer brauchen.
    Den Pointer setzt mann ein, um dynamisch die Adresse oder auch nur Adressbereiche (BitNr., Byte, Bereich) zu "verbiegen".

    Du musst zunächst den Pointer aus seinem bytearray "zerpflücken", dann kannst du an die einzelnen Adresssegmente ran, siehe hier:


    =========== AWL ANFANG ===============

    Code:
     
    L P##EINGANSPOINTER      // Andresse des Eingangs- Bits, aus Pointer lesen
    LAR1                    // Adresspointer adressieren
    L W [AR1,P#0.0]         // erstes Wort eines Pointers enthält DB-Nr.
    T #DB_NR
    L 0                     // Wenn DB-Nr = 0, dann kein D sondern E/A/M
    ==I 
    SPB noDB
     
    AUF DB [#DB_NR]          // Wenn DB-Nr <>0, dann DB öffnen
     
     
    noDB: L D [AR1,P#2.0]     // Bereichskennung. Byte u. Bitadresse 
    T #Pnt_Bit
    LAR1                     // ergibt Zieladresse als Eingangs-Adresse !!!!!!
    U [AR1,P#0.0]
    = #EINGANG              // Errechnete Bitposition ist das Eingangs-Bit.
     
    U #EINGANG
    =
    =========== AWL ENDE ===============

    in der Deklarationszeile der
    EINGANGSPOINTER als Pointer (In)
    Pnt_Bit als Doppelwort (Temporär)
    DB_Nr als Int (Temporär)



    Das steht übrigens auch sehr schön in der S7 - Hilfe beschrieben !


    Viel Spaß noch mit den Pointern!
    Geändert von plc_tippser (29.06.2006 um 12:48 Uhr)
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.
    Zitieren Zitieren Pointer als IN im FC verarbeiten  

  2. #2
    plc_tippser ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
     
    L P##EINGANSPOINTER      // Andresse des Eingangs- Bits, aus Pointer lesen
    LAR1                    // Adresspointer adressieren
    L W [AR1,P#0.0]         // erstes Wort eines Pointers enthält DB-Nr.
    T #DB_NR
    L 0                     // Wenn DB-Nr = 0, dann kein D sondern E/A/M
    ==I 
    SPB noDB
     
    AUF DB [#DB_NR]          // Wenn DB-Nr <>0, dann DB öffnen
     
     
    noDB: L D [AR1,P#2.0]     // Bereichskennung. Byte u. Bitadresse 
    T #Pnt_Bit
    LAR1                     // ergibt Zieladresse als Eingangs-Adresse !!!!!!
    U [AR1,P#0.0]
    = #EINGANG              // Errechnete Bitposition ist das Eingangs-Bit.
     
    U #EINGANG
    =

    Der Vergleich auf 0 ist nicht notwendig, da im folgenden sowieso nicht auf das DB-Register zugegriffen wird, wenn ein E A od. M manipuliert wird.

    Bei dem Sprung wird das DB-Register einfach nicht überschrieben, also der alte DB-Eintrag wird erhalten.

    pt
    Geändert von plc_tippser (29.06.2006 um 14:31 Uhr)
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.
    Zitieren Zitieren DB-Aufruf überspringen nicht nötig  

  3. Folgender Benutzer sagt Danke zu plc_tippser für den nützlichen Beitrag:

    SIGGI (13.03.2009)

Ähnliche Themen

  1. SFC 14/15 im FB verarbeiten
    Von Steve38 im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 17.03.2010, 12:47
  2. Antworten: 24
    Letzter Beitrag: 31.01.2010, 21:32
  3. Signale verarbeiten
    Von sr-83 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 12.11.2007, 17:45
  4. Winkelschritte mit S7 200 verarbeiten?
    Von Jan Dornbach im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 17.10.2006, 09:55
  5. Pointer als IN im FC verarbeiten
    Von Hewlett_de im Forum Simatic
    Antworten: 27
    Letzter Beitrag: 03.07.2006, 22:00

Lesezeichen

Berechtigungen

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