Step 7 Wie in Schrittkette eingreifen?

spirit

Level-1
Beiträge
961
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebes Forum,

in einem bestehenden Programm sind in einem FB zwei Schrittketten in SCL programmiert. Eine Achse, die von 0 bis 360 Grad dreht und eine zweite, die eine Positionierung durchführt.

Nun wurde mechanisch etwas geändert und es muss jetzt abgesichert werden, dass, wenn die rotative Achse z.B. bei einem Drehwinkel von 90° ist, die andere Achse zu diesem Zeitpunkt sicher wieder in ihrer Grundstellung steht. Die Abfrage kann ja mit größer/gleich 90° recht gut programmiert werden.

Meine Übelegung/Frage ist nun, an welcher Stelle muss ich das programmieren? :confused:

Wenn ich diese Abfrage am Anfang im SCL-Editor programmiere, dann macht das ja eigentlich keinen Sinn, weil zu einem späteren Zeitpunkt das Programm ja erst wieder darauf reagieren kann, wenn diese Stelle erneut durchlaufen wird. In der Zwischenzeit könnte ja aber der Fall eingetreten sein, dass die eine Achse ihre Positionieraufgabe noch nicht beendet hat, obwohl von der zweiten Achse schon 90° durchlaufen wurden ... und somit würde die Schrittkette nicht auf den Wert Null zurückgesetzt werden.

Sehe ich es richtig, dass diese Abfrage auf größer/gleich im Grunde in jedem Schritt der Kette programmiert werden muss - sozusagen zwei ineinander verschachtelte IF-Abfragen für jeden Schritt?

Lieben Dank!
 
Bin jetzt in SCL nicht fit.

Aber wenn du das am Ende einbaust sollte das doch Vorrang vor allem darüber haben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das hat m.E. mit der Schrittkette gar nichts zu tun. Das ist eine Verriegelung. Somit würde ich der Achse_2 gar nicht erst eine Freigabe geben wenn Achse_1 die Bedingung nicht erfüllt.
Etwas schwieriger wird es, wenn sich das Eine beim Fahren des Anderen ändern sollte - das wäre dann ein Fall für "in der Schrittkette".
Vielleicht beschreibst du deine Aufgabe mal etwas detail-reicher ...
Was ist denn deine Drehachse ? Ggf. ein Rotationsmodul von AFAG ? Wenn ja, dann müßtest du dabei u.U. beachten, dass die Dinger kein Modulo haben, Winkelwerte also auch weit außerhalb von 0..360° sein können.

Gruß
Larry
 
Hallo Larry,

es handelt sich dabei um eine mechanische Presse, die unter anderem zwei Antriebe von Festo beinhaltet. Die rotative Achse trennt bei 180° (Stellung unten) einfach nur ein Material ab, das ihr von dem zweiten Antrieb (Vorschub) zugeschoben wird. Dieser Vorschub positioniert immer nur um eine bestimmte Wegstrecke, z.B. 30mm. Die Aufgabe ist nun, dass die rotative Achse sofort stehen bleibt, wenn der Vorschub seine Positionierung noch nicht abgeschlossen hat, wenn die rotative Achse 90° erreicht hat.

Der Vorschub muss allerdings schon starten, wenn die rotative Achse etwa 35° erreicht hat!

Daher war eben meine Idee, in jeden Schritt der Schrittkette diese Abfrage auf größer/gleich 90° einzubauen? :confused:
 
Zuletzt bearbeitet:
Ggf. die Positionsabfrage quasi permanent machen und in den entsprechenden Schritten nur den Merker Pos_Freigabe abfragen ...

Wir machen dies bei der 840 z.B. auch immer so, da man ja für solche Istwerte diese erst aus der Steuerung lesen muss.
Also werden die Werte im eigenen Baustein zentral gelesen und dann auf Freigabe bzw. Merker (oder DBXs) gelegt und können somit überall anwendung finden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ggf. die Positionsabfrage quasi permanent machen und in den entsprechenden Schritten nur den Merker Pos_Freigabe abfragen ...

