# SPS Biegeanlage



## HuetteHH (27 März 2010)

Hallo ich habe nachfolgendes Problem..

Hier im Vorfeld eine Variablenliste:

S1 AT%IX8.1 : BOOL; (*Ein-Schalter*)
B1 AT%IX9.1 : BOOL; (*Zylinder 1 ausgefahren*)
B2 AT%IX10.1 : BOOL; (*Zylinder 1 eingefahren*)
B3 AT%IX9.2 : BOOL; (*Zylinder 2 ausgefahren*)
B4 AT%IX10.2 : BOOL; (*Zylinder 2 eingefahren*)
B5 AT%IX9.3 : BOOL; (*Zylinder 3 ausgefahren*)
B6 AT%IX10.3 : BOOL; (*Zylinder 3 eingefahren*)

Y1 AT%QX104.1 : BOOL; (*Zylinder 1 Signal-> ausfahren*)
Y2 AT%QX105.1 : BOOL; (*Zylinder 1 Signal-> einfahren*)´

Y3 AT%QX104.2 : BOOL; (*Zylinder 2 Signal-> ausfahren*)
Y4 AT%QX105.2 : BOOL; (*Zylinder 2 Signal-> einfahren*)

Y5 AT%QX104.3 : BOOL; (*Zylinder 3 Signal-> ausfahren*)
Y6 AT%QX105.3 : BOOL; (*Zylinder 3 Signal-> einfahren*)

Ich habe, wie man unschwer erkennen kann 3 Zylinder. Zylinder 1 spannt das Werkstück. Zylinder 2 Biegt eine Seite, Zylinder 3 biegt die andere Seite. Nach dem Zylinder 3 Zurück gefahren ist, soll auch Zylinder 1 zurückfahren damit man das Werkstück entnehmen kann.

Mein Problem liegt jedoch am Anfang. Wenn ich den Schalter S1 betätige fährt Zylinder 1 aus und spannt das Werkstück und B1= True.

Jetzt ist das Problem, dass wenn ich sage if B1 = True then Y3...
fährt er ja nicht wieder ein, weil B1 ja die ganze Zeit True ist. Und der Zylinder 2 muss wieder einfahren, weil er sonst mit dem Zylinder 3 kollidiert.

Wie lasse ich den 2ten Zylinder ausfahren ? Ich kann mich doch nicht auf den Zylinder beziehen, der die ganze Zeit nur eine Position hat oder ? 

kann das jemand nachvollziehen und mir helfen ?


----------



## zotos (27 März 2010)

Üblicherweise programmiert man solche sequentiellen Abläufe als Schrittkette. Habt ihr das im Unterricht schon behandelt?


----------



## HuetteHH (27 März 2010)

nein, leider noch nicht. Wir programmieren momentan in FBS mit Multiprog.


----------



## zotos (27 März 2010)

Wie bereits erwähnt, nimmt man für einen solchen Ablauf üblicherweise  eine Schrittkette.

Man zerlegt den Ablauf in einzelne Schritte: 


Spannen
 Ersten Biegezylinder in Arbeitsstellung
 Ersten Biegezylinder in Grundstellung
 Zweiten Biegezylinder in Arbeitsstellung
 Zweiten Biegezylinder in Grundstellung
 Spannzylinder öffnen
 
In Abhängigkeit von den Schritten werden die Ventile und damit die  Zylinder angesteuert.

Schritt 1 -> Y1
Schritt 2 -> Y1 und Y3
Schritt 3 -> Y1 und Y4
Schritt 4 -> Y1 und Y5
 Schritt 5 -> Y1 und Y6
Schritt 6 -> Y2

Die Schritte kann man mittels SR (Setze und Rücksetze) Glied  realisieren. Um von einem zum anderen Schritt zugelangen gibt es  sogenannte Transitionen (Weiterschaltbedingungen).

