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

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

Thema: Aktualisierung von Variablen HMI <-> SPS

  1. #1
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.526
    Danke
    61
    Erhielt 256 Danke für 216 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Forum,

    ich habe was Neues ausprobiert und es passiert nicht ganz das, was ich erwarte.

    TIA V13SP1
    CPU 1212C
    KTP700 BASIC

    Am HMI habe ich an eine Taste 2 Ereignisse projektiert, die beim Loslassen der Taste ausgeführt werden sollen.

    1. Bit setzen
    2. Variable setzen. (Zeiger mit einer festen Zahl beschreiben)

    Das Bit startet den Automatikbetrieb und die Variable ist ein Zeiger für die Programm-Nummer.
    Beide Variablen haben einen Erfassungszyklus von 100ms.

    Auf der SPS-Seite startet die Flanke des Tastenbits eine Ablaufschrittkette und setzt ein Bit zum Lesen aus dem Programm-DB.
    Mit diesem Bit lade ich mit einem MOVE-Befehl eine Struktur aus dem Programm-DB gemäß dem Wert im Zeiger, der zu der Taste projektiert wurde.
    Der Inhalt wird in einen anderen DB kopiert, den ich im Ablauf als "Aktual-DB" nutze.
    Erst nach Ausführung des MOVE-Befehls wird dieses Bit wieder zurückgesetzt.
    Die Ablaufschrittkette wartet darauf, dass dieses Bit aus ist um Überschneidungen zu verhindern.
    Trotzdem wird sporadisch (etwa 1 von 10 Versuchen) nicht das richtige Programm geladen, sondern der Ablauf startet mit dem zuletzt gewählten Programm.

    Ich kann mir das nur so erklären, dass auf der SPS-Seite manchmal das Tasten-Bit schon aktualisiert wird, der zugehörige Zeiger aber nicht.
    Kennt jemand dieses Phänomen?
    Was kann ich tun um sicherzustellen, dass der Zeiger passt wenn das Tastenbit kommt?

    Gruß

    Chris
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.
    Zitieren Zitieren Aktualisierung von Variablen HMI <-> SPS  

  2. #2
    Registriert seit
    14.01.2015
    Beiträge
    953
    Danke
    277
    Erhielt 159 Danke für 143 Beiträge

    Standard

    Hallo,
    vielleicht reicht es schon, zuerst die Variable zu setzen und dann erst das Bit, also die Funktionen, welche an der Taste angehängt sind, tauschen.

    Mit Grüßen

  3. #3
    Tigerente1974 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.526
    Danke
    61
    Erhielt 256 Danke für 216 Beiträge

    Standard

    Hallo,

    danke für die Antwort. Ich hab auch schon überlegt, an das Ereignis Drücken den Zeiger zu koppeln, und an das Ereignis Loslassen das Bit.
    Da ich den "Fehler" aber nicht sicher reproduzieren kann, möchte ich es gern genauer wissen.
    Ich hoffe auf ähnliche Erfahrungen wie man das "richtig" macht.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  4. #4
    Registriert seit
    14.01.2015
    Beiträge
    953
    Danke
    277
    Erhielt 159 Danke für 143 Beiträge

    Standard

    Ja, ich verstehe, wenn etwas nur sporadisch passiert, ist das ärgerlich, weil man sich nie drauf verlassen kann.
    Etwas aufwändiger könnte man es mit einem kleinen Skript machen:
    Taste drücken => löst Skript aus
    Skript schreibt neue Nummer zu SPS und sendet ein Bit "neuer Wert wurde gesendet"
    SPS quittiert und schreibt zum Panel "neue Nummer wurde gelesen",
    jetzt setzt das Skript das Übernahmebit und die SPS wertet es aus und setzt es selber zurück.

    Ein Handshakeverfahren. Eleganter wäre natürlichm wenn es mit dem tauschen der beiden Variablen
    zuverlässig funktioniert. Schon einmal probiert?

    Mit Grüßen

  5. #5
    Tigerente1974 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.526
    Danke
    61
    Erhielt 256 Danke für 216 Beiträge

    Standard

    Von der Idee her auf jeden Fall nicht verkehrt.
    Die Skriptlösung geht aber schon mal nicht mit meinem BASIC-Panel. Das kann keine Skripte.

    Das Vertauschen werde ich mal Probieren. Auch das mit den unterschiedlichen Ereignissen Drücken / Loslassen.
    Wäre eleganter.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  6. #6
    Registriert seit
    14.01.2015
    Beiträge
    953
    Danke
    277
    Erhielt 159 Danke für 143 Beiträge

    Standard

    Ja, wenn das mit dem vertauschen oder beim drücken Wert setzen und beim loslassen "Übernehmen" wäre
    natürlich schon besser weil einfacher und verständlicher. Es wäre nett, wenn du zurückmeldest, wie es sich
    nach dem vertauschen verhält. Ich denke dies ist für mehrere interessant.

    Mit Grüßen

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    10.086
    Danke
    838
    Erhielt 2.971 Danke für 2.395 Beiträge

    Standard

    2 Variablen ohne Handshake in bestimmter Reihenfolge in die SPS schreiben wird nicht 100% sicher funktionieren, vor allem, wenn da auch noch Kommunikationsstörungen auftreten können oder wenn der Kommunikationstreiber womöglich auch noch "optimiert".
    Bei mehreren Variablen braucht's ein Handshake (was selbstgebasteltes oder eine fertige Rezeptur-Funktion).

    Einfacher: Versuche es mit nur 1 Variable (A) oder bastel die beiden Variablen zusammen in nur eine Variable (B). Dann kann beim Schreiben in die SPS kein Zeitunterschied auftreten:

    A) vergleiche die vom HMI geschriebene Nummer (Dein "Zeiger") mit einer zum letzten MOVE gespeicherten Nummer. Wenn die HMI-Nummer sich ändert, dann MOVE in den Arbeits-DB und starte den Ablauf.

    B) bastel nur Dein Startbit in die Anforderungsnummer, z.B. Nummer 0..127 + Startbit * 128, oder Nummer 0..9999 + Startbit * 10000


    Zitat Zitat von Tigerente1974 Beitrag anzeigen
    Auf der SPS-Seite startet die Flanke des Tastenbits eine Ablaufschrittkette und setzt ein Bit zum Lesen aus dem Programm-DB.
    Mit diesem Bit lade ich mit einem MOVE-Befehl eine Struktur aus dem Programm-DB gemäß dem Wert im Zeiger, der zu der Taste projektiert wurde.
    Der Inhalt wird in einen anderen DB kopiert, den ich im Ablauf als "Aktual-DB" nutze.
    Erst nach Ausführung des MOVE-Befehls wird dieses Bit wieder zurückgesetzt.
    Die Ablaufschrittkette wartet darauf, dass dieses Bit aus ist um Überschneidungen zu verhindern.
    Warum so kompliziert? Läuft der MOVE asynchron zur Schrittkette, d.h. dauert der MOVE länger als ein Zyklus oder sind der MOVE und die Schrittkette in verschiedenen Tasks (OBs)?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    Tigerente1974 (12.09.2016)

  9. #8
    Tigerente1974 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.526
    Danke
    61
    Erhielt 256 Danke für 216 Beiträge

    Standard

    Hallo Harald,

    die Programmverwaltung und der Ablauf sind in unterschiedlichen Bausteinen. Es gibt nur eine Task.

    Ich hab das mit dem Bit mal reingebastelt um Fehler ausschließen zu können.

    Mit den 2 Variablen fand ich das ganz transparent. Wenn ich da jetzt einen handshake drum herum bauen muss, gefällt mir die Lösung nicht mehr so sehr.
    Variante A gefällt mir ganz gut, klappt auch nicht ganz ohne Umwege, weil die Nummer sich nicht ändert wenn der Bediener das gleiche Programm noch einmal startet.
    Ich werde das so anpassen, dass die SPS den Zeiger von der Taste auf 0 initialisiert, wenn die Wertänderung erkannt wurde.

    Danke für die Antwort.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  10. #9
    Registriert seit
    01.08.2013
    Ort
    63571
    Beiträge
    288
    Danke
    18
    Erhielt 52 Danke für 50 Beiträge

    Standard

    Was wäre wenn du die Daten nach jeder Bearbeitung löschst?

    Und erst einen neuen Vorgang startest nachdem beide Variablen erlaubte Werte beinhalten?
    Nur dass man etwas schon immer so gemacht hat heißt nicht dass es richtig ist, man kann eine Sache auch ein Leben lang falsch machen.

  11. #10
    Tigerente1974 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.526
    Danke
    61
    Erhielt 256 Danke für 216 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich denke der Aufwand dafür wäre ähnlich groß, wie die jetzt von mir angedachte Lösung.
    Ich werde das mal ausprogrammieren und schauen wie mir der Code gefällt
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 20.01.2017, 13:38
  2. Antworten: 2
    Letzter Beitrag: 23.08.2013, 11:43
  3. Antworten: 5
    Letzter Beitrag: 02.08.2012, 09:45
  4. Darstellung von Real-Variablen im HMI
    Von dietere im Forum HMI
    Antworten: 1
    Letzter Beitrag: 14.01.2008, 23:14
  5. Austausch von Variablen SPS - HMI
    Von CrazyCat im Forum HMI
    Antworten: 2
    Letzter Beitrag: 23.06.2006, 13:45

Lesezeichen

Berechtigungen

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