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

Ergebnis 1 bis 8 von 8

Thema: Wartezeit in Script TIA V13

  1. #1
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    ich möchte in wicc Tia V13 PC Station mit einen Script mehrere Datensatznamen einlesnen und diesen auf einen Button als Name ablegen.
    Ich erhalte immer den Fehler "Datensatzbearbeitung nicht möglich da bereits ein Rezepturaktion läuft"
    Wenn ich mit einem Button die Funktion LesenDatensatzname beim Drücken ausführe Funktioniert es.

    Es liegt an der Bearbeitungszeit des Scriptes (zu schnell). Füge ich nach jedem Lesen eine For Schleife ein Funktioniert es auch.

    Gibt es eine Sleep oder delay Funktion ?

    Code:
    Sub HUE_Scene_Name()
    Dim i,i2
    
    ' Datensatzname Einlesen
    
    
    
    
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_1"), "Rezeptname_1", "HUE_SCEN_TEXT_1", Null
    For i2 = 1 To 1000000
        
           Next
    
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_2"), "Rezeptname_2", "HUE_SCEN_TEXT_2", Null
    For i2 = 1 To 1000000
        
           Next
    
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_3"), "Rezeptname_3", "HUE_SCEN_TEXT_3", Null
    For i2 = 1 To 1000000
        
           Next
    
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_4"), "Rezeptname_4", "HUE_SCEN_TEXT_4", Null
    For i2 = 1 To 1000000
        
           Next
    
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_5"), "Rezeptname_5", "HUE_SCEN_TEXT_5", Null
    For i2 = 1 To 1000000
        
           Next
    
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_6"), "Rezeptname_6", "HUE_SCEN_TEXT_6", Null
    
    
    
    
    
    End Sub
    Zitieren Zitieren Wartezeit in Script TIA V13  

  2. #2
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard

    Hallo
    habe was gefunden

    http://support.automation.siemens.co...ard&viewreg=WW

    Allerdings schaffeich es nicht 50 ms zu warten.
    Es benötigt immer 1 sec

    DelayTime(50)

    Code:
    Sub Delay(ByRef DelayTime)
    
    
    Dim LastTime, StopTime, i
    
        DelayTime=DelayTime/1000
        
        StopTime= Now+DelayTime/24/3600
       
        ShowSystemAlarm "Script will be waiting for " & DelayTime & " seconds."
        Do
            If Now>LastTime + 0.1/24/3600 Then
                i = i+1
                ShowSystemAlarm "Script is waiting " & Left("....", (i Mod 4) +1)
                LastTime= Now
            End If
        Loop Until Now>=StopTime
    
        ShowSystemAlarm "Script resumes working."
    
    
    
    End Sub

  3. #3
    Registriert seit
    17.10.2007
    Beiträge
    263
    Danke
    5
    Erhielt 52 Danke für 48 Beiträge

    Standard

    Hallo emilio,

    zuvor eine Frage: Du liest bzw. durchsuchst aber schon das Forum, bevor du eine Frage postest
    Diese Problematik wird nämlich gerade in ähnlicher Form behandelt...


    Zur Frage:
    Verwende Timer statt Now, dieser löst in Millsekunden auf.

    In deinem Fall solltest du aber mal den Rückgabewert der Systemfunktion näher betrachten, damit und mit einer While-Wend-Schleife kann man das ganz ohne Pause lösen.


    Gruß, Fred

  4. #4
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard

    Hallo Fred

    erst mal vielen Dank für deine Hilfe, habe es hin bekommen.
    Ps. ich lese nicht jeden Beitrag und unter Delay oder Wartezeit habe ich den Beitrag auf anhib nicht gefunden.

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Zitat Zitat von faust Beitrag anzeigen
    In deinem Fall solltest du aber mal den Rückgabewert der Systemfunktion näher betrachten, damit und mit einer While-Wend-Schleife kann man das ganz ohne Pause lösen.
    ... das wäre bei so etwas auch mein Ansatz. Die meißten dieser Funktionen wissen nämlich selbst schon recht gut, wann sie fertig sind.
    Das mit dem Timer ist (zumindestens an dieser Stelle) m.E. eher fragwürdig denn wenn der Rechner der Visu mal etwas mehr zu tun hat kann das hand-programmierte Delay dann vielleicht nicht mehr ausreichend sein.

    Gruß
    Larry

  6. #6
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard

    Hallo
    ich habe es jetzt so gemacht das ich Warte bis die Funktion fertig ist. Es kommt aber immer noch sporatisch zu dem Fehler

    "Datensatzbearbeitung nicht möglich da bereits ein Rezepturaktion läuft"

    Jetzt musste ich trotzdem die wartezeit mit einfügen. So geht es jetzt erst mal.

    Code:
    
    
    Sub HUE_Scene_Name()
    Dim Wait
    Dim i
    
    'Wartezeit bis zum nächsten aufruf
    Wait=20
    
    
    Status=0
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_1"), "Rezeptname_1", "HUE_SCEN_TEXT_1","Status"    
    
    Do
                    Status = SmartTags("Status")
                    'If Status = 12 Then Exit Sub
    Loop While(Status And 4) = 0
    
    Delay(Wait)
    
    Status=0
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_2"), "Rezeptname_1", "HUE_SCEN_TEXT_2", "Status"
    Do
                    Status = SmartTags("Status")
                    'If Status = 12 Then Exit Sub
    Loop While(Status And 4) = 0
    
    Delay(Wait)
    
    Status=0
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_3"), "Rezeptname_1", "HUE_SCEN_TEXT_3", "Status"
    Do
                    Status = SmartTags("Status")
                   ' If Status = 12 Then Exit Sub
    Loop While(Status And 4) = 0
    
    Delay(Wait)
    
    Status=0
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_4"), "Rezeptname_1", "HUE_SCEN_TEXT_4", "Status"
    Do
                    Status = SmartTags("Status")
                    'If Status = 12 Then Exit Sub
    Loop While(Status And 4) = 0
    
    Delay(Wait)
    
    Status=0
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_5"), "Rezeptname_1", "HUE_SCEN_TEXT_5", "Status"
    Do
                    Status = SmartTags("Status")
                   ' If Status = 12 Then Exit Sub
    Loop While(Status And 4) = 0
    
    Delay(Wait)
    
    Status=0
    GetDataRecordName 2, SmartTags("HUE_SCEN_Butt_6"), "Rezeptname_1", "HUE_SCEN_TEXT_6", "Status"
    Do
                    Status = SmartTags("Status")
                    'If Status = 12 Then Exit Sub
    Loop While(Status And 4) = 0
    
    
    
    
    End Sub

  7. #7
    Registriert seit
    17.10.2007
    Beiträge
    263
    Danke
    5
    Erhielt 52 Danke für 48 Beiträge

    Standard

    Hallo emilio,

    zwei NoGoes:
    1. Status = SmartTags("Status") -> Verwende niemals eine lokale und eine globale Variable mit gleichem Namen!
    Wobei ich mich frage, warum du diese Zuweisung überhaupt implementiert hast.
    2. Do ... Loop While (Status AND 4) -> Warum willst du hier das 3. Bit von Status ausmaskieren? Vergleiche doch einfach "Status = 4".

    Folgender Code funktioniert bei mir seit Jahren fehlerfrei:

    GetDataRecordName ..., ..., ..., ..., "fctStatus"
    While SmartTags("fctStatus") = 2 : Wend
    GetDataRecordName ...
    usw.

    Gruß, Fred

  8. #8
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 29.12.2014, 01:08
  2. TIA Siemens S7 TIA V13 Basic <> TIA V13 Professional
    Von piksieben im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 05.11.2014, 19:23
  3. Antworten: 0
    Letzter Beitrag: 20.10.2014, 20:25
  4. Antworten: 2
    Letzter Beitrag: 11.05.2014, 08:14
  5. WinCC V6.2 Wartezeit in C-Script
    Von franzlurch im Forum HMI
    Antworten: 12
    Letzter Beitrag: 24.06.2008, 09:06

Lesezeichen

Berechtigungen

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