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

Ergebnis 1 bis 7 von 7

Thema: String in einen Datenbaustein finden

  1. #1
    Registriert seit
    10.05.2006
    Ort
    Thaleischweiler-Fröschen
    Beiträge
    18
    Danke
    73
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe folgendes Problem und suche eine Lösung:

    In einen Datenbaustein bestehend aus 40 Stringvariablen möchte ich einen bestimmten String herausfinden.

    CPU 317/2DP,
    Step 7, AWL

    Habe leider nur wenig Erfahrung mit Siemens, arbeite hauptsächlich mit Allen Bradley, Schneider/ELAU Steuerungen. Hat vielleicht jemand einen Lösungsansatz, wie ich das o.g. Problem am besten löse?

    Vielen Dank im Voraus.
    Wenn man Ruhe sucht, findet man sie niemals.(c)


    Zitieren Zitieren String in einen Datenbaustein finden  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.184
    Danke
    923
    Erhielt 3.290 Danke für 2.659 Beiträge

    Standard

    Mit der IEC Funktion EQ_STRNG (FC10) aus der Standard Library nacheinander die vorhandenen Strings mit dem Suchstring vergleichen.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Avatar von Ganz
    Ganz ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.05.2006
    Ort
    Thaleischweiler-Fröschen
    Beiträge
    18
    Danke
    73
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Harald,

    vielen Dank für deine Antwort!

    FC10 kenne ich und benutze bereits im aktuellen Projekt. Über die von dir vorgeschlagene Lösung habe ich auch nachgedacht, aber dieser Baustein braucht eine maximale Länge von String in Byte 0 und aktuelle Länge in Byte 1. Diese Informationen möchte ich den vorhandenen Strings nicht einfügen. Gibt es eventuell eine andere Lösung? Wäre sehr dankbar dafür.
    Wenn man Ruhe sucht, findet man sie niemals.(c)



  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.184
    Danke
    923
    Erhielt 3.290 Danke für 2.659 Beiträge

    Standard

    Ach, ich dachte, wenn Du String schreibst dann meinst Du auch String ...
    Vielleicht schreibst Du nochmal genauer was Du da wirklich hast. Vielleicht Array of Array of CHAR? Wie lang? Alle gleich lang? Immer die volle Größe genutzt/belegt oder muß ein Endezeichen beachtet werden? Am besten zeige uns ein Bild von dem DB wo man die Deklaration Deiner "Strings" sieht.

    Allgemein gesagt könntest Du in einer äußeren Schleife von 1..40 eine innere Schleife ausführen, welche die gerade indizierte Zeichenkette Zeichen-für-Zeichen mit dem Suchmuster vergleicht. Dafür bräuchtest Du indirekte Adressierung (registerindirekt mit AR1 und AR2, oder besser lesbar aber rechenintensiver mit speicherindirekter Adressierung).

    Sehr wahrscheinlich gibt es Datentyp-missachtende Abkürzungen, welche den Code viel schneller aber auch viel unlesbarer machen.

    Wäre auch SCL möglich?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Avatar von Ganz
    Ganz ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.05.2006
    Ort
    Thaleischweiler-Fröschen
    Beiträge
    18
    Danke
    73
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Harald,

    vielen Dank für deine Antwort!

    Screenshot von DB habe unten angefügt.

    Vom Ablauf her sieht es so aus:

    Scanner liefert die Daten, die werden in einem String[15] abgespeichert, diesen String muss man dann im DB suchen.

    SCL geht auch.
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg DB.JPG (136,3 KB, 69x aufgerufen)
    Wenn man Ruhe sucht, findet man sie niemals.(c)



  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.184
    Danke
    923
    Erhielt 3.290 Danke für 2.659 Beiträge

    Standard

    Du hast also wirklich Strings deklariert. Warum willst oder kannst Du die nicht als Strings benutzen und den FC10 EQ_STRNG nehmen?
    Falls es nur daran liegt, daß derjenige, der die Daten in die Strings schreibt, die String-Header-Informationen nicht aktualisiert: wenn der Scanner immer die selbe Anzahl Zeichen in die Strings schreibt, dann lege den Anfangswert der Strings auf diese Anzahl Leerzeichen fest und initialisiere den DB. Dann stehen die richtigen max-Stringlänge und Ist-Stringlänge in den String-Headern und FC10 EQ_STRNG kann benutzt werden. Erst zur Laufzeit die Header-Daten in die 40 Strings zu schreiben wäre allerdings auch nur ein Klacks.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Ganz (21.07.2015)

  8. #7
    Avatar von Ganz
    Ganz ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.05.2006
    Ort
    Thaleischweiler-Fröschen
    Beiträge
    18
    Danke
    73
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für den Tipp Harald
    werde alles über FC 10 laufen lassen.
    Wenn man Ruhe sucht, findet man sie niemals.(c)



Ähnliche Themen

  1. String vergleichen bzw. finden
    Von bastler im Forum CODESYS und IEC61131
    Antworten: 13
    Letzter Beitrag: 03.01.2015, 13:18
  2. Antworten: 5
    Letzter Beitrag: 10.12.2011, 13:58
  3. TwinCat - string in array finden.
    Von Gerri im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 15.02.2011, 10:35
  4. grössten Wert in Datenbaustein finden
    Von sven im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 14.09.2007, 09:40
  5. Antworten: 5
    Letzter Beitrag: 21.06.2007, 17:04

Lesezeichen

Berechtigungen

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