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

Seite 3 von 8 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 73

Thema: Verwendung DotNetSiemensPLCToolBoxLibrary von Jochen Kühner

  1. #21
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von hanjo Beitrag anzeigen
    1. Danke für den Test meines Testprogrammes

    Ich werde es am Montag nochmals ausprobieren.
    Jo schreib mir dann obs ging!

    Zitat Zitat von hanjo Beitrag anzeigen
    2. BCD-Zahlen

    Ich habe nur quer Beet alle Varianten deiner DLL erprobt.
    Selber hab ich sie noch nicht benötigt - also lass es so wie es ist.
    Zu spät, nun hab Ichs schon geändert! Und wenns drinn ist solls ja auch richtig sein!

    Zitat Zitat von hanjo Beitrag anzeigen
    3. Und nun doch noch eine Frage

    Wie due in meinem Testprogramm vieleicht bemerkt hast, habe ich den Aufruf und das Einlesen einer Symboldatei mittels deiner DLL bereits integriert.
    Funktioniert wunderbar.
    Nun meine Frage:
    Die Rückgabe eines BlockTags ist mir auch gelungen.
    Ist es möglich die Auflistung der in einem Datenbaustein (Block) enthaltenen Tags heranzukommen?
    Bis jetzt ist es mir immer nur gelungen einen TAG des Blocks zu lesen.
    Ja das geht! Nutze Ich z.B. in ToolBoxForSiemensPLCs um Datenbausteinwerte Online anzuschauen.

    Beispielcode:

    Code:
    S7DataBlock myBlock = woher auch immer...
    List<S7DataRow> tmpLst = S7DataRow.GetChildrowsAsList(myBlock.Structure);
    List<PLCTag> valueList = S7DataRow.GetLibnoDaveValues(askLst);
    Hier wandelst du erstmal die Hirachische Struktur des DBs in eine flache Liste um (tmpLst) und dann Wird davon eine Liste von PLCTags erstellt (valueList )
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  2. #22
    hanjo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.10.2010
    Beiträge
    28
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Jochen

    Dein Beispielcode ist sehr interessant:

    Wie kann ich den S7DataBlock myBlock aus einem Offlineprojekt versorgen (laden) ?

    Die zweite und dritte Zeile deines Codes ist eindeutig - in VB lauten sie wohl:

    Dim myBlock As New S7DataBlock()
    Dim tmpList As New List(Of S7DataRow)
    Dim valueList As New List(Of PLCTag)


    tmpList = S7DataRow.GetChildrowsAsList(myBlock.Structure)
    valueList = S7DataRow.GetLibnoDaveValues(tmpList

    Wie aber kann die "myBlock" Variable versorgen ?

    z.B. myBlock=Projectfiles.SelectProjectPart. - wie?


    Dankbar für eine Antwort - hanjo
    Zitieren Zitieren Noch ne Frage  

  3. #23
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    In deinem Code kannst du dir das New sparen:
    Code:
    Dim myBlock As New S7DataBlock()
    Dim tmpList As New List(Of S7DataRow)
    Dim valueList As New List(Of PLCTag)
    
    
    tmpList = S7DataRow.GetChildrowsAsList(myBlock.Structure)
    valueList = S7DataRow.GetLibnoDaveValues(tmpList)
    Da du später den variablen ja eine neue Instanz zuweist, sonst wird unötigerweise eine Instanz erzeugt!

    Die Funktion Projectfiles.SelectProjectPart gibt es für einen datablock noch nicht (könnte Ich aber einbauen.). Du kannst aber mit Projectfiles.SelectProjectPart.SelectBlocksOfflineFolder eine Instanz von BlocksOfflineFolder bekommen aus der kannst du mit readPlcBlocksList() die enthaltet Bausteine auflisten, und mit GetBlock bekommst du dann auch den Block (wenn es ein S7-DB ist als S7DataBlock Instanz!)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

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

    Standard

    @hanjo:

    Hat das mit dem Lesen und Schreiben nun funktioniert?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  5. #25
    hanjo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.10.2010
    Beiträge
    28
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Jochen

    Ich habe das Lesen und Schreiben mit der Version 74916 probiert und deiner neuen umbenannten libnodave_jfkmod.dll.
    Es funktioniert alles wie es soll - verstehe nicht warums beim ersten mal nicht geklappt hat.

    Werde es demnächst auch immer wieder mit deiner neusten Version prüfen-
    Z.B der Verrsion 74916.

    Anmerkung :
    Auch so, eines ist mir aufgefallen, bei allen Versionen muss ich die
    Höhe der Forms
    - PLCTagEditor
    - SelectProjectPartForm
    - ConnectionEditor
    vergrössern, damit sie ganz (in voller Höhe ) angezeigt werden.
    Beispiel für die Orginal und die vergrösserte Darstellung (nur Höhe). siehe Anhang.

    Ich arbeite mit Windows 7 32 Bit und Visual Studio 2010.

    Bin begeistert von den Möglichkeiten der Verwendung orginaler Step7-Projekte - z.B. öffnen eines Projektes , auslesen der Symboldateien und ...

    Grosses Lob für deine Arbeit - sehr gut.

    hanjo
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Lesen und Schreiben probiert  

  6. #26
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von hanjo Beitrag anzeigen
    Anmerkung :
    Auch so, eines ist mir aufgefallen, bei allen Versionen muss ich die
    Höhe der Forms
    - PLCTagEditor
    - SelectProjectPartForm
    - ConnectionEditor
    vergrössern, damit sie ganz (in voller Höhe ) angezeigt werden.
    Kann Ich mir im Moment nicht erkläre, auf meinem PC und denen meiner Kollegen passt das Fenster! Hast du irgendwas an den Darstellungsoptionen von Windows umgestellt?

    Vielleicht hat sonst noch jemand das gleiche Problem?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  7. #27
    hanjo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.10.2010
    Beiträge
    28
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Jochen

    Lesetest - verschiedene Varianten

    Ich habe heute verschiedene Lesetests durchgeführt.
    Unter „Lesetest“ verstehe ich dabei das Lesen von Variablen aus der SPS.
    Die Lesetestergebnisse sind in der Exceldatei im Anhang dargestellt.
    Lesetest Variante 1
    Lesen eines ByteArrays (zusammenhängender Bereich)

    Basis : DotNetSiemensPLCToolBoxLibrary
    PLCCon1.ReadValue(aVar) - aVar ist eine Liste von PLCTags – „TagList As List(Of PLCTag)”
    Lesetest Variante 2
    Lesen einer zuvor zusammengestellten Variablenliste

    Basis : DotNetSiemensPLCToolBoxLibrary
    PLCCon1.ReadValue(aVar) - Var ist ein ByteArray – Einzelvariable

    Lesetest Variante 3
    Lesen eines Bytearrays mit bis zu 220 Bytes

    Basis : LibNoDave
    res = dc.readBytes(libnodave.daveFlags, 0, 500, M, buf)
    M= Anzahl der gelesenen Bytes

    Lesetest Variante 4
    Lesen eines Bytearrays mit mehr als 220 Bytes

    Basis : LibNoDave
    res = dc.readManyBytes(libnodave.daveFlags, 0, 500, M, buf)
    M= Anzahl der gelesenen Bytes

    Zusammenfassung und Frage
    Die Variante 1 sollte, meiner Meinung nach, in etwa die gleiche Funktion sein wie die in Variante 4.
    Beide Varianten lesen ein zusammenhängendes ByteArray mit gleichem Leseergebnis :

    Variante 1 : Verwendet „DotNetSiemensPLCToolBoxLibrary„
    Variante 4 : Verwendet „LibNoDave“ in der „DotNetSiemensPLCToolBoxLibrary“

    Die Lesezeit für 700-Bytes dauert
    für Variante 1 min. 499ms360µs686ns und
    für Variante 4 min. 18ms761µs135ns

    Das ist ein erheblicher Unterschied.
    Ich habe daraufhin mal in deiner „DotNetSiemensPLCToolBoxLibrary“


    Ø unter „PLCConnection.cs“
    Ø in der Funktion „public void ReadValue(PLCTag value)“
    Ø die Zeile in der gelesen wird - auskommentiert
    int res = _dc.readManyBytes(Convert.ToInt32(value.LibNoDaveDataSource), value.DatablockNumber, value.ByteAddress, readSize, ref myBuff);

    Dann wird zwar nicht mehr gelesen, - die Aufrufdauer liegt dann bei 2ms, d.h. der große Lesezeitunterschied liegt in dieser Funktion begründet.

    Meine Frage :
    Warum dauert das Lesen gegenüber dem Originalaufruf der LibNoDave so viel länger?
    Ich würde die Variante 1 lieber verwenden, weil ich in diesem Fall deine Funktionen zur Konfiguration und zum Aufbau der Verbindung verwenden kann.
    Ich habe übrigens auch erprobt das Bytearray „ref myBuff“ in einer extra Funktion direkt auszugeben – aber auch dieser Aufruf verkürzt die Lesedauer nicht.

    Viele Grüsse hanjo

  8. #28
    hanjo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.10.2010
    Beiträge
    28
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Jochen

    Hab beim ersten mal vergessen den Anhang beizulegen


    Lesetest - verschiedene Varianten

    Ich habe heute verschiedene Lesetests durchgeführt.
    Unter „Lesetest“ verstehe ich dabei das Lesen von Variablen aus der SPS.
    Die Lesetestergebnisse sind in der Exceldatei im Anhang dargestellt.
    Lesetest Variante 1
    Lesen eines ByteArrays (zusammenhängender Bereich)

    Basis : DotNetSiemensPLCToolBoxLibrary
    PLCCon1.ReadValue(aVar) - aVar ist eine Liste von PLCTags – „TagList As List(Of PLCTag)”
    Lesetest Variante 2
    Lesen einer zuvor zusammengestellten Variablenliste

    Basis : DotNetSiemensPLCToolBoxLibrary
    PLCCon1.ReadValue(aVar) - Var ist ein ByteArray – Einzelvariable

    Lesetest Variante 3
    Lesen eines Bytearrays mit bis zu 220 Bytes

    Basis : LibNoDave
    res = dc.readBytes(libnodave.daveFlags, 0, 500, M, buf)
    M= Anzahl der gelesenen Bytes

    Lesetest Variante 4
    Lesen eines Bytearrays mit mehr als 220 Bytes

    Basis : LibNoDave
    res = dc.readManyBytes(libnodave.daveFlags, 0, 500, M, buf)
    M= Anzahl der gelesenen Bytes

    Zusammenfassung und Frage
    Die Variante 1 sollte, meiner Meinung nach, in etwa die gleiche Funktion sein wie die in Variante 4.
    Beide Varianten lesen ein zusammenhängendes ByteArray mit gleichem Leseergebnis :

    Variante 1 : Verwendet „DotNetSiemensPLCToolBoxLibrary„
    Variante 4 : Verwendet „LibNoDave“ in der „DotNetSiemensPLCToolBoxLibrary“

    Die Lesezeit für 700-Bytes dauert
    für Variante 1 min. 499ms360µs686ns und
    für Variante 4 min. 18ms761µs135ns

    Das ist ein erheblicher Unterschied.
    Ich habe daraufhin mal in deiner „DotNetSiemensPLCToolBoxLibrary“


    Ø unter „PLCConnection.cs“
    Ø in der Funktion „public void ReadValue(PLCTag value)“
    Ø die Zeile in der gelesen wird - auskommentiert
    int res = _dc.readManyBytes(Convert.ToInt32(value.LibNoDaveDataSource), value.DatablockNumber, value.ByteAddress, readSize, ref myBuff);

    Dann wird zwar nicht mehr gelesen, - die Aufrufdauer liegt dann bei 2ms, d.h. der große Lesezeitunterschied liegt in dieser Funktion begründet.

    Meine Frage :
    Warum dauert das Lesen gegenüber dem Originalaufruf der LibNoDave so viel länger?
    Ich würde die Variante 1 lieber verwenden, weil ich in diesem Fall deine Funktionen zur Konfiguration und zum Aufbau der Verbindung verwenden kann.
    Ich habe übrigens auch erprobt das Bytearray „ref myBuff“ in einer extra Funktion direkt auszugeben – aber auch dieser Aufruf verkürzt die Lesedauer nicht.

    Viele Grüsse hanjo
    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien

  9. #29
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Ich schau mirs morgen mal an. Als info vorab schon mal: der leseaufruf von mehreren zusammenhängenden plctags wird noch nicht optimiert! Dies ist aber in Arbeit, wird aber noch etwas dauern...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Mal sehn...  

  10. #30
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Häng mal noch deinen Code an... (wenns geht!)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

Ähnliche Themen

  1. DotNetSiemensPLCToolBoxLibrary
    Von explosiv im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 14.06.2011, 00:13
  2. [Geburtstagsthread] Jochen Kühner
    Von rostiger Nagel im Forum Stammtisch
    Antworten: 17
    Letzter Beitrag: 09.05.2011, 22:16
  3. Zugang zu Step7 Daten Projekt Jochen Kühner
    Von hanjo im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 07.04.2011, 23:18
  4. DotNetSiemensPLCToolBoxLibrary 64 Bit support.
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 24.03.2011, 13:04
  5. Jochen Kühner hat Geburtstag
    Von Rainer Hönle im Forum Stammtisch
    Antworten: 7
    Letzter Beitrag: 12.05.2010, 22:51

Lesezeichen

Berechtigungen

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