Step 7 Suche auf meher Zyklen verteilen

sidi

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


ich hätte mal eine Frage, ich habe einen Funktion erstellt, der in einer Anlage Fächer durchsucht. In diesen Fächern sind Datensätze vorhanden, in einem Datensatz ist zB ein Gewicht hinterlegt. Von Aussen gebe ich verschieden max 40 Gewichte vor und die Anzahl der Fächer die ich durchsuchen möchte.
Der Baustein gibt mir für die ausgewählten Gewicht die Anzahl zurück also zB Gewicht 5 KG kommt in 10 Fächern x- mal vor.


Nun gibt es anwendungen in der viele Fächer durchsucht werden sollen, dies treibt die Zykluszeit in die Höhe. Der eigentlich Such-Algorithmus stammt aus einem Standard und darf nicht verändert werden, auch wenn hier sicherlich Optimierungspotential wäre.

Nun war die Überlegung zB in einem Zyklus nicht alle Fächer durchsuchen zu lassen sondern zB nur 10. Nun frage ich mich wenn der nöchste Zyklus anfängt muss ich mir ja merken das ich die ersten 10 Fächer schon durchsucht habe und bei Nr 11 anfagen wie stelle ich das an ?

Aufruf des Bausteins:
OB1->FB Ablauf->FC Zaehler -> FC_Mein_Baustein

Vielleicht kann mir jemand helfen

Gruß SIDI
 
Genau so wie du es beschrieben hast...

Du zählst die Suchzyklen hoch also n:=n+1
Nach X zyklen brichst Du ab und MERKST Dir das aktuelle n

Im nächsten Zyklus dasselbe und so weiter bis n = nmax und fertig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi!

Da muss ich mich mal einklinken.

Erhöht eine schleife in z.b scl denn tatsächlich die Zykluszeit?
Irgendwo natürlich schon logisch wenn der Baustein nicht verlassen wird, aber verhindert so etwas die cpu nicht?

Das muss ich fast mal ausprobieren. :|

Danke,

Gruß,

Ottmar
 
Hallo,
eine Schleife erhöht IMMER die Zykluszeit. Die Frage ist hier eher die Relevanz ...
Wieviele Speicherstellen durchsuchst du denn mit welcher CPU in welcher (Zyklus-)Zeit ?
Ich mache das eigentlich ziemlich häufig und auch bei großes Array's - klar die Zykluszeit steigt dann schon mal (je nach Aufwand der Auswertung) und 20 - 30 ms an - aber ist das problematisch ?

Gruß
Larry
 
Hallo, also Steuerung ist eine S7 417, grundsätzliches Problem das die generell schon relativ "vergewaltigt" wird, Zykluszeit ohne meine Baustein ~ 95 ms mit Baustein 103-110 ms.

Ich habe es jetzt soweit das ich von aussen zusätzöich ab FC vorgebe wie viel Fächer pro Zyklus durchsucht werden soll.

Beispiel: Ab Fach 1, 10 Fächer durchsuchen, pro zyklus 2 Fächer.

Also sollen in 5 Zyklen die Fächer durchsucht werden, leider gibt die Steuerung nicht die richtige Anzahl zurück-

Problem ist aber weiterhin das mir nicht klar ist wie ich im nächsten Zyklus nicht mehr mir den am FC von aussen bschalteten Sollvorgaben wie der in den FC gehe sondern mit den Werten aus dem vorigen Zyklus, für die Anzahl der noch zu durchsuchenden Fächer und dem neuen Start Fach.

Mfg SIDI
 
Mhh Triggersignal wäre eine idee nur wo bekomme ich das her ?:D
Also der Gefunden Zaehler ist Im FC ein Temp

Vielleicht für mein Verständis nochmal eine Frage zum Zyklus.
Die SPS ruft den OB1 ja zyklisch auf. Hierraus ruft man ja typischer weise den weiteren Ablauf auf.
Alle Berechnugen in den FBs FCs usw werden in diesen Zyklus ausgeführt oder ?

Das bedeutet wenn der Zyklus beendet ist und ein neuer Beginnt rufe ich den jeweiligen Funktion oder Funktionsbaustein mit seinem Eingangsparametern wieder genau so auf ?
 
Zuletzt bearbeitet:
Ja moment, du hast doch irgendeinen Anlass wann die Suche loslaufen soll?

Deine Bausteine werden pro (OB1) Aufruf genau einmal durchlaufen, so wie sie sind.
Wenn es dort eine Schleift von 0-100 gibt werden alle hundert in einem Zyklus gemacht.
Static Variablen behalten dabei den Wert aus dem letzten Zyklus, temp Variablen nicht.
Dort steht Quatsch, wenn du sie im aktuellen Zyklus nicht initialisiert hast.
> Dein gefunden Zähler darf kein temp sein. (Das geht nur wenn du alle 100 Durchläufe im selben Zyklus machst)

Gleiches gilt für den Schleifenzähler > auch static machen.
Dann brauchst du noch ein Jump, das immer nach 2 oder x Durchläufen entweder aus der Schleife springt oder direkt ans Ende des Bausteins. (dann ginge auch BEA)
Im nächsten Zyklus geht es dort weiter wo der letzte aufgehört hat - weil der Schleifenzähler static ist.
Wenn die Schleife komplett durch ist:
Gefunden = 0
Schleifenzähhler = 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, also Steuerung ist eine S7 417, grundsätzliches Problem das die generell schon relativ "vergewaltigt" wird, Zykluszeit ohne meine Baustein ~ 95 ms mit Baustein 103-110 ms.

Ich habe es jetzt soweit das ich von aussen zusätzöich ab FC vorgebe wie viel Fächer pro Zyklus durchsucht werden soll.

Beispiel: Ab Fach 1, 10 Fächer durchsuchen, pro zyklus 2 Fächer.

Also sollen in 5 Zyklen die Fächer durchsucht werden, leider gibt die Steuerung nicht die richtige Anzahl zurück-

Problem ist aber weiterhin das mir nicht klar ist wie ich im nächsten Zyklus nicht mehr mir den am FC von aussen bschalteten Sollvorgaben wie der in den FC gehe sondern mit den Werten aus dem vorigen Zyklus, für die Anzahl der noch zu durchsuchenden Fächer und dem neuen Start Fach.

Mfg SIDI


.
Ich würde einen FB nehmen, aber zeig doch
einfach mal deinen Code, dann können wir
schon mal gezielter helfen !
 
Zurück
Oben