Zugriffszeit auf die SPS mit Variablenfunktionen.

Jochen Kühner

Level-3
Beiträge
4.291
Reaktionspunkte
527
Zuviel Werbung?
-> Hier kostenlos registrieren
Bin gerade dabei meine Library zu optimieren, und wollte nun Fragen gibt es irgendwo Übersichten über die typischen Zugriffszeiten auf die SPS.

Mir würde es darum gehen wie Lange es normalerweise dauert um 1000 zusamenhängende Bytes zu lesen. Mir ist auch klar das dies von CPU zu CPU unterschiedlich ist...

oder wie lange dauert es normalerweise nach dem absetzen einer PDU bis die Antwort kommt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du solltest doch mittlerweile schon gesehen haben, dass es hier kein "normalerweise" gibt. Hier spielen so viele Faktoren eine Rolle wie: welche SPS, welcher Firmwarestand, welche Zykluszeit, welche Kommunikationsart, ...

Das hab Ich mir ja auch schon fast gedacht... Ich will halt sichergehen ob Ich irgendwo noch ein gravierendes Problem habe, oder ob meine Zugriffszeiten normal sind.

Kann man den sagen wie Zugriff über einen Netlink Pro im gegensatz zum CP-LEAN aussieht? (Schneller? Langsamer?)
 
Oder eine Liste mit typischen zeiten wäre mal ein Anhaltspunkt so wie bei mir nun:

CPU 414-2, V3.0.2 Zugriff über NL-PRO, lesen von 700 Bytes aus DB (zusammenhängend) rund 110ms! (ist das zu lang??)
 
Ermittlung der Übertragungszeit für typische Konfigurationen am Industrial Ethernet

Hallo Jochen

Ich habe mindestens mit zwei verschiedenen Treibern gearbeitet, die aus der SPS Bytearrays lesen und schreiben konnten.
Eine Variante war IPS7Link aus dem Jahr 2000 von der Firma Inat, heute wird dieser Treiber von der Firma Träger vertrieben.
http://www.traeger.de/pub/downloads/Traeger-Preisliste-2009.pdf

Der zweite Treiber stammt aus der Feder des eigenen Unternehmens.
Beide Treiber hatten in etwa die gleiche Performance.

Für 700 Bytes (zusammenhängend als Array) haben beide Treiber eine durchschnittliche Lesedauern von 105 ...130ms (CPU414 + CP443-1).

Siemens selbst hat mehrere Komminikationstests zwischen zwei SPS-en für unterschiedliche Kommunikationswege und Hardware durchgeführt.
Ich denke dort findest du einen Anhaltspunkt für verschiedene Hardware und unterschiedliche Kommunikationswege (Ethernet).
Hier die Links:
Im ersten Link findest du den Siemens Beitrag
"Ermittlung der Übertragungszeit für typische Konfigurationen am Industrial Ethernet"
http://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&objid=34677186&lang=de&cspltfrm=0&cssw=0&csbinh=5

Von dieser Seite kannst dann ein interessantes Tool aufrufen, in dem du die Kommunikationsparameter festlegen kannst und die Übertragungszeiten aus den von Siemens durchgeführten Versuchen angezeigt bekommst.
Der direkte Link zu dieser Seite lautet :
http://www.automation.siemens.com/perfdata/perfdata.aspx?version=18&lang=de

In der Liste sind jedoch nicht 700 Byte sonder nur 1024 Byte auswählbar, ich hoffe, dass dir der Hinweis hilft.

Also die Kommunikationsdauer deiner DLL kann nach meiner Meinung mit den kommerziellen Treibern mithalten.

Viele Grüsse
hanjo
 
Hallo Jochen

genau deshalb werde ich den Lesevorgang nochmals testen.

Ich hoffe trotzdem, das der Link geholfen hat.

Grüsse hanjo
 
Wie verspriochen habe ich den Lesetest für 700 Bytes nochmals durchgeführt.
Ich habe alle 700 Byte belegt mit Werten und auch geändert.
Mit der Orginal libnodave dauert der komplette Lesevorgang wie bereits gemessen um die 20ms.
Es werden alle Bytes korrekt gelesen.

Hardware:
CPU 417-4XT05-0AB0 V5.30
CP 443-1EX11-0XE0

Grüsse hanjo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hängt der netlink an DP oder MPI?
ich hab auch schon die erfahrung gemacht, dass die
zykluszeit eine rolle spielen kann (speziell bei 300er
steuerungen)

und mit einer CP in der 400er sollte es recht flott gehen,
da diese die kommunikation von der CPU nahezu unabhängig
abwickelt
 
1. Die Verbindung läuft über S7online (TCP)


2. Die CP´s der 400-er Reihe arbeiten soweit ich weis unabhängig von der
Programmlaufzeit in der SPS.
Das hat aber auch zur Folge, dass neue Informationen beimschreiben in die
SPS irgend wann mitten im SPS-Programmablauf eintreten. Also Achtung
dies sollte man bei der SPS-Programmierung beachten.

Grüsse hanjo
 
Also Ich habs jetzt nochmal an einer 315-2DP mit Lean CP versucht. Lesen von 700 Bytes, immer rund 210ms. Ob Ich mit libnodave direkt lese oder mit meinen Funktionen.

Nahezu die identische zeit kommt beim lesen über die S7Online Schnittstelle raus.

Hab dir meinen Lesecode mal als Beispiel angehangen. Ich kann mir die Unterschiede welche du durch meine DLL hast im Moment echt nicht erklären...



