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

Ergebnis 1 bis 6 von 6

Thema: String vergleichen

  1. #1
    Registriert seit
    29.07.2006
    Beiträge
    78
    Danke
    17
    Erhielt 5 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,habe da ein Problem mit den vergleichen von String's.Und zwar habe ich einen DB angelegt in den DB 2 String angelegt mit einer Länger von 30 dieser DB bekommt bzw. die beiden String's bekommen die Daten über OPC von unserer Visu.Jetzt habe ich den FC10 EQ_Strng aufgerufen und die Eingänge mit den String vom DB belegt so weit so gut- wenn ich jetzt aber den Stringwert in der Visu ändere bleibt das Vergleich Ergebnis vom FC 10 auf eins was mache ich Falsch?
    Zitieren Zitieren String vergleichen  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Vielleicht hilft dir das weiter:

    STRING

    Wenn Sie diesem Formalparameter einen Aktualparameter zuweisen,den Sie im Lokaldatenbereich des aufrufenden Bausteins definiert haben, so beachten Sie bitte:
    Vor dem FC-Aufruf müssen Sie in der temporären Variablen vom Datentyp STRING das Verwaltungsbyte "maximale Länge des Strings" mit der definierten Stringlänge beschreiben.
    Das kann auch passieren, wenn eine Visu die Verwaltungsbytes nicht beschreibt.
    Byte 0 und Byte 1 enthalten in Step7 die max. Länge und die aktuelle Länge des Strings. Überprüfe mal, was bei dir in diesen Bytes steht. Falls die Visu das nicht richtig liefert, kann man das per "Hand" eintragen.
    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

  3. #3
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 182 Danke für 167 Beiträge

    Standard

    Hallo!

    Habe das gerade auch ausprobiert.
    Und wie Ralle schon sagt liegt das sicher am Byte n+1 (aktuelle Länge des Strings).
    Wenn da 0 drinnen steht dann gibt dein FC 10 bei Ret_Val immer 1 aus.

    godi

  4. #4
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Zitat : STRING

    Wenn Sie diesem Formalparameter einen Aktualparameter zuweisen,den Sie im Lokaldatenbereich des aufrufenden Bausteins definiert haben, so beachten Sie bitte:
    Vor dem FC-Aufruf müssen Sie in der temporären Variablen vom Datentyp STRING das Verwaltungsbyte "maximale Länge des Strings" mit der definierten Stringlänge beschreiben.
    Häh??

    Also ich hab gerade das gleiche Problem, wie es enter seinerzeit beschrieben hat. (FC10 EQUAL STRING gibt trotz unterschiedlicher Strings als Vergleichsergebniss 1 aus).

    Ich habe ein einem DB zwei Strings mit einer Länge von je 12 Zeichen (Gesamtlänge 14, schon klar) angelegt die ich gegeneinander vergleichen will.
    In diese Strings verschiebe ich mit SFC20 BLKMOV jeweils einen Zeitstempel mit 12 Byte Länge.

    Beim ersten Durchlauf wenn beide Strings unterschiedlich sind dann funktioniert der Stringvergleich und das Ergebniss ist Null.

    Ändere ich dann allerdings einen der beiden Strings und führe den Vergleich erneut durch dann ist das Ergebniss 1 und die FC10 EQUAL STRING gibt aus das beide Strings gleich sind, was aber nicht so ist?

    Meine Frage ist also : WIESO ??

    Das obige Zitat versteh ich leider nicht? Kann mir da vielleicht jemand weiterhelfen?

    Gruß smartie

  5. #5
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Das Thema hatten wir doch schon einmal:

    Code:
    // FC200 : Datenmatrix
     
    // DATENMATRIX (BYTE) => DATENMATRIX (STRING)
     
      L     14                          // Maximale Länge DATENMATRIX (STRING)
      T     DB200.DBB    0
     
      L     14                          // Aktuelle Länge DATENMATRIX (STRING)
      T     DB200.DBB    1
     
          CALL  "BLKMOV"
           SRCBLK :=P#E 50.0 BYTE 14        // DATENMATRIX (BYTE)
           RET_VAL:=#BLKMOV_RET_VAR
           DSTBLK :=P#DB200.DBX2.0 BYTE 14  // DATENMATRIX (STRING)
     
     
    // DATENMATRIX (STRING) = ABDECKUNG_01 (STRING) 
     
          CALL  "EQ_STRNG"
           S1     :="DB_DATENMATRIX".DATENMATRIX
           S2     :="DB_DATENMATRIX".ABDECKUNG_01
           RET_VAL:="ABDECKUNG_01"
     
     
    // DATENMATRIX (STRING) = ABDECKUNG_02 (STRING) 
     
          CALL  "EQ_STRNG"
           S1     :="DB_DATENMATRIX".DATENMATRIX
           S2     :="DB_DATENMATRIX".ABDECKUNG_02
           RET_VAL:="ABDECKUNG_02"
    http://www.sps-forum.de/showthread.php?t=15131

    http://www.sps-forum.de/showthread.php?t=14808

    http://www.sps-forum.de/showpost.php...69&postcount=6

    http://www.sps-forum.de/showpost.php...71&postcount=7

    Gruß Kai

  6. #6
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Kai,

    ich kann ich in der Tat noch gut dran erinnern das wir schon einmal über das Vergleichen zweier Strings gesprochen haben.

    Damals war mein Problem allerdings das mein Vergleich nicht TRUE wurde obwohl beide Strings augenscheinlich gleich waren.

    Das Problem damals bestand darin das ich, was ich dank deiner Hilfe dann auch erkannte, nicht beachtet habe das ein String mit 14 Zeichen eine Länge von 16 Zeichen hat.

    Mein jetziges Problem war aber genau anders herum. Der Vergleich lieferte TRUE obwohl die Datensätze nicht gleich waren.

    Ich habe jetzt einfach folgendes gemacht:

    L 14 // Maximale Länge DATENMATRIX (STRING)
    T DB200.DBB 0

    L 14 // Aktuelle Länge DATENMATRIX (STRING)
    T DB200.DBB 1
    Ich habe die tatsächiche Länge des Strings reingeschrieben.
    Ich bin eigentlich davon ausgegangen das dieses Byte automatisch beschrieben wird und ich das nicht selbst machen muss.

    Aber vielen Dank nochmal

    smartie

Ähnliche Themen

  1. String vergleichen
    Von Bensen83 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 14.07.2015, 10:52
  2. Antworten: 10
    Letzter Beitrag: 11.06.2011, 23:19
  3. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  4. Ein String kopieren in einen anderen String
    Von CanYouHelpMe im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.09.2008, 17:21
  5. WinCC Flex 2005 String vergleichen
    Von PLCTEC im Forum HMI
    Antworten: 7
    Letzter Beitrag: 13.05.2007, 19:33

Lesezeichen

Berechtigungen

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