Um von Schritt1 in Schritt 2 zu gelangen muss Schritt1 aktiv sein und  die Weiterschaltbedingung erfüllt sein. Wenn Schritt2 gesetzt wird setzt  dieser den Vorgängerschritt (in dem Fall Schritt1) zurück.

Nun kannst Du ja mal die Suche bemühen und Dich ins Thema Schrittketten  einlesen. Wenn Du Fragen hast frag ganz einfach und es wird Dir sicher  jemand helfen.


----------



## HuetteHH (27 März 2010)

Ich habe bereits angefangen, mich in die programmierung von Schrittketten einzulesen. Jedoch weiss ich nich nicht, wie ich das mit dem Programm handle bzw. ich nicht weiss, wie man schritte einbindet...


----------



## maweri (27 März 2010)

'n abend,

wie zotos schon erwähnte, nimmt man in der Praxis für gewöhnlich Schrittketten.
Man kann so kleine Aufgaben aber auch ohne Schrittkette hinkriegen.

Aufbauend auf zotos Ablauf...



> Man zerlegt den Ablauf in einzelne Schritte:
> 
> 
> Spannen
> ...


...muß man sich nur noch die jeweiligen Schaltzustände der Endlagenschalter ansehen.

Hier mal ein Anfang:


```
// Zylinder 1 ausfahren
U S1
S Y1

//Zylinder 2 ausfahren
U B1
UN "Merker Zyl.2 AS"
S Y3

// Merken, daß Zylinder 2 schon mal ausgefahren wurde
U B3
S "Merker Zyl.2 AS"

//Zylinder 2 einfahren
U B3
R Y3
S Y4

usw...
```
Am Ende des Ablaufs werden die Merker wieder zurückgesetzt. Optional kann auch noch eine Haltezeit für die Biegezylinder eingebracht werden.


----------



## HuetteHH (27 März 2010)

wie schon erwähnt, müssen wir das in der FBS programmieren. hast du dafür auch ein example ?


----------



## maweri (27 März 2010)

Die graphischen Programmierungen lassen sich hier schlecht darstellen.
Da müsste man extra Screenshots erstellen und als Bild anhängen.

Aber so schwer ist die oben dargestellte Lösung nun auch wieder nicht.
U steht für UND
S für SETZEN
R für RÜCKSETZEN
und
N für NICHT (NOT)

Jetzt nur noch die passenden FBS-Dinger raussuchen und los geht's...


----------



## HuetteHH (27 März 2010)

Problem ist, dass die FBS Sprache ja nicht nach der reihe ausgeführt wird....


----------



## PN/DP (28 März 2010)

*wow*



zotos schrieb:


> Man zerlegt den Ablauf in einzelne Schritte:
> ...


Danke zotos!

So eine anschauliche, verständliche und trotz der Kürze umfassende Erklärung von Schrittketten habe ich noch nie gelesen. 
	

	
	
		
		

		
			





Zugegeben, das angefragte Beispiel war besonders gut zur Erklärung geeignet (wie das bei den idealisierten Schulaufgaben meistens ist), doch trotzdem
Respekt für die gelungene Formulierung Deines Beitrags.

Gruß
Harald


----------



## PN/DP (28 März 2010)

HuetteHH schrieb:


> Problem ist, dass die FBS Sprache ja nicht nach der reihe ausgeführt wird....


Wie ist das denn gemeint?

Jedes SPS-Programm, ganz gleich in welcher Programmiersprache, wird von oben nach unten ausgeführt und das immer wieder, immer wieder, immer wieder ...
Damit das Programm aber zu verschiedenen Zeiten unterschiedliche Sachen macht, gibt es die Merker (z.B. Schrittmerker), mit denen sich das Programm merken kann, wo es zuletzt aufgehört hat und was es beim nächsten Durchlauf tun soll. Mit Hilfe der Merker kann man dann auch gleich aussehende Vorgänge unterscheiden, die in einer Sequenz vielleicht mehrmals vorkommen.

Gruß
Harald


----------

