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

Ergebnis 1 bis 7 von 7

Thema: Datum vom letzten Laden ermitteln für konsistenten libnodave Zugriff?

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich greife per libnodave auf meine S7 zu und möchte vermeiden, von DBs zu lesen, die sich durch Übersetzen/Nachladen vielleicht geändert haben (Nummer, Struktur).

    Dazu könnte man z.B. den Zeitstempel der libnodave Konfiguration mit dem Ladezeitpunkt vergleichen und Zugriffe verbieten, wenn die libnodave Konfiguration veraltet ist.

    Ist es dazu möglich, im SPS Programm den Zeitpunkt des letzten Ladens (egal ob Gesamt/Delta) zu ermitteln? Wenn ja, wie?
    Zitieren Zitieren Datum vom letzten Laden ermitteln für konsistenten libnodave Zugriff?  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.792
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Den Zeitpunkt des Ladens kannst du nicht ermitteln. Aber den Zeitstempel der letzten Code- und Interface-Änderung, und eine Block-Prüfsumme. Die Werte ändern sich aber auch, wenn jemand nur den Startwert einer Variablen ändert, oder einen DB in der Länge erweitert. Dann würden die Zugriffe auf Absolutadressen immer noch passen, aber du verweigerst den Zugriff dann ohne Grund.

    Aber du kannst dir das ja mal ansehen und ausprobieren.
    Die Blockinformationen bekommst du bei libnodave mit der Funktion daveGetBlockInfo(). Diese Funktion füllt dir pro Baustein enie Struktur daveBlockInfo aus. Dort sind aber nicht alle Werte komplett aufgeschlüsselt.

    In daveBlockInfo.x5[2] und daveBlockInfo.x5[3] steckt die Bausteinprüfsumme.
    In daveBlockInfo.x3[8] bis x3[13] der Zeitstempel der letzten Codeänderung, in x3[14] bis x3[19] der Zeitstempel der Schnittstellenänderung.

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

    Standard

    Über Prüfsummen und Blockzeitstempel gehts natürlich auch, gute Idee. Wird getestet

    aber du verweigerst den Zugriff dann ohne Grund.
    Sicherheit geht vor.

  4. #4
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Du kannst ja aber auch den DB komplett auslesen und die Struktur mit einer gespeicherten Struktur vergleichen!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  5. #5
    Registriert seit
    15.01.2015
    Beiträge
    2
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich habe mir die Blockinformationen eines DB´s ausgelesen. Wie kann ich die Zeitstempel der daveBlockInfo.x3[8] bis x3[13] interpretieren.
    Ich bekomme z.B. die Werte 3,29,238,68,44,66

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.792
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Zitat Zitat von Ralf01 Beitrag anzeigen
    Ich habe mir die Blockinformationen eines DB´s ausgelesen. Wie kann ich die Zeitstempel der daveBlockInfo.x3[8] bis x3[13] interpretieren.
    Ich bekomme z.B. die Werte 3,29,238,68,44,66
    Das ist ein Siemens Spezialformat.

    Die ersten 4 Bytes als uint32 bedeuten die Anzahl der Millisekunden des Tages.
    Die nächsten 2 Bytes als uint16 bedeuten die Anzahl der Tage seit dem 1.1.1984.

    Beide Werte sind in Network Byteorder zu interpretieren.

    Bei deinen Werten komme ich damit auf:
    dez: 3,29,238,68,44,66
    hex: 03 1d ee 44 2c 42

    03 1d ee 44 = 52293188 msec = 14:31:33.188
    und
    2c 42 = 11330 Tage = 8.1.2015

  7. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    Ralf01 (16.01.2015)

  8. #7
    Registriert seit
    15.01.2015
    Beiträge
    2
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielen Dank,
    das hat mir sehr geholfen.
    Hier auch noch ein besonderer Dank an Libnodave, ist einfach genial.

    Gruß
    Ralf

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 04.12.2014, 11:38
  2. Antworten: 4
    Letzter Beitrag: 17.04.2013, 07:59
  3. Antworten: 3
    Letzter Beitrag: 16.01.2013, 12:38
  4. letzten Tag des Monats ermitteln
    Von roadrunner im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 16.08.2011, 12:44
  5. [Frage] - Mit LibNoDave DB Größe ermitteln?
    Von marcengbarth im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 31.08.2007, 13:52

Lesezeichen

Berechtigungen

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