Step 7 "Große" Datenmengen kopieren

Hermsen

Level-2
Beiträge
52
Reaktionspunkte
19
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo @ all,

vielleicht kann das ja jemand brauchen ( oder mein zukünftiges ich sucht wieder danach ).

Im Gegensatz zu BLKMOV (SFC20) arbeiten die Funktionen mit Doppelwörtern und sind im besten Fall bis zu 4x schneller.
 

Anhänge

Im Gegensatz zu BLKMOV (SFC20) arbeiten die Funktionen mit Doppelwörtern und sind im besten Fall bis zu 4x schneller.
Nur theoretisch schneller oder hast du auch Vergleichsmessungen gemacht? Ab wieviel Bytes oder bis zu wieviel Bytes Datenmenge ist dein Code schneller als SFC20?
Mit welcher CPU und welcher Step7-Version hast du die Tests gemacht? Für welche CPUs ist der Code geeignet?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Benchmark
...
Der Prozessor muß bei jedem AWL-Zugriff auf den Speicher den Wert im
AR1 prüfen, die Nummer des aktuell geöffneten DB (Selektor) ermitteln, dann aus einer Tabelle die
Anfangsadresse dieses DB auslesen und zum Offset aus dem AR1 addieren. Der SFC20 macht diese
Prüfung und Berechnung nur einmal.

Ich hatte mal für eine Thema, wo es um das Umspeichern von 2879 INT-Werten in einem FIFO ging,
auf einer echten CPU 315-2PN/DP (315-2EH13) verschiedene Programmversionen programmiert und
die benötigte Bearbeitungszeit gemessen: jede Minute einen Datensatz aufzeichnen
Code:
Normal verständliche AWL-Schleife    : 19,3ms
Optimierte Schleife                  : 16,2ms
2 INT-Werte gleichzeitig umspeichern :  8,7ms
mit SFC20 umspeichern                :  2,7ms

Gibts eigentlich eine Erklärung wie der Blkmov intern wohl funktioniert das er so schnell ist? Ich meine ab zwei Doppelwörtern zu kopieren lohnt sich der einsatz von Blkmov schon. Könnte man den so schnell nachbauen mit optimierterem Syntax als L DB100.dbd0 und T DB101.dbd0 (schleife)?

Vermutung ist, dass dort intern eine Systemfunktion wie memcpy aus der C-Standardbibliothek aufgerufen wird. Zumindest hat diese die gleichen Beschränkungen bezüglich überlappender Speicherbereiche wie die Blockmove-Funktion. D.h. in AWL wird das niemals so schnell werden können wie mit dieser Funktion, zumindest nicht bei den CPUs die AWL/MC7 nicht nativ sprechen.
 
@PN/DP

Ich kann deine Aussagen bestätigen.
Bei großen Datenmengen ist SFC20 bei meinen Anwendungen auch am schnellsten.
Siemens verwendet bei den Steuerungen diverse Plattformen und da gibt es schon erhebliche Unterschiede in Sachen Performance.
Interessant sind da auch die „verbotenen“ überlappenden Zugriffe für Ziel- und Quellbereich. Damit kann man schnelle FiFo bauen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So schlecht ist die Siemens Firmware nicht, dass jedermann in SCL (!) ein Programm schreiben kann, das "bis zu 4x schneller" kopiert ...
Das ! hinter SCL ist nicht ganz gerechtfertigt.
In Classic kann man ja den erzeugten Code anschauen und der ist nicht schlecht in Sachen Performance.
 
Zurück
Oben