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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Textdatei mit Script einlesen

  1. #11
    idefixsps ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.11.2015
    Beiträge
    20
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bei mir ist die Textdatei aber nicht so aufgebaut

    Zeile1: Daten1 = 1234
    Zeile2: Daten2 = 5678

    sondern so:

    Zeile1: 22
    Zeile2: 33

    es stehen rein nur zweistellige Zahlen, keine Bezeichnungen.

  2. #12
    idefixsps ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.11.2015
    Beiträge
    20
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ich bekomme beim Generieren keinen Fehler mehr, allerdings wenn ich über die Schaltfläche das Script ausführe bekomme ich keine Werte in den EA-Feldern...
    anbei einige Bilder, ich hoffe diese sagen mehr als meiner Worte....
    button.JPGEA-FELD.JPGscript.JPGvariable.JPG

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.306
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard

    Mann-o-mann - sei mal nicht so schlampig und denke auch ein klein wenig mit.
    Im Skript müssen die SmartTags-Variablennamen natürlich genau so heißen wie die Prozessvariablen, welche Du in den EA-Feldern anzeigst. Dann klappt es auch.
    - EA-Feld1: Prozessvariable "Istwerte DB Temperaturen.Daten1"
    - EA-Feld2: Prozessvariable "Istwerte DB Temperaturen.Daten2"
    - im Skript:
    Code:
    ...
        Set f = fso.OpenTextFile(infile, ForReading, False)
    
        SmartTags("Istwerte DB Temperaturen.Daten1") = f.ReadLine
        SmartTags("Istwerte DB Temperaturen.Daten2") = f.ReadLine
    
        f.Close
    End If
    Schreibe in Deine Textdatei:
    Zitat Zitat von C:\DatenHG.txt
    22
    33
    Wenn Du dann das Skript ausführst, dann wird 22 in "...Daten1" geschrieben und 33 in "...Daten2".

    Wenn nicht, dann kontrolliere noch mal genauestens die Projektierung Deiner zwei EA-Felder.
    Deine beiden Variablen hast Du nicht als HMI-interne Variablen projektiert sondern als PLC-Variablen (DB1.DBD...). Werden den Variablen vielleicht in der SPS auch Werte zugewiesen?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #14
    Registriert seit
    13.10.2007
    Beiträge
    12.059
    Danke
    2.793
    Erhielt 3.287 Danke für 2.167 Beiträge

    Standard

    Grundsätzlich würde ich darauf achten, das die Variable dem erwartenden Format entspricht.
    Deklariert ist Real, im Beispiel sind nur Integer, evtl muss die Zahl erstmal von String in ein
    gültiges Format mit Cxy gewandelt werden. Vom String sollten eventuelle Leerzeichen mit
    der 'TRIM' Funktion entfernt werden.

    Vielleicht sollte ersteinmal mit 'ShowSystemAlarm' der gelesene Wert über das Meldessystem
    des Panel's ausgegeben werden. Vielleicht liest das Script überhaupt nichts.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  5. #15
    idefixsps ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.11.2015
    Beiträge
    20
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Guten Morgen Harald,
    ich wollte mit den Beispielbild zeigen, dass ich einmal eine HMI-interne Variable und einmal eine PLC-Variable aus einem DB verwende und mit beiden nicht funktioniert.

    Script-Code und Textdatei sind genauso wie du beschrieben hast, leider wird in den EA-Feldern immer noch nichts angezeigt...
    Mach ich beim ausführen des Scripts etwas falsch? Schaltfläche/Drücken/Script verlinkt ?

    Danke

  6. #16
    idefixsps ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.11.2015
    Beiträge
    20
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Guten Morgen rostiger-Nagel,
    ich habe REAL deklariert weil ich reine zweistellige Zahlen aber auch zweistellige Zahlen mit einer Kommastelle einlesen möchte. Dazu ist REAL doch richtig gewählt oder?
    Ich glaube mein Fehler liegt irgendwo beim Ausführen des Scripts.... Keine Ahnung

  7. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.306
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard

    Guten Morgen Martin.

    Wenn Du Deine Datei C:\DatenHG.txt umbenennst oder löschst - gibt das Skript dann die Fehlermeldung aus (Datei 'C:\DatenHG.txt' nicht gefunden.)?

    Wenn Du nicht sicher bist, ob das Skript überhaupt aufgerufen wird und was es macht, dann mache Dir Test-Ausgaben rein, z.B. Werte auf HMI-interne-Variablen (SmartTags) schreiben oder einfach mit ShowSystemAlarm Meldungen ausgeben:
    Code:
    Const ForReading = 1
    Dim fso, f, infile
    
    ShowSystemAlarm "1 Skript Read_data: gestartet" 'Test-Ausgabe, im fertigen Skript wieder entfernen
    
    infile = "C:\DatenHG.txt"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    If Not fso.FileExists(infile) Then 'Datei ist nicht vorhanden --> Fehlermeldung
        ShowSystemAlarm "Datei '" & infile & "' nicht gefunden."
        Exit Sub
    
    Else 'Datei ist vorhanden --> Werte lesen
        ShowSystemAlarm "2 Skript Read_data: Datei '" & infile & "' einlesen" 'Test-Ausgabe
        Set f = fso.OpenTextFile(infile, ForReading, False)
    
        SmartTags("Istwerte DB Temperaturen.Daten1") = f.ReadLine 'liest die erste Dateizeile in die Variable "...Daten1"
    
        SmartTags("Istwerte DB Temperaturen.Daten2") = f.ReadLine 'liest die zweite Dateizeile in die Variable "...Daten2"
    
        f.Close
    End If
    
    ShowSystemAlarm "3 Skript Read_data: erfolgreich beendet" 'Test-Ausgabe
    Falls das Skript nicht aufgerufen wird: erstelle eine völlig neue Schaltfläche und projektiere an das Ereignis "Drücken" den Aufruf Deines Skriptes "Read_data".
    Mache mal "Extras > Temporäre Dateien löschen" und "Alles neu generieren".

    Hast Du eine Meldeanzeige und/oder ein Meldefenster für Systemmeldungen in Deinem Projekt drin?
    Zitat Zitat von PN/DP Beitrag anzeigen
    Tip: mache Dir ein Meldefenster in die Vorlage und eine Meldeanzeige für Meldeereignisse der Meldeklasse System in ein Bild, damit Du die zu erwartenden Fehlermeldungen sehen und lesen kannst.
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #18
    idefixsps ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.11.2015
    Beiträge
    20
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Harald,
    vielen Dank für deine ausführliche Rückantwort und Hilfe.
    Ich bin jetzt einen Schritt weitergekommen anhand der Meldeanzeige... Sobald ich die Schaltfläche für den Aufruf vom Script "Read_data" betätige kommt im Meldefenster: "Datei C:\DatenHG.txt nicht gefunden"

    Die Datei liegt genau so geschrieben auf C:\
    Habe auch mal auf den Datenträger D:\ kopiert, unbenannt in "Daten.txt" und auch die Windows Berechtigung von "Jeder" auf Vollzugriff gesetzt... Ich kenn mich langsam nicht mehr aus
    Hast du noch eine Idee?
    Was ist wenn ich die Daten in REAL einlesen, müsste doch passen oder?

    DANKE

  9. #19
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.306
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard

    Warum das Skript die Datei nicht findet habe ich im Moment keinen Plan. Ich würde zum ganz sichergehen der korrekten Schreibweise in einem Explorer die Datei "umbenennen" + den Dateiname kopieren und in das Skript einfügen. Wenn das nicht hilft, dann die 4 Zeilen von If.. bis Else.. und das End If löschen oder auskommentieren.

    Zur Sicherheit die Nachfrage: was für ein HMI programmierst Du da? Eine WinCC flexible RT auf Windows...was?

    Dank VBS liest das Skript auch in REAL-Variablen korrekt ein. So wie Du es brauchst. Das ist kein Problem.

    Harald
    Geändert von PN/DP (01.03.2016 um 22:45 Uhr)
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #20
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.306
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Probiere mal, die Datei im Skript selber zu erzeugen und wieder einzulesen. Wenn das klappt, dann suche mal wo die Datei angelegt wurde.
    Code:
    Const ForReading = 1, ForWriting = 2
    Dim fso, f, infile
    
    ShowSystemAlarm "1 Skript Read_data: gestartet" 'Test-Ausgabe, im fertigen Skript wieder entfernen
    
    infile = "C:\DatenHG.txt"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'Datei selber erzeugen
    Set f = fso.CreateTextFile(infile, True)
    f.WriteLine "22"
    f.WriteLine "33"
    f.Close
    
    If Not fso.FileExists(infile) Then 'Datei ist nicht vorhanden --> Fehlermeldung
        ShowSystemAlarm "Datei '" & infile & "' nicht gefunden."
        Exit Sub
    
    Else 'Datei ist vorhanden --> Werte lesen
        ShowSystemAlarm "2 Skript Read_data: Datei '" & infile & "' einlesen" 'Test-Ausgabe
        Set f = fso.OpenTextFile(infile, ForReading, False)
    
        SmartTags("Istwerte DB Temperaturen.Daten1") = f.ReadLine 'liest die erste Dateizeile in die Variable "...Daten1"
    
        SmartTags("Istwerte DB Temperaturen.Daten2") = f.ReadLine 'liest die zweite Dateizeile in die Variable "...Daten2"
    
        f.Close
    End If
    
    ShowSystemAlarm "3 Skript Read_data: erfolgreich beendet" 'Test-Ausgabe
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 11.12.2013, 15:19
  2. Textdatei auslesen mit TwinCAT
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 07.06.2010, 10:27
  3. Textdatei in Datenbaustein einer S7 einlesen
    Von Ekkehard im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 04.02.2010, 10:46
  4. WinCC 6x Textdatei öffnen mit VBS
    Von tarzipan7 im Forum HMI
    Antworten: 1
    Letzter Beitrag: 16.10.2007, 08:56
  5. WinCC: mit VB bzw. C# eine textdatei ausdrucken
    Von dellamorte-dellamore im Forum HMI
    Antworten: 2
    Letzter Beitrag: 28.02.2006, 19:50

Lesezeichen

Berechtigungen

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