-> Hier kostenlos registrieren
Hallo alle zammen
Ich muss ein Programm mit BR-Studio in Verbindung mit der ST (Strukturierter Text) Programmiersprache schreiben.
Folgendes ist meine Aufgabe:
Ich habe einen pneumatischen Zylinder (doppeltwirkend) und 2 stück 3/2-Magnetventile (pneumatische Rückstellung) welche den Zylinder hin- und herfahren lassen sollen.
So sieht mein Quellcode aus:
//////////////////////////////////
// Steuerung Magnetventil 1 //
//////////////////////////////////
// Variable setzen
input_1 := TRUE;
// Zeitverzögerung beim Ausschalten des Ventils
TP_01( IN:=input_1, PT:=T#3s500ms );
// input_1 + Zeitverzögerung an Magnetventil_1 senden
magnetventil_1_do := TP_01.Q;
elapsedTime_1 := TP_01.ET;
// Variable Rücksetzen
input_1 := FALSE;
//////////////////////////////////
// Steuerung Magnetventil 2 //
//////////////////////////////////
IF (elapsedTime_1 = T#3s500ms) THEN
// Variable setzen
input_2 := TRUE;
// Zeitverzögerung beim Ausschalten des Ventils
TP_02( IN:=input_2, PT:=T#3s500ms );
// input_2 + Zeitverzögerung an Magnetventil_2 senden
magnetventil_2_do := TP_02.Q;
elapsedTime_2 := TP_02.ET;
// Variable Rücksetzen
input_2 := FALSE;
END_IF
Problem ist, dass der Zylinder bei diesem Code nur einmal hin- und zurück fährt. Ich will aber dass er das z.B. 10 mal tut, so oft ich es eben will.
BR-Studio arbeitet ja mit den Cyclic#1 - Cyclic#8 Dingern (weis grade nicht wie ich das nennen soll^^) welche ja z.B. alle 10ms wiederholt werden. Also dachte ich, dass meine Ventile bei meinem Code endlos ein und ausgehen müssten, das ist aber nicht der Fall. Das ganze passiert nur einmal, dann ist schluß.
Wie könnte ich das umsetzen, dass es funktioniert?
Ich hoffe, dass ich einigermaßen erklären konnte was ich möchte. Wenn mein Code nicht gut ist, dann korrigiert mich auch bitte.
Gruß
Kirpitsch

Folgendes ist meine Aufgabe:
Ich habe einen pneumatischen Zylinder (doppeltwirkend) und 2 stück 3/2-Magnetventile (pneumatische Rückstellung) welche den Zylinder hin- und herfahren lassen sollen.
So sieht mein Quellcode aus:
//////////////////////////////////
// Steuerung Magnetventil 1 //
//////////////////////////////////
// Variable setzen
input_1 := TRUE;
// Zeitverzögerung beim Ausschalten des Ventils
TP_01( IN:=input_1, PT:=T#3s500ms );
// input_1 + Zeitverzögerung an Magnetventil_1 senden
magnetventil_1_do := TP_01.Q;
elapsedTime_1 := TP_01.ET;
// Variable Rücksetzen
input_1 := FALSE;
//////////////////////////////////
// Steuerung Magnetventil 2 //
//////////////////////////////////
IF (elapsedTime_1 = T#3s500ms) THEN
// Variable setzen
input_2 := TRUE;
// Zeitverzögerung beim Ausschalten des Ventils
TP_02( IN:=input_2, PT:=T#3s500ms );
// input_2 + Zeitverzögerung an Magnetventil_2 senden
magnetventil_2_do := TP_02.Q;
elapsedTime_2 := TP_02.ET;
// Variable Rücksetzen
input_2 := FALSE;
END_IF
Problem ist, dass der Zylinder bei diesem Code nur einmal hin- und zurück fährt. Ich will aber dass er das z.B. 10 mal tut, so oft ich es eben will.
BR-Studio arbeitet ja mit den Cyclic#1 - Cyclic#8 Dingern (weis grade nicht wie ich das nennen soll^^) welche ja z.B. alle 10ms wiederholt werden. Also dachte ich, dass meine Ventile bei meinem Code endlos ein und ausgehen müssten, das ist aber nicht der Fall. Das ganze passiert nur einmal, dann ist schluß.
Wie könnte ich das umsetzen, dass es funktioniert?
Ich hoffe, dass ich einigermaßen erklären konnte was ich möchte. Wenn mein Code nicht gut ist, dann korrigiert mich auch bitte.
Gruß
Kirpitsch