TIA Mehrfachaufruf einer Achsensteuerung

m2thedoogy

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

ich bastele schon seit längeren an diesem Projekt und komme einfach nicht weiter. Evtl. hat kann jemand von euch Hilfestellung geben, ich würde mich riesig freuen!
Grundsätzlich soll die Steuerung einen Schrittmotor ansteuern, welcher eine vorgegebene Anzahl Umdrehungen machen soll (Strecke in mm, hab dafür ein Rezept angelegt.) . Nach absolvieren der Strecke muss die Steuerung zwischen 3 Signalen entscheiden auf Basis der programmierten Logiken (Sind 3 Schalter, entweder nur die ersten beiden, die letzten beiden oder alle 3). Außerdem gibt es einen Move_Absolute, welcher greift, wenn eine bestimmte Anzahl an kumulierten Umdrehungen erreicht wurde. Ist dies der Fall, so dreht die Achse zurück auf Null und macht dann weiter mit dem abarbeiten des Rezeptes.
Das habe ich soweit alles hinbekommen, nur jetzt möchte ich die Funktion implementieren, dass man das Rezept auch z.B. 5 abfahren lassen kann. Und mit dem erneuten Aufrufen komme ich nicht klar und nicht weiter.

Aktuell läuft das Programm 1 mal komplett durch, startet dann den Motor noch einmal und verweigert dann den Hauptstempel.
Programmiert ist das ganze auf V18 in FUP. Auf Zuruf schicke ich auch gerne das Programm zu. Das Programm als PDF ist hier:

Ich freue mich auf Eure Antworten!
Viele Grüße!
 
kannst du evtl. Bilder hier rein stellen?
Die PDF darf ich hier nicht downloaden :eek:

Aber wo ich eh schon schreibe, was meinst du mit "dass man das Rezept auch z.B. 5 abfahren lassen kann?
5 Inkremente? Oder klärt sich das, wenn man das Programm gesehen hat?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi K.

oh es sollte 5 Mal heißen... sorry dafür. Bilder nachfolgend:

Bild 1: Die move_Absolute Instance checkt, ob es erforderlich ist, dass der Slider zurück auf Null fährt (Stempel erfolgt + es handelt sich um letzter Schritt). Damit setzt der zweite Block alle Werte der Achse wieder Null
Stempel_Instance_Neben_Schritt setzt eine Anfangsmarkierung für den Fall, dass es sich um einen ersten Schritt handelt. Dies ist der Fall, wenn der Slider auf seine Nullposition zurückgekehrt ist.

Bild 2: Das ist der Hauptstempel, welcher erst nach der Motorbewegung einsetzt.
Darunter ist die Schlussinstanz. Diese führt nach Beedingung in den nächsten Schritt. Ein Schritt ist immer eine Kombination aus Achse dreht eine bestimmte Strecke und tätigt die erforderlichen Stempelbewegungen
Darunter ist eine Instanz, welche im Fall eines Mittelschrittes der SPS sagt, dass sie nciht auf den Nebenstempel warten braucht und ihr entsprechend das Signal setzt

Bild3: Motoransteuerung. Mit dem N Trig bin ich mir unsicher. Evtl ist da was anderes besser geeignet
darunter ist die Abfolge für das berechnen der neuen Positionen.

Bild 4: Rücksetzen der statischen Variablen für weitere Durchläufe.


Ich hoffe das hilft zum Verständnis? Ich bin absoluter Anfänger und verzweifele an dem Code. Dankbar für jede Hilfe!!
 

Anhänge

  • bild1.png
    bild1.png
    55,8 KB · Aufrufe: 29
  • bild2.png
    bild2.png
    38,4 KB · Aufrufe: 27
  • bild3.png
    bild3.png
    52,1 KB · Aufrufe: 19
  • bild4.png
    bild4.png
    12,9 KB · Aufrufe: 27
Zuletzt bearbeitet:
hm... also was ich noch nicht ganz verstehe: Du rufst 2x den FB_Stempel auf. Einmal nur mit erster_schritt und dann noch mal mit den anderen beiden... was passiert denn in dem FB?
Und was soll mit den 3 "Schaltern" unterschieden werden? Also was ändert sich da im Programmablauf, wenn z.B. alle drei betätigt sind?

Ich würde es mal mit einer Schrittkette probieren und dann einen Zähler hoch zählen, jedesmal, wenn sie neu startet. Dann könntest du da als Vergleicher eine beliebige Zahl eintragen und die Schrittkette würde so oft durchlaufen.
Aber natürlich erst, wenn das Programm richtig funktioniert.
Vielleicht kannst du es mir doch mal zuschicken? Eigentlich klingt es ja gar nicht so komplex.
 
Wenn ein FB mehrfach aufgerufen wird, hat jeder FB einen eigenen Instanz-DB? Sonst kann es auch nicht funktionieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen!
Wenn es sich um einen ersten Schritt handelt, so muss ich die Nebenstempelinstanz aufrufen. Ein erster Schritt ist derjenige, welcher nach einem Homingprozess kommt und quasi die Anfangsmarkierung darstellt. Hat kein Homingprozess stattgefunden, so ist dieser nicht nötig und es wird lediglich der Hauptstempel aufgerufen. Dieser kann ein mittelschritt sein, sofern danach noch ein weiterer Punkt hinzupasst auf die maximale Sliderlänge. ist dies nicht der Fall, so ist es ein letzter Schritt und der Homingprozess wird initieert. (Worauf dann wieder ein erster Schritt folgen muss um die Anfanfsmarkierung zu haben..)

Aktuell startet er die Achse auch neu. Er geht von Schritt 4 in Schritt 0 zurück und dreht die Achse, stempelt und geht, so wie er soll, in Schritt 1. Dann dreht er wieder die Achse und mit der Motorinstanz. Jedoch gibt die Motorinstanz kein Done aus, sodass die Kette nicht weiter geht.. Das ist das problem!

Hier ein Bild, wo er hängen bleibt:
 

Anhänge

  • problem.png
    problem.png
    52,7 KB · Aufrufe: 16
Also liegt ja das Problem "in" Deinem FB1.
Das ist ja sicherlich Dein eigener Baustein.
Kannst Du darin nicht sehen, warum das Done nicht kommt?
Ansonsten müßtest Du uns den hier posten, damit wir helfen können.
 
ahhh ich revidiere! Das Problem liegt darin, dass die Stempelinstanz 1 noch vom ersten Durchgang iwie auf durchgang stellt und ich probiere da jetzt mal einen Trigger einzubauen, sodass diese zurückgesetzt wird...
Danke an JSEngineering! Du hast mir geholfen Licht ins dunkle zu bringen!!
 
Leinenmaschine2.JPG

vielleicht könnte man die Struktur nach diesem Beispiel anpassen, damit es übersichtlicher wird.
Irgendwie konnte ich das Bild nicht an die persönliche Nachricht anhängen 🤷‍♂️
 
Zurück
Oben