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

Ergebnis 1 bis 3 von 3

Thema: Bereich aus Zeichenkette filtern

  1. #1
    Registriert seit
    05.07.2012
    Beiträge
    5
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, habe ein kleines Poblem.

    Ich habe als Eingabewert eine 25-Stellige Zeichenkette [STRINGVariable]

    Diese muss ich in drei Abschnitte aufteilen

    Einmal die Ersten 14 Zeichen, dann Zeichen 15-25 und nochmal 20-25.

    Klappt auch soweit mit dem unten stehenden Code.

    Code:
     
          LAR1  P##RETURN
          LAR2  P##S4Label
          L     #max_Length                 //STRING Länge (INT) laden
          T     B [AR1,P#0.0]               // in 1. String Byte transferieren
          L     #Length                     //Tatsächliche Länge (INT) laden; Gleichzeitig Wert für LOOP
          T     B [AR1,P#1.0]
    loo1: L     B [AR2,P#2.0]
          T     B [AR1,P#2.0]
          +AR1  P#1.0                       // Adressregister um 1 erhöhen
          +AR2  P#1.0
          TAK                               //Tausche Akku 1 und 2 (Schlaufenzähler in AKKU 1 holen)
          LOOP  loo1                        //Springe zur Marke loo1, Akku1 um 1 verringern
    Für die anderen 2 Filter mache ich es ähnlich, nur das ich den Offset und die Länge entsprechend anpasse.


    Nun zu meinem Problem. Ich möchte das ganze in einem FB erstellen. Dieser soll allgemein gehalten werden und für alle Filter anwendbar sein.

    Momentan lade ich mir das erste Zeichen meines Labels

    loo1: L B [AR2,P#2.0]

    und transferiere es zum Zielzeichen

    T B [AR1,P#2.0]

    Wenn ich jetzt aber das ganze Variable machen möchte. z.B mal ab dem 14ten Zeichen des Label anfangen möchte, muss

    der Pointer " loo1: L B [AR2,P#2.0]" veränderbar sein. Hierzu wollte ich eine Eingangsvariable "OFFSET" verwenden. Und genau da komm ich
    nicht weiter.

    Wie schaffe ich es bei Eingabe vom 14 den Befehl so zu verändern, dass er automatisch so auschaut

    L B [AR2,P#16.0]
    Zitieren Zitieren Bereich aus Zeichenkette filtern  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Angenommen, du willst Byte 2 also P#2.0 in das AR 1 laden.

    L 2
    SLD 3
    T #MyPointer //eine Variable vom Typ DWORD (eine statische ist nie verkehrt)

    bevor du nun Daten über AR1 indirekt adressierst, lädst du diesen Pointer in das AR1

    L #MyPointer
    LAR1

    dann wie gewohnt auf die Daten zugreifen

    L B [AR1,P#0.0] --> in Byte 2 Byte schreiben

    Den Offset kannst du nutzen, mußt du aber nicht, du kannst auch einfach deinen Pointer neu mit Daten füllen:

    L 16
    SLD 3
    T #MyPointer

    Achtung, was ich hier schreibe, gilt nicht für Multintanz-FB, da gelten noch ein paar andere Regeln beim Zugriff über AR.
    Lies am Besten auch mal in unserer FAQ zum Thema Pointer und Any, sowie in der Forensuche zum Thema Multiinstanz!
    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
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    wenn du doch schon einen String hast - warum nicht du dann nicht sie Siemens-String-FC's LEFT, MID und RIGHT dafür her ...
    Dann bräuchtest du dich auch nicht um das Beachten von Spielregeln beim Arbeiten mit AR1 und AR2 kümmern ...

    Gruß
    Larry

Ähnliche Themen

  1. Zeichenkette
    Von Waschtel im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 08.12.2012, 19:44
  2. messfehler aus messreihe filtern
    Von Senator42 im Forum Programmierstrategien
    Antworten: 25
    Letzter Beitrag: 10.08.2012, 18:35
  3. Referenzdaten Filtern
    Von Thomas R im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 28.01.2010, 09:29
  4. ANY Paramater aus staischem Bereich übergeben
    Von steinche im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 07.12.2009, 14:51
  5. Systemmeldungen filtern
    Von Günni1977 im Forum HMI
    Antworten: 11
    Letzter Beitrag: 12.08.2008, 13:32

Lesezeichen

Berechtigungen

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