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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 30

Thema: Scl-any Pointer

  1. #1
    Registriert seit
    24.10.2007
    Ort
    USA
    Beiträge
    815
    Danke
    3
    Erhielt 73 Danke für 57 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    noch einmal eine Frage zum Any Zeiger:
    Beisp:

    Quelle : ANY;
    QuellPointer AT Quelle : STRUCT
    SyntaxID : BYTE;
    Datentyp : BYTE;
    db_Nummer : INT; // Das entspricht 2 Byte
    BytePointer : DWORD;// Das entspricht 4 Byte
    END_STRUCT;

    // D.h QuellPointer soll 1+1+2+4=8 Byte belegen ????

    Begin
    Quelle:= DB2.DBX0.0

    ...
    Ist es richtig in dem Fall zu sagen :
    p#DB2.DBx0.0 Byte 8 (AWL-mäßig) und dass:
    SyntaxID, Datentyp (Byte0,Byte1):=DB2.DBW0 [grob geschrieben]
    db_Nummer :=DB2.DBW2
    BytePointer :=DB2.DBW4
    ????????????

    Danke im Voraus

    johnij
    Zitieren Zitieren Scl-any Pointer  

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

    Standard

    Hallo,
    wenn du an deinen Baustein per ANY-Pointer "P#DB2.DBX0.0" übergibst, dann steht :
    im Byte 0 : 10h
    im Byte 1 : 01h
    im Byte 2,3 als WORD = 0
    im Byte 4,5 als WORD = 02 (für DB 2)
    im Byte 6 : 84h
    im Byte 7,8,9 = 0 (für DBX 0.0)

    besser erklären würde sich wenn du übergibst "P#DB2.DBX5.4 Byte 10"
    Dann würdest du erhalten :
    m Byte 0 : 10h
    im Byte 1 : 01h
    im Byte 2,3 als WORD = 10 (Anzahl der Bytes)
    im Byte 4,5 als WORD = 02 (für DB 2)
    im Byte 6 : 84h
    im Byte 7,8 = 0
    im Byte 9 = b#101100 (für DBX 5.4)

  3. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    johnij (01.11.2007)

  4. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Zitat Zitat von johnij Beitrag anzeigen
    Hallo zusammen,
    noch einmal eine Frage zum Any Zeiger:
    Beisp:

    Quelle : ANY;
    QuellPointer AT Quelle : STRUCT
    SyntaxID : BYTE;
    Datentyp : BYTE;
    db_Nummer : INT; // Das entspricht 2 Byte
    BytePointer : DWORD;// Das entspricht 4 Byte
    END_STRUCT;

    // D.h QuellPointer soll 1+1+2+4=8 Byte belegen ????

    Begin
    Quelle:= DB2.DBX0.0

    ...
    Ist es richtig in dem Fall zu sagen :
    p#DB2.DBx0.0 Byte 8 (AWL-mäßig) und dass:
    SyntaxID, Datentyp (Byte0,Byte1):=DB2.DBW0 [grob geschrieben]
    db_Nummer :=DB2.DBW2
    BytePointer :=DB2.DBW4
    ????????????

    Danke im Voraus

    johnij
    Ähm, ich würde sagen falsch.
    Scheint, du hast das noch nicht richtig verstanden.
    Der Any-Typ ist nur ein Zeiger auf einen Datenbereich, wobei er so universell ist, daß er Beginn, Länge, Typ gleich mit in sich enthält.
    Du hast das so aufgeschrieben, als würde der Zeiger auf sich selbst zeigen, was man im Extremfalle natürlich machen kann, was aber auch wenig Sinn hat.


    Im Normalfall geht man so vor:

    Anlegen eines Any als IN oder TEMP (was anderes geht auch nicht) eines FC oder FB.
    Füllen der Daten des Any-Pointers, also

    SyntaxID : BYTE;
    Datentyp : BYTE;
    db_Nummer : INT;
    BytePointer : DWORD;

    Aufruf z.Bsp des SFC20 (BlkMove), der diesen Typ als Input erwartet.
    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

  5. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Im Normalfall geht man so vor:

    Anlegen eines Any als IN oder TEMP (was anderes geht auch nicht) eines FC oder FB.
    Füllen der Daten des Any-Pointers, ...
    ... oder wenn man mit SCL und dem Befehl AT herumspielen möchte, dann eine SCL-Function einen Pointer übergeben, ihn mit Hilfe von der AT-Sicht "zerhacken" in Einzel-Variablen und sich die zurückgeben lassen, damit man sieht, was daraus wird ...

  6. #5
    Avatar von johnij
    johnij ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.10.2007
    Ort
    USA
    Beiträge
    815
    Danke
    3
    Erhielt 73 Danke für 57 Beiträge

    Standard

    [quote=Larry Laffer;104216]Hallo,

    besser erklären würde sich wenn du übergibst "P#DB2.DBX5.4 Byte 10"
    Dann würdest du erhalten :
    m Byte 0 : 10h
    im Byte 1 : 01h

    Muss das nicht im Byte 1: 02 h (Datentyp= Byte) sein ???
    denn 01h= Datentyp BOOL
    Gruß

  7. #6
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von johnij Beitrag anzeigen
    Muss das nicht im Byte 1: 02 h (Datentyp= Byte) sein ???
    denn 01h= Datentyp BOOL
    Gruß
    Richtig, siehe auch hier:

    http://www.sps-forum.de/showthread.php?t=12923

    Gruß Kai

  8. #7
    Avatar von johnij
    johnij ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.10.2007
    Ort
    USA
    Beiträge
    815
    Danke
    3
    Erhielt 73 Danke für 57 Beiträge

    Standard

    Danke an alle,
    ich habe bissel bei Siemens reingeguckt. Ich habe jetzt keine Angst mehr
    vor dem ANY-Zeiger .

    Prima Forum.

    Gruß johnij

  9. #8
    Registriert seit
    20.01.2007
    Beiträge
    18
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ist es den nun möglich mit dem "AT" Befehl oder einem anderen Befehl Manipulationen im ANY vorzunehemen?

    wie ist es beispielsweise möglich aus den DBX5.4 ein 7.0 zu machen?

    Gruß
    Flo

  10. #9
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Ja, das ist möglich, kann man doch aus den Beiträgen oben ersehen, oder? Zuerst muß man aber dazu wissen, wie man mit dem Any selbst umgehen kann (siehe dazu in unserer FAQ, da ist ein super Beitrag drin, der das erklärt). Dann nimmt man den AT-Befehl und legt damit eine Sicht auf seinen Any, schnappt sich die Variable Bytepointer und addiert da 12 dazu (von 5.4 bis 7.0 sind es 12 Bit, der Bytepointer stellt ja schon die Adresse inkl. Bits dar, siehe FAQ).
    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

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

    Rotes Gesicht


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hab das mit dem AnyPoibter so gemacht (funktioniert tatsächlich).

    Am Anfang hatte ich auch den ANY "von Hand" gefüllt - und mir fast jedesmal "einen abgebrochen". Das braucht manb gar nicht, der SCL-Compiler macht das alles automatisch

    Die Typen von Siemens kennen sich da teils auch überhaupt nicht aus ....

    Code:
    TYPE AnyPointer
        STRUCT
            byId    : BYTE;
            byTyp   : BYTE;
            iCount  : INT;
            iDbn    : INT;
            dwPtr   : DWORD;
        END_STRUCT;
    END_TYPE
    
    
    
    .....
    VAR_TEMP
        AnyPniRx  : AnyPointer;
        pAnyRx  AT AnyPniRx : ANY;
        
        pAnyRx := "Glob".TcpRxFsm.RxBuf.Daten;
                    
        AG_RECV (ID      := 1,
                 LADDR   := #16#0100,
                 RECV    := pAnyRx,
                 NDR     := bDone, 
                 ERROR   := bError, 
                 STATUS  := wStatus,
                 LEN     := iLen
        );
    
    


    Zitieren Zitieren AnyPointer in SCL  

Ä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
  •