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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Fehlinterpretation Pointer??

  1. #1
    Registriert seit
    26.09.2009
    Beiträge
    61
    Danke
    20
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute!

    Kann es sein, dass Step7 einen Pointer falsch interpretiert, oder habe ich einen Denkfehler?
    Code:
          L     #HW_Konfig_E_A_Adresse      // Adresse laut HW-Konfig
          SLD   3                                     // Konvertierung ins Pointerformat
          LAR1                                        // Adresse in Doppelwort
     
          L     P##FU_REC                        //Statische Bausteinstruktur
          LAR2  
     
     
          L     ED [AR1,P#4.0]              // 1. Doppelwort Prozessdaten laden
          T     DID [AR2,P#4.0]             // Und in statische Struktur kopieren
    Der Code ist, glaube ich zumindest, selbsterklärend.

    Wenn jetzt aber in der Bausteinschnittstelle im Eingangsbereich an der Adresse 4.0 eine Variable mit 32 Bit Länge (DInt, DWord, Real) deklariert ist, z.B. Soll_Wert : Real;, dann wandelt der Editor nach dem Speichern obigen Code folgendermaßen um:

    Code:
          L     ED [AR1,P#4.0]              // 1. Doppelwort Prozessdaten laden
          T     #Soll_Wert             // Und in statische Struktur kopieren
    Das kann (darf) doch nicht sein, oder?

    Kann mir das bitte jemand erklären?

    Danke

    mfg
    sventek
    Zitieren Zitieren Fehlinterpretation Pointer??  

  2. #2
    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 sventek Beitrag anzeigen
    Kann mir das bitte jemand erklären?
    wenn du "jemanden" erklärst, welchen "editor" du verwendest bestimmt/vielleicht...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Registriert seit
    26.09.2009
    Beiträge
    61
    Danke
    20
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Step7 Editor V5.5 und auch schon mit V5.4 probiert.

    sventek

  4. #4
    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

    it's not a bug, it's a feature ... würdest du bereichsübergreifend zugreifen, würde es nicht geändert werden ...

    ich glaube/vermute/würde suchen ...in den einstellungen gibt es eine option code-optimieren oder ähnliches - kann es aber nicht garantieren, da kein sepp7 greifbar
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    26.09.2009
    Beiträge
    61
    Danke
    20
    Erhielt 4 Danke für 4 Beiträge

    Standard

    das ist doch ein bereichsübergreifender zugriff, da der pointer eine information über den speicherbereich enthält.
    code optimieren gibt es nur im scl editor.

    sventek

  6. #6
    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 sventek Beitrag anzeigen
    das ist doch ein bereichsübergreifender zugriff, da der pointer eine information über den speicherbereich enthält.
    aber da steht ein doppelwort (real...bla)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #7
    Registriert seit
    26.09.2009
    Beiträge
    61
    Danke
    20
    Erhielt 4 Danke für 4 Beiträge

    Standard

    speicherbereich(E,A,DB,...) ist nicht gleich datentyp (int,real,...). speicherübergreifend deshalb, weil von einem speicherbereich in einen anderen. hat nix zu tun mit einem datentyp.

    aber ich glaube wir kommen vom thema ab.

    noch mal meine frage:

    warum interpretiert der editor einen indirekten speicherzugriff l xx[AR2, Px.0] nicht als einen zugriff auf eine adresse die im AR2 steht, plus einen Versatz, sondern als einen zugriff auf das instanzdatenwort 0 + versatz?

    sventek

  8. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Das liegt daran dass du diesen Zugriff in einem Multiinstanz-fähigen Funktions-Baustein machst. In einem MI-fähigen Baustein sieht der symbolische Zugriff eben so aus, dass immer mit dem Adressregister 2-Offset gearbeitet wird.
    In einem MI-FB wird dein Baustein auch nur funktionieren, wenn du ihn niemals in einer MI nutzt, weil dann dein Zugriff auf das DID in die Hose geht.

    Legst du deinen FB als nicht Multiinstanz-fähig an, dann wird der Zugriff auch nicht in das Symbol umgewandelt. Und dann kann auch keiner auf die Idee kommen, diesen wirklich als Multiinstanz einzusetzen.

  9. #9
    Registriert seit
    26.09.2009
    Beiträge
    61
    Danke
    20
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Das ist mal ne Antwort!

    Danke Thomas_V2.1

    sventek

  10. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Man könnte auch die Funktion von AR1 und AR2 tauschen:
    Code:
          L     ED [AR2,P#4.0]              // 1. Doppelwort Prozessdaten laden
          T     DID [AR1,P#4.0]             // Und in statische Struktur kopieren
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Pointer, was ist das?
    Von mendelfranz im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 14.01.2009, 14:26
  2. Pointer
    Von Dotzi im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 16.09.2008, 18:32
  3. Pointer in SCL ?
    Von AndreK im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.04.2008, 21:24
  4. DB und Pointer
    Von PhilippL im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 12.09.2007, 07:02

Stichworte

Lesezeichen

Berechtigungen

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