Code:
myValues=new List<PLCTag>();
            myValues.Add(new PLCTag("P#DB99.DBX0.0 BYTE 700"));

            Stopwatch sw = new Stopwatch();
            sw.Start();
            myConn.ReadValue(myValues[0]);
            sw.Stop();
            MessageBox.Show("Read1 took:" + sw.ElapsedMilliseconds.ToString() + " ms");

            byte[] aa=new byte[700];
            sw = new Stopwatch();
            sw.Start();
            myConn._dc.readManyBytes(DotNetSiemensPLCToolBoxLibrary.Communication.LibNoDave.libnodave.daveDB, 99, 0, 700, ref aa);
            sw.Stop();
            MessageBox.Show("Read2 took:" + sw.ElapsedMilliseconds.ToString() + " ms");

            sw = new Stopwatch();
            sw.Start();
            myConn.ReadValues(myValues);
            sw.Stop();
            MessageBox.Show("Read3 took:" + sw.ElapsedMilliseconds.ToString() + " ms");


            sw = new Stopwatch();
            sw.Start();
            myConn.ReadValue(myValues[0]);
            sw.Stop();
            MessageBox.Show("Read4 took:" + sw.ElapsedMilliseconds.ToString() + " ms");

            aa = new byte[700];
            sw = new Stopwatch();
            sw.Start();
            myConn._dc.readManyBytes(DotNetSiemensPLCToolBoxLibrary.Communication.LibNoDave.libnodave.daveDB, 99, 0, 700, ref aa);
            sw.Stop();
            MessageBox.Show("Read5 took:" + sw.ElapsedMilliseconds.ToString() + " ms");

            sw = new Stopwatch();
            sw.Start();
            myConn.ReadValues(myValues);
            sw.Stop();
            MessageBox.Show("Read6 took:" + sw.ElapsedMilliseconds.ToString() + " ms");
Read 1 und 4 über ReadValue (nutz ReadManyBytes), Read 2 und 5 über libnodave direkt, Read 3 und 6 über ReadValues (nutzt CustomReadRequest)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Selbst wenn Ich die Werte so lese:

Code:
myValues=new List<PLCTag>();
            myValues.Add(new PLCTag("P#DB99.DBX0.0 BYTE 100"));
            myValues.Add(new PLCTag("P#DB99.DBX100.0 BYTE 100"));
            myValues.Add(new PLCTag("P#DB99.DBX200.0 BYTE 100"));
            myValues.Add(new PLCTag("P#DB99.DBX300.0 BYTE 100"));
            myValues.Add(new PLCTag("P#DB99.DBX400.0 BYTE 100"));
            myValues.Add(new PLCTag("P#DB99.DBX500.0 BYTE 100"));
            myValues.Add(new PLCTag("P#DB99.DBX600.0 BYTE 100"));

            Stopwatch sw = new Stopwatch();
            sw.Start();
            myConn.ReadValues(myValues);
            sw.Stop();
            MessageBox.Show("Read1 took:" + sw.ElapsedMilliseconds.ToString() + " ms");

d.h. Sie müssen erst noch kombiniert Werden bevor angefragt wird, dauert es genau so 210 ms wie mit libnodave direkt!
 
Noch ein Test....

CPU 414, Zugriff über CP443.

Lesedauer 700 bytes: rund 40ms, egal ober über meine Funktionen oder libnodave direkt.
Auch egal ob TCP/IP oder S7Online mit TCP/IP verwendet wird!
 
Hallo Jochen

Kannst du mir mal das komplette Lesetestprojekt
zukommen lassen.
Dann werde ich es mit diesem noch mal testen.

Viele Grüsse hanjo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jo

Hier das Programm zum lesen und messen der Zeit im Anhang!

Der Source wird dann demnächst in meiner Lib mit drin sein!
 

Anhänge

  • ReadSpeedtest.zip
    389,2 KB · Aufrufe: 31
Zuletzt bearbeitet:
Hallo Jochen

Danke für das Testprogramm,
werde es am Donnerstag probieren und melde mich mit den
Ergebnissen.

Gruss hanjo
 
hallo Jochen

bei der S7-315 musst du die MPI Geschwindigkeit ändern max oder min
dann ändert sich auch die Übertragungsgeschwindigkeit zum CP


bis bald
geko
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo Jochen

bei der S7-315 musst du die MPI Geschwindigkeit ändern max oder min
dann ändert sich auch die Übertragungsgeschwindigkeit zum CP


bis bald
geko

???

Also die Übertragungsgeschwindigkeit steht auf 187,5 kbit/s und was anderes unterstützt die CPU auch nicht! Aber habe ja auch keine Probleme damit!
 
Also die Übertragungsgeschwindigkeit steht auf 187,5 kbit/s und was anderes unterstützt die CPU auch nicht! Aber habe ja auch keine Probleme damit!

du kannst doch auch andre Übertragungsgeschwindigkeiten wählen

der CP hängt am MPI bei der 315 2DP somit ändert sich auch die Übertragungsgeschwindigkeit

bis bald
geko
 
du kannst doch auch andre Übertragungsgeschwindigkeiten wählen

der CP hängt am MPI bei der 315 2DP somit ändert sich auch die Übertragungsgeschwindigkeit

bis bald
geko

Nein kann Ich eben nicht, nur 187,5 und 93,irgendwas. Die CPU unterstützt nur diese beiden, und Step7 lässt mich auch keine andere wählen!
 
Zurück
Oben