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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: [WinCC flex] Werte aus DB-Array in Datei schreiben

  1. #11
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von MrChiliCheese Beitrag anzeigen
    Mal angenommen ich schreibe den Index in den DBXX.DBW0.
    Der FC rechnet rum und packt den Index nochmal in den DBXX.DBW20.
    Die Daten landen im HMI und ich loope solange im Skript, bis ich meinen Index im DBW20 sehe. Danach lese ich die Daten und erhöhe meinen Index usw.
    Das geht so nicht.
    1.) Man macht es nicht in einem Skript mit irgendwelchen Schleifen Zeit zu verbraten. Wenn dein Array 100 Datensatze hält dauert das Lesen mit dem Adressmultiplexen seine Zeit. Und so lange wäre das Panel nicht bedienbar. Außerdem ist es schlechter Stil.
    2.) Auch wenn du in der einen Datensatz-Variable den Index von der SPS zurückgemeldet bekommst, heißt das noch lange nicht dass auch alle anderen Variablen aus der Struktur schon aktualisiert wurden. Es ist durchaus möglich dass die Daten des Datensatzes in verschiedenen Telegrammen abgefragt werden. D.h. die Daten sind unter Umständen nicht konsistent.

    Wenn ich die Aufgabe hätte, würde ich über einen Datensatz eine Blockprüfsumme zu bilden.

    Dazu bildet einmal die SPS eine Blockprüfsumme über den aktuell angefragten Datensatz. Die WinCC flexible Runtime liest die SPS-Prüfsumme, und berechnet aus dem Datensatz die eigene Prüfsumme. Stimmen beide Prüfsummen überein, so ist der ganze Datensatz aktuell und kann exportiert werden.

    Damit man keine Warte-Schleifen benötigt kannst du Variablen-Änderungs-Skripte anlegen. Diese kann man an eine Variable "hängen" und werden bei Änderung dieser angestoßen. Konkret würde sich hierfür die SPS-Blockprüfsumme anbieten, denn diese wird ja in der SPS berechnet. Die Zuweisung des Ergebnisses kannst du in der SPS ggf. um einen Aktualisierungszyklus (z.B. 1s) verzögern. Dann kannst du fast sicher sein dass die Daten dann schon komplett sind. Wenn nicht, dann wird der Vorgang für den aktuellen Datensatz nochmal angestoßen.

    Etwas Fehlerhandling drumherum, und dann sollte das so funktionieren.


    Vielleicht geht es mit Rezepturen aber auch. Ich habe die immer umgangen, weil man oft auf Probleme stößt damit doch nicht lösbar sind.

  2. #12
    Registriert seit
    27.03.2012
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke für die Hinweise zur Programmierart - dass das Panel stoppt wusste ich z.B. nicht.

    Find es klingt alles dehr kompliziert bis aufwendig, nur um ein paar Daten aus der SPS im HMI zu schreiben. Ich kann doch nicht der erste sein, der mit einer solchen Anforderung kommt, oder?

    Was wäre denn mit einem String? Werte meines Arrays in ein String schreiben, senden. Der String wird komplett übertragen und ich kann auf änderung ein script aufrufen, dass den String in die datei schreibt.
    Die Datei hinterher am PC auszuwerten und präsentieren wird kein Problem...

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Beim Lesen von "Rezeptur"-Datensätzen kann man sich informieren lassen oder auch ein Ereignis auslösen lassen, wann der komplette Datensatz aus der SPS gelesen ist. Rezepturen sind ja typisch ARRAY OF STRUCT.

    http://www.sps-forum.de/showthread.php/47637-Prozessdaten-einer-CPU-317-auf-Speicherkarte-eines-TP277-6-speichern
    Schau Dir mal das Konzept Beitrag #12 ff. an.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #14
    Registriert seit
    27.03.2012
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nachdem ich mir das alles mal angesehen habe, werde ich es eine Nummer einfacher machen. Die Prozessdaten lasse ich ereignisgesteuert direkt in die Datei schreiben. Ist zwar nicht das optimale, aber nun ja - für ein nict-to-have-feature mache ich auch mal Abstriche!

Ähnliche Themen

  1. WinCC Flex Werte in ein Array schreiben
    Von Neuling74 im Forum HMI
    Antworten: 15
    Letzter Beitrag: 30.12.2015, 00:14
  2. Antworten: 11
    Letzter Beitrag: 01.09.2011, 20:24
  3. Antworten: 0
    Letzter Beitrag: 25.02.2011, 12:29
  4. Antworten: 0
    Letzter Beitrag: 06.03.2008, 12:00
  5. Antworten: 3
    Letzter Beitrag: 13.10.2005, 11:53

Lesezeichen

Berechtigungen

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