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

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

Thema: Pointer in SCL (kein any)

  1. #1
    Registriert seit
    01.02.2008
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen,
    ich habe mal wieder ein Problem und hoffe irgendwer kann / mag mir helfen

    Es geht um folgendes:

    Ich muss einen geschützeten FC benutzen, der mir Daten verändert. Dazu bekommt er als Eingangsparameter zwei Pointer (kein ANY-Pointer) und ein Int. Der erste Pointer zeigt auf die Daten die verändert werden sollen, das Int wieviele und der zweite Pointer, wo die veränderten Daten hingeschrieben werden sollen. Wenn ich in KOP/FUP/AWL zwei Pointer anlege funktioniert das einwandfrei!

    Das Problem ist, ich MUSS SCL verwenden.

    Laut Hilfe ist ein DB-Pointer 6 Bytes lang:
    Code:
    Byte: 0        1       2                 3         4                5 
          |    DB-Nummer   | Speicherbereich |      Byte Addr.               | Bit
    Nun möchte ich P#DB307. DBB 25 anlegen, meines Verständnisses nach habe ich ein Struct aus Int und DWORD mit folgenden Daten angelegt:

    Int (also Byte 0+1) : 307
    Dword (also Byte 2-5) : W#16#8400_00C8
    (also 84 für den DB-Speicherbereich AND 25*8Bit für die Adresse)

    Leider funktioniert es nicht, was mache ich falsch?

    Grüße
    Jens

    P.S.: Leider fand ich hier im Forum nur Posts zu Any-Pointern, so habe ich einen neuen Thread erstellt, ich hoffe ich habe nichts übersehen und poste somit eine Frage doppelt.
    Geändert von jck0815 (06.01.2009 um 10:31 Uhr)
    Zitieren Zitieren Pointer in SCL (kein any)  

  2. #2
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hallo,

    hoffe ich habe die Frage richtig verstanden.
    Um das zu machen brauchst Du zusätzlich einen Datentyp vom Typ Pointer.

    Bsp:
    Code:
    Zeiger1 : POINTER;
    Zeiger2 : POINTER;
    Mittels AT kann dann eine zusätliche Sicht auf die Variable erstellt werden.
    Bsp:
    Code:
    Zeiger1 : POINTER;
        _Zeiger1 AT Zeiger1 : STRUCT
            DBNr: WORD;
            Adr: DWORD;
        END_STRUCT;
    hier kann dann auf die einzelnen Bereiche des Pointer zugegriffen werden mit _Zeiger1.DBNr

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  3. #3
    jck0815 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.02.2008
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die schnelle Antwort.

    Solch ein Konstrukt hatte ich mir auch überlegt, nur darf ich leider im
    VAR - END_VAR - Teil keine Variable des Types POINTER anlegen.
    (Deklaration einer Aufrufinstanz oder verwendeter Parametertyp in diesem Vereinbarungsblock nicht zulässing)

    im VAR_OUT - END_VAR - Teil ist wiederum das AT- Konstrukt nicht zulässig.

    (Bei Any-Pointern funktioniert der beschrieben Code ohne Probleme, nur leider mit pointer micht)

    Was mache ich falsch, oder geht das nicht?

    Grüsse
    Jens
    Geändert von jck0815 (06.01.2009 um 11:49 Uhr)

  4. #4
    Registriert seit
    17.10.2007
    Ort
    35043 Marburg
    Beiträge
    176
    Danke
    4
    Erhielt 30 Danke für 29 Beiträge

    Standard

    Hallo,

    ich denke mal das geht so nicht. Wenn du an einen Baustein einen Pointer übergeben willst musst du die absolute Adresse übergeben und nicht eine Speicheradresse dessen Inhalt den Pointer enthält. In dem Fall würde ja die Lokaldatenadresse übergeben werden.
    Deswegen ist es wahrscheinlich von vorn herein schon nicht gestattet im temp Bereich Pointervar. anzulegen.

    oder so ähnlich...
    Grüße...
    Paradox ist, wenn sich jemand im Handumdrehen den Fuß bricht.

  5. #5
    jck0815 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.02.2008
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja sowas befürchte ich auch, nur kann ich irgendwie den FC in SCL aufrufen (im Notfall auch mit festen Adressen), also sowas wie:

    Code:
    FC4711( INPUT:= P#DB305.DBB 0,
            LENGTH: 25,
            OUTPUT:= P#DB305.DBB 26);
    Leider kann ich P#... nicht in SCL verwenden...
    Hat da noch wer ne Idee oder muss ich da nen AWL-Teil einfügen und ne Diskussion anfangen, weil nur SCL verwendet werden soll !? Ich hoffe es gibt noch ne Lösung, aber mir gehen leider die Ideen aus

    Selbst wenn keiner mir weiterhelfen kann danke ich Euch allen ganz herzlich für die Mühe!

    Grüsse
    Jens

  6. #6
    Registriert seit
    17.10.2007
    Ort
    35043 Marburg
    Beiträge
    176
    Danke
    4
    Erhielt 30 Danke für 29 Beiträge

    Standard

    Hallo,

    wenn du das P# einfach weglässt??? Spielt in AWL ja auch keine Rolle, der Typ Pointer bestimmt das ja schon automatisch.
    Grüße...
    Paradox ist, wenn sich jemand im Handumdrehen den Fuß bricht.

  7. #7
    jck0815 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.02.2008
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das geht leider auch nicht.

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Hallo,
    leider ist es so, dass das beschriebene Problem unter SCL so nicht zu lösen geht. Ich hatte das auch schon einmal versucht und bin daran gescheitert.
    Die Frage, die sich hier für mich allerdings stellt, ist :
    Wenn du sowieso die Start-Adresse und die Länge des Bereichs angeben willst (nur halt in 2 Parametern ... warum machst du es dann nicht mit dem ANY, mit dem genau das gehen würde und der von auch von SCL zerlegen liesse (wie du es ja selbst auch schon festgestellt hast) ?

    Gruß
    LL

  9. #9
    jck0815 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.02.2008
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Naja,
    ich habe den Baustein vom Kunden bekommen und muss ihn nutzen. Weitere Anforderung war SCL.
    Also werde ich mich mit dem Kunden nochmal auseinander setzen müssen.

    In meinen Augen gibts dann 3 Möglichkeiten:
    - den Baustein offen legen, dass ich ihn auf ANY umbauen kann
    - der Kunde baut ihn auf ANY um
    - ich muss ihn per AWL/FUP/KOP aufrufen

    DANKE für Eure Mühe!

    Grüsse
    Jens

  10. #10
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Sorry, war nur Truthahn essen,

    mw +2 Kg

    Aber mit einem FB ist es möglich.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

Ähnliche Themen

  1. Kein Pack & Go für OP270 ?
    Von JesperMP im Forum HMI
    Antworten: 6
    Letzter Beitrag: 16.04.2010, 17:33
  2. TP177A kein Störmeldearchiv?
    Von Poldi007 im Forum HMI
    Antworten: 3
    Letzter Beitrag: 25.03.2010, 10:23
  3. Kein Querverweis im FC
    Von klauserl im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 11.01.2010, 14:55
  4. DOC ist kein Grafikformat!
    Von marlob im Forum Stammtisch
    Antworten: 13
    Letzter Beitrag: 14.03.2008, 13:51
  5. Antworten: 4
    Letzter Beitrag: 26.04.2007, 21:05

Lesezeichen

Berechtigungen

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