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

Ergebnis 1 bis 4 von 4

Thema: Libnodave in SPS schreiben, ganze DB's lesen

  1. #1
    Registriert seit
    07.04.2009
    Beiträge
    19
    Danke
    46
    Erhielt 2 Danke für 2 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich beschäftige mich gerade mit Libnodave, da meine in VB6 geschriebene Visualisierung nun auch mit einer S7 kommunizieren soll. Mein altes OPC hat wunderbar mit der S5 115 944 funktioniert aber läuft natürlich nicht mit MPI. Jetzt soll endlich auf S7 gewechselt werden. Hardware ist da, S7 Programm ist fertig, VB6 Programm ist bis auf Libnodave fertig.

    Hardware:
    CPU 315-2DP
    Serieller Siemens MPI Adapter

    Das Auslesen mit Libnodave von einzelnen MW, EW, AW und DBW aus der CPU klappt inzwischen nach langem Üben einwandfrei, allerdings hakt bei mir die Umsetzung für das
    - Schreiben von einzelnen MW, EW, AW, und DBW
    - Lesen von kompletten DB's in einem Durchgang

    Da die Lösung sicherlich schon lange in VB6 realisiert ist, würde ich mich freuen, wenn jemand mir einen funktionieren VB6 Code hier reinstellen könnten, damit ich das Rad nicht nochmals erfinden muß.

    Die Suche nach Libnodave in Forum hat mich nicht so recht weiter gebracht.

    Schon mal schönen Dank im voraus für Eure Hilfe
    Gruß vom AirKlaus aus Hamburch
    Zitieren Zitieren Libnodave in SPS schreiben, ganze DB's lesen  

  2. #2
    Avatar von AirKlaus
    AirKlaus ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.04.2009
    Beiträge
    19
    Danke
    46
    Erhielt 2 Danke für 2 Beiträge

    Lächeln

    Nachtrag:

    ich habe noch ein wenig in der Doku gestöbert, programmiert und eine Lösung für das
    - Schreiben von MW, EW, AW, DB unter Libnodave
    gefunden.

    Fehlt nur noch das Lesen / Schreiben
    - von kompletten DB's

    Gruß vom AirKlaus aus Hamburch

  3. #3
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Die Testprogramme können mittels der Option --readout durchaus einen ganzen DB auslesen. Ob das sinnvoll ist, steht auf einem anderen Blatt. Es entspricht nämlich dem Laden desselben DBs aus der SPS in das PG. Zur Ausführung sind mehrere Anfragen an und Antworten von der Steuerung nötig, es ist also "langsam". Ferner müßtest du aus dem DB (mit Kopfinformation) die Nutzdaten "herausfischen".
    Eine optimale Geschwindigkeit erzielst du immer dann, wenn alle Daten mit einer Anforderung gelesen werden können. Die Menge ist dabei durch die PDU-Größe beschränkt (z.B. 222 Byte bei PDU-Größe 240 Byte).
    Am besten faßt du alle Daten, die häufig gelesen werden sollen, in einem DB zusammen. Das gilt prinzipiell auch für jede andere VISU oder OPC Server.

    daveReadBytes liest eine Folge von Bytes aus dem Speicher der SPS. Wenn die Größe des Blocks nicht ausreicht, muß ein nachfolgender Block gelesen werden. Auf diese Weise kann man auch den gesamten Inhalt eines DBs auslesen.
    Das Zerlegen eines Blocks in passende "Häppchen" wird bei daveReadManyBytes automatisch durchgeführt. Es setzt aber voraus, daß der Funktion daveReadManyBytes ein Zeiger auf einen vom Programm bereitgestellten Puffer übergeben wird. Hierin liegt bei .NET Anwendungen, ein zusätzliches Risiko, denn wenn man da Fehler macht, kann die Speicherverwaltung durcheinander kommen.
    Es mag auch möglich sein, daß in zukünftigen (oder aktuellen?) Versionen von .NET eine Referenz auf ein Array nicht mehr die Speicheradresse angibt. Dann könnten weder daveReadManyBytes noch daveReadBytes mit Angabe eines eigenen Puffers funktionieren.
    Insofern ist es sicherer, die Zerlegung selbst zu programmieren.

  4. Folgender Benutzer sagt Danke zu Zottel für den nützlichen Beitrag:

    AirKlaus (22.05.2009)

  5. #4
    Avatar von AirKlaus
    AirKlaus ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.04.2009
    Beiträge
    19
    Danke
    46
    Erhielt 2 Danke für 2 Beiträge

    Daumen hoch


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zottel,
    Danke für die schnelle und ausführliche Info. Ich werde mich dann nächstes Wochenende damit beschäftigen.

    Ich lese die DB's bei der S5 im Moment nur beim Programmstart ein und schreibe sie in eine JET.Datenbank. Das soll auch bei der S7 so bleiben. Somit gibt es kein tatsächliches Zeitproblem. Die JET.Datenbank wird bei Änderungen einzelner EW, AW, MW und DBW währen des Betriebes jeweils mit geändert. Dies ermöglicht mir auch Offline in der VISU herum zu Programmieren, da die Daten dann statt aus der SPS aus der JET.Datenbank eingelesen werden.

    Aber vielleicht gibt es da ja noch elegantere Lösungen?

    Gruß vom AirKlaus aus Hamburch

Ähnliche Themen

  1. Libnodave Strings schreiben/lesen
    Von Hocheck im Forum Hochsprachen - OPC
    Antworten: 14
    Letzter Beitrag: 04.12.2017, 15:09
  2. Libnodave C# - WORD und STRING aus S7 lesen/schreiben
    Von dolo280 im Forum Hochsprachen - OPC
    Antworten: 10
    Letzter Beitrag: 13.01.2011, 12:04
  3. Merkerwörter mit C# und Libnodave aus SPS lesen und schreiben
    Von Red-Sh4nks im Forum Hochsprachen - OPC
    Antworten: 14
    Letzter Beitrag: 04.06.2010, 15:10
  4. LibNoDave-Komponente DATE_AND_TIME lesen/schreiben
    Von marcengbarth im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 28.10.2009, 17:16
  5. Libnodave Daten lesen/schreiben
    Von Acidic im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.06.2008, 08:32

Lesezeichen

Berechtigungen

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