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

Ergebnis 1 bis 2 von 2

Thema: Zwei beliebig große Speicherbereiche Vergleichen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi ich würde gerne zwei beliebig große Speicherbereiche(in meines Fall zwei Strukturen in einem DB) miteinander vergleichen.
    Ich habe mit dem nachfolgenden Code gute Ergebnisse erzieht. Jedoch bin ich auf die Größe eines WStrings limitiert und ich finde es ist nicht besonders schön.

    Kennt Ihr eine bessere/passendere Lösung?(Optional noch mit optimiertem FC und DB)


    Mfg Philesteak


    Code:
    FUNCTION "Vergleich" : Void
    TITLE = Array_Vergleich
    { S7_Optimized_Access := 'FALSE' }
    AUTHOR : XX
    FAMILY : XX
    VERSION : 0.1
       VAR_INPUT 
          I_Array_1 : Any;
          I_Array_2 : Any;
       END_VAR
       VAR_OUTPUT 
          O_Gleich : Bool;
       END_VAR
       VAR_TEMP 
          T_String_1 : WString;
          T_String_2 : WString;
          T_Q : Int;
       END_VAR
    
    BEGIN
    NETWORK
    TITLE = Array in Strings wandeln
          CALL BLKMOV
          {blk_type := 'Variant'}
          (  SRCBLK                      := #I_Array_1 , 
             RET_VAL                     := #T_Q , 
             DSTBLK                      := #T_String_1
          );
          CALL BLKMOV
          {blk_type := 'Variant'}
          (  SRCBLK                      := #I_Array_2 , 
             RET_VAL                     := #T_Q , 
             DSTBLK                      := #T_String_2
          );
    NETWORK
    TITLE = Strings vergleichen
          CALL S_COMP
          {src_type := 'WString', relation := 'EQ'}
          (  IN1                         := #T_String_1 , 
             IN2                         := #T_String_2 , 
             OUT                         := #O_Gleich
          );
    END_FUNCTION
    Zitieren Zitieren Zwei beliebig große Speicherbereiche Vergleichen  

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Philesteak Beitrag anzeigen
    Jedoch bin ich auf die Größe eines WStrings limitiert und ich finde es ist nicht besonders schön.
    Wie groß brauchst Du es denn um Deine CPU zu crashen? 16kB sind noch nicht genug? Hat Deine CPU denn mehr als 32kB Lokaldaten-Stack pro Baustein?
    Hast Du Deinen tollen Baustein schon mal mit 2 maximal großen WString ausprobiert?

    Dein Baustein scheint ja der Ressourcenfresser schlechthin. Vergleiche von mehr als 16kB inklusive umkopieren von 32kB sollte man besser auf mehrere Zyklen verteilen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Step 7 Zwei Strukturen [Bool] vergleichen
    Von Hausen im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 22.01.2014, 21:53
  2. zwei Zahlenwerte Vergleichen (Komparator?)
    Von berc im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 24.06.2011, 23:01
  3. Zwei Wörter vergleichen?
    Von Küffel im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 31.12.2010, 16:47
  4. zwei DB´s direkt vergleichen
    Von Grimsey im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 07.12.2007, 15:21
  5. zwei DB-S vergleichen
    Von puehri im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 06.02.2006, 13:00

Lesezeichen

Berechtigungen

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