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

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

Thema: jfk Libnodave wrapper Zeit für 200 REAL's

  1. #1
    Registriert seit
    29.09.2008
    Beiträge
    68
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Meine C# Kenntnisse entwickeln sich und ich beschäftige mich wieder mit deinem genialen wrapper!

    Eins vorweg - ich habe deinen Protokoller bereis in Augenschein genommen, und möchte nun zum Üben etwas ähnliches machen...

    Habe in einer mysql einen Table "CPU-Verbindungen" angelegt in dem ich die auszulesenden Steuerungen eingebe.
    Ein weiterer Table "tags" beinhaltet die auszulesenden Tags samt den AKTUALWERTEN bzw. Steuerwerten und einem Steuerauftragsbit.
    dies bedeutet, dass ich von C#

    1. die Verbindungen einlese
    2. die Tags in eine Liste einlese
    3. mir die aktuellen Werte für die Listeneinträge aus der Steuerung hole
    4. die Liste wieder mit den Aktualwerten in die mysql rückspiele
    5. auf Steueraufträge prüfe und ggf. abarbeite
    6. wieder bei 3. weitermachen....


    Das ganze läuft schon ganz brav und ich bin ganz happy...

    Aufgefallen ist mir aber die Zykluszeit.
    Ich habe in einer Steuerung (315 2PN/DP) 200 REAL Werte angelegt und lese diese aus.
    Ich benötige 3000ms dafür... (nur fürs lesen ohne SQL...)

    Ist dies plausibel oder muss ich eine Unsauberkeit in meinem Code suchen?

    Anmerkung: die Werte werden alle "einzeln" gelesen - da es auch später so sein wird, dass die Werte verstreut in der Steuerung liegen werden.

    Danke für die Hilfe!
    Zitieren Zitieren jfk Libnodave wrapper Zeit für 200 REAL's  

  2. #2
    Registriert seit
    21.10.2010
    Beiträge
    158
    Danke
    21
    Erhielt 29 Danke für 17 Beiträge

    Standard

    Wenn die Werte einzeln gelesen werden, dann kommt das mit den 3 Sekunden hin. Schneller wird's so nicht. Aber es gibt die Möglichkeit aus verschiedenen Datenbausteinen, Merkern, Zeiten, ... gleichzeitig zu lesen. Schau dir dazu davePrepareReadRequest, daveAddVarToReadRequest, daveExecReadRequest an. Weiß aber nicht wie das im C# Wrapper hinterlegt ist.

    Edit: Dabei musst du mit libnodave aber aufpassen, dass eine Abfrage nicht über die PDU-Size kommt (z.B. 56 Real-Werte bei CPU315 mit PDU-Size von 240).
    Geändert von funkey (19.02.2014 um 12:50 Uhr)

  3. #3
    Registriert seit
    29.09.2008
    Beiträge
    68
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Habs nun zum Testen umgebaut..... lese nun eine Liste der tags einer Verbindung mit ReadValues aus.
    -> Das geht ab wie Schmidts Katze (200 Reals in 200ms)

    Hatte aber keine Probleme (PDU-Size) Oder hab ich sie nur noch nicht bemerkt?
    Mag das an dem Wrapper liegen?

  4. #4
    Registriert seit
    21.10.2010
    Beiträge
    158
    Danke
    21
    Erhielt 29 Danke für 17 Beiträge

    Standard

    Hab's mir nicht angesehen, kann aber gerne sein und ist natürlich auch wünschenswert, dass dies der Wrapper regelt.

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

    Standard

    Zitat Zitat von voni_1 Beitrag anzeigen
    Habs nun zum Testen umgebaut..... lese nun eine Liste der tags einer Verbindung mit ReadValues aus.
    -> Das geht ab wie Schmidts Katze (200 Reals in 200ms)

    Hatte aber keine Probleme (PDU-Size) Oder hab ich sie nur noch nicht bemerkt?
    Mag das an dem Wrapper liegen?

    PDU Size beachtet meine Bibliothek genau so wie das optimieren von Lesevorgängen...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  6. Folgender Benutzer sagt Danke zu Jochen Kühner für den nützlichen Beitrag:

    voni_1 (19.02.2014)

  7. #6
    Registriert seit
    29.09.2008
    Beiträge
    68
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard

    So, ich hab jetzt alles so umgebaut, dass ich pro CPU-Verbindung immer eine Liste mit den betreffenden Tags habe.
    Diese Liste lese ich mit ReadValues() aus...

    Fazit:

    2 CPU's :
    1 Cpu mit 200 REAL
    1 Cpu mit einem 150 Zeichen String

    IN 200 MILLISEKUNDEN !!!

    Ich freue mich und hüpfe!

    Ein fettes MERCI an Libnodave und Jochens Bibliothek!

  8. #7
    Registriert seit
    29.09.2008
    Beiträge
    68
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Ich werde weitere Benchmarks hier posten!

  9. #8
    Registriert seit
    20.02.2014
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von voni_1 Beitrag anzeigen
    ...

    Ein weiterer Table "tags" beinhaltet die auszulesenden Tags samt den AKTUALWERTEN bzw. Steuerwerten und einem Steuerauftragsbit.
    dies bedeutet, dass ich von C#

    1. die Verbindungen einlese
    2. die Tags in eine Liste einlese
    3. mir die aktuellen Werte für die Listeneinträge aus der Steuerung hole
    4. die Liste wieder mit den Aktualwerten in die mysql rückspiele
    5. auf Steueraufträge prüfe und ggf. abarbeite
    6. wieder bei 3. weitermachen....

    ...
    Hallo voni, - Stop! Zuerst ein Hallo an die Community, bin der Neue -

    ich arbeite derzeit an einem ähnlichen Projekt - Daten mittels Windows Service aus SPS lesen und in SQL schreiben und mit Android von SQL wieder lesen.
    Aktuell bewältige ich etwaige "Steueraufträge" direkt von Android via libNoDave zur SPS. Zum Beispiel einen Motor starten, dessen DBx.DBXx Adresse in der SQL DB liegen.
    Meinst du denn mit Steuerauftrag solche Punkte? Der Gedanke, diese Aufträge über die Datenbank, und somit über den lokalen Windows Service laufen zu lassen ist mir SO noch nicht gekommen.
    1. Ist dieser Weg denn "besser"/"richtiger"?
    2. Wie realisierst du das technisch? ( Android schreibe zu SQL Motor:Bit_Steuern = TRUE; C# lese von SQL Motor:Bit_Steuern, if TRUE schreibe zu SPS? irgendwie so ähnlich... )

    Das würde mich sehr interessieren, weil dadurch würde ich das Mobile Endgerät komplett von der SPS koppeln können!

    Grüße Flo

  10. #9
    Registriert seit
    29.09.2008
    Beiträge
    68
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Über "besser" oder "richtiger" möchte ich nicht urteilen.

    Mein Ziel ist ein MES System aufzubauen und dazu war mein erstes Ziel, dass nicht alle Clients schreib/lesezugriff direkt auf die SPS haben (Verbindungen usw.)
    Ich möchte (und habe schon ) einen Dienst die Daten aus den Steuerungen abholt und anderen Applikationen zu Verfügung stellt.
    Soweit sogut. Auch das möchte ich auf 2 Varianten gestalten.
    Die erste ist der Datenaustausch über SQL.
    Hier habe ich wie besagt eine Tagtabelle in der SQL (siehe Anhang) eine Value Spalte mit dem aktuellen Wert, eine setValue Spalte mit dem gewünschten Steuerwert und ein bit "fire" welches den Steuerauftrag anstößt.
    Und somit kann lustig in die SQL reingeschrieben werden und der Dienst führt diese Steueraufträge aus
    Hab noch zur Sicherheit 2 "bits" readenable und writeenable in der SQL eingefügt, welche sicherstellen, dass nicht aus Datenpunkten gelesen/geschrieben wird, wo das nicht erwünscht ist....

    Anhang 23369


    Die zweite Variante wäre der Datenaustausch direkt über Server/Client Kommunikation aus der .NET Applikation über die Tagliste in dieser.

  11. #10
    Registriert seit
    20.02.2014
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Heist, du "hörst" auf Änderungen in der Tabelle Tag und steuerst dann den Auftrag. Anschließend löschst du den Eintrag (oder speicherst ihn für Zeit x zur Protokollierung).
    Mit was programmierst du denn deinen Dienst?
    Ich bin eigentlich in der S7 Welt angesiedelt. Bin geübt in Java und Android. Und versuche mich nun speziell für mein BDE Projekt an C# (zur Programmierung des Windows Dienstes) -> Wissensstand 1 von 100
    Hoffe ich kann dich mal was Fragen, falls ich an einer Stelle hänge

    Grüße Flo

    PS: deinen Anhang kann ich leider nicht öffnen (Ungültige Angabe: Anhang)

Ähnliche Themen

  1. REAL Werte mit Libnodave
    Von Bytes im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 30.03.2012, 05:20
  2. Zeit (Time) multiplizieren mit Real
    Von Lars Bizare im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 24.11.2011, 13:07
  3. JFK-VarTab
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 50
    Letzter Beitrag: 03.12.2010, 21:43
  4. Wrapper für S7Onlinx.dll probleme
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 27.05.2010, 17:40
  5. Java-Wrapper für ACCON-AGLink verfügbar
    Von Rainer Hönle im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 11.02.2009, 17:05

Lesezeichen

Berechtigungen

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