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

Ergebnis 1 bis 7 von 7

Thema: S7 FB für Stringoperation gesucht

  1. #1
    Registriert seit
    16.03.2004
    Beiträge
    173
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hey Leute

    Ich bin auf der Suche nach einem FB der folgendes kann:

    Mein String sieht folgendermassen aus: Q=1234 S=45678
    Ich möchte nun einem FB diesen String zuführen und noch 2 Parameter. Das erste Trennzeichen (Q) und das zweite Trennzeichen ( ).
    Der FB sollte mir dann die Werte 1234 und 45678 als DINT liefern.

    Hat wer sowas in der Art schon mal benötigt??

    Besten Dank
    Thomas
    greetings from upper austria

    ... merlin ...
    Zitieren Zitieren S7 FB für Stringoperation gesucht  

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

    Standard

    Nimm am besten die IEC-Funktionen aus der Standard-Library (FC11-FIND_IEC, FC38-STRING_I etc.). Wenn du im Simatic-Editor das Menü Ansicht/Übersichten anwählst, öffnet sich ein Fenster mit den Bibliotheken. darin kannst du die "IEC Funktion Blocks" finden, einen FC markieren und Hilfe aufrufen, die Erklärungen sind ok.

  3. #3
    Registriert seit
    16.03.2004
    Beiträge
    173
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Mit der Funktion hatte ich schon das Vergnügen.
    Ich habe aber nicht ein Suchkriterium pro String sondern bis zu 3.

    In AWL ist das verdammt mühselig zu programmieren. Geht das in SCL nicht leichter?
    Ich denke da an VB mit instring usw...
    greetings from upper austria

    ... merlin ...

  4. #4
    Registriert seit
    16.03.2004
    Beiträge
    173
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Bin schon etwas weiter...

    Code:
          CALL  "BLKMOV"
           SRCBLK :=P#DB95.DBX0.0 BYTE 32
           RET_VAL:=#SFC_20_RetVal
           DSTBLK :=P#DB304.DBX158.0 BYTE 32
    Ich müsste jetzt das DBX0.0 und die Länge Byte 32 variabel gestalten.
    Geht das???

    ZB
    Einmal dbx2.0 byte 3, dbx5.0 byte 6, usw...
    greetings from upper austria

    ... merlin ...

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

    Standard

    Das geht in SCL freilich besser, aber letztendlich sind es die gleichen Funtionen, die genutzt werden, Z.Bsp:

    Code:
    DELETE (IN:= 'Temperatur ok', L:= 6, P:= 5)
    In SCL ist halt die Schreibweise eher dem "normalen" Programmierstil vergleichbar. Die Funkionen, die angeboten werden reichen aber aus, um dein Problem zu lösen, suchen nach einem String, auschneiden (oder Kopieren) des Teilstrings, löschen im Gesamtstring und dann mit dem nächsten Teilstring von vorne.

    Wenn die Länge konstant ist kannst du mit BlkMove natürlich beliebig Teile umkopieren.

    Die angehängte Quelle erleichtert die Verwendung von Blk_Move ein wenig und kann mit Variablen im Input aufgerufen werden.
    Angehängte Dateien Angehängte Dateien

  6. #6
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    dasmit der variablen adresse musst über any pointer machen.

    aber ich verstehe deine aufgabenstellung noch nicht ganz!

    du hast q und ein leerzeichen als trenzeichen aber was ist dann mit dem S??
    Beschreibs mal genauer, vieleicht kann ich was proggen!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren huhu...  

  7. #7
    Registriert seit
    16.03.2004
    Beiträge
    173
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich denke ich hab einen passenden FB erstellt.
    Muss ihn morgen noch gründlich Testen.

    Nochmals zu meinem Problem:
    Ich bekomme per RS232 einen der beiden Strings:
    "S=12345 Q=4567 "
    "Q1=34556 Q2=34545 Q3=324534 "

    Ich habe mir jetzt einen Fb erstellt, der den String nach = durchsucht. Dort startet meine Auswertung und endet mit einem Leerzeichen. Dann wandle ich die Teilbereiche der Strings in DINT um.

    Mal schaun, ob das was kann was ich mir da grad überlegt hab.
    greetings from upper austria

    ... merlin ...

Ähnliche Themen

  1. AKF 13 gesucht
    Von dben im Forum PC- und Netzwerktechnik
    Antworten: 1
    Letzter Beitrag: 16.07.2012, 08:03
  2. Antworten: 3
    Letzter Beitrag: 17.09.2011, 16:11
  3. Antworten: 22
    Letzter Beitrag: 04.09.2011, 15:34
  4. s7 200 gesucht
    Von Praktikus im Forum Suche - Biete
    Antworten: 2
    Letzter Beitrag: 17.12.2007, 10:05
  5. FB 42 & FB 51 gesucht.
    Von Köbes11 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 20.01.2005, 07:53

Lesezeichen

Berechtigungen

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