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

Seite 1 von 6 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 54

Thema: S7 Datenkonsistenz bei HMI Kommunikation

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe mal ein paar Versuche bezüglich Datenkonsistenz bei der HMI Kommunikation gemacht. Die S7-1200 und die S7-1500 verhalten sich bei dem Einbinden der Daten wie eine S7-400 oder eine S7-300 mit aktivierter priorisierter BuB-Kommunikation. Das heißt, Kommunikationsdaten können auch mitten im Zyklus in den SPS Datenspeicher (Datenbausteine) eingebunden werden.

    Versuche habe ich mit einer S7-1214 mit Firmware V2.2 gemacht.

    1. Test
    =======
    Ein Testprogramm mit libnodave schreibt einen 200 Byte großen Block in die SPS (Transportgröße BYTE).
    Es wird abwechselnd das Bitmuster 0xa5a5... und 0x5a5a... geschrieben.
    Im SPS-Programm ist ein nicht optimierter DB mit einem Datenarray von Typ Word angelegt.

    Das Programm prüft dann auf Konsistenz mit:
    Code:
    FOR #i := 0 TO 98 BY 2 DO
      IF ("Datenbaustein_1".data[#i] XOR "Datenbaustein_1".data[#i +1]) <> w#16#ffff THEN
        #Inkonsistent := true;
      END_IF;
    END_FOR;
    Ergebnis:
    Ein Block der in eine PDU passt und mittels Transportgröße BYTE in die SPS geschrieben wird, landet NICHT konsistent im Speicher.


    2. Test
    =======
    Es wird öfters angemerkt, dass zur konsistenten Datenübertragung Rezepturen in WinCC flexible verwendet werden sollen.
    In WinCCflexible 2008 habe ich mir dazu ein Rezept mit 10 DWord Variablen angelegt, die fortlaufend im Speicher adressiert werden. 10 DWord Variablen können über das S7-Protokoll auf jeden Fall noch in einer PDU von 240 Bytes als einzelner Schreibbefehl verschickt werden.
    Dann habe ich zwei Datensätze angelegt. Einen mit abwechselnd 94741925 (0x05A5A5A5) und 173693530 (0x0A5A5A5A), einen Zweiten mit der anderen Reihenfolge. Das linke Nibble konnte nicht

    verwendet werden, weil WinCCflex diese Werte nicht als Eingabe erlaubt.

    Das Programm prüft dann auf Konsistenz mit:
    Code:
    FOR #i := 0 TO 8 BY 2 DO
      IF ("DB10DWord".data[#i] XOR "DB10DWord".data[#i + 1]) <> dw#16#fffffff THEN
        #Inkonsistent := true;
      END_IF;
    END_FOR;
    Ergebnis:
    WinCC flexible schreibt einen Datensatz im S7 Protokoll mit Daten von der Transportgröße Dword. Es wird also nicht ein großer Speicherblock geschrieben, sondern 10 einzelne Variablen.
    Wie nicht anders zu erwarten landet eine Rezeptur NICHT im Ganzen konsistent im Speicher.
    Noch ein Phänomen ist, dass WinCCflex nicht immer die 10 Dword in einer PDU schreibt, sondern in seltsam zufälligen Werten geteilt (d.h. mal 6/4, 8/2 usw.). Durch dieses Verhalten landen die Rezepturdaten sogar bei den alten 300er Steuerungen NICHT konsistent im Speicher.


    Bei meiner 1200er treten diese Effekte schon nach einigen wenigen Schreibbefehlen auf. Je kürzer das Gesamtprogramm, desto häufiger. Wenn nebenher noch der Online-Status beobachtet wird, quasi bei jedem Schreibbefehl.

    Erkenntnisse wie sich die 1500 oder eine entsprechende 300/400er verhalten habe ich noch nicht. Interessant wäre auch noch, ob zumindest die angegebene Transportgröße im S7-Protokoll konsistent im Speicher landet, oder ein Byte-Array zumindest an Word oder Doppelwortgrenzen.
    GGf. haben dann nämlich auch "optimierende" Kommunikationstreiber damit ein Problem, z.B. wenn eine Real-Zahl als Byte-Array geschrieben wird, und dieses nicht konsistent im Speicher landet.
    Zitieren Zitieren S7 Datenkonsistenz bei HMI Kommunikation  

  2. Folgende 3 Benutzer sagen Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    ducati (23.05.2015),rostiger Nagel (20.02.2015),Verpolt (21.02.2015)

  3. #2
    Registriert seit
    13.10.2007
    Beiträge
    12.031
    Danke
    2.785
    Erhielt 3.268 Danke für 2.156 Beiträge

    Standard

    Mit der Rezeptur, hätte ich auch nicht erwartet das es SPS-Zyklus Konsitent ist.
    Ich habe das immer so betrachtet das die Daten Konsitent sind, wenn die Rezeptur
    über den Status meldet das die Daten da sind und dann erst Konsitent.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  4. #3
    Avatar von Thomas_v2.1
    Thomas_v2.1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Ich hätte schon erwartet, dass zumindest die Daten einer PDU am Stück eingebunden werden. Das gilt ja nicht nur für HMI Kommunikation, sondern auch für Put/Get Kommunikation zwischen Steuerungen. Mal angenommen ich schicke einer anderen Steuerung einen Startbefehl und einen zugehörigen Sollwert, kann es sein dass diese mit einem falschen Wert startet. Zumindest für 1-2 Zyklen.

    Man angenommen es wird beim Einbinden ein Wert der über 4 Bytes geht zerstückelt, kann das zu komplett falschen Werten führen.

  5. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Mit libnodave war das aber auch schon bei 300-er SPS so, nicht konsistent.
    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

  6. #5
    Avatar von Thomas_v2.1
    Thomas_v2.1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Mit libnodave war das aber auch schon bei 300-er SPS so, nicht konsistent.
    Was denn für eine 300er, mit aktivierter priorisierter BuB Kommunikation?

    Mit einer IM151-CPU (was intern eine 300er ist) sind die Daten einer PDU immer konsistent. Zumindest habe ich heute 100.000 Schreibbefehle bei einem minimal kurzen Programm durchlaufen lassen, und es ist keine Inkonsistenz aufgetreten

  7. #6
    Registriert seit
    01.10.2006
    Beiträge
    9
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Mal angenommen ich schicke einer anderen Steuerung einen Startbefehl und einen zugehörigen Sollwert
    So was sollte nie gemacht werden.
    Dafür gibt es guten alten Handshake..

  8. #7
    Registriert seit
    13.10.2007
    Beiträge
    12.031
    Danke
    2.785
    Erhielt 3.268 Danke für 2.156 Beiträge

    Standard

    Zitat Zitat von kons Beitrag anzeigen
    So was sollte nie gemacht werden.
    Dafür gibt es guten alten Handshake..
    bei einen Sollwert kann ich mir ja noch gut vorstellen, das es Funktioniert.
    Wenn ich aber 100 - 200 Sollwerte schickt zb. bei einer Produktumstellung.
    Wie will man den Handshake erledigen, wenn der Handshake früher da ist
    als die Sollwerte.

    Dann fahren 89 Achsen auf 100 und 11 Achsen nach 200.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  9. #8
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Was denn für eine 300er, mit aktivierter priorisierter BuB Kommunikation?

    Mit einer IM151-CPU (was intern eine 300er ist) sind die Daten einer PDU immer konsistent. Zumindest habe ich heute 100.000 Schreibbefehle bei einem minimal kurzen Programm durchlaufen lassen, und es ist keine Inkonsistenz aufgetreten
    Kenn ich nur bei der 318er, die ist aber eine verkappte 400er. Die 300er kommuniziert am Systempunkt (konsistent), die 400er "dauernd" (inkonsistent).
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  10. #9
    Registriert seit
    13.10.2007
    Beiträge
    12.031
    Danke
    2.785
    Erhielt 3.268 Danke für 2.156 Beiträge

    Standard

    Zitat Zitat von Rainer Hönle Beitrag anzeigen
    Kenn ich nur bei der 318er, die ist aber eine verkappte 400er. Die 300er kommuniziert am Systempunkt (konsistent), die 400er "dauernd" (inkonsistent).
    Rainer, was ist den der Systempunkt?
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  11. #10
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von rostiger Nagel Beitrag anzeigen
    Rainer, was ist den der Systempunkt?
    Helmut, der Zeitpunkt nach dem Ende des einen und vor dem Anfang des nächsten OB1-Aufrufs. Dort werden auch die PAEs und PAAs aktualisiert.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

Ähnliche Themen

  1. TIA S7-1500 HMI-Kommunikation (Zykluskontrollpunkt)
    Von steuerung im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 08.01.2014, 13:39
  2. Datenkonsistenz Bereichszeiger Datum/Uhr
    Von Perfektionist im Forum HMI
    Antworten: 6
    Letzter Beitrag: 26.06.2012, 16:44
  3. Datenkonsistenz von AG_RECV
    Von oid im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 19.07.2009, 18:42
  4. Datenkonsistenz in DB's sicherstellen
    Von SPS-Dummy im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 05.11.2007, 11:55
  5. Kommunikation Möller SPS-HMI???
    Von Anonymous im Forum Programmierstrategien
    Antworten: 0
    Letzter Beitrag: 29.09.2005, 10:37

Lesezeichen

Berechtigungen

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