Wir machen dies bei der 840 z.B. auch immer so, da man ja für solche Istwerte diese erst aus der Steuerung lesen muss.
Also werden die Werte im eigenen Baustein zentral gelesen und dann auf Freigabe bzw. Merker (oder DBXs) gelegt und können somit überall anwendung finden.

Danke Boxy,

meinst du mit Positionsabfrage den Weg, den der Vorschub immer zurückgelegt hat?

Und wo müsste dieser Merker dann abgefragt werden - könntest du evtl. ein kurzes Beispiel geben?
 
Ich würde auch permanent die Position vergleichen, auf jeden Fall eine Freigabe für die Achsen (auch permanent) und in der Schrittkette kann man ebenfalls diese Freigaben verwenden, um im Schritt weiterzuschlafen, bzw. zu warten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke UniMog & Ralle,

dann versuche ich mal mein Glück ... ;)

Also ich programmiere in FC1 folgenden Code:

Code:
Merker := rotativeAchse >= 90;

Der FC1 wird im OB1 zyklisch aufgerufen.

Jetzt ist "Merker" immer dann TRUE, wenn die Achse 90° erreicht, bzw. überschritten hat.

"Merker" kann jetzt im FB10, dort wo die Schrittkette programmiert wurde, Anwendung finden - und zwar in den erforderlichen Schritten.


War das ungefähr so gemeint von Euch? :confused:
 
Nein ...
Aus meiner Sicht sperrst du die Achse komplett wenn die andere Achse nicht im passenden Bereich ist.
In der Schrittkette kannst du die Information dann noch zusätzlich verwerten - nicht aber ausschließlich ...

Gruß
Larry
 
Nein ...
Aus meiner Sicht sperrst du die Achse komplett wenn die andere Achse nicht im passenden Bereich ist.
In der Schrittkette kannst du die Information dann noch zusätzlich verwerten - nicht aber ausschließlich ...

Gruß
Larry

... also ist der Vergleich falsch ausgeführt - oder die gesamte Vorgehensweise von mir?

Falls Vorgehensweise korrekt, dann vielleicht die Abfrage wie folgt?

Code:
Merker := rotativeAchse >= 90 AND NOT Vorschub_ProfileDone;
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein der Vergleich ist korrekt. Das kannst du so machen. Wo du ihn programmierst liegt bei dir und wie du dein Programm organisierst.
Wenn du allerdings eine Verriegelung haben willst dann kann diese normalerweise nicht ausschließlich in der Schrittkette erfolgen. Dort würde sie ja nur greifen wenn die Schrittkette gerade in den passenden Schritten steht - ist sie dort nicht oder etwas anderes ist nicht mit berücksichtigt dann passiert eventuell dann genau das, was du eigentlich verhindern willst.

Gruß
Larry
 
Nein der Vergleich ist korrekt. Das kannst du so machen. Wo du ihn programmierst liegt bei dir und wie du dein Programm organisierst.
Wenn du allerdings eine Verriegelung haben willst dann kann diese normalerweise nicht ausschließlich in der Schrittkette erfolgen. Dort würde sie ja nur greifen wenn die Schrittkette gerade in den passenden Schritten steht - ist sie dort nicht oder etwas anderes ist nicht mit berücksichtigt dann passiert eventuell dann genau das, was du eigentlich verhindern willst.

Gruß
Larry

Ok Larry - du hast Recht!

Aber wenn ich "Merker" aus dem AbfrageCode

Code:
Merker := rotativeAchse >= 90 AND NOT Vorschub_ProfileDone;

an erster Stelle im SCL-Editor programmiere und sage, wenn "Merker", dann rotative Achse den Schritt 0 (keine Aktion) zuweisen.

Somit müsste doch auf jeden Fall, egal welchen Schritt die Kette gerade durchläuft, die Achse stoppen, oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde auch permanent die Position vergleichen, auf jeden Fall eine Freigabe für die Achsen (auch permanent) und in der Schrittkette kann man ebenfalls diese Freigaben verwenden, um im Schritt weiterzuschlafen, bzw. zu warten.

