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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

Thema: Verarbeitung von String Variablen

  1. #21
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von CZach001 Beitrag anzeigen
    Will ich nun die Stringvariable mit der Zeichenkette "NoRead" vergleichen, hab ich nur die möglichkeit in einem Datenbaustein eine Variable Typ String[25], mit dem Anfangswert "NoRead" zu erstellen, um diese dann mit der Stringvariable in der das Leseergebniss steht zu vergleichen.
    Mit dieser lösung bin ich aber nicht ganz glücklich, da ich immer von diesem 1x beschriebenen wert abhängig bin.
    In SCL kann man Strings mit String-Konstanten vergleichen:
    Code:
    IF myString = 'NoRead' THEN
    ...
    In AWL geht das nicht.
    In AWL könntest Du vor dem Vergleich einen Vergleichsstring mit dem Inhalt 'NoRead' initialisieren:
    Code:
    // TEMP: temp_VergleichsString : STRING[25]
    
          LAR1  P##temp_VergleichsString    // Pointer auf Anfang der Vergleichs-Stringvariable
          L     DW#16#19064E6F              // 25, 6, 'No'
          T     D [AR1,P#0.0]               // die ersten 4 Bytes von temp_VergleichsString initialisieren
          L     'Read'
          T     D [AR1,P#4.0]               // das 5. bis 8. Byte von temp_VergleichsString initialisieren
    
          CALL  "EQ_STRNG"
           S1     :="DB72".MyString
           S2     :=#temp_VergleichsString  // 'NoRead'
           RET_VAL:=#result
    oder direkt den Abschnittsweisen Vergleich mit je maximal 4 Zeichen durchführen:
    Code:
    // Pointer auf Anfang der Stringvariable "DB72".MyString
          LAR1  P#DBX 0.0                   //Anfangsadresse von MyString im DB72
          AUF   "DB72"
    
    //oder
    //    LAR1  P##MyString   //wenn MyString in TEMP, STAT, IN, ... liegt
    
          U(
          L     D [AR1,P#0.0]               // Bytes 1 bis 4 der Stringvariable MyString
          L     DW#16#19064E6F              // 25, 6, 'No'
          ==D   
          )
          U(
          L     D [AR1,P#4.0]               // Bytes 5 bis 8 der Stringvariable MyString
          L     'Read'
          ==D   
          )
          =     #result
    Harald
    Geändert von PN/DP (04.08.2014 um 23:58 Uhr)
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  2. #22
    Registriert seit
    31.08.2009
    Beiträge
    63
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo, danke für die Antwort,
    hab das mal so versucht,
    scheinbar aber noch einen Fehler im Syntax,
    beim übersetzen kommt der Fehler:

    "Unbekannte Anweisung; möglicherweise fehlt ein Strichpunkt."
    und der Cursor springt auf die letzte Zeile "END_FUNCTION"

    FUNCTION FC101 : VOID

    VAR_INPUT

    Lesedaten:STRING[25];
    Vergleichsdaten:STRING[25];


    END_VAR


    VAR_OUTPUT
    VergleichIO:BOOL;
    END_VAR

    BEGIN


    IF Lesedaten=Vergleichsdaten THEN
    VergleichIO:=1;
    ELSE
    VergleichIO:=0;

    END_IF
    END_FUNCTION

  3. #23
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    1. BEGIN streichen

    2. Semikolon hinter END_IF

    END_IF;
    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

  4. #24
    Registriert seit
    31.08.2009
    Beiträge
    63
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Erledigt,

    dann kommen 2 Fehler: "Parameterzuweisung nicht korrekt."

    Ich kann aber keinen Fehler erkennen, wobei das nichts heissen soll.


    Mfg
    CZach

  5. #25
    Registriert seit
    01.10.2012
    Beiträge
    203
    Danke
    12
    Erhielt 56 Danke für 36 Beiträge

    Standard

    Moin,
    versuchs mal damit.
    Code:
    IF STRING_TO_CHAR(Lesedaten)= STRING_TO_CHAR(Vergleichsdaten) THEN
    VergleichIO:=true;
    ELSE
    VergleichIO:=false;
    END_IF;
    Nüchtern betrachtet war es besoffen besser.

  6. Folgender Benutzer sagt Danke zu Bapho für den nützlichen Beitrag:

    CZach001 (05.08.2014)

  7. #26
    Registriert seit
    31.08.2009
    Beiträge
    63
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo, ich hätte jezt noch eine Aufgabe bei der ich nicht so recht weiß wie ich anfangen soll.

    Ich möchte gerne die letzten 5 gelesenen Codes abspeichern, so das man die noch nachschauen kann,
    wird ein neuer code Gescannt, wird der 5te rausgeschmissen, und die anderen um eins nachgeschoben.

    Die gelesenen Daten stehen jetzt jeweils in einer Stringvariablen mit 25Byte

    Ich würde einen Datenbaustein erstellen, in dem jeweils 5 Stringvariable für den ersten Barcodleser und fünf Stringvariablen für den zweiten Barcodeleser definiert werden.

    Vor dem Einlesen der neuen Codes werden alten dan jeweils in die erste Variable für den jeweiligen Barcodeleser geschrieben, und die anderen jeweil um eine Variable weiterkopiert.

    Muss ich das je Variable mit dem SFC 20 kopieren, oder gibts da auch eine einfachere Lösung.

    Mfg
    CZach

  8. #27
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von CZach001 Beitrag anzeigen
    Muss ich das je Variable mit dem SFC 20 kopieren, oder gibts da auch eine einfachere Lösung.
    Hallo,
    da ich mal davon ausgehe, dass du hier mit SCL arbeitest, brauchst du dir nur ein Array_of_String in der gewünschten Größe als FIFO ausbauen.
    Hier kannst du dann das Aufrücken einfach mit einer Schleife erledigen und danach den neuen Eintrag in das Array schreiben.

    Gruß
    Larry

Ähnliche Themen

  1. Antworten: 16
    Letzter Beitrag: 27.01.2014, 19:27
  2. Step 7 Verarbeitung von schnellen Signalen ( ca. 1-2ms )
    Von Xplosion im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 09.08.2013, 11:10
  3. Telegrammdaten auslesen / String-Verarbeitung
    Von Semo im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 21.06.2009, 09:15
  4. S7 String variablen
    Von zotos im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 20.11.2007, 18:02
  5. String verarbeitung
    Von bqstony im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 15.02.2005, 13:15

Lesezeichen

Berechtigungen

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