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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: indirekte Adressierung

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    das was ich da bis jetzt gesehen habe (auch wenn ich den Sinn davon immer noch nicht kenne) wäre vollständig etwas, dass sich mit Multiplex-Variablen machen lässt.
    Brauchen würdest du hierbei natürlich für jedes Element des DB's einen eigenen MUX-Pointer (das kann eine interne INT-Variable deiner Visu sein) und für die ganze Struktur einen DB-Pointer (das wäre dann auch ein interner INT).
    Die von dir dargestellten BOOL's würde ich mir nicht einzelnen laden, sondern in einem Byte oder ggf. Word (je nach Anzahl) zusammenfassen.

    Vom Ablauf passiert nun folgendes :
    Du würdest in deinem Direktory-DB nachsehen, welche Quell-Struktur sich an dem gewünschten Platz befindet. Der würde dir nun zurückgeben, dass deine Datenquelle "5" (für DB5) ist. Dieser Wert sollte dann im DB-Pointer landen. Dann würde er dir mitteilen, dass es 20 Elemente gibt (eventuell auch noch mit Angabe der String-Länge). Nun würdest du für die Anzahl der vorhandenen Elemente die Pointer berechnen :
    String_1_Pointer = 0
    Byte_1_Pointer = 52
    String_1_Pointer = 54
    Byte_1_Pointer = 106
    usw.
    Das ginge dann auch mit einer Schleife ...

    Für die Darstellung auf der Bildschirmseite musst du natürlich den Aufbau mit den entsprechenden MUX-Variablen entsprechend der max. darstellbaren Anzahl machen (also gemäß deines 2. Beispiels z.B. 10 Spalten). Nicht benötigte Spalten können über die Anzahl-Variable ausgeblendet werden.
    In der Spalte 1 steht dann als String natürlich dann deine MUX-Variable (vom Typ STRING), die sich aus dem DB-Pointer und den String_1_Pointer generiert. Genauso verfährst du mit den BOOL-Einträgen, die sich dann aus dem DB-Pointer und dem Byte_1_Pointer und der in dem Fall fest vergebenen Bit-Nummer (0..2), ergeben.
    Das Gleiche für Spalte 2 usw.

    Die benötigten Pointer berechnest du beim Aufrufen der Bildschirmseite über ein Script, dass vorher die Basis-Info (eventuell per absoluter Vorgabe) erhalten hat. Die Basis-Info ist in dem Fall die Eintrags-Nummer des Dir-DB's und eventuell bei mehr als 10 Einträgen die Offset-Verschiebung (0 für die Einträge 1..10 , 10 für die Einträge 11..20 , usw.).

    Hilft dir das weiter ?
    Wenn nicht, dann frag bitte, wo es unklar ist / war ...

    Gruß
    LL

  2. #12
    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 nochmal für deine Hilfestellung.
    So in der Art hatte ich das auch vor, nur das mit den MUX-Variablen verstehe ich nicht.
    Wäre es viel verlangt wenn du mir ein kleines Beispiel machst, nur wie du dynamisch daten aus dem DB holst?
    Sorry für diese dreiste Frage, aber ich glaub anders schnall ich das nicht.

  3. #13
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard

    ... ein direktes Beispiel für dein Vorhaben habe ich nicht und im Augenblick habe ich auch keine Programmiermöglichkeit ... ist m.E. aber auch nicht wirklich notwendig ...

    Wenn du in Flex eine Variable anlegst (wir nenn sie mal Test_1), dann gibt es in der variablen-Tabelle eine Spalte, in der die Adresse der variablen in der SPS angegeben ist/wird. Wenn du diese Zelle anklickst dann öffnet sich ein Popup in dem die einzelnen Adresse-Bestandteile noch einmal dargestellt sind. Bei jedem Eintrag ist ein zusätzliches Feld (ein meine da steht "123" drauf). Wenn du dieses anklickst, dann kannst du bei jedem Feld anstelle des absoluten Wertes auch den Namen (Verweis) einer anderen Variable eintragen. Das wäre dann deine Pointer-Variable, die dort hinein käme und das ganze macht dann aus "Test_1" eine MUX-Variable.

    Ich hoffe das war jetzt ("blind" beschrieben) trotzdem hilfreich.
    Vielleicht kann ja auch noch jemand, der gerade "Flex" am Start hat, hier noch einen Screenshot einfügen, der das verdeutlicht ...

    Gruß (und viel Erfolg)
    LL

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

    squonk (25.05.2009)

  5. #14
    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
    Beispiel ist nicht mehr nötig.
    Das war jetzt der Schlag auf den Hinterkopf.
    Ich dachte immer man kann hier nur statische Adressen vergeben.

    Danke für die Hilfe und vor allem für deine Geduld.

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