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

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

Thema: DB nach Array durchsuchen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das mach die Sache für dich jetzt nicht unbedingt leichter.

    Mal schauen ob wir dem entgehen können. Wieviele Telegramme musst du denn vergleichen?
    Ich denke grad an eine FC die du pro Telegramm einmal aufrufst und jeweils 2 UDT´s übergibst. Als Ergebnis erhältst du dann ob die beide UDT´s identisch sind.

    Das macht aber nur Sinn wenn du nicht 100 Telegramme hast.
    mfG Aventinus

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

    Also im moment sind es 10 Telegramme dich in in dem DB erstellt habe. Aber die Zahl sollte eigentlich beliebig erweiterbar sein. Zumindest mal bis 50
    Zum besseren verständnis mal ein Bild.
    Links ist der DB in dem die Struktur ist, nach der ich den rechten DB durchsuchen möchte.
    Es ist deutlich zu sehen, dass die Struktur im rechten DB enthalten ist ( Adresse 192.0 fängt die Struktur an)
    Als Ergebnis brauche ich nun ein Ausgang der gesetzt wird bei Übereinstimmung und einen der mir hier 192.0 anzeigen würde.

    Wie schon erwähnt benutzte ich diese Funktion von Siemens, die meines erachtens genau das macht, was ich benötige?!

    http://support.automation.siemens.co...OCDATUMBEITRAG

    /edit: irgendwie lässt er mich keine Bilder vom PC hochladen...

    Geändert von TimeOUT (29.07.2013 um 12:10 Uhr)

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

    Standard

    Mit der Fuktion vergleichts du Elemente aus mehreren DB´s mit einer Referenz und nicht mehrere Elemente aus einem DB.

    Ich würde in einer Funktion die Referenz temporär ablegen.

    Dann würde ich mit dem LOOP Befehl eine Schleife programmieren, die die Anfangsadresse des jeweiligen Arrays berechnet.
    In einer zweiten Schleife, die innerhalb der ersten läuft, würde ich die Werte indirekt adressiert mit dem temporären UDT vergleichen.

    Das ganze wäre in SCL jedoch wesentlich einfacher zu realisieren.
    mfG Aventinus

  4. #14
    Registriert seit
    22.07.2007
    Beiträge
    86
    Danke
    16
    Erhielt 25 Danke für 19 Beiträge

    Standard

    Code:
    auf db [#temp_db_suche]
    Auf di [#temp_db_durchsuchen]
    
    L 0
    Lar1
    Lar2
    
    
    L dilg
    L dblg
    T #temp_laenge
    /i
    L 4
    /i
    next: t #temp_loop
    
    // einen dword nach den anderen vergleichen
    L dbd [ar1, p#0.0]
    L did [ar2, p#0.0]
    <>d
    Spb ungl
    
    L dbd [ar1, p#4.0]
    L did [ar2, p#4.0]
    <>d
    Spb ungl
    
    ...
    
    
    
    // stimmt überein, mach wa auch immer
    ...
    ...
    
    
    // stimmt nicht überein, nächster Datensatz, oder Ende
    ungl: L #temp_laenge
    sld 3
    Tar2
    +d
    Lar1
    
    L #temp_loop
    Loop next
    
     
    // fertig
    ...
    Läßt sich noch um eine zweite Schleife erweitern, um die ganzen dwords zu vergleichen, egal wie viele...
    Akku alle, sry

    Alles ungetestet und ohne Gewähr
    Geändert von Semo (29.07.2013 um 20:21 Uhr) Grund: Ergänzung

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

    Danke für die Tipps.
    Ich werde mich mal dran setzen und es versuchen

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

    Standard

    Ich persönich sehe es nicht gern, wenn in einer FC ein Instanz-DB aufgeschlagen wird weil das nicht symbolisch geht.
    mfG Aventinus

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

    Standard

    .
    Der DI muss im obigen Beispiel ja nicht notwendigerweise
    ein Instanz-DB eines FB´s sein, sondern er wird einfach
    als zweiter DB aufgeschlagen.
    --> siehe Beitrag #6

    Gruss
    Geändert von SoftMachine (31.07.2013 um 00:35 Uhr) Grund: Grammatik
    kind regards
    SoftMachine

  8. #18
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Aventinus meint wohl nicht unbedingt "Instanz-DB" sondern das nicht in den Referenzdaten findbare Öffnen von DB per INT-DB-Nummer.
    Man sollte die DB-Nummer als "Block_DB" übergeben und dann so öffnen:
    Code:
          AUF   #IN_DB_2
          TDB   
          AUF   #IN_DB_1
    //ab hier ist #IN_DB_1 als DB und #IN_DB_2 als DI geöffnet
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. Folgende 2 Benutzer sagen Danke zu PN/DP für den nützlichen Beitrag:

    hucki (31.07.2013),SoftMachine (31.07.2013)

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    .
    Hallo !

    Mal sehen, was Aventinus antwortet !

    Grüsse
    kind regards
    SoftMachine

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