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

Ergebnis 1 bis 7 von 7

Thema: String Auslesen

  1. #1
    Registriert seit
    26.12.2011
    Beiträge
    73
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute

    Muss einen Barcode auslesen der mir per String gesendet wird. Hab den Code dazu geschrieben jedoch will das ganze so nicht funktionieren kann mir jemand sagen ob ich da einen groben Denkfehler drinnen habe?

    Code:
    IF NOT IsR THEN 
        BC := "DB_OPC".IN.L_BC_Label;
    ELSE
        BC:="DB_OPC".IN.R_BC_Label;
    END_IF;
    
    BC_Err := FALSE;
    Farb_Err := FALSE;
    BC_Farb := MID(IN:=BC, P:=11, L:=4);
    BC_IsGrau    := FALSE;
    BC_IsSchwarz := FALSE; 
    BC_IsBeige   := FALSE;
    BC_IsMBeige  := FALSE; 
    BC_IsSBeige  := FALSE;
    
     
    //Festlegung Barcode 11-14.Stelle
    //7L34 
    //9G26
    //7N72
    //8P24 
    //8S62 
    BC_IsGrau    :=  BC_Farb = '7L34';
    BC_IsSchwarz :=  BC_Farb = '9G26';
    BC_IsBeige   :=  BC_Farb = '7N72';
    BC_IsMBeige  :=  BC_Farb = '8P24';
    BC_IsSBeige  :=  BC_Farb = '8S62';
    Farb_Err := NOT(
                   (isGrau    AND BC_IsGrau   )
                OR (isSchwarz AND BC_IsSchwarz)
                OR (isBeige   AND BC_IsBeige  )
                OR (isMBeige  AND BC_IsGrau   )
                OR (isSBeige  AND BC_IsGrau   )
                );
    
    BC_Vorg := MID(IN:=BC, P:=1, L:=10);
     
    Ergebnis1:= (BC_Vorg = '2126903725') AND IsW212L;
    Ergebnis2:= (BC_Vorg = '2126903825') AND IsW212R;
    Ergebnis3:= (BC_Vorg = '2126902525') AND IsS212L;
    Ergebnis4:= (BC_Vorg = '2126902625') AND IsS212R;
    Ergebnis5:= (BC_Vorg = '2186901925') AND IsC218L;
    Ergebnis6:= (BC_Vorg = '2186902025') AND IsC218R;
    Ergebnis7:= (BC_Vorg = '2186903925') AND IsX218L;
    Ergebnis8:= (BC_Vorg = '2186903825') AND IsX218R;
    Ergebnis9:= (BC_Vorg = '2186904125') AND IsX218AL;
    Ergebnis10:= (BC_Vorg = '2186904025') AND IsX218AR;
    11. bis 14. Stelle enthalten den Farbcode

    1. bis 10. Stelle die Type

    Ich hab versuche es zu simulieren jedoch wenn ich in der VAT die einzelnen Zeichen als CHAR anlege und dann Steuere komm auch zu keinem Ergebniss woran kann das liegen? "DB_OPC".IN.L_BC_Label; ist als String[26] angelegt. Was habe ich falsch gemacht?

    Gruß
    Zitieren Zitieren String Auslesen  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    ich verstehe den Sinn deines Codes gerade nicht ...
    Aber grundsätzlich : AND ist eine logische Verknüpfung. Das wird z.B. eingesetzt für : "IF (a=1) and (b=17) then ..."
    Wenn du nun überprüfen willst, ob dein String eine bestimmte Sequenz enthält oder sogar die Sequenz im String an einer bestimmten Stelle steht mußt du die String-Vergleichs-Routinen heranziehen (z.B. EQ_STRNG oder FIND).

    Gruß
    Larry

  3. #3
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Mit AND macht er ja nur die Boolschen Abfragen. Allerdings ob man mit = wirklich Strings vergleichen kann?
    Da müsste man wohl wirklich genau wissen was der Compiler aus den direkt geschriebenen Konstanten macht '7L34' dass dann akt/max stringlänge auch wirklich mit dem Vergleichsstring übereinanderpassen.

  4. #4
    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

    Zuerst muß unbedingt überprüft werden, was wirklich in "BC" landet! Ist BC als String angelegt? Was steht in Byte 0 und Byte 1 ? (max. Länge und tatsächliche Länge des Strangs.) Ich weiß nicht, ob das per OPC auch genau so (S7-String) angeliefert wird, wenn nicht (Byte 0 und 1 leer oder mit den ersten beiden Byte des String befüllt), dann funktioniert MID gar nicht oder nicht korrekt!
    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

  5. #5
    Registriert seit
    26.12.2011
    Beiträge
    73
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi Leute

    Ich hab die Temporären Strings initialisiert bringt leider auch nix. BC ist als String[26]. Habe die Eingangsvariable(DB_OPC".IN.L_BC_Label) per VAT angesteuert und wollt das ganze auf einen DB schreiben (DB950.BC:= BC wenn ich diesen DB dann in der VAT auslese stehen nur 0 drin. Woran liegt das? Ich komm einfach nicht drauf.

    Gruß
    Andi

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Hast Du BC, BC_Farb und BC_Vorg vor der ersten Verwendung initialisiert?
    Code:
        BC      := '' ;
        BC_Farb := '' ;
        BC_Vorg := '' ;
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    initialisiert müssen alle Strings natürlich sein (vor der ersten Verwendung).

    Dessen ungeachtet würde ich den Vergleicher so ausführen :
    Code:
    BC_IsGrau  :=  EQ_STRNG (BC_Farb , '7L34') ;
    ... wobei noch zu testen wäre ob EQ_STRNG eine Konstante am Eingang "schluckt" ...

    Gruß
    Larry

Ähnliche Themen

  1. OPC Server Fehler beim String auslesen
    Von Kannix im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 02.02.2012, 18:16
  2. String in scl auslesen
    Von Bensen83 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 06.12.2010, 13:50
  3. Zeichen aus String auslesen
    Von Ötzwurst im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 02.03.2010, 22:32
  4. Telegrammdaten auslesen / String-Verarbeitung
    Von Semo im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 21.06.2009, 09:15
  5. String über RS232 in DB auslesen????
    Von Madface im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 23.04.2004, 10:06

Lesezeichen

Berechtigungen

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