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

Ergebnis 1 bis 4 von 4

Thema: kann jemand mir mit Pointer hilfen?

  1. #1
    Registriert seit
    18.11.2015
    Beiträge
    42
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    p1.PNGp2.PNG
    Hallo Zusammen,
    ich habe große Probleme mit Pointer/Zeiger, ich finde dem immer aber verstehe ich gar nix.
    was ist pointer und wofür braucht man es? es gibt ein pdf dafür mit beispiele/Einführung?
    beigefügte Bilder zeigt beispiel für Zeiger, und weiss es nicht warum der Programmierer hat P#18.0 und 40/44/...etc
    vielen Dank im Voraus

    LG
    samir
    Zitieren Zitieren Gelöst: kann jemand mir mit Pointer hilfen?  

  2. "Ich denke du suchst das FAQ zum Thema Pointer...
    http://www.sps-forum.de/faq/8887-poi...fifo-lifo.html

    Grundsätzlich zu deinem Screenshots. Beispiel
    Code:
    L     DBW[AR1,P#16.0]
    L     DBW[AR1,P#18.0]
    Die Zeile greift auf ein Datenbaustein-Wort zu. Wegen dem DBW. DBD markiert ein Datenbaustein-Doppelwort und DBX ein Bit aus dem Datenbaustein.
    Auf welchen Datenbaustein, sehen wir in deinem Code-Schnipsel nicht. Vorher muss irgendwo ein Datebaustein mit dem Befehl "AUF" geöffnet werden.
    Auf diesen Datenbaustein wird zugegriffen.

    Dann beginnt die Sache mit dem Inhalt von AR1. AR1 ist das Adressregister 1 deiner CPU. Dort liegt ein Adressoffset drin.
    Das AR1 wird vorher irgendwo wahrscheinlich mit dem Befehl Befehl LAR1 (Lade Adressregister 1) beschrieben.

    Im AR1 stehe also ein Adressoffset. Nehmen wir mal P#30.0
    Der zweite Teil in den Codezeilen (in meinem Beispiel P#16.0 und P#18.0] ist ein Zusatzoffset für den jeweiligen Ladebebefehl.

    Würde im AR1 also wie beschrieben der Offset 30.0 stehen, dann würde der erste Befehl das DBW46 (30+16) und der zweite das DBW48 (30+18 ) laden.
    Mehr steht im FAQ.

    Damit man dir mehr sagen kann musst du uns aber mehr Code zeigen. Vor allem die Orte wo ein Datenbaustein geöffnet (Befehl AUF) und wo das AR1 geladen (LAR1) wird."


  3. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.271
    Danke
    439
    Erhielt 661 Danke für 498 Beiträge

    Standard

    Ich denke du suchst das FAQ zum Thema Pointer...
    Pointer Zeiger FIFO LIFO

    Grundsätzlich zu deinem Screenshots. Beispiel
    Code:
    L     DBW[AR1,P#16.0]
    L     DBW[AR1,P#18.0]
    Die Zeile greift auf ein Datenbaustein-Wort zu. Wegen dem DBW. DBD markiert ein Datenbaustein-Doppelwort und DBX ein Bit aus dem Datenbaustein.
    Auf welchen Datenbaustein, sehen wir in deinem Code-Schnipsel nicht. Vorher muss irgendwo ein Datebaustein mit dem Befehl "AUF" geöffnet werden.
    Auf diesen Datenbaustein wird zugegriffen.

    Dann beginnt die Sache mit dem Inhalt von AR1. AR1 ist das Adressregister 1 deiner CPU. Dort liegt ein Adressoffset drin.
    Das AR1 wird vorher irgendwo wahrscheinlich mit dem Befehl Befehl LAR1 (Lade Adressregister 1) beschrieben.

    Im AR1 stehe also ein Adressoffset. Nehmen wir mal P#30.0
    Der zweite Teil in den Codezeilen (in meinem Beispiel P#16.0 und P#18.0] ist ein Zusatzoffset für den jeweiligen Ladebebefehl.

    Würde im AR1 also wie beschrieben der Offset 30.0 stehen, dann würde der erste Befehl das DBW46 (30+16) und der zweite das DBW48 (30+18 ) laden.
    Mehr steht im FAQ.

    Damit man dir mehr sagen kann musst du uns aber mehr Code zeigen. Vor allem die Orte wo ein Datenbaustein geöffnet (Befehl AUF) und wo das AR1 geladen (LAR1) wird.
    Geändert von RONIN (03.08.2016 um 16:52 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  4. #3
    Registriert seit
    18.11.2015
    Beiträge
    42
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    vielen Dank RONIN für Ihre Informationen.

    im Programm steht : AUF DB10 (sieh das Bild)

    kann man sagen die DB-Adresse von "Parameter.HvO_Anzahl" von Type INT haben wir im Adressregister 1 so gespeichert: L DBW [AR1,P#0.0]
    und die DB-Adresse von "Status.Quittieren" von Type bool haben wir im Adressregister 1 so gespeichert: L DBX [AR1,P#4.0] ?

    DB10
    DB10.PNG

    Code:
          UN    DBX [AR1,P#16.0]            // HvO nicht vorhanden                                 // HMI not exist
          SPBN  m040
    
          L     0                           // Reset                                               // Reset
          T     DBW [AR1,P#18.0]
          T     DBD [AR1,P#40.0]
          T     DBW [AR1,P#44.0]
          T     DBD [AR1,P#50.0]
          T     DBD [AR1,P#54.0]
          T     DBD [AR1,P#60.0]
          CLR   
          =     DBX [AR1,P#16.4]            // Runtime nicht aktiv!                                // Runtime not active
          L     B#16#1                      // Fehlercode HvO abgewählt über Software              // Error code HMI deselected via software
          SPA   mend                        // beb                                                 // beb
    
    m040: NOP   0
    das Problem ist alle Werte im Code (18.0, 40.0.....60.0) sind Reserve...also es ist unsinn wenn man die zurücksetzen.
    Geändert von samir85 (04.08.2016 um 10:38 Uhr)

  5. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.624
    Danke
    397
    Erhielt 2.376 Danke für 1.982 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von samir85 Beitrag anzeigen
    kann man sagen die DB-Adresse von "Parameter.HvO_Anzahl" von Type INT haben wir im Adressregister 1 so gespeichert: L DBW [AR1,P#0.0]
    und die DB-Adresse von "Status.Quittieren" von Type bool haben wir im Adressregister 1 so gespeichert: L DBX [AR1,P#4.0] ?.
    Ja und Nein ...
    Es kommt darauf an, mit welcher Adresse (Adress-Offset) das AR1 schon vorbelegt ist. Wenn du das so verwenden willst dann sollte das AR1 auf den Anfang des Datenbausteins zeigen.

    Im Falle deines Programmcodes kann ich dir nicht sagen, mit welchen Adressen die Pointer wirklich arbeiten, da das aus dem Code-Schnipsel nicht hervorgeht.
    Es wird bei dieser Form des Zugriffs eine Summe aus dem Grundwert des AR1 und dem nachfolgenden (Zusatz-)Offset gebildet ...

    Gruß
    Larry

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 20.06.2016, 14:27
  2. Step 7 kann jemand bitte mir erklären...
    Von samir85 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.11.2015, 15:21
  3. Antworten: 11
    Letzter Beitrag: 02.08.2015, 19:41
  4. pb5-Datei: kann mir die jemand auslesen???
    Von Grimsey im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 28.09.2012, 13:37
  5. kann mir bitte jemand helfen..
    Von lolo im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 25.05.2012, 10:31

Lesezeichen

Berechtigungen

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