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

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

Thema: Any Pointer in SCL bearbeiten unterschied FC/FB

  1. #1
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi zusammen

    Ich möchte einen Any an einen FC übergeben und ihn auf eine UDT struktur mappen. Das funktioniert in einem FB wunderbar aber nicht im FC.
    Im FC nehme ich ja den Any vom INPUT und speichere ihn IM TEMP um eine AT Sicht draufzulegen.


    so sieht mein FC aus.

    Code:
    VAR_INPUT    LS_ZLV_GW : ANY;// Hier wird das Erste Wort aus dem LS DB aufgelegt
    END_VAR
    
    
    VAR_OUTPUT
        LS_ZLV_GW_OUT : LS_ZLV_GW;
    END_VAR
    VAR_TEMP
        tLS_ZLV_GW : ANY;  // hier wird der Pointer für die Lokaldaten gespeichert um den Any draufzulegen
          pLS_ZLV_GW AT tLS_ZLV_GW : ANY_POINTER; 
       para : LS_ZLV_GW; // temporäre Variablen vom UDT Typ
       Ret : INT;
    END_VAR
    
    
                        
    (*Pointer auf UDT schreiben zum arbeiten*) // Ventilator allgemein
      tLS_ZLV_GW := LS_ZLV_GW; // Pointer aus schnittstelle in Temporärbereich holen.
      pLS_ZLV_GW.Bereichstyp := 2;   // Typ des Bereichs soll Byte sein (INT = 2)
      pLS_ZLV_GW.Anzahl_Werte := 42; // Länge des Pointers weil wir einen Any ohne Länge angeben wollen
                                   // Muss so lange sein wie der UDT der angezeigt werden soll.
    
    
      Ret :=  BLKMOV(SRCBLK := pLS_ZLV_GW ,DSTBLK := para); // Kopieren in die Temporäre Variable.
    Leider scheint der Pointer an LS_ZLV_GW irgendwie nicht richtig übergeben zu werden . Oder mein BLKMOV macht blödsinn.

    Das kommt dabei raus:


    an erster stelle sollte DB141.dbw112 stehen und das mit dem Blockmove kopiert werden nach LS_ZLV_GW_OUT

    der 1. Wert im DBW112 hat 100 die anderen 0 bis dbw 126


    mfG René
    Zitieren Zitieren Any Pointer in SCL bearbeiten unterschied FC/FB  

  2. #2
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Hallo René,

    ich kann momentan nicht erkennen was nicht funktioniert. Sieht doch alles sauber aus.
    mfG Aventinus

  3. #3
    Avatar von vollmi
    vollmi ist gerade online Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    An der Ersten speicherstelle steht eigentlich 100 drin, nicht 4098. an der ersten speicherstelle ist db141.dbw112. sind alles int
    bis zu para_08, da steht dann eine 9 drin.

    Es sieht also so aus als würde der blockmove irgend ein blödsinn machen. denn der Pointer scheint ja richtig zu sein, oder?

    mfG René

  4. #4
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Soweit ich das sehe, beschreibst du die Variable para.para.para_01 nicht in der FC und da die temporär ist steht da noch irgendwas drin, oder?

    Wenn du das dann einem DB141.dbw112 zuweist ist es eben irgendwas....
    mfG Aventinus

  5. #5
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Möchtest du mit den unteren Zeilen nur die Werte darstellen? Dann dreh die Zuweisungen um.
    mfG Aventinus

  6. #6
    Avatar von vollmi
    vollmi ist gerade online Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    ich kopiere doch vom pointer db141.dbw112 nach para mit dem blockmove
    Code:
     Ret :=  BLKMOV(SRCBLK := pLS_ZLV_GW ,DSTBLK := para); // Kopieren in die Temporäre Variable.
    mfG René

  7. #7
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    sorry, übersehen.
    mfG Aventinus

  8. #8
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Mir fällt grad auf, dass in para_02 die Zahl 42 steht, also die Anzahl der Bytes und in Para_03 die DB-Nummer...
    Versteckt sich da der ganze Any?
    mfG Aventinus

  9. #9
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Versuch mal
    Code:
     Ret :=  BLKMOV(SRCBLK := tLS_ZLV_GW ,DSTBLK := para); // Kopieren in die Temporäre Variablen
    mfG Aventinus

  10. #10
    Avatar von vollmi
    vollmi ist gerade online Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Deinem letzten Post mit dem hinweis auf den Pointerinhalt ist es mir wie dachziegel von den Augen gefallen. Ich bin so ein DEPP. Danke funktioniert

    Ich hab jetzt echt ne Stunde an dem ding Rumstudiert den Pointer auseinandergenommen etc. aber das ich garnicht den Pointer am Blockmove habe ist mir jetzt erst aufgefallen.

    mfG René

Ähnliche Themen

  1. Step 7 SCL DB Pointer
    Von hanz-landau im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 24.12.2014, 21:48
  2. Step 7 [SCL] String bearbeiten/auswerten mit AT-Sicht
    Von netsroht im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 15.07.2014, 12:41
  3. Pointer in SCL ?
    Von AndreK im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.04.2008, 21:24
  4. Unterschied SCL und ST
    Von nobug im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 07.03.2008, 10:04
  5. SCL mehrere Datensätze bearbeiten
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.09.2005, 10:53

Lesezeichen

Berechtigungen

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