Nur aktive Punkte Anfahren (Programmreduzierung)

Gizzl0r

Level-1
Beiträge
142
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,
folgendes Problem. Ich habe eine Ablaufsteuerung (X-Y-Z Achse) wo Maximal 9 Punkte angefahren werden sollen. Das läuft zur Zeit auch. Jedoch glaube ich das man das Programm viel kompakter entwerfen kann. Ich brauche einen Denkanstoß und hoffe ihr könnt mir helfen.
Grundaufbau:
Über die Visu Oberfläche habe ich 9 Punkte die ich bereits Aktivieren/Deaktivieren kann, der Ablauf der Bewegung soll immer der selbe sein (s.Anhang mit Pfeilrichtung)
Es gibt 3 X-Positionen, 3 Y-Positionen und 2. Z-Position.

Ablauf:
1. X-Position wird angefahren -> 1.Y-Position wird angefahren -> Z-Position wird angefahren -> Z-Null Position wird angefahren -> 2. Y-Position wird angefahren -> Z-Position wird angefahren -> Z-Null Position wird angefahren -> 3. Y-Position wird angefahren -> Z-Position wird angefahren -> Z-Null Position wird angefahren -> 2. X-Position wird angefahren -> Z-Position wird angefahren -> Z-Null Position wird angefahren -> 3. Y-Position wird angefahren -> Z-Position wird angefahren -> Z-Null Position wird angefahren -> 1. Y-Position wird angefahren -> Z-Position wird angefahren -> Z-Null Position wird angefahren -> 3. X-Position wird angefahren usw....

Zur Zeit wird jede Position mit einem eigenen Baustein angefahren(s.Anhang 2). Dieses kann man doch bestimmt kompakter bauen. (3 X-Bausteine, 3 Y-Baustein und 1 Z-Baustein)
Hat jemand ein Tip wie dieses zu realisieren ist?
Mit freundlichen Grüßen
Daniel

Ablaufsteuerung.pngprog.png
 
Das kleinste gemeinsame Vielfache deines Ablaufs ist :
X-Position wird angefahren -> Y-Position wird angefahren -> Z-Position wird angefahren -> Z-Null Position wird angefahren
Dazu würde ich einen Baustein (FB) entwerfen, der dies entsprechend seiner IN-Parameter umsetzt (und dir ggf. benötigte Statuswerte rückliefert).
Entsprechend deines Fahrablaufs versorgst du diesen Baustein dann mit unterschiedlichen Werten und schaltest am Ende in deinem Ablauf (Schrittkette) entsprechend weiter ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank,
im Link unten habe ich mal das komplette Projekt hochgeladen. Das Programm habe ich als FBD "Programmiert".
Zur Zeit sind die 3 Achsen in Seperaten FB`s unterteilt. Ein einfaches Fahren der Achse auf seine Positionen sehe ich nicht als Schwierigkeit. Jedoch weiß ich nicht wie ich es umsetzen soll wenn Messpunkte deaktiviert werden.
https://www.file-upload.net/download-12694651/Target.rar.html
 
Das kleinste gemeinsame Vielfache deines Ablaufs ist :
Dazu würde ich einen Baustein (FB) entwerfen, der dies entsprechend seiner IN-Parameter umsetzt (und dir ggf. benötigte Statuswerte rückliefert).
Entsprechend deines Fahrablaufs versorgst du diesen Baustein dann mit unterschiedlichen Werten und schaltest am Ende in deinem Ablauf (Schrittkette) entsprechend weiter ...

Gruß
Larry

So im Prinzip würde ich es auch machen.

In einer Ablaufkette lädst Du einfach die Positionen auf die Ansteuerung der X-Y-Z Achse um.
In dieser Ansteuerung der Achsen ist entweder der Ablauf hinterlegt X->Y->Z ab->Z Null, oder du steuerst die einzelnen auszufahrenden Position einzeln in der Ablaufkette an.

Ganz kompakt wird es wenn an die Ablaufkette Rekursiv aufbaut, dann kann man diese über Vorgabelparameter (Anzahl Schritte und welche Positionen aktiv sind) sehr kompakt steuern ;) Die Kette wird dann quasi über eine Schleife mehrfach aufgerufen ...
 
Hi,
danke schon mal für eure Hilfe. Als Begriff Ablaufkette assoziere ich die SFC Programmierung in TwinCat, oder liege ich da Falsch? Falls es die SFC sein sollte, muss ich zugeben das ich davon keine Ahnung habe.
Hätte einer von euch evtl. die Möglichkeit ein Beispiel in Verbindung mit meinem Programm hochzuladen? Ich wäre euch dahingehend sehr sehr dankbar, weil ich zur Zeit total aufm schlauch stehe...

Gruß
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine Ablaufkette, häufig auch als Schrittkette (such danach mal hier im Forum) bezeichnet, kann man mit SFC (TwinCat) oder Graph (bei Siemens) sehr einfach aufbauen. Aber auch die Funktionsbausteinsprache oder strukturierter Text erlaubt es dir, Schrittketten zu programmieren. Beispiele findest du hier im Forum viele.
 
Könnte mir evtl. jemand an Hand des oben Hochgeladenen Projekt, wenn möglich die erste Grundstruktur programmieren? Damit ich den Einstieg hinbekomme.....
Gruß
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,
ich bin es mal wieder. Ich habe soweit einiges umgestrickt und das Programm bereits deutlich reduziert.
Jetzt komme ich zu meiner neuen Frage.
Ich habe ja jeweils 3-X Positionen 3-Y Positionen und 2-Z Positionen.
Diese Positionen werden über einen Array Index per Counter hochgezählt.
Zur Zeit ist es soweit Programmiert:


Pos X2 <- Pos Z2 <- Pos Z1 <- Pos Y3 ....... Pos Z2 <- Pos Z1 <- Pos Y1 <- Pos X1



Jetzt muss ich mit der Pos Y ja nur Rückwärts fahren.
Heisst den Array Index der Y-Achse Runter zählen bis der wieder auf 0 ist, um dann wieder hochzuzählen bis ich am Ende des 9. Messpunktes bin.

Pos X2 -> Pos Y3 -> Pos Z1 -> Pos Z2...... Pos Y1 -> Pos Z1 -> Pos Z2 ->Pos X3


ENDE<- Pos Z2 <- Pos Z1 <- Pos Y3 ....... Pos Z2 <- Pos Z1 <- Pos Y1 <- Pos X3

Im Anhang ist der Counter zu sehen der den Array Index GL_VAR.pos_x_d_i Hochzählt. Mit einem Counter Down direkt am Counter UP hat das nicht funktioniert... Kann mir jemand evtl. eine Hilfestellung dazu geben? Wie man sowas am einfachsten umsetzen kann?

counter.jpg
 
Zurück
Oben