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

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

Thema: ANY-Pointer

  1. #1
    Registriert seit
    01.03.2007
    Beiträge
    262
    Danke
    26
    Erhielt 33 Danke für 28 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich bin gerade dabei für mich einen kleinen FC zu schreiben, der mir einen Any-Pointer ausgeben soll.

    Steht ja schon alles schön hier im Forum drin wie man sich einen Do-It-Yourself-AnyPointer strickt: http://www.sps-forum.de/showthread.php?t=12923

    Den Pointer krieg ich auch soweit ich das beurteilen kann im TEMP-Bereich gut zusammen, nur ich krieg das Ding einfach nicht in den Out-Bereich reintransferiert, damit ich den weiterbenutzen kann.
    Zitieren Zitieren ANY-Pointer  

  2. #2
    Registriert seit
    09.04.2008
    Beiträge
    50
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Was hast denn genau damit vor, sehe an sich keinen Sinn darin einen Any Pointer auszugeben.

    Aber ansonsten, transferiere die 10 Byte aus dem Temp Bereich in den Out Bereich, in dem du vorher einen Any Pointer deklariert hast.
    Geändert von centrox (08.10.2008 um 15:24 Uhr) Grund: Nach überlegen doch einen Sinn gefunden

  3. #3
    Avatar von Human
    Human ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.03.2007
    Beiträge
    262
    Danke
    26
    Erhielt 33 Danke für 28 Beiträge

    Standard

    Also: Ich zeichne ein paar Messkurven auf und weil das ziemlich viele Werte sind kommen die nur in einen Ringpufferspeicherung und werden dann per DLL in mein Programm geschickt und als Kurve dargestellt.

    Die Aufzeichnung mache ich im OB30, damit die Kommunikation im OB1 mir nicht die Messwerte zerhaut.

    Wenn man jetzt eine DLL aus der WinAC aufruft muss man als Eingabeparameter zwei Any-Pointer angeben, einen für die Werte, die an die DLL weitergegeben werden, einer für die Werte, die aus der DLL zurückkommen. Da ich da schon ein paar mal einen Any-Pointer brauchen könnte, der ein bisschen dynamischer ist als der statische möchte ich das dann auch gleich mal in einen Standard-FC fassen.

  4. #4
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    @Human:
    so wie ich das verstanden habe willst Du dir eine FC basteln die dir einen Any-Pointer zusammenbastelt und an deren Output Du dann eine weitere Temp-Variable ranschreibst um den Anypointer dann an verschiedenen Bausteinen benutzen zu können.
    Ich habe mir vor Ewigkeiten dazu mal eine FC geschrieben (die funktioniert auch).
    Der Witz an der ganzen Sache ist, dass die Deklaration der Out-Variable im FC nicht vom Datentyp Any sein darf, sondern ein ganz normaler Pointer ist.
    Code:
    FUNCTION FC 1 : VOID
    TITLE =
    VERSION : 0.1
     
    VAR_INPUT
      DB_No : INT ; 
      DBB_No : INT ; 
      LEN : INT ; 
    END_VAR
    VAR_OUTPUT
      any_point : POINTER ; 
    END_VAR
    VAR_TEMP
      BZ : DWORD ; //Bereichzeiger auf den Zieldatenbereich
      AR1_sik : DWORD ; //Sicherung AR1
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          TAR1  ; 
          T     #AR1_sik; 
          L     P##any_point; 
          LAR1  ; 
          L     D [AR1,P#2.0]; 
          T     #BZ; 
    NETWORK
    TITLE =
          L     #BZ; 
          LAR1  ; 
          L     W#16#1002; // Typ Byte
          T     W [AR1,P#0.0]; 
          L     #LEN; // Anzahl der Zeichen
          T     W [AR1,P#2.0]; 
          L     #DB_No; // DB-Nummer
          T     W [AR1,P#4.0]; 
          L     #DBB_No; // Byteadresse
          SLD   3; 
          OD    DW#16#84000000; 
          T     D [AR1,P#6.0]; 
          L     #AR1_sik; 
          LAR1  ; 
    END_FUNCTION
    Der Aufruf des Ganzen sieht dann beispielsweise so aus:
    Code:
    CALL FC 1
    DB_No :=513                     //DB Nummer
    DBB_No :=44                    //Byteadresse
    LEN :=512                      //Länge in Byte
    any_point:=P##temp_var        //Pointer auf die temporäre Anyvariable
    Ich hoffe das ist in etwa das, was Du gemeint hattest.
    Geändert von OHGN (08.10.2008 um 16:35 Uhr) Grund: verschrieben
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo Human,
    ein ANY-Pointer ist nichts, was du von einem Baustein zurückgeliefert bekommen kannst sondern er ist so gedacht, dass man übergeben kann von wo ein Datenbereich gelesen oder nach wo er geschrieben werden soll.

    Wenn du dir mit einem Baustein aus DB-Nr. + Start DBB + Anzahl Bytes (oder ähnlich) einen ANY zusammenbaust um ihn z.B. vom Blockmove (SFC20) verwenden zu lassen, so kannst du diesen doch auch gleich aus dem Baustein heraus aufrufen in dem der ANY erzeugt wird.

    Gruß
    LL


    Edit:
    Oder aber man macht es so wie von OHGN vorgeschlagen (der Vorschlag hat auch was) - man übergibt dem Baustein die Adresse, in die der ANY hineingeschrieben werden soll.
    Geändert von Larry Laffer (08.10.2008 um 16:31 Uhr)

  6. #6
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    hi,
    warum darf der OUT kein ANY sein

    Gruß Micha
    "arbeite klug, nicht hart" - deutsches Sprichwort

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Zitat Zitat von SPSKILLER Beitrag anzeigen
    hi,
    warum darf der OUT kein ANY sein

    Gruß Micha
    weil es eigentlich keinen Sinn macht ...
    Wenn du Daten nach irgendwohin schreiben willst und diese (Bereichs-)Adresse als ANY-Pointer übergeben willst, dann ist das von der Systematik her auch ein IN-Parameter ...

  8. #8
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    na er will den ANY-Pointer einmal erzeugen, und dann an verschiedenen Stellen im Prog. verwenden - denke ich
    "arbeite klug, nicht hart" - deutsches Sprichwort

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Zitat Zitat von Human Beitrag anzeigen
    Also: Ich zeichne ein paar Messkurven auf und weil das ziemlich viele Werte sind kommen die nur in einen Ringpufferspeicherung und werden dann per DLL in mein Programm geschickt und als Kurve dargestellt.

    Die Aufzeichnung mache ich im OB30, damit die Kommunikation im OB1 mir nicht die Messwerte zerhaut.
    Warum machst du mit dem Baustein, der die Werte aufzeichnet nicht auch die Übertragung ?
    Du kannst im OB1 die gleiche Instanz deines FB (ich nehme mal an. dass es so etwas ist) nochmal aufrufen und durch eine entsprechend andere INPUT-Beschaltung den Daten-Transfer starten. Das hätte den Vorteil, dass du die Pointer nicht erst ausrechnen mußt, sondern sie dem FB ja schon bekannt sind und bei einer Änderung des FB gleich automatisch mit-korrigiert werden ...

    Gruß
    LL

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Human Beitrag anzeigen
    ich bin gerade dabei für mich einen kleinen FC zu schreiben, der mir einen Any-Pointer ausgeben soll.

    Den Pointer krieg ich auch soweit ich das beurteilen kann im TEMP-Bereich gut zusammen, nur ich krieg das Ding einfach nicht in den Out-Bereich reintransferiert, damit ich den weiterbenutzen kann.
    Ein Programmbeispiel für einen ANY-Zeiger als OUT-Parameter an einer Funktion findest Du hier:

    http://www.sps-forum.de/showpost.php...4&postcount=10

    Gruß Kai

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