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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: WinCC V6.2 Wartezeit in C-Script

  1. #1
    Registriert seit
    01.10.2007
    Beiträge
    337
    Danke
    13
    Erhielt 6 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Halli Hallo,

    weiß jemand, ob es möglich ist in ein C-Script eine Wartezeit von z.B 500ms oder 1 Sek einzubauen. In normalem Ansi C weiß ich wies geht, aber ich finde in WinCC hierfür keinen "delay" Befehl oder ähnliches.


    Christian
    Zitieren Zitieren WinCC V6.2 Wartezeit in C-Script  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.299
    Danke
    545
    Erhielt 2.715 Danke für 1.962 Beiträge

    Standard

    Das würde ich nicht machen, nach meiner Erfahrung mit VBA in WinCC bleibt dann alles so lange stehen. Kann natürlich sein, das sich das mit C anders verhält, glaube ich aber nicht. Mit einer Schleife und Zählen geht es auf jeden Fall, z.Bsp. in einer Schleife eine Variable von 1-100000 zählen lassen, bei 100000 raus aus der Schleife. Aber wie gesagt, das ist nicht gut.

    PS: Zählwert muß man selbst ermitteln, je nachdem, wie lange der Delay sein soll.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.733
    Danke
    729
    Erhielt 1.162 Danke für 973 Beiträge

    Standard

    Das sollte helfen
    Auf jeden Fall, das Achtung beachten
    FRAGE:
    Wie kann ich eine Wartefunktion "Sleep" in WinCC programmieren?
    ANTWORT:
    Sie können dafür die Windows API-Funktion "Sleep()" einsetzen. Das folgende Programmbeispiel zeigt, wie die Funktion "Sleep" verwendet wird.
    #pragma code("Kernel32.dll")
    void Sleep(int Milliseconds);
    #pragma code()
    Sleep(1000); //Zeitangabe in Millisekunden
    Achtung:
    Die Funktion "Sleep()" hat einen äußerst negativen Einfluss auf die Performance der Aktionsbearbeitung. Bitte beachten Sie daher unbedingt die folgenden Punkte, wenn Sie diese Funktion einsetzen möchten.

    • Die Bearbeitung des C-Skriptes wird bei der Benutzung von Sleep() um die angegebene Zeit unterbrochen. Auftretende Anforderungen an die unterbrochene Funktion können während dieser Zeit nicht bearbeitet werden.
    • Weiterhin werden alle Aktionen mit dem gleichen Trigger nicht mehr bearbeitet. Mit dem gleichen Trigger bedeutet, dass alle Aktionen mit zyklischem Trigger oder alle Aktionen mit einem Variablentrigger nicht mehr bearbeitet werden. Rufen Sie gleichzeitig Aktionen auf, welche zyklisch, azyklisch, auf einen Variablentrigger und auf ein Ereignis gestartet werden und wenn alle diese Funnktionen die Sleep()-Funktionen nutzen, dann werden sämtliche Aktionen in Ihrer Ausführung gestoppt. Im ungünstigsten Fall halten Sie mit vier gestarteten Aktionen, sämtliche Aktionen in Ihrer Bearbeitung an.
    • Wenn Sie beispielsweise die Sleep()-Funktion in einer Aktion mit einem 10 Sekunden Trigger verwenden, dann werden alle zyklisch aufgerufenen Aktionen unterbrochen. Dies hat zur Folge, dass z.B. eine Aktion mit einem 1 Sekunden Trigger in Ihrer Abarbeitung unterbrochen wird und zusätzlich alle noch folgenden Aktionen ebenfalls nicht abgearbeitet werden. Somit werden nicht nur aktuelle Aktionen nicht abgearbeitet, sondern auch Aktionen, welche noch gestartet werden sollen.
    • Die durch die Unterbrechung nicht abgearbeiteten Aufträge werden in einer Warteschlange gespeichert. Ist die Unterbrechung beendet, dann werden alle Anforderungen aus der Warteschlange abgearbeitet. Nach der Unterbrechung werden die Aktionen aus der Warteschlange aber nicht mehr in Ihrem Zyklus abgearbeitet. Wenn also, wie in dem zuvor geschilderten Fall, sich noch Aktionen in der Warteschlange befinden, dann werden diese nacheinander abgearbeitet. Bei dieser Abarbeitung wird keine Rücksicht mehr auf den Trigger genommen, sondern diese Aktionen werden so schnell wie möglich abgearbeitet (theoretisch gleichzeitig).


  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    ich würd die zeit auch irgendwie aus der cpu holen und nicht im skript zusammen basteln ... z.b. den 100ms takt übergeben und dann im skript entsprechend zusammen zählen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    franzlurch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.10.2007
    Beiträge
    337
    Danke
    13
    Erhielt 6 Danke für 5 Beiträge

    Standard

    Hi Ralle, Hi Vierlagig

    ich erklär die mal kurz für was ich das brauche, vielleicht hast du eine andere Idee. Und zwar will ich sowas wie die WinCC Option Audit realisieren. Ich hab diverse Parameter die ich mit loggen möchte wenn diese geändert werden. Dazu habe ich mir im TagLogging ein Archiv erstelle, worin ich den Namen der Variable, den alten sowie den neuen Wert der Variable und den Namen des Users der gerad eingeloggt ist archiviere. Als Archivierungsart habe ich azyklisch gewählt und will dies nun über eine Variable starten. Jetzt wollte ich die Variable bei änderung des Ausgabewertes meines E/A-Feldes setzen dann 500ms - 1 Sek warten, bis archiviert wurde, und dann die Variable wieder zurücksetzen.



    Christian

  6. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.299
    Danke
    545
    Erhielt 2.715 Danke für 1.962 Beiträge

    Standard

    Wir brauchten so etwas ähnliches in einem ActiveX, nicht einmal da konnte man Sleep nutzen, ohne daß das gesamte Scriptsystem sich schlafen legte. Als Ersatz habe ich dann von der SPS immer wieder das Script angestoßen, mir ein Return zurückgebenlasen, nochmals angestoßen, bis der richtige Wert zurückkam. (Ging um eine Fertigmeldung eines Druckers, auf die man ebend so nicht warten konnte).
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.299
    Danke
    545
    Erhielt 2.715 Danke für 1.962 Beiträge

    Standard

    Zitat Zitat von franzlurch Beitrag anzeigen
    Hi Ralle, Hi Vierlagig

    ich erklär die mal kurz für was ich das brauche, vielleicht hast du eine andere Idee. Und zwar will ich sowas wie die WinCC Option Audit realisieren. Ich hab diverse Parameter die ich mit loggen möchte wenn diese geändert werden. Dazu habe ich mir im TagLogging ein Archiv erstelle, worin ich den Namen der Variable, den alten sowie den neuen Wert der Variable und den Namen des Users der gerad eingeloggt ist archiviere. Als Archivierungsart habe ich azyklisch gewählt und will dies nun über eine Variable starten. Jetzt wollte ich die Variable bei änderung des Ausgabewertes meines E/A-Feldes setzen dann 500ms - 1 Sek warten, bis archiviert wurde, und dann die Variable wieder zurücksetzen.

    Christian
    Gibts vom Audit keine Rckmeldemöglichkeit, daß archiviert wurde? Mit der könnte man evtl. das Zurücksetzen anstoßen.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #8
    franzlurch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.10.2007
    Beiträge
    337
    Danke
    13
    Erhielt 6 Danke für 5 Beiträge

    Standard

    Hi Ralle,

    keine Ahnung. Hab das Audit Paket nicht. Ist zu teuer meint mein Chef soll Versuchen das ganze irgendwie so zu lösen.

  9. #9
    franzlurch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.10.2007
    Beiträge
    337
    Danke
    13
    Erhielt 6 Danke für 5 Beiträge

    Standard

    Hat vielleicht schon mal jemand sowas realisiert ohne das Optionspaket Audit zu nutzen? Und kann mir noch nen Tipp geben wie ich das ganze noch lösen könnte.


    Christian

  10. #10
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    einzige sinnvolle variante, die mir einfallen will, ist die anforderung und quittierung über die cpu...

    also ein bit für die anforderung hin, zeit ablaufen laufen, quittierungs-bit zurück ... nur mit der gleichzeitigkeit wirds bißchen komisch/kritisch ... aber wenn du das skript verzögerst kommts wohl auf selbe raus...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. Wartezeit Graph 5 wird übersprungen
    Von noppi im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 29.05.2010, 19:30
  2. WinCC Script -> VB Script
    Von Rdata im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.08.2008, 12:04
  3. Neues Projekt öffnen; lange Wartezeit
    Von richi999 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.02.2008, 15:21
  4. Wartezeit
    Von schmidbauerhansi im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 30.06.2007, 21:36
  5. WinCC 6.0 "Wartezeit"
    Von Heinz im Forum HMI
    Antworten: 1
    Letzter Beitrag: 12.10.2005, 12:14

Lesezeichen

Berechtigungen

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