Ansteuerung von 2 Ventilen – müssen nicht parametrierbar sein

matti2013

Level-1
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Die beiden Ventile (Y1 / Y2) sollen jeweils im Wechsel angesteuert werden und dürfen niemals zusammen aktiv sein. Die Umschaltzeit wird zu Testzwecken mit 10 Sekunden angenommen.
Wie würdet ihr denn diese Aufgabenstellung angehen?
Meine Vorgehensweise
1 FC1 mit AWL erstellen
2. SFC 64 "TIME_TCK" lesen der CPU Systemzeit bei positiver Flanke
3. Lesen der Systemzeit T1
4. Lesen der Systemzeit T2
5. Zeitberechnung T2-T1
6. Nach Überlauf von T#24D20H31M23S647MS neu zählen
7. Systemzeit T2 als neuer Wert addieren
8. Differenz gemessener Zeitwert

Mit der positiven Flanke beim lesen der Systemzeit kann ich ja Y1 starten. Mit dem Ergebnis von Zeitberechnung T2-T1 kann ich mein Y2 schalten. Mit dieser Zeitmessung verhindere ich auf jeden Fall das die Ventile jemals gleichzeitig geschaltet werden können.
Was haltet ihr von dieser Vorgehensweise? Bin auch für Tipps von euch offen
 
hab ich wie folgt gelöst...

(für pneu. Membranpumpen mit 2 Ventilen hab ich vor kurzem einen FB erstellt)

INT das im 100ms durchgezählt wird... mit S/R schalte ich die beiden Ventile, nach Ende der Zeit wird das INT auf 0 gesetzt.
Der Baustein wird auch nur im 100ms Takt (ext. Flanke) gesteuert...

Die Arbeitszeit der Ventile gibt der Hersteller vor, ist also bei mir fest... über Pause verstelle ich die Menge.
Da ich mit dem Baustein dosieren möchte gebe ich von extern noch die Leistung/Durchlauf in Liter pro Hub an. Der Baustein rechnet dann nach der Sollwertvorgabe in l/h die Pausezeit bei jedem neuen Durchlauf, bzw. Startbefehl neu aus.

Hab ich bis jetzt nur in PLCSIM getestet... sehe aber keinen Grund warum das nicht gehen sollte.
 
....mmhhh...

Sicher, aber das ließt sich irgendwie wie eine "Hausaufgabe" die man selber machen muss/sollte, damit was hängen bleibt.

Wo ist denn das Problem der Flanke ein INT +1 zu zählen... und ein S/R Glied mit Vergleichern zu beschalten?

Angenommen du bist ein Schüler, dann empfehle ich folgendes:
1. Programmiere in FUP
2. Schau dir die Hilfe zu den Bausteinen ADD ==I usw. an...
3. Wandle das funktionierende Programm über die Ansicht des Editors zu AWL und vollziehe die Schritte nach

Nix für ungut!
 
Jetzt hat sich Siemens alle Mühe gegeben und zig Zeitfunktionen eingebaut.
Eine 10s Zeitverzögerung über Systemzeit zu lösen ist schon "praxisfremd".

Wahrscheinlich stand in der Hausaufgabe, dass keine Zeiten verwendet werden dürfen :p

Gruß
Dieter
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die beiden Ventile (Y1 / Y2) sollen jeweils im Wechsel angesteuert ...
2. SFC 64 "TIME_TCK" lesen der CPU Systemzeit bei positiver Flanke
3. Lesen der Systemzeit T1
4. Lesen der Systemzeit T2
...
Woher kommt denn die positive Flanke?
Was sind Systemzeit T1 bzw. T2, wo liest man die und was soll der Unterschied zur Systemzeit (ohne T...) sein?
Ich war bis jetzt der Meinung, es gibt nur eine Systemzeit, aber ich lerne auch gern noch dazu.
Und wozu braucht man da überhaupt eine Systemzeit (es sei denn, Blockmove vermutet richtig)?



5. Zeitberechnung T2-T1
6. Nach Überlauf von T#24D20H31M23S647MS neu zählen
... Mit dieser Zeitmessung verhindere ich auf jeden Fall das die Ventile jemals gleichzeitig geschaltet werden können. ...
Nach Deiner Beschreibung wäre ich mir auch nicht so sicher, das auf jeden Fall verhindert wird, das beide Ventile gleichzeitig geschaltet werden.
Da würde ich eine gegenseitige Verriegelung schon vorziehen!
 
Ja dann versuche ich es mit den S5 Zeiten und das ganze gegeneinander verriegelt. Ich möchte etwas lernen und keine fertige Lösung haben. Möchte hier nicht als fauler Hund in diesem Forum auffallen :-|
 
Du willst immer zwischen A und B mit einem Signal umschalten (toggeln). Dafür kann man z.B. einen sogenannten Stromstoßschalter benutzten. In der FAQ findest Du dazu eine Anleitung.

