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

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

Thema: 3 Char miteinander vergleichen

  1. #11
    MK_Auto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.10.2006
    Beiträge
    105
    Danke
    27
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Michael
    ja das mit Pointer und schleife dachte ich auch schon
    nur muss ich dann hochaddieren oder ??

  2. #12
    Registriert seit
    29.03.2004
    Beiträge
    5.742
    Danke
    143
    Erhielt 1.688 Danke für 1.226 Beiträge

    Standard

    Schreib dir doch einen schönen FC dazu, quasi einen MEMCMP (Memory compare).
    Mit zwei Parametern vom Typ ANY und einem boolean Ausgang EQ (Equal). Die Pointer im FC zerlegen und dann mit einer Schleife abarbeiten. Die Schleife wird dann verlassen wenn die ersten Bytes unterschiedlich sind.
    Universal einsetzbar...

  3. #13
    MK_Auto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.10.2006
    Beiträge
    105
    Danke
    27
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Thomas suchte was schnelles einfaches wenn ich groß zerlege usw kann ich das auch noch die anderen 16 anhängen wie im Beispiel von mir

  4. #14
    Registriert seit
    29.03.2004
    Beiträge
    5.742
    Danke
    143
    Erhielt 1.688 Danke für 1.226 Beiträge

    Standard

    Dann mach doch eine Schleife Die Suchfunktion gibt dazu doch einiges her.

    Aber wenn das der einzige Vergleich im Programm ist: was spricht denn dagegen es so umzusetzen wie du es jetzt stehen hast? Wenn du die Variablen im DB passend symbolisch hast sieht das doch auch viel besser aus. Wenn diese Vergleiche öfters vorkommen: Auslagern in eine Funktion.

    Eine Schleife ist bei 3 Bytes auch nicht unbedingt schneller, spart höchstens etwas Programmspeicher.

    Die Variante mit dem Ausmaskieren die ich anfangs erwähnte sähe folgendermaßen aus. Auch wenn das wirklich nicht schön aussieht:
    Code:
          L     DB1.DBD    0
          SRD   8
          T     #dw_cmp_val
    
          L     DB2.DBD    0
          SRD   8
          L     #dw_cmp_val
          <>D   
          SPB   neq
    
          L     DB2.DBD    3
          SRD   8
          L     #dw_cmp_val
          <>D   
          SPB   neq
    
          L     DB2.DBD    6
          SRD   8
          L     #dw_cmp_val
          <>D   
          SPB   neq
    
          L     DB2.DBD    9
          SRD   8
          L     #dw_cmp_val
          <>D   
          SPB   neq
    
          SET   
          =     M     88.0
          SPA   eq
    
    neq:  CLR   
          =     M     88.0
    eq:   NOP   0

  5. #15
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi,

    Code:
          CALL  "BLKMOV"
           SRCBLK :="DB_Daten".DB_VAR       //Eingangsbereich mit 20 Byte
           RET_VAL:=MW0
           DSTBLK :=P#DB2.DBX2.0 BYTE 20    //"DB_Strings".Str mit Versatz um 2 Byte
    
          L     20                          //Längen
          T     DB2.DBB    0                //in MAX Len Byte des Strings eintragen
          T     DB2.DBB    1                //tatsächliche Länge des Strings eintragen
    
          CALL  "FIND"
           IN1    :="DB_Strings".Str        //zu durchsuchender String 
           IN2    :="DB_Strings".Find       //String mit z.B. '123'
           RET_VAL:=MW0
    
          L     MW     0                    //Zeichen '123'
          L     0                           //gefunden?
          <>I   
          =     M      2.0                  //Ja = True
    aber da leidet der Zyklus mehr drunter.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  6. #16
    MK_Auto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.10.2006
    Beiträge
    105
    Danke
    27
    Erhielt 0 Danke für 0 Beiträge

    Standard

    für eure Anregungen
    werde mal in erfahrung bringen ob das 4te zeichen immer gleich ist dann könnte ich das doppelwort inner schleife vergleichen
    Zitieren Zitieren Danke  

  7. #17
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Hallo,
    ist ja interessant hier zu lesen.

    @TE: was hast du gegen den Vorschlag von Dalbi - gut ... der hat den Nachteil, das er aus wenig Code besteht und einfach umzusetzen und auch einfach zu durchschauen ist ... dennoch ich halte ihn im genannten Zusammenhang für am Sinnvollsten ...

    Gruß
    Larry

  8. #18
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von MK_Auto Beitrag anzeigen
    für eure Anregungen
    werde mal in erfahrung bringen ob das 4te zeichen immer gleich ist dann könnte ich das doppelwort inner schleife vergleichen
    Das 4. Zeichen ist doch total egal. Lade die ersten drei Zeichen und in das 4. Byte den Wert 0 und schon hast Du was zum vergleichen! (Sowas hatte ich schon mal hier vorher beschrieben)
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

Ähnliche Themen

  1. 2 Datenbausteine miteinander vergleichen
    Von SPS-Fuchs im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 10.12.2015, 08:44
  2. UDTs miteinander vergleichen
    Von Freakazoid im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 25.03.2011, 10:08
  3. Zwei Not Aus kreise miteinander verbinden.
    Von spskarl im Forum Schaltschrankbau
    Antworten: 11
    Letzter Beitrag: 30.06.2007, 23:06
  4. Kann ich Hex und INt miteinander verrechnen?
    Von Tigerkroete im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 25.10.2006, 15:34
  5. S7-200+TD200+PC miteinander vernetzen
    Von Unreal im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 20.06.2005, 19:43

Lesezeichen

Berechtigungen

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