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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 30

Thema: Scl-any Pointer

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.720
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Kandiszucker:
    Das mit der TYPE-Deklaration in deinem Code-Beispiel finde ich interessant. Leider funktioniert das (bei mir) nicht.
    Wo machst du diese Deklaration ?

    Gruß
    LL

  2. #12
    Registriert seit
    16.11.2007
    Ort
    Karlsruhe
    Beiträge
    11
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Frage

    Was hast Du für Probleme mit dem Type?


    Die TYPE Deklaration ist in SCL ja nichts anderes als die Deklaration eines UDT.

    Man muß natürlich in der Symboltabelle das Symbol eintragen.

    Ansonsten hab ich das in einer eigenen SCL-Quelle gemacht, in der auch der Datenbereich "Glob" definiert wurde.

    Durch die Zuweisung von

    pAnyRx := "Glob".TcpRxFsm.RxBuf.Daten

    füllt der Compiler den AniPniRx mit *allen* Infos über (das Array) "Glob".TcpRxFsm.RxBuf.Daten, also DB, Länge, Typ usw.

    Damit braucht man "von Hand" den AnyPointer nicht zu füllen.

    Ich hab das probiert, man kann auch Datenbereiche im InstanzDB oder auch in den lokalen Variablen (also Stack) angeben.


    Ich hab übrigens S7 SCL V5.3 SP3 (vor kurzem erst angeschafft).










    Zitieren Zitieren Hallo LarryLaffer!  

  3. #13
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.720
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Danke für die Rückmeldung ...
    Leider hast du die Frage anscheinend nicht verstanden.
    Du brauchst mir nicht zu erklären wie der AT-Befehl in SCL funktioniert und auch nicht wie man den ANY-Pointer auf diesem Weg anwendet oder zuweist. Selbstverständlich weis ich als alter Pascal-Programmierer auch, was TYPE bedeutet.

    Ich habe dein TYPE-Beispiel mal in einen FB von mir eingebaut. Wenn ich das dann übersetze erhalte ich die Meldung "Der neue Bausteinbeginn ist vor dem Bausteinende. Baustein: xAnyPointer".
    xAnyPointer ist dem dem Fall mein TYPE.

    Vielleicht haber ich mich jetzt klarer ausgedrückt ...

  4. #14
    Registriert seit
    16.11.2007
    Ort
    Karlsruhe
    Beiträge
    11
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Frage

    Was ist denn das für eine merkwürdige Meldung

    "Der neue Bausteinbeginn ist vor dem Bausteinende. Baustein: xAnyPointer".

    Damit kann ich nun nix anfangen.

    Ich hab den Codeauschnitt so aus meinem Prog rauskopiert. Hier nochmal komplett:

    Code:
    FUNCTION TcpFSM : VOID
    VAR_TEMP
        AnyPniRx  : AnyPointer;
        pAnyRx  AT AnyPniRx : ANY;
        
        AnyPniTx  : AnyPointer;
        pAnyTx  AT AnyPniTx : ANY;
        
        bDone   : BOOL;
        bError  : BOOL;
        wStatus : WORD;
        iLen    : INT;
        ch      : CHAR;
        i       : INT;
            
    END_VAR
    VAR
    END_VAR
    ........
    Deine Fehlermeldung kann ich mir nun wirklich nicht erklären. Tut mir leid ....
    Zitieren Zitieren Hallo Larry!  

  5. #15
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Hallo Larry,

    du musst deine Type-Definition(en) vor der Definition des FB's machen, dann funktioniert's auf jeden Fallen - nicht innerhalb !
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  6. #16
    Registriert seit
    16.11.2007
    Ort
    Karlsruhe
    Beiträge
    11
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ähhhmmmm......

    Durch:
    Ansonsten hab ich das in einer eigenen SCL-Quelle gemacht, in der auch der Datenbereich "Glob" definiert wurde.
    hatte ich das vorausgesetzt.

    Zitieren Zitieren Kiestumpe, Larry!  

  7. #17
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.720
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    ...?
    Selbstverständlich habe ich BEIDE Varianten schon einmal ausprobiert.
    So schnell gebe ich auch nicht auf ...
    Wie deklarierst du deinen TYPE denn symbolisch ? Vielleicht ist das ja der Schlüssel ...

    Gruß
    LL

  8. #18
    Registriert seit
    16.11.2007
    Ort
    Karlsruhe
    Beiträge
    11
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Daumen hoch

    Hallo Larry,

    symbolisch definiere ich das im Symboleditor als UDT 2, siehe Anhang.

    Müßte normalerweise kein Problem sein....

    Wenn ich das Symbol nicht definiert habe, kriege ich eine andere Fehlermeldung als Du: "Symbolischer Bausteinname nicht bekannt..." oder ähnlich.

    Welche SCL-Version benutzt Du denn? Vielleicht liegts da dran?
    Benutzt Du denn überhaupt TYPEs?

    Am Anfang hatte ich in etwa auch folgendermassen rumexperimentiert. Den AnyPointer muss man nicht unbedingt als TYPE definieren.
    (In Wirklichkeit ist der Anypointer eigentlich eine struct, m.E.) Den Funktionen wird eigentlich ein Pointer auf so eine struct übergeben (aus C Sichtweise heraus)


    Code:
    //------------------------------------------------------------------------------------------------------
    //
    //  NumberOfElements
    //
    //  Liefert Anzahl Arraykomponenten zurück.
    //
    //------------------------------------------------------------------------------------------------------
    FUNCTION NumberOfElements : INT     //sizeof FC90
    VAR_INPUT
        pArrayName:ANY;
    END_VAR
    VAR_TEMP
        pAny : ANY;
        MyAny AT pAny : STRUCT
                ID  : BYTE;
                TYP : BYTE;
                NUM : INT;
                DBN : INT;
                PTR : DWORD;
            END_STRUCT;
    END_VAR
    BEGIN
        pAny := pArrayName;
        NumberOfElements := Myany.NUM;
    END_FUNCTION
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Larry!  

  9. Folgender Benutzer sagt Danke zu Kandiszucker für den nützlichen Beitrag:

    Larry Laffer (22.11.2007)

  10. #19
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.720
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Zitat Zitat von Kandiszucker Beitrag anzeigen
    Am Anfang hatte ich in etwa auch folgendermassen rumexperimentiert. Den AnyPointer muss man nicht unbedingt als TYPE definieren.
    (In Wirklichkeit ist der Anypointer eigentlich eine struct, m.E.) Den Funktionen wird eigentlich ein Pointer auf so eine struct übergeben.
    ... so habe ich das bisher auch gehandhabt. Das mit dem TYPE hatte mir ganz gut gefallen und da dachte ich "da hak' doch mal nach ...".
    Das Ding als UDT in der Symbolik zu hinterlegen ist mir natürlich noch nicht eingefallen ...

    SCL habe ich übrigens wie du ...

    Gruß
    LL

  11. #20
    Registriert seit
    16.11.2007
    Ort
    Karlsruhe
    Beiträge
    11
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hat's denn nun geklappt oder kriegst Du die Fehlermeldung immer noch?

Ähnliche Themen

  1. Pointer und Co
    Von mkd im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 31.07.2008, 14:30
  2. SCL: Pointer
    Von dinner4one im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 06.07.2008, 18:07
  3. Pointer in SCL ?
    Von AndreK im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.04.2008, 21:24
  4. DB und Pointer
    Von PhilippL im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 12.09.2007, 07:02
  5. VKE und Pointer im FC...
    Von halorenzen im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 23.07.2004, 13:16

Lesezeichen

Berechtigungen

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