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

Ergebnis 1 bis 9 von 9

Thema: Baustein Find und DB variabel

  1. #1
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Gemeinde

    Ich versuche mit dem IEC Baustein "Find" zwei strings miteinander zu vergleichen. Ich habe einen "Quell-DB" und 15 "Ziel-DB´s" aus denen ich ein String vergleichen muß. Meine Frage ist nun folgende, der BAustein möchte nur String als In haben ich würde ihm gerne einen Pointer zuweisen, ist das irgendwie möglich? Schön wäre auch noch wenn ich die länge bestimmen könnte und die Startadresse.

    Gruß Marco
    Zitieren Zitieren Baustein Find und DB variabel  

  2. #2
    Registriert seit
    08.12.2006
    Ort
    Kleinwallstadt
    Beiträge
    90
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Also ich hatte so ein ähnliches Problem mal gehabt und hab mir dann "einfach" selbst einen "Byte-Für-Byte"-Vergleicher geschrieben.

    Der hatte folgnende Parameter:
    Lenght (Länge die verglichen werden soll)
    SRC_DB (DB wo die Quelle drin steht)
    SRC_Byte (Startbyte im DB)
    DEST_DB (DB wo die zu vergleichende Informationen drin steht)
    DEST_Byte (Startbyte im DB)

    Is ne einfache Schleife innerhalb des FC's den du dann schreiben müsstest

    LG
    Hawkster
    Das Softwarebusiness ist Binär, du bist eine 1 oder eine 0 - Lebendig oder Tod...

  3. #3
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    hi hawkster

    ist auf jedenfall mal ne Idee. Werd es mal versuchen damit

    Tante edit: hab gerade in meinem Fundus genau das gefunden was du beschreibst. Hilft mir aber bei genauerer Betrachtung leider nicht weiter.

    Gruß Marco
    Geändert von skyvan (24.05.2010 um 14:01 Uhr)

  4. #4
    Registriert seit
    08.12.2006
    Ort
    Kleinwallstadt
    Beiträge
    90
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hoffe du kannst dir vorstellen was ich meine...

    Grad ne schleife die X mal (also die Lenght) durchläuft und dann vergleichst du einfach indirekt jedes byte vom DB, haste ne Abweichung, springste raus und gibt halt die entsprechende Rückmeldung.

    Schaffste die Schleife Erfolgreich zu durchlaufen gibste halt ne positive Rückmeldung

    LG
    Hawkster
    Das Softwarebusiness ist Binär, du bist eine 1 oder eine 0 - Lebendig oder Tod...

  5. #5
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi Hi
    ja ich weiß wie du es meinst hab das ganze ja schon einmal gemacht aber eben nicht für diese Prob. Hier sieht die Sache (da ich ja mehrere Index DB´s habe) doch schon anders aus. Bin noch am überlegen ob ich es in SCL schreiben werde.

    Gruß Marco

  6. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Ich würde das Ganze auch über einen eigenen Baustein lösen. In den Index-Bausteinen haben ja hoffentlich alle Einträge die gleiche Länge, zumindest von der Anlage der Daten her. Mit dem Baustein würde ich nun von Eintragbeginn zu Eintragbeginn "springen" und erstmal nur den ersten Buchstaben vergleichen. Wenn der identisch ist, dann einen Byteweisen Vergleich durchführen, das spart sicher auch einiges an Zeit. Der Inputparameter des Bausteins kann dann von der Art sein, wie man es halt bevorzugt. SCL wäre in einem solchen Fall sicher angebracht, mein Vorschlag ließe sich aber auch in AWL recht fix umsetzen.
    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
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    hi Ralle

    es ist schön zu sehen das ich nicht der einzige Depp bin der arbeitet

    sprechen wir hier von einer Schleife in einer Schleife?

    hier einmal wie es jetzt gelöst ist

    Code:
       U     #Trigger_Start
          SPBN  End
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_0_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s1
          L     0
          T     #Daten_DB
          SPA   End
    s1:   NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_1_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s2
          L     1
          T     #Daten_DB
          SPA   End
    s2:   NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_2_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s3
          L     2
          T     #Daten_DB
          SPA   End
    s3:   NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_3_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s4
          L     3
          T     #Daten_DB
          SPA   End
    s4:   NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_4_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s5
          L     4
          T     #Daten_DB
          SPA   End
    s5:   NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_5_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s6
          L     5
          T     #Daten_DB
          SPA   End
    s6:   NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_6_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s7
          L     6
          T     #Daten_DB
          SPA   End
    s7:   NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_7_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s8
          L     7
          T     #Daten_DB
          SPA   End
    s8:   NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_8_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s9
          L     8
          T     #Daten_DB
          SPA   End
    s9:   NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_9_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s10
          L     9
          T     #Daten_DB
          SPA   End
    s10:  NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_10_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s11
          L     10
          T     #Daten_DB
          SPA   End
    s11:  NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_11_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s12
          L     11
          T     #Daten_DB
          SPA   End
    s12:  NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_12_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s13
          L     12
          T     #Daten_DB
          SPA   End
    s13:  NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_13_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s14
          L     13
          T     #Daten_DB
          SPA   End
    s14:  NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_14_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  s15
          L     14
          T     #Daten_DB
          SPA   End
    s15:  NOP   0
          CALL  "FIND"
           IN1    :="DB303 IFM03 Stat.3".EmpfangenDaten
           IN2    :="Index_DB_Teile".Fach_15_2D_Code
           RET_VAL:=#Dummy
          L     #Dummy
          L     1
          ==I   
          SPBN  End
          L     15
          T     #Daten_DB
          SPA   End
    End:  NOP   0
    ich mag so endlos Bausteine eben nicht

    Gruß MArco

  8. #8
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    673
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    hi,
    das sieht aber nicht nach 15 verschiedenen DBs aus...
    "arbeite klug, nicht hart" - deutsches Sprichwort

  9. Folgender Benutzer sagt Danke zu SPSKILLER für den nützlichen Beitrag:

    skyvan (24.05.2010)

  10. #9
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hi SPSkiller

    ja in dem Beispiel ist es so das es der gleiche DB für den Index ist, in meinem neuen Prog will ich es eleganter mit getrennten DB´s gestalten.

    daher mein Wunsch nach variabler Länge, Ziel und Quelle

    Gruß Marco

Ähnliche Themen

  1. Please help me to find a service using which I can make free websites
    Von kipromanami im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 12.10.2011, 06:14
  2. Bit-Index variabel?
    Von Metabastler im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 02.10.2011, 22:53
  3. Problem mit Stringsuche FC11 FIND
    Von sps_ike im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 29.06.2010, 13:49
  4. Zieladress von SFC 15 variabel machen
    Von Ollypse im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 06.07.2008, 11:34
  5. DB Variabel aufrufen
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 10.02.2006, 15:04

Lesezeichen

Berechtigungen

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