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

Ergebnis 1 bis 7 von 7

Thema: type umwandeln in CoDeSys St

  1. #1
    Registriert seit
    07.07.2011
    Beiträge
    17
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bonsoir,

    wie kann man ein string array in ein benutzerdefinierten type wandeln?
    Meine ich in ein struct zu umwandeln
    Zitieren Zitieren type umwandeln in CoDeSys St  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.792
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Hm, erkläre nochmal genau was du wandeln willst:

    1.) Quell-Datentyp und einen Beispielwert
    2.) Ziel-Datentyp

    Um einen String in einen anderen Wert zu konvertieren gibt es diverse Konvertierungsfunktionen. Z.B. um einen String in einen Integer zu wandeln gibt es STRING_TO_INT. Für andere Umwandlungen hat das STRING_TO... eine entsprechend andere Endung wie BOOL/REAL/TIME etc.

  3. #3
    Frau ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.07.2011
    Beiträge
    17
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Lächeln

    Danke erstmal,
    ich habe festgestellt dass ich mein problem nicht richtig erklärt habe.
    hier ist die genaue beschreibung :
    ich habe ein csv datei die ich konvertiere in einer string-Array, anschließend musse ich der String-Array in ein andere selbst definerte type zu umwandeln.
    Hat jemand da eine Idee wie ich das problem lösen könnte?

    Et merci en avance

  4. #4
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    755
    Danke
    27
    Erhielt 166 Danke für 144 Beiträge

    Standard

    Das Problem ist immer noch nicht verständlich. Schreib doch mal ein Beispiel. Was steht in einem String Deines Arrays und wie soll das im dazugehörigen Struct aussehen?

  5. #5
    Frau ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.07.2011
    Beiträge
    17
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Bonjour,

    ich lese Daten von einen *.csv Datei und ich tue sie konvertieren dabei in ein Array von stringformat: der so deklariert:
    data : Array[0..MAX_CSV_ROWS,0..MAX_CSV_COLUMNS] of String(MAX_CSV_FIELD_LENGTH); (*Jetzt das ist mein quellArray die ich in ein andere Array konvertieren will; der neue Array brauche ich um weiter zu arbeiten und er ist so deklariert :*)
    temp: Array[0..MAX_CSV_ROWS,0..MAX_CSV_COLUMNS] of t_array;

    N.B:
    t_array ist ein neue Datentype die ich erstellt habe nach mein Bedürfnisse, und die sieht so aus :
    TYPE t_array :
    Struct
    Zo:uint;
    sTemp:Lreal;
    eTemp:Lreal;
    usFehler:Lreal;
    osFehler:Lreal;
    END_STRUCT
    END_TYPE


    und jetzt die Frage ob jemand einen Vorschlag hat wie das gehen soll?

    falls immer noch nicht klar ist können sie ruhig weitere Faggen stellen

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.792
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Eigentlich müsste dein t_array genau so viele Felder haben wie Spalten in einer Zeile der CSV-Datei vorhanden sind.
    Dann ist temp nur noch ein eindimensionales Array, weil die zweite Dimension quasi in den Elemtenten der Struktur steckt.
    Sollte dann also eigentlich so lauten:
    Code:
    temp: ARRAY[0..MAX_CSV_ROWS] OF t_array;
    Um festzulegen in welchen Spalten-Nummern die Einträge der Struktur stehen, könnte man über Konstanten gehen:
    Code:
    VAR CONSTANT
    	col_Zo : INT := 0; 		(* Spalten-Nr. des Eintrags *)
    	col_sTemp : INT := 1;		(* Spalten-Nr. des Eintrags *)
    	col_eTemp : INT := 2;		(* Spalten-Nr. des Eintrags *)
    	col_usFehler : INT := 3;	(* Spalten-Nr. des Eintrags *)
    	col_osFehler : INT := 4;	(* Spalten-Nr. des Eintrags *)
    END_VAR
    Wenn du dann noch eine Laufvariable z.B. row von Typ INT anlegst, kannst du die CSV-Datei (bzw. das String array) mit folgender Schleife einlesen:

    Code:
    FOR row := 0 TO MAX_CSV_ROWS DO
    	temp[row].Zo := STRING_TO_UINT(data[row, col_Zo]);
    	temp[row].sTemp:= STRING_TO_LREAL(data[row, col_sTemp]);
    	temp[row].eTemp:= STRING_TO_LREAL(data[row, col_eTemp]);
    	temp[row].usFehler:= STRING_TO_LREAL(data[row, col_usFehler]);
    	temp[row].osFehler:= STRING_TO_LREAL(data[row, col_osFehler]);
    END_FOR
    Ich hoffe das war es was du gemeint hast.

    Wenn du dir nicht sicher sein kannst dass die CSV-Einträge korrekt sind z.B. wenn sie von einem Mitarbeiter händisch bearbeitet werden, muss noch geprüft werden ob die Stringumwandlung korrekt war.

  7. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    Frau (24.07.2011)

  8. #7
    Frau ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.07.2011
    Beiträge
    17
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke Thomas,

    Sehr gute Idee, ich bin dabei jetzt das zu testen

    tu es
    génial et merci

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 14.09.2010, 17:56
  2. TYPE definieren
    Von Mattin81 im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 16.08.2010, 10:15
  3. OPC Automation Alarm & Event 1.0 Type Library?
    Von MarkusMA im Forum Hochsprachen - OPC
    Antworten: 12
    Letzter Beitrag: 06.11.2008, 09:38
  4. Umwandeln!
    Von sr-83 im Forum Simatic
    Antworten: 36
    Letzter Beitrag: 04.09.2007, 16:12
  5. Arbeiten mit Simatic 1.0 Type Library
    Von nairolf im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 22.03.2006, 13:19

Lesezeichen

Berechtigungen

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