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

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

Thema: DB nach Array durchsuchen

  1. #1
    Registriert seit
    25.01.2012
    Beiträge
    125
    Danke
    28
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen,

    ich suche eine Möglichkeit einen Datenbaustein in dem ich Arrays aus DWORD habe mit dem Inhalt eines DB, in dem das zu suchende Array (in DWORD) steht, zu vergleichen.
    Anschließend soll mir ein Bit gesetzt werden, welches mir signalisiert das eine Übereinstimmung gefunden wurde und an welcher Adresse genau im DB.

    Gibt es da eine Möglichkeit das in AWL zu realisieren oder gar schon eine vorhandene Funktion?

    Viele Grüße
    Zitieren Zitieren DB nach Array durchsuchen  

  2. #2
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ich verstehe deine Frage nicht genau.

    Du hast beispielsweise DB1 in dem liegen 10 Variablen vom Typ Array[1..6] of DWORD. Und du hast einen DB2 in dem liegt eine Variable vom Typ Array[1..6] of DWORD.

    Und jezt möchtest du wissen ob und wenn ja welche Variable im DB1 mit der in DB2 übereinstimmt.

    Hab ich das richtig aufgenommen?
    mfG Aventinus

  3. #3
    TimeOUT ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2012
    Beiträge
    125
    Danke
    28
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Genau.

    Ich brauche dann die Adresse des Arrays im DB1, welches zu dem überprüften von DB2 passt, damit ich es löschen kan (bzw. mit "0" auffülle)

    Also es wird so sein, dass das Array aus DB2 exakt die gleichen Elemente besitzt, wie ein Array aus DB1

  4. #4
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Das riecht nach índirekter Adressierung, zwei geschachtelten Schleifen und einem Vergleicher....

    Kannst du mit den Begriffen was anfangen?
    mfG Aventinus

  5. #5
    Registriert seit
    29.04.2008
    Beiträge
    159
    Danke
    171
    Erhielt 28 Danke für 18 Beiträge

    Standard

    Bedeutet das, dass du jedes Element im DB1 mit jedem Element im DB2 vergleichen willst und wenn es eine Übereinstimmung gab löschen?

    Aber dann brauchst du doch keine Adressen

    L DB1.Array[0]
    L DB2.Array[0]
    ==D
    SPBN XXXX
    L L#0
    T DB1.Array[0]
    XXXX: Nop 0

    Und das jetzt für alle Elemente, was man in SCL eleganter lösen kann.

    Oder verstehe ich jetzt, die Aufgabe falsch?

  6. #6
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von FvE Beitrag anzeigen
    Und das jetzt für alle Elemente, was man in SCL eleganter lösen kann.

    Oder verstehe ich jetzt, die Aufgabe falsch?
    Jein, der TE will es aber in AWL.


    Zitat Zitat von Aventinus Beitrag anzeigen
    Das riecht nach índirekter Adressierung, zwei geschachtelten Schleifen und einem Vergleicher....

    Kannst du mit den Begriffen was anfangen?
    Das vergleichen geht auch in nur einer Schleife, du kannst beide DB´s offen haben.

    Ansonsten hast du recht mit deinem Lösungsansatz.
    kind regards
    SoftMachine

  7. #7
    TimeOUT ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2012
    Beiträge
    125
    Danke
    28
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    also mit einem Array geht auch die Funktion, die ich von der Siemens Website habe.
    Das mit dem Vergleichen der Array-Elemente geht nicht so einfach, weil sich die Daten am Anfang oft gleichen nur die letzten Byte sich erst unterscheiden. Dann würde er mir Datensätze "abnullen" die er gar nicht soll.

    Aber besteht auch die Möglichkeit in einem DB, der aus mehrmals der selben Struktur aus einem UDT aufgebaut ist den Eintrag herauszufinden, der dem Eintrag aus einem Vergleichs-DB entspricht?
    Ich versuche das mal zu verdeutlichen:

    DB1:
    Telegram1.Data1 WORD
    Telegram1.Data2 WORD
    Telegram1.Data3 DWORD
    Telegram1.Data4 DWORD

    *im vergleichs DB2*

    DB2:
    Vergleich1 WORD
    Vergleich2 WORD
    Vergleich3 DWORD
    Vergleich4 DWORD

    Die Werte im DB2 werden in einem Fall ganz sicher mit einem Datensatz aus DB1 entsprechen. Allerdings gibt es im DB1 auch noch Telegram2/3/4 usw.
    Deshalb sollte mir der Vergleich mitteilen, dass eine Übereinstimmung gefunden wurde und ab welcher Adresse im DB1 die Übereinstimmung erfolgt.


    Viele Grüße

  8. #8
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Zitat Zitat von SoftMachine Beitrag anzeigen
    Das vergleichen geht auch in nur einer Schleife, du kannst beide DB´s offen haben.

    Ansonsten hast du recht mit deinem Lösungsansatz.
    Das schon, aber in der einen Schleife arbeite ich die unterschiedlichen Arrays durch und in der zweiten vergleiche ich dann jeweils die Doppelwörter eines Arrays mit der Vorgabe.
    mfG Aventinus

  9. #9
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Zitat Zitat von TimeOUT Beitrag anzeigen
    Aber besteht auch die Möglichkeit in einem DB, der aus mehrmals der selben Struktur aus einem UDT aufgebaut ist den Eintrag herauszufinden, der dem Eintrag aus einem Vergleichs-DB entspricht?
    Zitat Zitat von Aventinus Beitrag anzeigen
    Das riecht nach índirekter Adressierung, zwei geschachtelten Schleifen und einem Vergleicher....

    Kannst du mit den Begriffen was anfangen?
    Wie bereits gefragt.
    mfG Aventinus

  10. #10
    TimeOUT ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2012
    Beiträge
    125
    Danke
    28
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also mit der Schleifenprogrammierung kam ich bis jetzt in AWL noch nicht in Berührung :/

Ähnliche Themen

  1. Gernzwert bestimen SCL / Array durchsuchen
    Von zloyduh im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 29.08.2012, 18:03
  2. Verzeichnis nach Dateien durchsuchen.
    Von Nobbie im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 11.04.2012, 14:30
  3. ARRAY mit SCL durchsuchen oder evtl anders
    Von spsguru im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 03.05.2011, 13:00
  4. Array in Script durchsuchen
    Von Züttu im Forum HMI
    Antworten: 2
    Letzter Beitrag: 21.07.2010, 16:40
  5. DB's nach Strings durchsuchen
    Von Flying Maulwurf im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 10.05.2010, 14:42

Lesezeichen

Berechtigungen

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