... mit "Freigabe für die Achsen" ist die eigentliche Startfreigabe gemeint, oder?
 
Danke Boxy,

meinst du mit Positionsabfrage den Weg, den der Vorschub immer zurückgelegt hat?

Und wo müsste dieser Merker dann abgefragt werden - könntest du evtl. ein kurzes Beispiel geben?

Hatte bisschen Telefonterror mit einem Servicemitarbeiter der Unterwegs ist :ROFLMAO:
Mit Positionsabfrage meine ich natürlich die Ist-Position der Achse.
So ist es bei der 840D, da wird die aktuelle Ist-Postion der jeweiligen Achsen aus der NC gelesen und dann machen wir unsere nötigen Freigaben durch Vergleicher usw. ...

Das kommt jetzt natürlich auch auf das System an, was Dir da zur Verfügung gestellt wird und welche Werte du bekommst.

Ich würde je nach Anwendung bzw Bedingung evtl. einen Halt oder Vorschustop auf die andere Achse programmieren.
Allerdings ist dies von der Appliaktion und dem System (NC oder Pos-Achse) unterschiedlich.
Jedenfalls würde ich mir immer im jeweiligen Schritt die Positionsabfrage / Freigabemerker mit abfragen.

Würde mir ggf. auch Gedanken machen, ob man nicht entsprechend mit im Schritt bzw. abhängig des aktiven Schirtts und der Freigabe entsprechend eine Vorschubsperre auf die jeweilige andere Achse gibt ...

Also so in der Art, wenn Schritt X aktiv und die eine Achse nicht in Position --> Sperre auf die andere achse usw.
(Dies könnte man wieder quasi in ner Permanenten Operation machen) ...
 
Hatte bisschen Telefonterror mit einem Servicemitarbeiter der Unterwegs ist :ROFLMAO:

Kein Problem Boxy, eilt ja nicht so ... ;)


Mit Positionsabfrage meine ich natürlich die Ist-Position der Achse.
So ist es bei der 840D, da wird die aktuelle Ist-Postion der jeweiligen Achsen aus der NC gelesen und dann machen wir unsere nötigen Freigaben durch Vergleicher usw. ...

Das kommt jetzt natürlich auch auf das System an, was Dir da zur Verfügung gestellt wird und welche Werte du bekommst.

Ich würde je nach Anwendung bzw Bedingung evtl. einen Halt oder Vorschustop auf die andere Achse programmieren.
Allerdings ist dies von der Appliaktion und dem System (NC oder Pos-Achse) unterschiedlich.
Jedenfalls würde ich mir immer im jeweiligen Schritt die Positionsabfrage / Freigabemerker mit abfragen.

Ok, wie ich ja schon mit Larry "diskutiert" hatte, könnte mein Weg mit der Codeabfrage

Code:
Merker := rotativeAchse >= 90 AND NOT Vorschub_ProfileDone;

ja durchaus erfolgversprechend sein.


Wie geschrieben, würde ich die Ist-Position vom Vorschub in die FC1 einlesen und in dieser auch obigen Code auswerten. Den FC1 rufe ich dann im OB1 zyklisch auf.

Im FB mit der Schrittkette dann für den Fall des Falles - wie von dir vorgeschlagen - einen Halt für die Presse programmieren.


Noch eine Frage dazu:

Wenn ich diesen Weg einschlage, ist es dann von Bedeutung, ob im OB1 der FC1 mit dem Vergleich vor oder nach dem FB mit den Schrittketten programmiert ist???
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich diesen Weg einschlage, ist es dann von Bedeutung, ob im OB1 der FC1 mit dem Vergleich vor oder nach dem FB mit den Schrittketten programmiert ist???

In einem zyklischen Programm ist das eigentlich egal, denn : nach dem FB ist genauso auch vor dem FB.
Schöner ist es allerdings, wenn du erst abfragst und dann auswertest - also : vor dem FB ...

Gruß
Larry
 
Zurück
Oben