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

Ergebnis 1 bis 9 von 9

Thema: Pointer aus Global DB laden

  1. #1
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo

    habe einen koppel db für die visu.
    in diesen sind einiege istwerte und weiter hinten die parameter der aktuellen rezeptur.

    die rezeptur besteht wieder aus mehreren udt´s die in einem array liegen.
    jeder eintrag des arrays enthält die daten für einen schritt.


    die werte des aktuellen schrittes will ich nun mit sfc20 in eine weitere structur kopieren.

    das ist alles kein problem, ich habe nur in der berechnung des anypointers den offset der rezepturdaten im koppel db fest eingetragen.

    das gefällt mir nicht...

    folgendes geht nicht:

    L P#"VISU_Station_1".Prg_Parameter.Prg.Schritt[1]

    wie kann ich das machen?

    danke!
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)
    Zitieren Zitieren Pointer aus Global DB laden  

  2. #2
    Registriert seit
    06.10.2003
    Beiträge
    3.410
    Danke
    449
    Erhielt 504 Danke für 407 Beiträge

    Standard

    Hallo Markus,

    du könntest den Any von außen als Bausteinparameter anlegen. Oder den Any an eine FC übergeben, dort zerlegen und seine Bestandteile als Ausgänge zurückgeben. Darauf bist du sicherlich auch schon gekommen. Eine andere Möglichkeit kenne ich nicht.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  3. #3
    Avatar von Markus
    Markus ist offline Administrator
    Themenstarter
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    wie meinst du das?

    eine fc der ich an einem any eingang das übergebe:

    "VISU_Station_1".Prg_Parameter.Prg.Schritt


    sie gibt mir dann an den augangsparametern die db-nr, die startadresse und die länge aus?


    geht das?
    habe das "rückwärts" mit any pointern noch nie gemacht...

    das wäre eine lösung...

    bastel mit gleich mal ne fc dafür...

    danke!
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  4. #4
    Avatar von Markus
    Markus ist offline Administrator
    Themenstarter
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    ok habe mir jetzt mal folgendes gebastelt:

    Code:
          L     P##SRC_ANY
          LAR1  
          L     LB [AR1,P#0.0]              // Syntax-ID in den Any-Pointer auslesen
          T     #SyntaxID
          L     LB [AR1,P#1.0]              // Bereichstyp auslesen (B#16#2 = Byte; B#16#4 = Word)
          T     #Bereichstyp
          L     LW [AR1,P#2.0]              // Anzahl der zu übertragenden Werte (Byte/Word)
          T     #Anzahl_Werte
          L     LW [AR1,P#4.0]              // DB-Nummer auslesen
          T     #DB_Nr
          L     LD [AR1,P#6.0]              // Pointer Startadresse auslesen
          T     #Startadresse

    wozu ist eigentlich die syntax id gut?
    sagt die wie lange der any selber ist?
    kann man damit was cooles machen?
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  5. #5
    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, mach ein hübsches Bitmuster rein .
    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

  6. #6
    Avatar von Markus
    Markus ist offline Administrator
    Themenstarter
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    nein mache ich nicht!
    ich will den pointer doch auslesen.

    wozu isse den nun gut die syntax id...

    was für eine db-nr erhalte ich eigentlich wenn ich einen pointer auf einen merkerbereich zerlege?
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  7. #7
    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

    Ich glaube null oder auch was undefiniertes. Jedenfalls kannst du umgekehrt was beliebiges reinschreiben (auch eine DB-Nummer, die es nicht gibt), wenn du auf einen Merkerbreich schreibst. Die DB-Nummer wird dann einfach ignoriert.
    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

  8. #8
    Avatar von Markus
    Markus ist offline Administrator
    Themenstarter
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    ok danke für die tips, jetzt sieht das ganze so aus:

    Code:
          CALL  "ANY_OFFSET"
           SRC_ANY :="VISU_Station_1".Prg_Parameter.Prg.Schritt[1]
           ENTRY_NO:=#Schrittnummer
           DST_ANY :=#Pointer_Schritt_Aktuell
     
    CALL  "BLKMOV"
           SRCBLK :=#Pointer_Schritt_Aktuell
           RET_VAL:=#retval
           DSTBLK :=#Schritt_Aktuell

    code vom ersten baustein:

    Code:
     
     L     P##SRC_ANY
          LAR1  
          L     LB [AR1,P#0.0]              // Syntax-ID aus dem Any-Pointer auslesen
          T     #SyntaxID
          L     LB [AR1,P#1.0]              // Bereichstyp auslesen (B#16#2 = Byte; B#16#4 = Word)
          T     #Bereichstyp
          L     LW [AR1,P#2.0]              // Anzahl der zu übertragenden Werte (Byte/Word)
          T     #Anzahl_Werte
          L     LW [AR1,P#4.0]              // DB-Nummer auslesen
          T     #DB_Nr
          L     LD [AR1,P#6.0]              // Pointer Startadresse auslesen
          T     #Startadresse
    
     
     
     L     #ENTRY_NO
          +     -1
          L     #Anzahl_Werte
          *I    
          ITD   
          SLD   3
          L     #Startadresse
          +D    
          T     #Startadresse
    
     
     
      L     P##DST_ANY
          LAR1  
          L     #SyntaxID
          T     LB [AR1,P#0.0]              // Syntax-ID aus dem Any-Pointer auslesen
          L     #Bereichstyp
          T     LB [AR1,P#1.0]              // Bereichstyp auslesen (B#16#2 = Byte; B#16#4 = Word)
          L     #Anzahl_Werte
          T     LW [AR1,P#2.0]              // Anzahl der zu übertragenden Werte (Byte/Word)
          L     #DB_Nr
          T     LW [AR1,P#4.0]              // DB-Nummer auslesen
          L     #Startadresse
          T     LD [AR1,P#6.0]              // Pointer Startadresse auslesen
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  9. #9
    Registriert seit
    06.10.2003
    Beiträge
    3.410
    Danke
    449
    Erhielt 504 Danke für 407 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Entschuldigt, ich war zwar gestern noch online, hatte aber nicht mehr im Forum gelesen. Ich bin z.Z. schwer mit WinCC Flexible beschäftigt. WinCC Flexible grenzt an Freiheitsberaubung !

    Die Syntax-ID ist bei Step7 immer 10hex. Ich denke, sie ist ein Ident dafür dass der ANY zu einer S7 gehört. Keine Ahnung wo oder wann man das brauchen kann.


    Gruß, Onkel



    AR1 gesichert?
    Code:
     
    //*** AR1 sichern
    TAR1 #AR1_TEMP
    SET 
    SAVE 
     
    //*** AR1-Register wiederherstellen
    LAR1 #AR1_TEMP
    Geändert von Onkel Dagobert (04.11.2006 um 09:32 Uhr)
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

Ähnliche Themen

  1. Pointer auf udt laden...
    Von Jochen Kühner im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 24.12.2013, 15:12
  2. Global und Instanz DBs ?
    Von Insane im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 07.01.2009, 13:27
  3. Frage zum laden von Daten (Pointer)
    Von INST im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 13.10.2008, 15:14
  4. Global-DB vs. Instanz-DB
    Von b0den im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 16.06.2008, 13:17
  5. pointer laden in muktiinstanzen
    Von Markus im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.01.2005, 23:57

Lesezeichen

Berechtigungen

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