Das Umschaltsignal dafür kommt dann von Deinem Timer, den Du mit jedem Umschalten wieder neu startest.

Ist der Stromstoßschalter an, wird z.B. Ventil A angesteuert, ist der Schalter aus, dann B. Sicherheitshalber gegeneinander verriegelt, fertig.

Ich hoffe, das hilft Dir weiter.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn du was lernen willst, dann pack das Ganze in einen FB und deklariere IEC-Zeiten als Multiinstanzen.
Oder verwende Taktmerker und zähle damit ein Datenwort hoch.
Oder nimm den Alarm-OB und spiel damit.

Ist eigentlich alles praxisnäher als die Time-Ticks.

Dass du ein fauler Hund bist, will dir keiner unterstellen.
Aber die Schilderung deiner Aufgabe bzw. deines Lösungsansatzes klang halt zu sehr nach Hausaufgabe.

Gruß
Dieter
 
Du willst immer zwischen A und B mit einem Signal umschalten (toggeln). Dafür kann man z.B. einen sogenannten Stromstoßschalter benutzten. In der FAQ findest Du dazu eine Anleitung.

Das Umschaltsignal dafür kommt dann von Deinem Timer, den Du mit jedem Umschalten wieder neu startest.

Ist der Stromstoßschalter an, wird z.B. Ventil A angesteuert, ist der Schalter aus, dann B. Sicherheitshalber gegeneinander verriegelt, fertig.

Ich hoffe, das hilft Dir weiter.

Dein Vorschlag hört sich gut an, Stromstoßschaltung ist ja ein XOR

U Eingang Ventilsteuerung
FP #Flankenmerker
X #Ausgang Y1
= #Ausgang Y2

Mit
U //Eingang mache ich das XOR scharf
FP //Flanke Positiv stelle ich sicher das die 1 sicher kommt
X // Ausgang für das Ventil 1
= // Ausgang für das Ventil 2

Da XOR niemals 2 Zustände gleichzeitig zulässt, ist sichergestellt das beide Ventile niemals gleichzeitig eingeschaltet werden können.
 
Weiß nicht, ob das gut ist, was du machen willst, dann doch lieber so:


Code:
U #Eingang
FP #Flankenmerker
X #Ausgang_1
= #Ausgang_1

UN #Ausgang_1
= Ausgang_2

Statt U #Eingang nimmst du einen Timertick.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit
U //Eingang mache ich das XOR scharf
FP //Flanke Positiv stelle ich sicher das die 1 sicher kommt
X // Ausgang für das Ventil 1
= // Ausgang für das Ventil 2

Da XOR niemals 2 Zustände gleichzeitig zulässt, ist sichergestellt das beide Ventile niemals gleichzeitig eingeschaltet werden können.
Da solltest Du Dir noch mal die FAQ zum Stromstoßschalter ansehen, wie dieser wirklich funktioniert!
Auch wenn Ralle schon gezeigt hat, wie's richtig funktioniert, solltest Du noch begreifen warum.
 
Weiß nicht, ob das gut ist, was du machen willst, dann doch lieber so:


Code:
U #Eingang
FP #Flankenmerker
X #Ausgang_1
= #Ausgang_1

UN #Ausgang_1
= Ausgang_2

Statt U #Eingang nimmst du einen Timertick.

Stimmt, ich habe einen Fehler gemacht, das verstehe ich noch

U #Eingang
FP #Flankenmerker
X #Ausgang_1
= #Ausgang_1

UN #Ausgang_1
= Ausgang_2

Aber was meinst du jetzt mit diesem Timertick? Steh grad voll auf dem Schlauch
 
Du willst doch alle 10 Sekunden von #Ausgang1 auf #Ausgang2 umschalten, oder?

Jetzt wird nur ein einziges Mal beim Einschalten von #Eingang umgeschalten!
 
PS: Benutz' bitte mal den Button mit dem # ganz rechts in der 2. Reihe um Deinen Programmcode darin einzubetten. Das ergebnis kannst Du Dir in Ralles Post ansehen, da ist das Programm besser vom rest des Posts zu unterscheiden.
 
Code:
U #Eingang
FP #Flankenmerker
X #Ausgang_1
= #Ausgang_1

UN #Ausgang_1
= Ausgang_2

dann muss doch nach U #Eingang ein Timer rein

Code:
U #Eingang
L S5T#10s
SS T1
FP #Flankenmerker
X #Ausgang_1
= #Ausgang_1

UN #Ausgang_1
= Ausgang_2
 
Hier mal mit einem SE-Timer:

Code:
      UN    M      0.0
      L     S5T#10S
      SE    T      1
      NOP   0
      NOP   0
      NOP   0
      U     T      1
      =     M      0.0


      U     M      0.0
      FP    M      0.1
      X     M     10.0
      =     M     10.0


      UN    M     10.0
      =     M     10.1

Die NOP kannst du auch weglassen.
 
Zurück
Oben