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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Variablen aus TXT Datei zyklisch beschreiben

  1. #1
    Registriert seit
    03.05.2016
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich möchte mehrere Variablen zyklisch alle 100ms mit Werten aus einer TXT Datei beschreiben bis das Ende erreicht ist. Mit nur einer Variablen klappt das ja auch schon fast ganz gut.
    1.PNG
    Code:
    Dim textfile,fs,laenge,i,parameter,wert,zeile,zeit,pause
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set textfile = fs.OpenTextFile("C:\Users\user\Desktop\Neuer Ordner\test.tab", 1) 'datei öffnen zum lesen
    Do While textfile.AtEndOfStream <> True 
    zeile = textfile.ReadLine
    i=InStr(zeile,"=") 'trennzeichen suchen
    laenge = Len(zeile)
    wert = Right(zeile,laenge  -i )
    'zuweisungen Radial
     SA_NV = wert 
     pause = 0.1
    zeit = Timer 
    Do While Timer < zeit + pause
    Loop
     
    Loop
    Mein Problem ist:
    1. Sobald das Ende erreicht ist kommt eine Fehlermeldung "Variable SA_NV: Konvertierungsfehler"
    2. Ich habe insgesamt 9 Variablen die beschrieben werden sollen alle INT jede Spalte in der TXT Datei soll einer Variablen zugewiesen werden.

    Hier ein Beispiel wie es in der TXT Datei steht:

    5487 5488 2154 5623 3548 5487 6958 5412 1125
    6254 5233 6598 9855 2154 4455 2121 8887 6666
    3211 5452 5455 5454 2236 5487 5433 3325 5487
    0000 0000 0000 0000 0000 0000 0000 0000 0000

    Kann man das irgendwie mit LEFT, RIGHT Befehlen machen? Wenn ja wie?
    Weiß hier jemand eine Lösung?

    Vielen Dank vorab
    MfG
    Zitieren Zitieren Variablen aus TXT Datei zyklisch beschreiben  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Hallo,
    ich habe dein Problem jetzt noch nicht wirklich verstanden.
    Wenn du die eingelesene Zeile in ihre Einzel-Elemente zerlegen willst so ist dafür der Befehl Split zuständig, vorausgesetzt du hast zwischen den Einzel-Elemente immer das gleiche Trennzeichen (z.B. das ' ' (also Space) stehen.
    Split liefert dir dann ein Array (in der entsprechenden Größe) mit den Einzelelementen zurück.
    Wieso steht in deinem Script in Zeile 6, dass du als Trennzeichen ein '=' suchst und in deiner Txt-Datei findet sich das nicht ?

    Gruß
    Larry

  3. #3
    saumann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.05.2016
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Larry,
    ja Du hast Recht Zeile 6 sollte ein Leerzeichen stehen " ".
    Wie ist das mit dem Split gemeint? Wie müsste das im Skript aussehen.
    Code:
    Do While textfile.AtEndOfStream <> True 
    zeile = textfile.ReadLine
    i=InStr(zeile," ") 'trennzeichen suchen
    laenge = Len(zeile)
    wert2 = Right(zeile,laenge  -i)
    wert3 = Right(zeile,laenge  -i -1)
    wert = Left(zeile,  i -1)
    'zuweisung Schräglauf
     SA_NV = wert 
     pause = 0.1
    zeit = Timer 
    Do While Timer < zeit + pause
    Loop
    'zuweisung Sturz
     CA_NV = wert2 
     pause = 0.1
    zeit = Timer 
    Do While Timer < zeit + pause
    Loop
    'zuweisung Radlast
     WL_NV = wert3 
     pause = 0.1
    zeit = Timer 
    Do While Timer < zeit + pause
    Loop
    Loop
    Ich habe es jetzt so, wenn ich im Txt nur zwei Spalten habe und im Skript "wert3 = Right(zeile,laenge -i)" und die letzte Schleife weglasse funktioniert das ganze aber sobald ich eine dritte Spalte im Txt dazunehme kommt der Fehler "Typkonflikt"
    Ich meine was müsste im Skript anstelle von "wert3 = Right(zeile,laenge -i)" stehen damit die Variable WL_NV dem wert3 oder im Txt der dritten Spalte zugewiesen werden kann?
    Geht das überhaupt so wie ich das versuche oder bin ich auf dem falschem Weg denn es sind ja insgesamt 9 Variablen die ich so zuweisen müsste?
    Gibt es da noch andere Möglichkeiten?
    Gruß

  4. #4
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    arrayinhalt = split(zeile," ",-1) '-1 besagt alle.
    'arrayinhalt sagt dir wieviel Elemente das array enthält

    element = arrayinhalt(x)
    'arrayinhalt(x) ist der wert des jeweiligen elements. bei dir wäre das von 0 bis 8
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Naja ... im Prinzip hat Volker es ja schon geschrieben ...
    Als Code sähe das dann in etwa so aus :
    Code:
    Dim VarListe
    
    Do While textfile.AtEndOfStream <> True 
    zeile = textfile.ReadLine
    VarListe = split(Zeile , " ")
    
    wert = VarListe(0)
    wert2 = VarListe(1)
    wert3 = VarListe(2)
    
    usw. ...
    Gruß
    Larry

  6. #6
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.631
    Danke
    377
    Erhielt 802 Danke für 643 Beiträge

    Standard

    Ist das richtig das von Anfang ab steht es "0000" in alle Zellen, bevor das Skript etwas reinschreibt ?
    Du steuerst wie lange das Skript laufen soll bei checken ob du am Ende von den bestehende Datai ist ? ("bis das Ende erreicht ist").

    Wenn du ohne die mit "0000" gefüllte Zellen leben kannst, dann anstatt in bestehende Zeilen zu schreiben, einfach neue Zeilen schreiben.
    Dies ist viel einfacher, du brauchst du kein Split o.Ä.
    Du brauchst dann ein anderen Verfahren um das Skript zu beenden. Vielleicht ein Zähler von geschreiebene Zeilen.
    Jesper M. Pedersen

  7. #7
    saumann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.05.2016
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Larry,
    hat super geklappt! Vielen Dank!!!
    Gruß

  8. #8
    saumann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.05.2016
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    nun klappt die Vorgehensweise aber dafür habe ich ein neues Problem wenn ich das ganze mit nur einer Variablen starte ist alles ok aber sobald mehrere dazukommen wird das nicht mehr mit 10Hz alle 100ms abgetastet sondern es wird in die Länge gezogen. Hier ein Auszug aus meinem Skript
    Gibt es da vielleicht eine andere Vorgehensweise?
    SA_NV = wert
    pause = 0.1
    zeit = Timer
    Do While Timer < zeit + pause
    Loop

  9. #9
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    das ist absoluter bullshit und funktioniert nicht so wie du denkst.
    pause = 0.1
    zeit = Timer
    Do While Timer < zeit + pause
    Loop
    der timer liefert dir die zeit in ganzen Sekunden.
    die do..Loop-schleife läuft also mindestens 1 sekunde.

    und warum wird das überhaupt verzögert?

    weiterhin musst du bedenken, dass immer nur 1 Skript laufen kann. das ganze wird also gestapelt.
    wenn deine aufrufzeit für das Skript kürzer ist als die bearbeitungszeit schmiert dein System früher oder später ab.
    ich glaube die stapeltiefe ist auch begrenzt. bin mir da aber jetzt nicht sicher.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  10. #10
    saumann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.05.2016
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Volker,
    danke für den Hinweis. gibt es denn überhaupt eine Möglichkeit das so auszuführen wie ich mir das vorgestellt habe?

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 26.03.2014, 15:55
  2. Antworten: 5
    Letzter Beitrag: 05.07.2013, 22:08
  3. .txt Datei auslesen
    Von sps_sr im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 28.08.2012, 12:51
  4. aus Flexibel heraus eine TXT Datei ändern
    Von rostiger Nagel im Forum HMI
    Antworten: 17
    Letzter Beitrag: 23.01.2011, 14:55
  5. Antworten: 1
    Letzter Beitrag: 19.05.2005, 14:02

Lesezeichen

Berechtigungen

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