S5 wird immer träger?

burner

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

ich bin dabei mit ner S5 115U CPU943 ne Haussteuerung aufzubauen. Es sind 4 DI (à32) und 3DA (à32) Baugruppen gesteckt. So nun habe ich mir einen FB für die Steuerung der Rollos gebastelt, den ich nun für jedes Rollo aufrufe und parametriere. In dem FB schaffe ich mir temporäre Variablen indem ich die benutzten MW's in den zum Baustein gehörenden DB speichere. Ich habe 21 Rollos und rufe somit den Rollo-FB 21 mal auf. Mein immer größer werdendes Problem besteht nun darin, dass die S5 auf sich ändernde Eingänge nicht mehr jedesmal reagiert (ich werte meist Flanken aus). Manchmal muss ich zwei, drei mal probieren eh sich was tut.
Bin ich an der Grenze der Zykluszeit? Wie bekomme ich das Problem in den Griff? Es scheint mit jedem FB-Aufruf schlimmer zu werden obwohl der Speicher gerade mal zu 10% belegt ist.

Wäre für jeden Tipp dankbar!!:confused:
 
indirekte aufrufe kosten sehr viel zeit.

z.b.
L EB 10 // 0,8 ys

L =EB10 // 147 ys

das ist ungefähr 180 mal langsamer.

eventuelle abhilfe
1. code optimieren
2. den baustein nicht parametrierbar machen sondern mehrere kopien direkt adressiert benutzen. ist natürlich viel mehr progaufwand.
3. in dem fb keine wenig indirekten aufrufe nutzen. alle parameter in mw's ablegen (netzwerk 1) und diese im fb direkt ansprechen. erst am ande des fb diese an die ausgangsvariablen übergeben.

oder cpu durch eine z.b. 944 ersetzen (L =EB10 // 3,6 ys)

die ausführungszeiten der befehle findest du in der operationsliste.
 
Zuletzt bearbeitet:
Hallo burner,

..den baustein nicht parametrierbar machen sondern mehrere kopien direkt adressiert benutzen. ist natürlich viel mehr progaufwand..
Das würde zwar helfen, wäre jedoch irgendwie ein Rückschritt.

Ich frage mich, wie 21 Jalousien eine S5CPU943 zur Schnecke machen können. Wieviele Parameter hast du denn an dem Baustein? Es würde u.U. helfen, diverse Signale wie Taster, Rückmeldungen etc. bausteinextern in enem Schmiermerkerbyte oder -wort zu belegen, und dieses als einen Parameter zu übergeben. Das gilt natürlich ebenso für die Ausgänge. Oder einen kompletten Speicherbeich mit DB-Nummer und Offset als Parameter übergeben.

Bausteinparameter kosten sehr viel Zykluszeit, glaube, erst bei der 945 wird es (dank Coprozessor?) deutlich besser.


Gruß, Onkel
 
Zuletzt bearbeitet:
Das liegt wohl an der Programmierstrategie die damals wohl noch nich so aktuell war. Hätt ich auch nich gedacht:confused:
Hab 9 Parameter für den Rollo-Baustein und jetzt erst mal Volkers Vorschlag umgesetzt und die Parameter am Anfang Merkern zugewiesen. Dadurch bin ich schon auf eine überwältigende Verbesserung gekommen. Vielen Dank! Und die Idee mit dem byteweisen Übergeben der In und Out hört sich sehr vielversprechend an, werd das mal testen.:D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und die Idee mit dem byteweisen Übergeben der In und Out hört sich sehr vielversprechend an, werd das mal testen.

wird dir sicherlich noch einen kleinen schub geben. aber nicht wirklich viel, da du die ja jetzt schon einzeln einem merker zuweist.
U =IN //160 ys
U Ex.y //0,8 ys

bei 8 parameten sind das gerade mal 8 * 160ys = 1,28 ms

aber kleinvieh macht auch mist. ;)
 
Zurück
Oben