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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 29

Thema: Pointerproblem

  1. #11
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    für mein verständnis sollte folgendes funktionieren:

    Code:
    *
          LAR1  P##z
          L     D [AR1,P#0.0]
          SRD   3
          T     #byte_Adr
          L     D [AR1,P#0.0]
          L     2#111
          UD
          T     #bit_Adr
    
          L     #byte_Adr
          SLD   3
          L     #bit_Adr
          +D    
          LAR1
    bekommt man allerdings die Kennung E nicht mit ... also wäre besser gleich ein ANY zu nehmen, wenn es da zu unterschieden kommen könnte...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  2. #12
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Gerhard K Beitrag anzeigen
    Wie hast du #z deklariert? INT, BOOL,...
    Datentyp: Pointer

    Zitat Zitat von Gerhard K Beitrag anzeigen

    Wenn Du
    Code:
    U #z
    eingibst, ist es dann immer noch rot?
    ja, ist dann immer noch rot.

  3. #13
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von dalbi Beitrag anzeigen
    Hi,

    was steht den aussen beim Bausteinaufruf an Z?

    Gruss Daniel
    Da steht:

    P#E4.0

  4. #14
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    Zitat Zitat von dalbi Beitrag anzeigen
    Hi,

    was steht den aussen beim Bausteinaufruf an Z?

    Gruss Daniel
    und die Antwort auf diese frage?

    aha schon da
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  5. #15
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    für mein verständnis sollte folgendes funktionieren:

    Code:
    *
          LAR1  P##z
          L     D [AR1,P#0.0]
          SRD   3
          T     #byte_Adr
          L     D [AR1,P#0.0]
          L     2#111
          UD
          T     #bit_Adr
    
          L     #byte_Adr
          SLD   3
          L     #bit_Adr
          +D    
          LAR1
    bekommt man allerdings die Kennung E nicht mit ... also wäre besser gleich ein ANY zu nehmen, wenn es da zu unterschieden kommen könnte...
    danke für deine hilfe. ich bin leider nicht so der profi und frage mich deshalb was ich bei #byte_Adr und #bit_Adr angeben muss. P#E4.0 würde ich ja gerne erst im OB1 zuweisen.

  6. #16
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Limette Beitrag anzeigen
    danke für deine hilfe. ich bin leider nicht so der profi und frage mich deshalb was ich bei #byte_Adr und #bit_Adr angeben muss. P#E4.0 würde ich ja gerne erst im OB1 zuweisen.
    #byte_Adr und #bit_Adr als dword im tempbereich deklarieren
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    Limette (01.03.2011)

  8. #17
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi,

    Code:
          L     P##z                        // Lade Eingang Variable z mit eingang 4.0
          LAR1  
          L     D [AR1,P#2.0]               // Nur Speicherbereich u. Adresse
          LAR1                              // ins Adressregister schreiben
          U      [AR1,P#0.0]                // ABfrage ob Eingang anliegt, offset P#0.0
          =     #Ausgang                    // Setze Ausgang 0.


    z ist ein POINTER und Ausgang ein BOOL.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  9. Folgender Benutzer sagt Danke zu dalbi für den nützlichen Beitrag:

    Limette (01.03.2011)

  10. #18
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    #byte_Adr und #bit_Adr als dword im tempbereich deklarieren
    das klappt leider nicht, aber trotzdem danke.

  11. #19
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von dalbi Beitrag anzeigen
    Hi,

    Code:
          L     P##z                        // Lade Eingang Variable z mit eingang 4.0
          LAR1  
          L     D [AR1,P#2.0]               // Nur Speicherbereich u. Adresse
          LAR1                              // ins Adressregister schreiben
          U      [AR1,P#0.0]                // ABfrage ob Eingang anliegt, offset P#0.0
          =     #Ausgang                    // Setze Ausgang 0.


    z ist ein POINTER und Ausgang ein BOOL.

    Gruss Daniel
    merci, jetzt gehts.

    wie kommst du auf das ?

    Code:
    L     D [AR1,P#2.0]
    so richtig verstehe ich es noch nicht. aber danke

  12. #20
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.184
    Danke
    923
    Erhielt 3.290 Danke für 2.659 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    //Pointer AR1 auf IN_OUT-Parameter z erstellen
          LAR1  P##z                    //Adresse Parameter z im DI in AR1
          TAR2                          //Multiinstanz-Offset von AR2 in Akku1
          +AR1                          //zu AR1 addieren => Pointer auf Parameter z
    
    //Wert des Pointers z in AR1 laden
    //      L     W [AR1,P#0.0]           //DB-Nummer - hier nicht benötigt
          L     D [AR1,P#2.0]           //Bereichskennung + Adresse
          LAR1  
    
    //das über Parameter z adressierte Bit verarbeiten
          U      [AR1,P#0.0]
          =     A      0.1
    Nachtrag:
    Die beiden rot markierten Zeilen werden nur in Multiinstanz-FB benötigt.
    In FC müssen die Zeilen weggelassen werden (oder AR2 muß 0 sein).

    Harald
    Geändert von PN/DP (01.03.2011 um 12:42 Uhr) Grund: Hinweis Multiinstanz-Code
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  13. Folgende 2 Benutzer sagen Danke zu PN/DP für den nützlichen Beitrag:

    DaMeista (22.08.2011),Limette (01.03.2011)

Ähnliche Themen

  1. SFC14 - Pointerproblem
    Von Wiggi0606 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.01.2009, 19:01

Lesezeichen

Berechtigungen

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