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

Ergebnis 1 bis 6 von 6

Thema: Startadresse über Pointer bei Lokalem Datenstruct

  1. #1
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi komme irgendwie nicht weiter.

    Ich habe mit in einem FB ein lokales Datenstruct "Status" in den STAT Variablen angelegt.
    Dort sind enthalen
    0-0.7 Bits
    1.0 Datenlänge (Byte)
    2.0-90.0 Nutzdaten

    Ich möchte nun die Nutzdaten Entnehmen, hierzu benötige ich die Anfangsadresse der Nutzdaten

    Habe es so Versucht, haut aber nicht hin

    L P##Status (Anfangsadresse laden)
    T #Laufparameter (nötig für Schleife zum Auslesen der Daten)
    LAR! #Laufparameter
    +AR! P#2.0 (offset 2 Byte)
    TAR1 #Laufparameter

    Was mache ich falsch?


    Gruß TheBadFrog
    Zitieren Zitieren Startadresse über Pointer bei Lokalem Datenstruct  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo,
    warum machst du es nicht so :
    Code:
    L P##Status (Anfangsadresse laden)
    L P#2.0
    +D
    T #Laufparameter   // muss vom Typ DWORD sein
    LAR1
    Gruß
    LL

  3. #3
    Registriert seit
    27.07.2007
    Beiträge
    223
    Danke
    17
    Erhielt 42 Danke für 40 Beiträge

    Standard

    auch eine Möglichkeit:
    Code:
    LAR1 P##Status  // Anfangsadresse laden
    +AR1 P#2.0    // offset 2 Byte
    TAR1 #Laufparameter // Datentyp DWORD
    Soll der Baustein multiinstanzfähig sein, musst du noch das AR2 dazu addieren.

  4. #4
    TheBadFrog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo LL, hallo Hohlkörper,

    erst einmal vielen Dank für die sehr schnelle Hilfestellung!

    Das sieht nun bei mir schon mal teilweise gut aus......
    Leider passen die Daten nicht immer.

    Mein Lokaldatenstruckt liegt direkt am Record parameter des SFC 14
    Die Daten aus dem Lokaldatenbereich (sind einzelne Bytes) passen leider nicht immer!
    Kann es sein das meine Daten zum Einlesezeitpunkt nicht aktuell sind?
    Habe gerade nicht viel in meiner 315 2 DP die Zykluszeit liegt zwischen 1 und 2 ms!

    Teste nun mal den gleichen Ablauf mit einem Vorbelegten Struckt!

    Oder ich habe noch eine Bock in meinem Ablauf drin!

    Wenn ich eine Konstante weggschreibe wird diese "richtig" und in richtiger Anzahl in meinen DB weggeschrieben.
    Prohlem liegt also im Zugriff auf die Lokaldaten!

    Gruß TheBadFrog

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Zitat Zitat von TheBadFrog Beitrag anzeigen
    ... Oder ich habe noch eine Bock in meinem Ablauf drin!
    Dazu müßte man etwas mehr über deinen Ablauf und dein restliches Programm wissen.
    Wenn allerdings mit konstanter Vorbelegung korrekt gearbeitet wird, dann ist da m.E. schon ein Indiez in eine bestimmte Richtung ...

    Gruß
    LL

  6. #6
    TheBadFrog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi LL,

    habe nun die Lokaldaten direkt angepsrochen
    L #Status.Receive Data[0]
    T #aktuelles_Byte

    L #ReceivenächstesByte
    SLD 3
    L DW#16#84000000 // Kennung DB

    OD
    LAR1
    L #aktuelles_Byte
    T B(AR1,P0.0)
    L #Receive_nächstesByte //Position im DB weiter Rücken
    + 1
    T #Receive_nächstesByte
    L #Status.Receive Data[1]
    .......................
    So habe ich es dann halt mit allen 8 Byte Nutzdaten gemacht
    Die Werte im DB haben dann zu denen die ich an die Serielle Schnittstelle verschickt habe gepasst......
    Also lags an meiner Verarbeitung der Lokaldaten.....


    Wollte im Vorfeld die Lokaldaten über einen Pointer auslesen, dies funktionierte aber nur ein Weile........

    Event. habe ich einen Offset des AR1 vergessen, oder hätte ich das AR1 sichern und nach dem Funktion zurückschreiben müssen?

    Gruß TheBadFrog

    P.S. nun gehtes in die andere Richtung (Daten aus dem DB entnehmen und an das Elektronikmodul schicken......wieder Stückweise mit maximaler Nutzdatenbreite von 8 Byte verschicken

Ähnliche Themen

  1. Indirekte Adressierung über einen ANY Pointer
    Von sventek im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.12.2009, 06:33
  2. Speichrzugriff über Adresse aus ANY-Pointer
    Von MarkusP210 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 24.09.2009, 11:26
  3. Zugriff auf DB(String) über Pointer
    Von Thomas R im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.03.2007, 21:04
  4. pointer über temp struct...
    Von Jochen Kühner im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.09.2006, 10:23
  5. adressierung DB über Pointer
    Von TonyMono im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 13.06.2006, 22:24

Lesezeichen

Berechtigungen

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