Verbindungstechnik zu einer S7

Prybe

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hoffe ich bin hier im richtigen Thread.

Es geht um die Frage welche Möglichkeiten der Kommunikation von PC zu einer S7 habe ich.

Zur Zeit verwende ich, bzw. wir, eine Verbindung über Ethernet.
Treiber sind .net basierend.

Problem hierbei, wenn es um Übertragungszeiten unter 20ms geht, wird es eng.
Zur Zeit schreiben wir Werte auf einen DB in ca. 15ms.
Begründet durch TCP und Windows.


Andere Lösung wäre IO Karten.
Das sollte doch um ein vielfaches schneller sein oder?
Hat da jdm Erfahrung.
Problem hierbei ist, dass unsere Software auf .net aufbaut und die Schnittstellen und API meist in C++ sind.
Das beduetet wiederum Probleme.

Gibt es IO Karten mit C# .Net Unterstützung ?

Oder gibt es noch andere, sehr schnelle Kommunikationswege zwischen PC und einer S7.

Zum Übertragen von Werten sind IO Karten ja ganz brauchbar aber sobald es um Strings oder riesige Zahlenmengen geht, muss extrem codiert werden.
das ist auch nicht sinn der sache.

Hat jemand eine Idee ?


danke im vorraus und verzeiht mein blauäugiges herangehen.
mfg
Martin
 
Zuviel Werbung?
-> Hier kostenlos registrieren
sps

also mit einer 315 2 dp und extra cp modul hatten wir ewig lange zeiten.
ca. 100 ms pro schreibauftrag.

mit einer 317 2 PN/DP und jetzt aktuell einer 319er sind wir bei 15ms pro Schreibauftrag.

Wir nutzen keinen OPC.
Es ist eine Eigenentwicklung unserer Firma die eine oder mehrere OP Verbindung aufbaut und das S7 Protokoll nutzt.
Da kommen wir auf 15ms pro Schreibauftrag.

nur 15 ms sind doch noch ein wenig lang.
schätze das ist ethernet bedingt.
 
Und wo wird diese Zeit verbraten? Doch nicht im Ethernet. Hier mal den Whireshark anwerfen und zuschauen. Die Steuerung ist halt der Meinung, dass die zyklische Programmbearbeitung wichtiger ist als die Kommunikation. Und deshalb läßt sie das Programm warten. Einfach mal die Zykluszeit der SPS hochschrauben und dann die Zeiten ansehen. Aber vorher hinsetzen. Ab einer bestimmten Zykluszeit ist dann auch die externe CP wieder schneller als die Onboard-Schnittstelle.
Noch ein paar Fragen: Wie sieht so ein Schreibauftrag aus? Wieviele Daten enthält der Auftrag? Wie ist dabei das Protokoll implementiert? Wofür sind die mehreren Verbindungen? Warum sind 15 ms unzureichend?
 
antworten

- Einfach mal die Zykluszeit der SPS hochschrauben und dann die Zeiten ansehen. Aber vorher hinsetzen. Ab einer bestimmten Zykluszeit ist dann auch die externe CP wieder schneller als die Onboard-Schnittstelle.

kann ich leider nicht machen. zumindest jetzt nicht da ich keine Hardware hier habe.
wo die zeit berbraten wird kann ich leider nicht genau sagen.
wie gesagt - habe keine hardware da.

- Wie sieht so ein Schreibauftrag aus? Wieviele Daten enthält der Auftrag?
Normalerweise ein DB mit einem Adressbereich für 10 Integerwerte.
Alle liegen hintereinander.
Schreiben wir jedes einzeln, haben wir 15ms * 10 Aufträge.
Umgebaut haben wir es so das wir einen Byteblock schreiben.
damit nur 15ms * 1 Auftrag.

Wie ist dabei das Protokoll implementiert?
Kann ich leider nicht sagen. Habe den Treiber nicht selbst entwickelt.

- Wofür sind die mehreren Verbindungen?
Wir können mehrere Verbindungen anlegen.
z.B. eine Verbindung zum lesen und eine zum schreiben.
Auf der SPS Seite können wir das dann auch bestätigen das mehrere Verbindungen genutzt werden.

- Warum sind 15 ms unzureichend?
es geht um industrielle Bildvererbeitung.

Bei manchen Projekten haben wir Zykluszeiten von ca. 1 bis 2 sec pro Teil.
Da machen 15ms hin oder her nichts aus.

Geht es aber um Teileprüfung bei 200ms pro Teil also ca. 5 Teile pro Sekunde, da fällt das enorm ins Gewicht.


Und zur Zeit sind wir am Überlegen für einfache Kommuniaktion eine IO Karte zu nutzen.
Dabei sind wir auf National Instruments gestoßen.
In den nächsten Tagen hoffe ich das wir zu testen kommen und wie gut sich das in .Net implementieren läßt.
 
Zurück
Oben