Schleife Programmieren

K

Klaudio

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

da ich erst seit kurzem mit SPS programmiere bin ich leider noch nicht so fit.

Folgendes Problem versuche ich schon seit Tagen zu lösen:

Ich habe in mein SPS Programm einen Zähler eingebaut. Dieser zählt hoch bis zu einer bestimmten Aktion, z.B. von 1 bis 10 (kann aber auch von 1 bis 5 sein).

Nun möchte ich, dass wenn ein Eingang (z.B. ein Taster E 5.0) ein Signal gibt, ein Zylinder A 4.0 so oft ein und ausfährt wie der Zählstand ist. Dabei soll der Zylinder ausfahren, 500ms verweilen und wieder einfahren.
Wenn der Zähler auf 5 ist, und der Taster gedrückt wird, dann soll der Zylinder 5 mal ein- und ausfahren.

Also z.B.:

Zähler Z1

Eingang E 5.0

Ausgang A 4.0

Aus der Hilfe weiss ich, dass ich den Zähler rückwärts zählen lassen kann, mit Abbruchbedingung.
Weiter weiss ich, dass ich eine Einschaltverzögerung erstellen kann, z.B. für das Einfahren des Zylinders.
Aber leider weiss ich nicht, wie ich all das unter einen Hut bringe.

Ich hoffe, dass ich mich halbwegs verständlich ausgedrückt habe.
Kann ich mein Problem in einer Schleife darstellen? Wie würde so eine Schleife aussehen. All meine Versuche sind bisher kläglich gescheitert.
Könnte mir jemand sagen, wie so ein FB aussehen könnte.
Ich bin für jede Hilfe dankbar.

Gruß

Klaudio
 
Eigentlich brauchst Du gar keine Schleife zu programmieren, mindestens nicht in dem Sinn was man aus der PC-Programmierung kennt. Die Schleife kriegst Du, so zu sagen, von der Ablaufzyklus der SPS geliefert.

Du brauchst Dich nur darauf zu konzentrieren, dass Du Dein Auslösesignal erkennst (Flankenerkennung für E1.0). Dann fährst Du Dein Zylinder aus, wartest Deine 500ms ab und fährst zurück.

Dann gibt es die Frage, wie erkennst Du, dass der Zylinder wieder zurück gefahren ist? Gibt es Endschalter, oder musst Du auch hierfür ein Timer setzen. Egal was, aber hier brauchst Du irgendwas womit Du erkennen kannst, dass der Zylinder zurück ist, womit Du Dein Zähler ein runterzählen kannst und wenn <>0 der Zylinder wieder losschicken kannst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

danke für Deine Antwort.

Leider habe ich an dem Zylinder keinen Endlagenschalter. Ich müsste also auch wieder mit einer Ein- bzw. Ausschaltverzögerung arbeiten.

Kannst Du mir vielleicht ein Beispiel in AWL geben, wie so etwas aussehen könnte.


Gruß

Klaudio
 
Hallo zusammen,

Zur Frage mit dem Zähler.
Ich lasse den Zähler in einem FC hochzählen, dafür wird ein anderes Signal benutzt.

In der neuen FC möchte ich nun, dass nach dem Drücken einer bestimmten Taste der Zähler rückwärts zählt, und dabei eben einen Zylinder ein- und ausfährt.

Leider weiss ich nicht, wie die passenden AWL-Anwiesungen dazu aussehen.

Danke im Vorraus

Gruß

Klaudio
 
Zuviel Werbung?
-> Hier kostenlos registrieren
weiß nicht, ob es funktioniert, habe leider gerade nichts zum testen und ist wahrscheinlich viel zu aufwendig, aber so könnte es funktionieren.

U E 5.0 //Start Signal
S M 1.0 //HIME

UN M 1.0 //HIME
SPB M1 //SPRUNG ans Ende (SPB ==> Sprung bedingt (VKE =1 --> Sprung nach Marke 1)

U T 2 //ZYLINDEREINFAHRZEIT
= M 1.2 //HIME TIMER (weil von Timern keine Flanke ausgewertet werden kann)


L Z 1 //Zähler aus dem anderen FC
L 0 // Wert = 0
==I //VERGELEICHER Integerzahl
R M 1.0 //ABSCHALTUNG

SPB M1 //SPRUNG ans ENDE (SPB ==> Sprung bedingt (VKE =1 --> Sprung nach Marke 1)

FN M 1.2 //negative Flanke vom HIME TIMER
O E 5.0 // 1. Impuls durch Taste, da keine negative Flanke vom Timer
L S5T#600MS //500ms Verweildauer + 10ms Fahrweg Zylinder
SI T 1 // Setze Impuls
U T 1 //Timer 1 Ausfahren + verweilen
= A 4.0 //Zylinder

FN A 4.0 //Negative Flanke wenn Zylinder zurückfährt startet Timer 2
L S5T#100MS //Rückfahrt des Zylinder
SA T 2 //Timer 2 Rückfahrt

U T 2 //Einschaltimpuls des Timers
ZR Z 1 //zählt den Zähler um eins zurück

M1: NOP 0 //NOP 0 = No Operation keine Funktion
 
Zurück
Oben