GUrndlagen? FB und Ablauf

MSP

Level-1
Beiträge
210
Reaktionspunkte
21
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe da eine eventuell bekloppt klingende Frage bezüglich der FB' in Step7 / Siemens :oops:

Und zwar wenn ich einen Multiinstanzfähigen FB erstelle mit den internen Variablen, aber in den FB's auch Zähler und/oder Timer benutzen will, wie macht man das am besten?
Weil als Variable kann ich ja keinen Zähler/Timer anlegen, und wenn ich im FB eben jene erstelle, dann habe ich doch wieder das Problem dass ich bei 10-maligem Aufruf immer im selben Zähler/Timer arbeite und eventuell Daten überschreibe?

Dann habe ich noch ein Anliegen das eher das Vorgehen beim Programmieren angeht:

Ich habe eine Sammlung an FB's die mir ein Transportband, X, Y und Z-Achse ansteuern und einige Koordinaten wandeln.

Wenn ich diese FB's nun als Schrittkette miteinander verknüpfen möchte ( Transportband -> OK -> Grundposition -> Koordinaten -> Fahren -> usw... ), dann schießen sich bei mir trotz verriegelung die Koordinaten alles kaputt...

Ich habe am Anfang einen Fb der mir aus den Zählerdaten Zielkoordinaten in MW's schreiben ( XSoll und YSoll ) und die ich dann in der Mitte der Schrittkette dann an meine beiden FB's der X- und Y-Achse als Ziel übergebe.
Das klappt auch soweit ganz gut... nur:
Ich habe ganz am Anfang einen FB der wenn KEINE Grundposition vorliegt direkt die X- und Y-Achse ansteuert mit den Sollwerten 0 / 0 ( diese werden direkt an die Achsen übergeben und NICHT in die MW's geschrieben!!! ).

So wenn ich diesen Schritt nun ausführe fährt mein RBG auch brav in die Grundposition... dann geht die Bedingung des EN - Eingangs des Bausteins auf FALSE und der FB dürfte nicht mehr angesteuert werden...

Danach kommt die Koordinatenwandlung und das Ansteuern der X- und Y-Achse... und hier fährt mein RBG nun zick-zack am Regal entlang und NICHT direkt zu den Zielkoordinaten..
Im Onlinemodus konnte ich beobachten, dass irgendwie ein Zähler nicht mehr mitzählt und daher das Teil durchdreht... aber wenn ich mir den aufgerufenen FB direkt anschaue ( Y-Achse ) dann wird dort gezählt... nur irgendwie nicht mehr ausgegeben/übergeben :?

Auf dem Papier und bis zum Ansteuern der Achsen mit den Sollwerten klappt alles wunderbar, nur wenn ich die FB's mit ins Spiel bringe knallt es... keine Ahnung wieso.

Als nächstes ist mir aufgefallen, dass scheinbar Startbedinungen nicht sauber durchgereicht werden.
Ich rufe zB meinen SK-FB auf und übergebe diesem zB E1.0 der gesetzt ist.
Diesen Eingang gebe ich im FB auf den Eingang eines weiteren FB's... laut Onlineansicht liegt diese 1 auch am Eingang an.
Nur wenn ich nun in diesen FB gehe... kommt nichts an...?
Ich verwende Step 7 5.3 SP2... kann es daran liegen oder ist das ein Bug in der Anzeige?

Gruss,
Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So ein Verhalten hatte ich bisher nur einmalig mit einer VIPA.
Oft sind andere "Fehler" Schuld daran. Hast du den FB mehrmals aufgerufen, mußt du innerhalb des FB beim Beobachten den richtigen Aufrufpfad angeben. Bei Multiinstanzen ist das manchmal gar nicht machbar. Im Zweifelsfalle im FB einen Hilfsmerker setzen, den man dann über "Variable beobachten" kontrollieren kann. Weiterehin kann das "Herumjonglieren" mit Zeigern und Adressregistern bzw. nicht initialisierten temporären Variablen zu genau solchen unerwarteten Anzeigeergebnissen führen (Ausgang der SPS schaltet Lampe ein, obwohl er im gesamten Programm nicht programmiert wurde!).
Einen FB würde ich nicht über EN in die Schrittkette einbinden. In der Schrittkette sollten nur Merker oder Steuervariablen gesetzt bzw. zurückgesetzt werden. Den FB ordnest du "außerhalb" der Schrittkette an und beschickst in mit den Steuervariablen. Gerade FB für Servos etc. tauschen permanent Daten mit den Antrieben aus und sollten immer aktiv sein.
 
Hallo,
Tempvariablen die eigentlich keine sind, sorgen dafür, dass das Prg beim Testen läuft, aber am Objekt nicht mehr. Bei Multiinstanzen ist das AR2 mit Vorsicht zu verwenden, ich vermeide es in diesen Fällen.
 
Moin,

danek erstmal bis hierher für Eure Hinweise und Tipps :)

Ich habe aber ein Anliegen das mir im Kopf rumschwirrt was scheinbar nicht so einfach zu lösen ist ( für mich... )

Und zwar das Thema Zähler und Timer in einem FB.

Wenn ich in einem FB einen Zähler oder Timer benutze, wie kann ich das realisieren das der genauso wie die Variablen im Baustein liegt?
Weil egal was ich versuche mit den Variablen, die beiden Bausteintypen Zähler und Timer ( Egal welcher ) wollen von mir immer eine korrekte Bezeichnung haben ( z.B. Z1 oder T1... ).
Nur wenn ich das so mache habe ich doch bei 3 Aufrufen dieses FB's auch 3x ein und den selben Timer / Zähler den ich benutze, oder?
Demzufolge müsste ich doch den FB mehrmals kopieren und danach die Zähler etc anpassen mit eigenen Bezeichnungen, was dann aber doch nicht im Sinne des Erfinders der FB's sein kann??

Ratlos,
Michael
 
Hallo,

hmm das klappt aber nicht.
Wenn ich der Variablen den Namen TEST gebe und den Typ Counter oder Timer, dann bleibt der Name rot und es wird ein Typenkonflikt gemeldet...

Oder mach ich was falsch?
 
Hallo Michael,

hast du ein globales Symbol (Merker) namens "TEST"? Dann schreibe mal das Symbol mit dem Raute-Zeichen davor (#TEST). Eine andere Idee habe ich dann auch nicht mehr.
Alternativ kannst du die SFB4/5 für Zeitglieder verwenden. Oftmals werden unter Step7 auch Zeitfunktionen über das Auslesen der Systemzeit gebildet. Aber prinzipiell sollte das mit den Timern und Countern funktionieren.

Welche Step7-Version verwendest du?

Gruß, Onkel
 
Ersatztimer

Hallo,

ich hatte vor einem guten halben Jahr auch das Problem, dass es mit den Timern nicht recht klappen wollte. Hab mir dann so beholfen, dass ich auf iec-Bausteine zugegriffen habe. TON,TOF usw. lassen sich änhlich nutzen - und sind vor allem Mutliinstanzfähig.
Da S5-Timer immer an globalen Variablen hängen war das keine Lösung, mit der ich glücklich wurde.
Viel Erfolg
 
Zurück
Oben