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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Pointer zählt nicht weiter

  1. #1
    Registriert seit
    18.03.2013
    Ort
    Wittlich, RP
    Beiträge
    50
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich verzweifel an einem Pointer....

    ich möchte:

    alle X-Minuten ein netzwerk ausführen, den aktuellen Messwert in einen DB schreiben, den Pointer 4 Bytes weiter zählen und wenn die nächste Zeit rum ist erneut in den DB usw...

    mein script sieht wie folgt aus:

    es gibt ein paar hilfstrigger, damit ich das script unabhängig von meinem hauptprogramm testen kann:

    NW1 enthält den Timer, welcher korrekt triggert

    NW2: Pointer
    U #Trigger_Auswertung.Q // Ausgang vom Timer
    SPBN M001
    AUF "Auswertung_CO2_Kurven" // DB 302 enthält die Analysedaten
    U E 2.6 // Hilfstrigger um die Messung zu resetten, wird später durch einen Programmtrigger ersetzt
    SPBN M002
    L P#0.0
    T #Pointer1 // Temp DWORD
    L 1.000000e+000 // gefakter Messwert beim ersten Durchlauf
    T #Messwert

    M002: NOP 0
    L #Messwert
    T DBD [#Pointer1]
    L #Messwert // Messwert erhöhen um im DB unterschiede zu sehen,
    L 1.000000e+000 // diese und die nächste zeile fallen später weg
    +R
    T #Messwert

    L #Pointer1 // Pointer um 4 Byte erhöhen
    L P#4.0
    +D
    T #Pointer1

    M001: NOP 0 // NW-Ende


    vielleicht könnt ihr mir ja helfen

    vielen dank

    sven
    Zitieren Zitieren Pointer zählt nicht weiter  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Hallo,
    da ich das nicht ersehen kann : welchen Typ's ist #Pointer und wo ist der deklariert ? #Pointer sollte ein DWORD sein und entweder im STAT-Bereich eines FB deklariert sein oder ein MD sein oder aus einem DB kommen.
    Was hast du ?

    Gruß
    Larry

  3. #3
    Registriert seit
    18.03.2013
    Ort
    Wittlich, RP
    Beiträge
    50
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    der ist im moment temp dword. als ich den in stat gezogen habe wurde die zeile: T DBD [#Pointer1] rot und da stand dass pointer nicht im stst bereich eines fb´s sein dürfen

  4. #4
    Registriert seit
    26.11.2010
    Beiträge
    181
    Danke
    9
    Erhielt 13 Danke für 13 Beiträge

    Standard

    Hallo

    Ich denke dass dein Problem bei dem Pointer darin liegt dass du ein TEMP DWORD verwendest.
    Das TEMP DWORD verliert das Gedächtnis.
    Du musst ein MD oder ein DD verwenden für den Pointer.

    Gruß
    Bernhard

  5. #5
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Der Fehler steht schon dokumentiert da:
    Code:
    T     #Pointer1      // Temp DWORD

  6. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Sieh dir mal unsere FAQ an, da gibt es einen sehr guten Beitrag zum Thema Pointer.
    Du solltest deinen Pointer in das Adressregister 1 laden (LAR1) und dann mit

    L DBD[AR1, P#0.0]

    arbeiten.

    Also etwa so:

    Code:
    AUF "Auswertung_CO2_Kurven"
    L #Pointer1
    LAR 1
    L #Messwert
    T DBD[AR1, P#0.0]
    PS. Pointer1 natürlich ein STAT DWORD
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #7
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Oder, nicht so schön wie bei Ralle:

    BEGINN FB:
    L PointerH1 //STAT_DWORD
    T Pointer1 //TEMP_DWORD

    Bearbeitung
    ..
    ..
    ..

    ENDE FB
    L Pointer1 //TEMP_DWORD
    T PointerH1 //STAT_DWORD

  8. #8
    Registriert seit
    18.03.2013
    Ort
    Wittlich, RP
    Beiträge
    50
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    nun habe ich den pointer als DWORD als STAT Variable deklariert und es wird nicht rot. ok soweit.
    der pointer steht bei: 2.870e-42 und die p#4.0 ergeben 4.484e-44 die addition ergibt 2.915e-42

    kann mir das wer erklären?

    ps: der pointer steht dort er zählt nicht weiter hoch. mache ich ein MD 400 draus klappts wunderbar... woran könnte das liegen? die stat var ist definitiv als DWORD deklariert

  9. #9
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Kopfkratz!
    Wieso gibst Du den Pointer als REAL- Zahl an?

  10. #10
    Registriert seit
    18.03.2013
    Ort
    Wittlich, RP
    Beiträge
    50
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ou das lag daran dass ich das so eingestellt hatte -.-

    naja mich wundert arg, dass ich KEINE StatVar nutzen kann für den Pointer, nur ein MD, mit MD funktioniert es

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 17.01.2013, 10:53
  2. Antworten: 14
    Letzter Beitrag: 06.02.2012, 18:59
  3. FM350-2 zählt nicht
    Von bernd67 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.07.2009, 17:11
  4. Zähler zählt nicht ?
    Von Deep Blue im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.04.2008, 19:47
  5. FM350-2 Zählt nicht
    Von ELurch im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 02.04.2008, 17:53

Lesezeichen

Berechtigungen

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