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

Ergebnis 1 bis 5 von 5

Thema: VB Script, Variablen unter Script ablauf aktualisieren

  1. #1
    Registriert seit
    28.09.2016
    Beiträge
    3
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich lese hier schon eine weile mit und habe nun eine Frage zu der ich noch keine Antwort durch die Suche gefunden habe.
    Ist es denn irgendwie möglich während ein Skript abläuft eine bestimmte Variable, oder auch alle angelegten Variablen zu aktualisieren, ohne ein Rezept anzulegen?

    Hintergrund ist dieser:

    ich habe ein Script das aus einem DB eine Variable anzahl an Bits ausliest,
    Der DB und wo die Bits liegen ist allerdings Variabel einzugeben, deshalb sind in der Variable, die auf die Steuerung zum lesen zugreift wiederum Variablen enthalten. (Siehe Bild)

    Unbenannt.jpg

    -> somit kann die Variable nicht in einem Rezept verwendet werden.
    Der Byte_Stand wird jedoch in dem Skript hochgezählt, also müssen auch die Variablen aktualisiert werden.

    Kennt dazu jemand eine Lösung?

    Vielen dank schon mall im Voraus.
    Zitieren Zitieren VB Script, Variablen unter Script ablauf aktualisieren  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.410
    Danke
    799
    Erhielt 2.770 Danke für 2.237 Beiträge

    Standard

    Ohne Rezeptur wird das ein Glücksspiel, z.B. könnte man die Variablen zweimal lesen mit einer Pause von ein paar Sekunden dazwischen und hoffen, daß beim zweiten mal alle Variablen aktualisiert wurden.

    Damit man mit nur einer kleinen Rezeptur auskommt: Das HMI könnte der Steuerung mitteilen, welchen Datenbereich sie lesen will und die Steuerung kopiert den Bereich in einen Übergabepuffer. Der Übergabepuffer kann vom HMI als Rezept eingelesen werden (GetDataRecordTagsFromPLC). Da bekommt man eine Information, wann das einlesen abgeschlossen ist.
    Hier z.B. wird ein Array aus Structs über nur eine Rezeptur ins HMI gelesen: Prozessdaten einer CPU 317 auf Speicherkarte eines TP277 6'' speichern

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    fabi012 (07.10.2016)

  4. #3
    fabi012 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.09.2016
    Beiträge
    3
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für die Antwort!
    das ist mir jedoch nicht möglich, da ich dann meiner Meinung nach eine Übergabevariable erstellen müsste, der ich eine bestimmte Größe zuteilen müsste. Das will ich aber offen lassen.
    Ich habe es nun so gemacht, dass ich pro Script durchlauf jeweils nur eine Variable (Bool, Real....) auslese, und den Zugriffsbereich der Oben genannten Variable verändere.
    Durch einen Trigger in der SPS wird das Script jede 0,4 Sec dann aufgerufen und ließt die nächste Variable aus, bis die anzahl an auszulesenen Variablen erreicht wird.
    Jedes mal wenn ich aus dem Script springe kann sich dann die Variable aktualisieren.

  5. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.410
    Danke
    799
    Erhielt 2.770 Danke für 2.237 Beiträge

    Standard

    Wo, wofür bzw. wann verwendest Du den aktualisierten Wert der Variablen?

    Hast Du Dir da sowas wie ein "Status Variable"-Bild gebastelt, wo man die Adresse (DB, Offset) einer Variable frei eingeben kann und dann der Wert der Variable angezeigt wird? Oder hast Du ein "gemultiplextes" Bild für mehrere Anlagenteile, wo irgendwie der Multiplex-Index bzw. die -Adresse verändert wird, abhängig davon welcher Anlagenteil dagestellt werden soll? Da braucht man kein Skript um die Variablen zu aktualisieren, man muß nur die adress-gemultiplexten Variablen in einem Bild (z.B. dem Bild mit der Adresseingabe) verwenden, z.B. als Ausgabefeld, dann wird die Aktualisierung der Variablen automatisch angestossen.

    Wenn Du die Variablen nicht in einem Bild einbauen willst: Du könntest in dem Skript auch in einem einzigen Durchlauf auf alle Variablen mit dem selben Byte_stand oder auf überhaupt alle Variablen einen Lesezugriff machen, dadurch wird die (einmalige) Aktualisierung der Variablen angestossen. Ein paar Sekunden später könntest Du mit hoher Wahrscheinlichkeit die aktualisierten Werte verwenden.

    Ob Deine Lösung zuverlässig funktioniert kommt es wohl nicht drauf an?
    WinCC flexible Skript Daten archivieren: Aktualisierungszeit der Variablen
    und
    Zitat Zitat von Fluffi Beitrag anzeigen
    falls es jmd interessiert: Seit ein paar Wochen ist nun die Skript-Lösung mit Wartezeit+"Dummy-Variablen einlesen" am Laufen und ich kann bis jetzt keine Inkonsistenzen mehr feststellen. Wie bereits geschrieben, die Variablen sind nicht auf "Zyklisch fortlaufend" gestellt, der Bus wird also nicht ständig belastet. Für meinen Teil ist die Archivierung so wie sie jetzt läuft absolut ok. Wer eine wirklich bombensichere Lösung haben will, sollte allerdings die von PN/DP bevorzugte Lösung mit Rezpeten verweden.
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    fabi012 (07.10.2016)

  7. #5
    fabi012 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.09.2016
    Beiträge
    3
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Jetzt melde ich mich noch einmal zurück,
    das Skript habe ich benötigt um einen DB auszulesen und als .csv datei abzulegen. Da der DB aber auswählbar sein soll gibt man in einer anderen csv den aufbau des DB`s an
    (z.b. Bool; Real; Int.....)
    Das Skript arbeitet dann die Spalten durch und schreibt in eine CSV Datei die ausgelesenen werte. Da ich aber nicht zu viele Smarttags verwenden möchte habe ich nur eine Variable mit der Steuerung verbunden.

    Je nach Vorangegangener Variable wird auf die Variable ein Offset daraufgesetzt.

    Lösung:

    ich habe es nun so gemacht das in der Quell csv auch die Anzahl an Variablen steht.
    Wenn das Script angestoßen wird wird nur eine Variable ausgelesen und dann das Skript verlassen.
    Durch die Steuerung wird eine Variable nach 0,5s invertiert die wiederum das Skript anstoßen. Dies wird so oft gemacht bis die Anzahl an Variablen ausgelesen wurde.
    In der Zeit in der das Skript nicht abgearbeitet wird, wird die Variable aktualisiert.

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 18.08.2015, 19:09
  2. feststellen, ob datei geöffnet unter visual basic script
    Von mertens2 im Forum Hochsprachen - OPC
    Antworten: 6
    Letzter Beitrag: 30.03.2011, 10:57
  3. Antworten: 11
    Letzter Beitrag: 17.07.2009, 11:09
  4. MsgBox unter C-Script OnTop halten
    Von Krumnix im Forum HMI
    Antworten: 2
    Letzter Beitrag: 29.08.2007, 14:58
  5. Popup-Fenster unter ProTool (Script)
    Von Anonymous im Forum HMI
    Antworten: 8
    Letzter Beitrag: 12.01.2004, 18:11

Lesezeichen

Berechtigungen

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