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

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

Thema: indirekte Adressierung

  1. #1
    Registriert seit
    22.05.2008
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe folgenden Aufbau, einen Baustein in SCL der DB's dynamisch generiert, da er das dynamisch macht weiß ich vorher also nicht welcher DB das sein wird und wie groß der wird, bekomme nach dem erzeugen aber die Nummer und die größe des DB's.
    Ist es möglich in WinCC flex über vbScript dynamisch auf diesen DB zuzugreifen und ihn auszulesen?
    so in dieser Art:
    Code:
     WORD_TO_BLOCK_DB(dbNr).DW[Adresse]
    hab bis jetzt nur Multiplexen gefunden, was inderekte Adressierung betrifft, aber das hilft mir hier nicht weiter.

    Danke
    Zitieren Zitieren indirekte Adressierung  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.416 Danke für 2.012 Beiträge

    Standard

    Hallo,
    das geht meines Wissens nicht.
    Du könntest aber nach dem Erzeugen in das Wort 0 des jeweiligen DB's seine tatsächliche Länge schreiben - dann hätte der DB diese Info auch für die Visu ...

    Gruß
    LL

  3. #3
    Linowitch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.05.2008
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Larry,
    die länge ist nicht das Problem.
    Ich hab mal ein Bild hochgeladen, das deutlich machen soll was ich vor hab.
    Der Inhalt soll aus dem dynamisch erstellten DB kommen, somit müsste ich auf Grund der DB Nummer die ich ja erst zum Zeitpunkt der erstellung weiß auf die Daten im DB zugreifen.
    Angehängte Grafiken Angehängte Grafiken

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.416 Danke für 2.012 Beiträge

    Standard

    Hallo,
    so richtig hilft mir dein Bild nicht weiter ...
    Spontan fällt mir aber trotzdem dazu etwas ein : "Direktory"
    Mein Vorschlag also :
    Du baust dir einen DB, der als eine Art Inhaltsverzeichnis fungiert. Dort kannst du dann zu deinem Index die DB-Nummer und ggf. weitere Rand-Daten ablegen und dann mit der Visu auf diesen Punkt zugreifen und dann weiter agieren ...

    Gruß
    LL

  5. #5
    Linowitch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.05.2008
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für deine Hilfestellung,
    wenn ich dich jetzt richtig Verstanden habe, habe ich das vom Prinzip her schon so.
    Ich beschreib mal genauer.
    Ich habe einen FB1 mit InstanzDB DB1, von den Bausteinen hab ich die Nummer. Nun erstellt aber der FB1 einen weiteren DB dessen Nummer, Länge, usw. im DB1 ablegt wird, somit hab ich nicht das Problem, dass die Visu die Daten des dynamisch erstellten DB's nicht bekommt.
    Da aber der dynamisch erstellte DB immer eine andere Nummer bekommen kann (und auch soll), und diese auch noch zur laufzeit ändert, kann ich in der Visu nicht statisch auf z.B. DB2.DW0 zugreifen.
    Hier brauch ich jetzt einen befehl wie "WORD_TO_BLOCK_DB(dbNr).DW0"
    um immer auf den DB zugreifen zu können der im DB1 gespeichert wurde.
    Jetzt kann ich eine Variable in flex erstellen, die die dbNr erhält,
    Code:
    dbNr    INT    DB 1 DW0
    aber nicht um auf die Daten zu zu greifen
    Code:
    data    INT    DB [dbNr] DW[index]
    deshalb hoffe ich das man irgendwie im vbScript in flex so auf DB's zugreifen kann wie in SCL.
    Geändert von Linowitch (05.12.2008 um 15:59 Uhr)

  6. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.262
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Du könntest für die Verbindung mit der Visu doch auch einen festen DB nutzen. Deine Daten werden in den dynamischen DB geschrieben und für die Visu in den festen DB. Will man einen anderen DB in der Visu anzeigen, kopiert man die Daten mit Block_Move um. ODer man spart ich das zweimalige schreiben und kopiert die Daten um, wenn man sie in der Visu sehen will.
    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

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.416 Danke für 2.012 Beiträge

    Standard

    ... mit der Indexierung ist es m.E. noch einfacher ...
    Entsprechend deines Bildes könntest du ja auch das erste Auswahlfeld auf Index 1 zugreifen lassen, das 2. auf Zwei usw.

    Innerhalb von Flex gibt es die Möglichkeit zu Multiplexen (das ist im Grunde das was du willst). Du legst dir dort die Variablen so an, dass du nicht mehr auf (z.B.) DB11 und im DB11 auf DBD 16 zugreifst, sondern du trägst an der Stelle deine Pointer-Variablen aus dem Direktory-DB ein.
    Probier das doch bitte mal - ich vermute, dass es das ist, was du haben willst ... Ansosnsten kannst du auch via Script die Pointer-Variablen berechnen und sie dann genauso an den "echten" Variablen antragen ...

    Gruß
    LL

  8. #8
    Linowitch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.05.2008
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @Ralle, ja das wäre eine Möglichkeit, wenn ich es anders nicht hin bekomme werde ich mit sicherheit diese Variante benutzen. Was mich hier nur stört ist der zusäzliche DB nur wegen der Visu, obwohl die Daten ja schon schön sortiert in einem DB liegen.

    @Larry, das mit dem Multiplexen hab ich schon Probiert, aber so wie ich das verstanden habe, kann ich dann zwar dynamisch auf DBXX zugreifen, aber ich müsste immer noch wissen wieviel Daten in dem DB liegen, oder hab ich das falsch verstanden?
    Könntest du mir das mit den Pointer in vbScript noch genauer erklären, oder hast du einen Link?

    Danke

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.416 Danke für 2.012 Beiträge

    Standard

    Zitat Zitat von Linowitch Beitrag anzeigen
    @Larry, das mit dem Multiplexen hab ich schon Probiert, aber so wie ich das verstanden habe, kann ich dann zwar dynamisch auf DBXX zugreifen, aber ich müsste immer noch wissen wieviel Daten in dem DB liegen, oder hab ich das falsch verstanden?
    Könntest du mir das mit den Pointer in vbScript noch genauer erklären, oder hast du einen Link?
    Hallo,
    einen Link oder ein konkretes Beispiel kann ich dir im Augenblick nicht liefern, da ich noch nicht wirklich verstanden habe, was du da vorhast. Vielleicht hilfst du mir da mal weiter ...

    Ansonsten ... bitte denk noch einmal genau über den "Direktory"-DB nach ... Du könntest in ihm (hatte ich auch schon mal angedeutet) z.B. auch die Datenlänge und die Anzahl der Einträge ablegen.

    Gruß
    LL

  10. #10
    Linowitch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.05.2008
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So,
    auf Bild1 siehst du wie der erzeugte DB aussieht.
    auf Bild2 dann die Visu wenn der erzeugte DB die Nummer 2 hat und 3 Einträge enthält.
    auf Bild3 wäre es dann der DB5 mit 20 Einträgen wobei ich aber nur auf die ersten 10 zugreifen möchte, erst mit dem klick auf Weiter will ich dann auf die weiteren 10 Einträge zugreifen.

    Und der wechsel von DB2 auf DB5, oder die Änderung der Einträge kann wärend der laufzeit passieren.
    Angehängte Grafiken Angehängte Grafiken

Ähnliche Themen

  1. Indirekte Adressierung in AWL
    Von Bensen83 im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 31.01.2015, 15:58
  2. indirekte Adressierung
    Von Sash7770 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 22.12.2008, 12:47
  3. Indirekte Adressierung
    Von thomasgull im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 31.01.2008, 14:49
  4. Indirekte Adressierung
    Von wusel220983 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 18.05.2007, 18:19
  5. Indirekte Adressierung von SFC 20
    Von andre im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 05.09.2005, 09:44

Lesezeichen

Berechtigungen

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