Zyklusszeiterhöhung bei Onlinestatus!?!

Lockenfrosch

Level-1
Beiträge
79
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo,

wie schon im topic erwähnt, habe ich ein für mich unerklärliches phänomen, wenn ich mir den online-status eines bestimmten programmteils betrachte, kommt es zu einer zy-zeit-spitz von >1800ms... wie ist das zu erklären. :confused:

am rande: ich habe keine weiteren programmteile auf der cpu am laufen. im normalfall liegt die zy-zeit bei 5-8ms. bei den code handelt es sich um eine schleife die in einen fb liegt (instanzbereich wird durch die schleife genuzt).
 
Eine gewisse Zykluszeiterhöhung ist beim Status mehr oder weniger normal, aber nicht in diesem Umfang.
Bei welcher CPU tritt dieses Phänomen so gravierend auf? Wie oft wird die Schleife durchlaufen? Wird der Status wirklich pro Schleifendurchlauf gesammelt? Wie wird die Zykluszeit beeinflusst, wenn sich die Schleifenzahl ändert?
 
Im letzten Satz von Perfektionist seinen Anhang steht ja, das Schleifen die Zykluszeit massiv erhöhen können. Wie oft durchläufst du deine Schleife denn.
 
Hallo!

Man sollte hier zwei Punkte unterscheiden:



Hardwarebasierende SPS (S7-400; S7-318; SPEED7) und
Compilerbasierende SPS (S7-3xx ohne 318 )

Die Compilerbasierenden brauchen zum Onlinestatus deutlich mehr Zeit als die Hardwarebasierenden, bei den 31xC kann es schon mal in den zweistelligen ms Bereich gehen (ohne Schleife).
Die Hardwarebasierenden brauchen üblicherweise unter 250µs für einen normalen Statusbaustein (ohne Schleife).



Prozessbetrieb und Testbetrieb:
Im Prozessbetrieb versucht die SPS bzw. das Step7 möglichst wenig die Zykluszeit bei Status zu beeinflussen, deswegen wird der Status z.B. an manchen Sprüngen nicht angezeigt und es wird nur der ERSTE Schleifendurchgang einer Schleife angezeigt!!!

Im Testbetrieb zeigen die S7-400 und S7-318 deutlich mehr an und
es wird der LETZTE Schleifendurchgang einer Schleife angezeigt, hierzu ist es notwendig, dass ALLE Schleifendurchgänge mitprotokolliert werden.
Kostet richtig viel Zeit! (SPEED7 macht es nicht, wäre möglich, war aber noch kein Bedarf, bei den S7-3xx weiß ich es nicht)


Gruß






hallo,

wie schon im topic erwähnt, habe ich ein für mich unerklärliches phänomen, wenn ich mir den online-status eines bestimmten programmteils betrachte, kommt es zu einer zy-zeit-spitz von >1800ms... wie ist das zu erklären. :confused:

am rande: ich habe keine weiteren programmteile auf der cpu am laufen. im normalfall liegt die zy-zeit bei 5-8ms. bei den code handelt es sich um eine schleife die in einen fb liegt (instanzbereich wird durch die schleife genuzt).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
cpu: 315-2AG10
Schleifendurchläufe: 128

die anzahl der durchläufe ist nicht wirklich hoch und offline habe ich keine zeit probs, also würde ich den punkt ausschliessen.
allerdings finde ich longbows beitrag sehr interessant, nur habe ich mal den gesamten code in ein FC geschmissen und dann läuft alles reibungslos..

btw: hier mal der code, vielleicht sieht ja jemand einen gravierenden fehler bzw. die ursache...

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//-------------------------------//Schleifendurchläufe laden =>länge Datensatz)
L 128
//-------------------------------//Rücksprung vom Schleifenende
SCH1: T #loopcounter
//-------------------------------//Adressregister Quelle laden
L #EKS_PEB_Start //PEB Beginn Adressbereich
+I //Rechenoperation
L 1 //offset 1 byte
-I //Rechenoperation
SLW 3 //schiebe links um 3
LAR1 //Adressregister 1
//-------------------------------//PEB Dateninhalt wegschreiben
L PEB [AR1,P#0.0] //PEB Dateninhalt
T #PEB_temp //Temp Speicher
//-------------------------------//Adressregister Ziel laden
L 14 //Anfangsadresse Zielbereich
L #loopcounter //Schleifenzähler
+I //Rechenoperation
L 1 //offset 1 byte
-I //Rechenoperation
SLW 3 //schiebe links um 3
LAR1 //Adressregister 1
//-------------------------------//Transfer PEB X -> DBB X
L #PEB_temp //Temp Speicher
T DIB [AR1,P#0.0] //Zieladresse
//-------------------------------//Rücksprung zum Transfer PEBX->DBBX
L #loopcounter
LOOP SCH1
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Zuletzt bearbeitet:
Mal eben eine andere Frage
du schreibst hier in einen Instanzdatenbaustein,

Code:
...
T DIB [AR1,P#0.0] //Zieladresse
...
dein Code liegt aber jetzt in einen FC, wo öffnest du den DB und warum immer noch DIB und nicht DB?
 
muh, :D

das ist mein originalcode... die fc version ist natürlich angepasst um das ganze lauffähig zu machen.
 
Zuletzt bearbeitet:
cpu: 315-2AG10
...
btw: hier mal der code, vielleicht sieht ja jemand einen gravierenden fehler bzw. die ursache...

L #loopcounter
LOOP SCH1

Hallo Locke,

wenn die CPU eine ältere Firmware hat (< 2.0.5 oder so),
dann kann der LOOP Befehl Problemen mit der Zykluszeit verursachen.

Das ist ein Firmwarebug, der mittlerweile aber schon für alle CPU
behoben sein sollte.

Such mal in der Simatic Customer-Support FAQ nach
"Loop Zykluszeit", da wirst du ne Menge Infos und auch
Firmwareupdates finden.

CU

Jürgen
IBN-Service

.
 
der FW stand wird wohl tatsächlich <2.0.5 sein, dass werd ich am MO gleich prüfen...!! und falls nötig die FW updaten (wenn eine 4MB karte da sein sollte). mal schauen ob das was bringt.


danke für die info, IBN-Service!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
der FW stand wird wohl tatsächlich <2.0.5 sein, dass werd ich am MO gleich prüfen...!! und falls nötig die FW updaten (wenn eine 4MB karte da sein sollte). mal schauen ob das was bringt.

danke für die info, IBN-Service!

Hallo Locke,

gern geschehen.
Bitte gib Rückmeldung, ob es geklappt hat!

CU

Jürgen

.
 
Zurück
Oben