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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 24 von 24

Thema: was bringt gleichzeigtiger Zugriff auf viele S7 ?

  1. #21
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Question_mark Beitrag anzeigen
    Hallo,

    ich habe bei eurem Anliegen zur parallelen, threadgesteuerten Kommunikation zu einer SPS von einem PC doch ein gewaltiges Verständnisproblem...

    Wenn ich die Kommunikation zu beliebig vielen SPS mittels Treiber über einen (!!!) z.B. NIC anstosse, wie zum Teufel soll ich das parallel hinkriegen ??

    Es wird immer seriell bleiben, da könnt Ihr machen was Ihr wollt

    Gruß

    Question_mark
    Im Prinzip hast Du recht. Nur wenn wir uns die Kommunikation zu einer SPS mal ansehen und davon ausgehen, dass bei 100 MBit/s ca. 10 MByte/s Daten über den NIC gehen, dann benötigt die Anfrage bei einer S7-300 mit maximal 300 Byte (incl. IP-Overhead) ca. 30 Microsekunden. So, und jetzt wartet der PC ca. 10 Millisekunden auf die Antwort. Und statt zu warten, kann er in dieser Zeit was sinnvolles machen und den NIC quälen. Und das verstehe ich von parallelen Anfragen (wissentlich, dass über den NIC alles seriell abläuft). Aber an diesem Beispiel wird deutlich, dass der NIC nicht das limitierende Element der Kommunikationskette ist.
    Rainer Hönle
    DELTA LOGIC GmbH

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

  2. #22
    Fliegertiger ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.10.2005
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi,

    Wer Threads braucht, sollte wissen wozu:
    1. Um mehrere SPS über Ethernet anzusprechen: Pro SPS ein socket, ein daveInterface und ein daveConnection struct.
    mal zurück zur eigentlichen Frage.

    Wenn ich folgenden Fall habe:

    - Lesen von Daten aus Datenbausteinen so schnell wie möglich
    - es werden mehrere DB´s pro SPS gelesen
    - diese DB´s werden nacheinander gelesen

    Ist es nun möglich mehrere Steuerungen per Multithreading abzurufen ohne das ich Probleme mit der LibNoDave bekomme?

    (Visual Studio 2005) unter WinXP

    Gruß Fliegertiger

  3. #23
    Fliegertiger ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.10.2005
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    keiner eine Ahnung??????


    Oder stelle ich mich einfach nur zu blöd an???

    Gruß Fliegertiger

  4. #24
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Fliegertiger Beitrag anzeigen
    keiner eine Ahnung??????
    das folgende hast du doch sicher gelesen, denn dort wurde deine Frage doch beantwortet

    Zitat Zitat von Zottel Beitrag anzeigen
    Libnodave verwendet malloc() im einfachsten Fall nur innerhalb von daveNewInterface() und daveNewConnection(). Diese Funktionen sollten nach meiner Intention nur einmal pro benutzter Schnittstelle/Socket bzw. Pro SPS aufgerufen werden.
    Im laufenden Betrieb ist die einzige globale Variable daveDebug. Auf daveDebug wird normalerweise nur lesend zugegriffen, daher sind konkurrierende Schreibzugriffe nicht zu erwarten. Ferner sollte in Anwendungen daveDebug=0 sein.
    Die einzige Konsequenz ist also, daß, sobald ein Thread daveDebug <>0 setzt, alle Threads Debugging-Informationen schreiben werden.

    Was nicht geht ist, daß mehrere Threads eine Verbindung zur SPS teilen. Da Libnodave zeichenweise sendet, könnte eine Anfrage an die SPS von einer weiteren an beliebiger Stelle unterbrochen werden. Das Ergebnis wäre wohl Blödsinn für die SPS.
    Weiterhin ist mir nicht bekannt was eine S7 macht, wenn eine weitere Anfrage eingeht, bevor die erste beantwortet wurde.
    Schließlich ist unbekannt, ob die Anfragen in der Reihenfolge ihres Eingangs beantwortet würden. Egal ob ja oder nein, jeder Thread könnte die Antwort auf Anfragen eines anderen erhalten.

    Wer Threads braucht, sollte wissen wozu:
    1. Um mehrere SPS über Ethernet anzusprechen: Pro SPS ein socket, ein daveInterface und ein daveConnection struct.
    2. Um mehrere SPS an MPI über denselben seriell/MPI-Adapter anzusprechen.
    3. Um dieselbe SPS von mehreren Clients/Programmen/Standorten anzusprechen.

    Im Fall 2 und 3 ist es ratsam, einen Prozess/Thread laufen zu lassen, der mit der Steuerung spricht und Daten an die weiteren Threads/Prozesse weiterreicht. Dieser Prozeß entspricht dann gewissermaßen einem OPC-Server.

    Zitat Zitat von Fliegertiger Beitrag anzeigen
    Wenn ich folgenden Fall habe:

    - Lesen von Daten aus Datenbausteinen so schnell wie möglich
    - es werden mehrere DB´s pro SPS gelesen
    - diese DB´s werden nacheinander gelesen

    Ist es nun möglich mehrere Steuerungen per Multithreading abzurufen ohne das ich Probleme mit der LibNoDave bekomme?
    Wenn du eine bestehende Verbindung zur SPS nur von einem Thread ansprichst, solltest du keine Probleme bekommen. Um die sache etwas zu beschleunigen, könntest du mit jeder Read anfrage gleich aus mehreren DB´s lesen(je nachdem wieviele Daten du hast), dass soll wohl durch zusammenbauen der PDU funktionieren, mit diesen Funktionen habe ich mich allerdings noch nicht beschäftigt.

    Ich löse das meistens so:
    Code:
    - Verbindungen im Hauptprogramm aufbauen
    - für jede Verbindung einen Thread starten
    - im Thread lese- und schreibbefehle für die jeweilige SPS abarbeiten
    - Daten in Hauptprogramm zurückgeben
    - bei Programmende Verbindungen im Hauptprogramm abbauen
    ob das so 100%ig korrekt ist weis ich nicht, habe aber bis dato mit dieser Vorgehensweise keine Probleme gehabt.
    Es ist nicht schwierig, mit noch nicht erreichten Zielen zu Leben; schwierig ist, ohne Ziele zu Leben !
    (Günther Kraftschik)

Ähnliche Themen

  1. ADS: Zugriff auf viele Klemmen
    Von Macbeth im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 21.12.2010, 12:14
  2. Netzwerk bringt SPS Zykluszeit zum aussteigen
    Von bludie im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 25.08.2009, 21:34
  3. Wie bringt man den Code in den Anhang
    Von xhasx im Forum Stammtisch
    Antworten: 3
    Letzter Beitrag: 18.12.2007, 08:09
  4. SFC15 im FB bringt Fehler!
    Von INST im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 30.03.2007, 12:03
  5. AuthorsW bringt Fehlermeldung
    Von Input im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.04.2005, 11:32

Lesezeichen

Berechtigungen

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