SCL zwei INT aus einem STRING

Uli_87

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich bin neu auf dem Forum und auch in der SCL Welt, ich möchte gerne einen Baustein Programmieren der mir aus einem string zwei int ausgibt, in der String variable sind folgender Wert drin:
'15:35' zum Beispiel

ist das möglich diesen String in zwei Variablen zu setzen?
VAR1 = 15
VAR2 = 35

Vielen Dank
Gruss
Uli
 
Ich habe es mal so versucht:

Code:
FUNCTION_BLOCK TIME_INT
TITLE='Int_Interface_WinCC'

{S7_m_c:='true'}


AUTHOR:    DB
NAME:      TIME_INT
//KNOW_HOW_PROTECT

VAR_INPUT 
    L_TEXT_00   {S7_visible:='true'; S7_param:='false'; S7_link:='true'; S7_dynamic:='true';S7_m_c:='true'}:STRING[5];
    TEST :STRING;
END_VAR    

VAR_OUTPUT 
    Q_INT_00   {S7_visible:='true'; S7_dynamic:='false';S7_m_c:='true'}:INT:=0;
    Q_INT_01   {S7_visible:='true'; S7_dynamic:='false';S7_m_c:='true'}:INT:=0;
END_VAR


BEGIN
TEST := MID (L_TEXT_00, 2, 3)
Q_INT_00 := STRING_TO_INT (TEST);

END_FUNCTION_BLOCK

Ich weiss nicht ob man das machen kann oder nicht, auf jedenfall funktioniert es nicht. Hatt jemand eine Idee?

Gruss
Uli
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier mal das Grundgerüst ohne Fehlerauswertung und noch nicht getestet:

Code:
FUNCTION FC8 : INT
VAR_INPUT
    InStr : STRING;
END_VAR

VAR_OUTPUT
    Value1 : INT;
    Value2 : INT;
END_VAR

VAR_TEMP
    tmpStr   : STRING;
    Position : INT; (* Position des Token *)
    StrLen   : INT;
    Part1    : STRING;
    Part2    : STRING;
    FCode    : INT;
END_VAR
    (* String muss bei Siemens temporär vorliegen *)  
    tmpStr := inStr;
    
    FCode  := 0; (* Vorbereitung für Fehler Auswertung *)

    (* Stringlänge ermitteln *)
    StrLen := LEN(S := tmpStr); 
    
    (* Wo ist der Doppelpunkt *)                       
    Position := FIND(IN1 := tmpStr, IN2 := ':');
    
    (* Ausschneiden *) 
    Part1 := LEFT(IN := tmpStr,L := Position - 1);
    Part2 := RIGHT(IN := tmpStr,L := StrLen - Position);
    
    (* Wandeln *)
    Value1 := STRNG_I(S :=  Part1);
    Value2 := STRNG_I(S :=  Part2);
         
    FC8 := FCODE;
END_FUNCTION
 
Scl..

Hi Kollege,
grunds. funktioniert das unten, deine WinCC Attribute passen dem Compiler aber nicht, solltest du checken.
Code:
FUNCTION FC10 : VOID

{S7_m_c:='true'}

TITLE='Int_Interface_WinCC'
AUTHOR:    DB
NAME:      TIME_INT

//KNOW_HOW_PROTECT

VAR_INPUT 
    L_TEXT_00   :STRING[5];
END_VAR    

VAR_TEMP
  TEST :STRING;
END_VAR

VAR_OUTPUT 
    Q_INT_00   :INT:=0;
    Q_INT_01   :INT:=0;
END_VAR


TEST:= L_TEXT_00;
TEST := MID (IN:=TEST,L:= 2,P:= 3);
Q_INT_00 := STRING_TO_INT (TEST);

END_FUNCTION

Gruss: V.
 
Zurück
Oben