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

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

Thema: Skript takten

  1. #1
    Registriert seit
    11.02.2009
    Beiträge
    24
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    vielleicht kann mir wer helfen. Ich haben ein skript in WinCC flexible, welches Werte archiviert.
    Jetzt würde ich gerne das skript einschalten und dann soll es z.B. 200 Werte speichern. Das Problem ist diese Werte sollen nur jede Sekunde archiviert werden.
    Habe jetzt mit einigen Schleifen schon rum experimentiert und mir auch den Taktmerker aus der CPU geholt, aber irgendwie will das Programm noch nicht so ganz wie ich will.

    Vielleicht hat das schon mal wer gemacht oder evnt. eine Idee dazu?

    Vielen Dank schon mal..
    Zitieren Zitieren Skript takten  

  2. #2
    Registriert seit
    17.06.2010
    Ort
    nähe Memmingen
    Beiträge
    610
    Danke
    93
    Erhielt 116 Danke für 100 Beiträge

    Standard

    ich hab bei mir bei verbindungen den bereichszeiger "koordination" aktiviert.
    dieser hat ein taktbit (.2) das hab ich mir wiederum als variable "takt" angelegt.
    zudem hab ich eine zweite bit-variable "fl_hm" (intern) angelegt, die ich als flankenhilfsmerker verwende.

    im script steht folgendes:

    if takt=1 and fl_hm = 0 then
    ... (hier dein code, der bei jeder pos. flanke von takt einmalig ausgeführt wird)
    end if
    fl_hm = takt

    diese script habe ich an die variable "takt" unter ereignisse - wertänderung
    eingetragen

    damit wird bei jedem takt das script einmal kurz aufgerufen. du kannst auch jedes andere taktbit in der sps verwenden um andere zeiten zu erreichen.

  3. Folgender Benutzer sagt Danke zu tnt369 für den nützlichen Beitrag:

    KB78 (30.07.2010)

  4. #3
    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 KB78 Beitrag anzeigen
    ... Habe jetzt mit einigen Schleifen schon rum experimentiert und mir auch den Taktmerker aus der CPU geholt, aber irgendwie will das Programm noch nicht so ganz wie ich will ...
    Hallo,
    mit dieser Aussage kann ich gar nichts anfangen ...
    Was möchtest du denn das passiert und was passiert wirklich ?
    Wie wäre es, wenn du das Script mal posten könntest ?

    Und ... wenn du einen 1-Sekunden-Taktmerker als Trigger nehmen willst, dann sollte dieser mindestens mit 0.5 Sekunden-Raster aktualisiert werden.

    Gruß
    Larry

  5. #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

    jede sek 200 variablen schreiben ist auch nicht wirklich empfehlenswert.
    weiterhin sollte man beachten, das das script die vars nicht wirklich aus der steuerung liesst. d.h. das du nicht unbedingt die aktuellen werte hast.
    das kannst du nur über eine rezeptur kösen und den status der rezeptur auswerten
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. #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

    @Volker:
    damit (Rezeptur) lösst du dann a´ber auch nicht das Problem mit der Daten-Konsistenz - da könnte ich ein Buch drüber schreiben ...

  7. #6
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Also Ich habe mir dafür ja extra meinen protokoller geschrieben...

    Habe das früher auch über flexible gemacht, aber da gabs auch immer mal wieder Probleme. Auch ist es immer total lahmarschig gewesen.
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Inkonsitenz...  

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

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    @Volker:
    damit (Rezeptur) lösst du dann a´ber auch nicht das Problem mit der Daten-Konsistenz - da könnte ich ein Buch drüber schreiben ...
    sicher???
    mach ich hier doch mit teils 1000 vars und mir ist bisher noch nie ein fehler aufgefallen
    so mach ich das
    [PHP]
    Call PtFct.Datensatz_SPS_nach_Variablen(1, Rueckgabe_Rezept_1)
    While Rueckgabe_Rezept_1 =2 'wenn Rueckgabewert =2 ist die Funktion noch nicht beendet
    Wend
    If Rueckgabe_Rezept_1 = 4 Then
    'Call PtFct.Systemmeldetext_anzeigen("Rezeptur geladen")
    End If
    [/PHP]
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  9. #8
    KB78 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.02.2009
    Beiträge
    24
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    jede sek 200 variablen schreiben ist auch nicht wirklich empfehlenswert.
    weiterhin sollte man beachten, das das script die vars nicht wirklich aus der steuerung liesst. d.h. das du nicht unbedingt die aktuellen werte hast.
    das kannst du nur über eine rezeptur kösen und den status der rezeptur auswerten

    Ne so war das nicht gemeint. Nur das wir uns nicht falsch verstehen. Ich will jede Sekunde (oder 0,5s das kann ich mir ja definieren wie ich will, archivieren)

    Was tnt369 geschrieben hat passt auch soweit. Mein code sieht so aus:
    ________________________________________________________________
    If Taktmerker = 1 & Hilfsvariable = 0 Then

    fs.WriteLine(CStr(Nummer) & ";" & CStr(Now) & ";" & Second(Now) & ";" & CStr(Wert_1) & ";" & CStr(Wert_2))
    End If

    Hilfsvariable = Taktmerker
    _________________________________________________________________

    Es werden jetzt Wert_1 und Wert_2 in jeder Sekunde in das Archiv geschrieben ...was schon mal super ist

    Jetzt habe ich nochmal versucht, das ganze zu starten. Und einfach ein Startbit in die if Anweisung geschrieben. Nur das funktioniert leider noch nicht so richtig. dh. er schreibt mir gar keine Werte ins Archiv

    der code sieht dann einfach nur so aus
    _________________________________________________________________
    If Taktmerker = 1 & Hilfsvariable = 0 & Start Then (oder Start = 1)

    fs.WriteLine(CStr(Nummer) & ";" & CStr(Now) & ";" & Second(Now) & ";" & CStr(Wert_1) & ";" & CStr(Wert_2))
    End If

    Hilfsvariable = Taktmerker
    _________________________________________________________________

    Taktmerker: ist bei mir eine Variable in WinCC welche direkt mit dem Taktmerker der CPU verbunden ist

    Start: ist einfach ein Bit welches (zum testen) in WinCC gesetzt oder rückgesetzt wird.

    Vielen dank für das feedback ..und schönes we

  10. #9
    KB78 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.02.2009
    Beiträge
    24
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Jetzt gehts

    Das "Start" Signal muss ich in eine extra Schleife packen, also

    if Start Then

    if ...
    (Anweisung)
    End if

    End if

    Da haben sich wahrscheinlich nur die Datentypen nicht miteinander vertragen.

    Vielen Dank cu

  11. #10
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    wenn du es so machst wie folgt dann funktioniert es auch in dewr ursprünglichen Version :
    Code:
    If Taktmerker = 1 AND Hilfsvariable = 0 AND Start Then
     
    fs.WriteLine(CStr(Nummer) & ";" & CStr(Now) & ";" & Second(Now) & ";" & CStr(Wert_1) & ";" & CStr(Wert_2)) 
    End If 
     
    Hilfsvariable = Taktmerker
    Gruß
    Larry

Ähnliche Themen

  1. Foerderband takten
    Von roadrunner im Forum Antriebstechnik
    Antworten: 14
    Letzter Beitrag: 05.04.2015, 14:00
  2. VBS-Skript
    Von johnij im Forum HMI
    Antworten: 7
    Letzter Beitrag: 06.06.2008, 14:16
  3. Zähler in einem bestimmtem Bereich takten?
    Von tino2512 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 25.09.2007, 13:32
  4. Durchschnitt von 10 Takten
    Von dimo_77 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.07.2007, 14:08
  5. Vb Skript
    Von Reblaus im Forum HMI
    Antworten: 6
    Letzter Beitrag: 23.10.2005, 11:26

Lesezeichen

Berechtigungen

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