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

Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 37 von 37

Thema: Rezeptur-Datensatzelemente im Script auslesen

  1. #31
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    5.090
    Danke
    91
    Erhielt 853 Danke für 581 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    wie pn/dp schon erwäht hat sind die scriptbefehle zwischen win/wince unterschiedlich.
    ich schreibe mein scripte (wenn sie für win und wince funktionieren sollen) auch doppelt.
    siehe dazu auch mal Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script
    abhängig vom ergebnis nutze ich dann halt das script für win oder ce
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  2. #32
    Registriert seit
    13.10.2007
    Beiträge
    12.333
    Danke
    2.899
    Erhielt 3.395 Danke für 2.218 Beiträge

    Standard

    @draco,
    hast du nicht die Möglichkeit, deine Anforderungen an die Rezeptur Verwaltung an einem
    richtigen Panel zu testen. Die Rezepturverwaltung von Siemens wird oft verflucht (auch
    von mir), aber Sie funktioniert in den aktuellen Versionen von WinCCflex und TIA wirklich gut
    und zuverlässig.

    Der Vorteil von der Rezepturverwaltung von Siemens ist das es ausstehende nachvollziehen
    können was da passiert, bei der Scripterei ist das schon etwas anderes.

    Ich nutze diese sehr ausgiebig, allerdings auf PCs mit Soft SPS und WinCC Runtime, diese
    hat nicht den Flachenhals Hardware-Bus, da geht es über den Softbus und ist entsprechend
    schnell.

    Das ist meines Erachtens das bzw. Dein Problem, wenn das Panel die Daten durch grüne
    oder violette Leitungen Jagd, beschäftigt dieses das Panel.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.
    Das Problem ist nicht das Problem, das Problem ist die Einstellung zum Problem.

  3. #33
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    853
    Danke
    52
    Erhielt 42 Danke für 35 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Die Panel-Simulation läuft unter Windows, es müssen die Befehle für die PC-Runtime verwendet werden.
    Ich bin mir irgendwie bei diesem Punkt nicht sicher. Ich habe gerade eine Panel-Simulation laufen, und dort funktioniert scheinbar die Syntax nicht, die unter Panel PC ansonsten lief. Könnte das vielleicht mal einer ausprobieren um eine definitive dritte Meinung zu haben ? Wir reden von TIA V15.1. Thx

  4. #34
    Registriert seit
    23.06.2009
    Ort
    Sassnitz
    Beiträge
    12.742
    Danke
    1.038
    Erhielt 3.745 Danke für 3.024 Beiträge

    Standard

    Zitat Zitat von Draco Malfoy Beitrag anzeigen
    Ich habe gerade eine Panel-Simulation laufen, und dort funktioniert scheinbar die Syntax nicht, die unter Panel PC ansonsten lief. Könnte das vielleicht mal einer ausprobieren um eine definitive dritte Meinung zu haben ? Wir reden von TIA V15.1. Thx
    Hast Du mal ein Beispiel, welcher Code unter V15.1 evtl. anders funktioniert? (ich habe allerdings kein V15.1)

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #35
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    853
    Danke
    52
    Erhielt 42 Danke für 35 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Hast Du mal ein Beispiel, welcher Code unter V15.1 evtl. anders funktioniert? (ich habe allerdings kein V15.1)

    Harald
    Code:
    Set RecFileSystemObjekt = CreateObject("Scripting.FileSystemObject")
    
        If    RecFileSystemObjekt.DriveExists(Drive)Then
            
            Set DriveName = RecFileSystemObjekt.GetDrive(Drive)
            
            If    RecFileSystemObjekt.FileExists(SourceFile) = True Then
                
                Set RecFileObjekt = RecFileSystemObjekt.GetFile(SourceFile)
                 Set RecFileName   = RecFileObjekt.OpenAsTextStream(ForReading,TristateASCII) 'Openfile
    
                For i =1 To 14
                    
                    Value    = RecFileName.ReadLine            'Inhal steht im Value
                    
                    Select Case Left(Value, InStr(Value, ";") - 1)
    
                   [... diese Stelle musste leider zensiert werden ... ]
                    
                Next
                
                RecFileName.Close
                
            End If
            
        End If

  6. #36
    Registriert seit
    17.10.2007
    Beiträge
    286
    Danke
    5
    Erhielt 56 Danke für 52 Beiträge

    Standard

    Zitat Zitat von Draco Malfoy Beitrag anzeigen
    Code:
    Set RecFileSystemObjekt = CreateObject("Scripting.FileSystemObject")
        If    RecFileSystemObjekt.DriveExists(Drive)Then
            Set DriveName = RecFileSystemObjekt.GetDrive(Drive)
            If    RecFileSystemObjekt.FileExists(SourceFile) = True Then
                Set RecFileObjekt = RecFileSystemObjekt.GetFile(SourceFile)
                 Set RecFileName   = RecFileObjekt.OpenAsTextStream(ForReading,TristateASCII) 'Openfile
                For i =1 To 14
                    Value    = RecFileName.ReadLine            'Inhal steht im Value
                    Select Case Left(Value, InStr(Value, ";") - 1)
                   [... diese Stelle musste leider zensiert werden ... ]
                Next
                RecFileName.Close
            End If
        End If
    Hallo Draco,

    mehrere Fragen:
    1. Was verbirgt sich hinter "Drive"?
    2. Warum die Funktion "...GetDrive"? Verwendest du den DriveName irgendwo anders? Für das Einlesen der Datei wäre dies nämlich nicht notwendig.
    3. Warum die Funktion "...GetFile"? Für das Einlesen der Datei wäre dies nämlich nicht notwendig.
    4. Bezüglich der Schleife: Weißt du genau, dass IMMER mindestens 14 Zeilen in der Datei enthalten sind?


    Ich hänge mal ein Script an, wie ich das Einlesen einer Textdatei in meinen Projekten behandle (funktioniert auf Panels und PCs), hilft vielleicht ein wenig weiter:
    Code:
    Function Utils_FIO_readFile(ByVal path)
    ' ####################################################################################################
    ' Liest eine Textdatei ein. Der Dateiinhalt wird inklusive Zeilenumbrüche zurückgegeben.
    '
    ' @param 'path'    -> Pfad und Name der einzulesenden Datei als STRING
    ' @return 'result' -> Inhalt der eingelesenen Datei als STRING
    '
    '
    ' -------------------------------------------------------------------------------------------
    ' |   Version  | Autor | Änderung                                                           
    ' -------------------------------------------------------------------------------------------
    ' | 2016_01_21 |  fk   | Neuerstellung
    '
    ' ####################################################################################################
    
        
        ' ##################################################
        ' Variablenreferenzen holen, Funktion initialisieren
        ' ##################################################
        Dim fso
        Dim file
        Dim textLine
        Dim fctStatus
        Dim result
        
        Const FOR_READING = 1
        Const EId_END_OF_FILE = 62
        
        fctStatus = EId_NO_ERROR
        result = ""
    
        On Error Resume Next
    
    
    
    
        ' ##############
        ' Funktionslogik
        ' ##############
        
        If SmartTags("osIsWinCe") _
        Then
            Set file = CreateObject("FileCtl.File")
            file.Open path, FOR_READING
            If Err.Number = EId_NO_ERROR _
            Then
                Do Until file.EOF
                    textLine = file.LineInputString
                    If textLine <> "" _
                    Then
                        result = result & textLine & vbCrLf
                    End If
                    If Err.Number > EId_NO_ERROR _
                    Then
                        fctStatus = EId_FILE_READING_FAILED
                    End If
                Loop
            Else
                fctStatus = EId_FILE_OPENING_FAILED
            End If
            file.Close
        Else
            Set fso = CreateObject("Scripting.FileSystemObject")
            Set file = fso.OpenTextFile(path, FOR_READING)
            If Err.Number = EId_NO_ERROR _
            Then
                Do Until file.AtEndOfStream
                    textLine = file.ReadLine
                    If textLine <> "" _
                    Then
                        result = result & textLine & vbCrLf
                    End If
                    If Err.Number > EId_NO_ERROR And Err.Number <> EId_END_OF_FILE _
                    Then
                        fctStatus = EId_FILE_READING_FAILED
                    End If
                Loop
            Else
                fctStatus = EId_FILE_OPENING_FAILED
            End If
            file.Close
        End If
        
        
        
        
        ' ################
        ' Funktionsausgang
        ' ################
    
        ' Rückgabewert übergeben
        Utils_FIO_readFile = result
    
    
        ' Funktionsstatus global bekanntmachen
        SmartTags("fctStatus_global") = fctStatus
        
        result = Null
        Set file = Nothing
        Set fso = Nothing
        
        
    End Function

    Gruß, Fred

  7. #37
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    853
    Danke
    52
    Erhielt 42 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von faust Beitrag anzeigen
    Hallo Draco,

    mehrere Fragen:
    1. Was verbirgt sich hinter "Drive"?

    Gruß, Fred
    Huch! Olalala. Danke für den Hinweis.... Das Problem saß, wie so häufig, vor dem Monitor. Unter "Drive" waren wieder irgendwelche Pfade vergeben, die es unter Simulation nicht gibt (wäre mal interessant obs die auf nem echten Panel gibt). Deswegen ist diese Abarbeitung gar nicht bis in die IF Abfrage reigegangen.

    2. Warum die Funktion "...GetDrive"? Verwendest du den DriveName irgendwo anders? Für das Einlesen der Datei wäre dies nämlich nicht notwendig.
    Nein, an sich nicht. War nur zum Überprüfen der Existenz des Laufwerks gedacht. Sicherungspfade kann der Benutzer nämlich z.T. selber eingeben.

    3. Warum die Funktion "...GetFile"? Für das Einlesen der Datei wäre dies nämlich nicht notwendig.
    War mir nicht bewussst... Dachte, man macht es immer so.

Ähnliche Themen

  1. WinCC c script Objekt variablenanbindung auslesen
    Von zernix im Forum HMI
    Antworten: 4
    Letzter Beitrag: 19.04.2017, 14:10
  2. Antworten: 5
    Letzter Beitrag: 10.12.2013, 22:12
  3. Antworten: 0
    Letzter Beitrag: 11.07.2012, 12:13
  4. C Script mit VBA auslesen
    Von Adenauer im Forum HMI
    Antworten: 6
    Letzter Beitrag: 10.01.2012, 17:18
  5. Antworten: 2
    Letzter Beitrag: 13.10.2010, 12:11

Lesezeichen

Berechtigungen

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