TIA Graph Ablaufsteuerung, Heizventil schließen

Madsen-ru

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,

ich absolviere gerade eine SPS Weiterbildung über eine Fernschule und habe nun ein Problem bei einer Aufgabe bei der ich einfach keine Lösung finde, eventuell kann mir jemand bei diesen Problem helfen oder den richtigen Denkanstoß geben.

Folgendes Problem:

In der Aufgabe geht es darum eine Ablaufsteuerung zu programmieren und Später zu Visualisieren, es werden in einen Reaktor zwei Flüssigkeiten mit zwei Pumpen dosiert, dannach erhitzt und gerührt und nach einer Wartezeit abgelassen. Das habe ich soweit alles erledigt, nur ist in meinen Programm das Problem das nach der Aktion Heizen (als FC geschrieben, welches das Heizventil öffnet) soll nach erreichen der Solltemperatur das Heizventil (H) wieder schließen, das passiert bei mir aber nicht sondern das Programm läuft mit offenen Heizventil weiter.

Anbei ein Bild des aktuellen Progamms.

Vielen Dank im Vorraus

Grüße Matthias


Heizventil.JPG
 
Ich würde den FC nicht im Graph aufrufen.
Nur Variablen manipulieren und dem FC übergeben.

Dein Problem ist wsl. das H nur beschrieben wird wenn der FC aufgerufen wird.

Hat H zum Zeitpunkt des Letzten Aufrufes des FC den Wert True dan bleibt H True bis die Variable wieder beschrieben wird.

Gesendet von meinem SM-G973F mit Tapatalk
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Soweit ich das sehe schaltest du das Ventil nicht ab.

Du musst daran denken wie das Programm funktioniert. Auch wenn in dem Schritt S3 das Ventil geschlossen werden würde, bleibt es offen.
Du arbeitest den Schritt S3 ab.
Danach wird die Bedingung T3 geprüft und danach in S4 gesprungen (wenn Bedingung erfüllt). Somit wird das Ventil nicht mehr abgeschalten, weil du nicht mehr in S3 springst.


So sollte es funktionieren:
Du öffnest das Ventil bis die Temp erreicht ist. Das ist dein Schritt S3.
Wenn die Temp erreicht ist, schaltest du in den nächsten Schritt (T3). In diesem Schritt (S4) wird sofort das Ventil geschlossen.
Dann kannst du eine weitere Bedingung einfügen (z.B. eine kurze Zeitverzögerung, damit das Ventil sicher geschlossen ist oder eine Abfrage von einem Endschalter,...).
Danach springst du in den nächsten Schritt (Reaktion).

Oder S4 ist deine Reaktion, dann wird aber bei jedem Durchlauf das Ventil "geschlossen".

MfG Hannes
 
Vielen Dank,

ich habe jetzt im Schritt(S4) Programmiert das dass Heizventil ausgeschaltet wird, so funktioniert es ganz gut.
Mein fehler war wohl das ich bisher immer Versucht habe in der Transition"heiß" das Ventil wieder zu schließen, was scheinbar nicht möglich ist.

Grüße Matthias
 
Ich würde es unterlassen bzw. mir gar nicht erst angewöhnen, innerhalb eines Graph-Schrittes einen solchen FC aufzurufen. Das kann nur in die Hose gehen und ist aus meiner Sicht ganz schlechter Stil. Und wie du siehst ist das ja auch nicht ganz unbegründet, wenn es dadurch zu solchen inkonsistenten Zuständen kommt. Lieber nur (globale) Variablen setzen und in den Nachgeschalteten Anweisungen bzw. in einem externen Baustein den FC entspechend beschalten und aufrufen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für den Hinweiß, ich werde es in zukunft versuchen anders zu lösen, nur in dieser Aufgabe war der Aufruf des FC Heizen in diesen Schritt so gefordert.

Mit freundlichen Grüßen

Matthias
 
Moin Banana Joe,

Ich würde es unterlassen bzw. mir gar nicht erst angewöhnen, innerhalb eines Graph-Schrittes einen solchen FC aufzurufen. Das kann nur in die Hose gehen und ist aus meiner Sicht ganz schlechter Stil.

das möchte ich so generell nicht stehen lassen. Ich habe in einem Schritt einen FC-Aufruf einer FC, die ein paar Argumente für eine Abfrage zusammenfasst und entsprechend ein TRUE oder FALSE ausgibt. Die FC benötigt nur einen Zyklus und das Ergebnis wird für die nächste Entscheidung (also Alternativverwzeigung) verwendet.

Das halte ich auch nicht für einen schlechten Stil.

Was nicht geht - und da gebe ich Dir absolut Recht - ist eine FC, die intern Berechnungen über mehrere Zyklen machen soll oder auf Zustände von Werten warten soll.


P.S.: Ich habe in meinem Programm auch andere Funktionen, die ich wie Befehle handhabe, da sie, wie eine Schleife, einfach eine Anweisungsfolge in einem Zyklus durcharbeiten.

VG

MFreiberger
 
Das war wohl etwas missverständlich meinerseits, es gibt FCs, bei denen das durchaus Sinn macht sie direkt im Schritt aufzurufen. Mit "einen solchen FC" meinte ich eigentlich FCs die, wie du schon sagtest, eigentlich in jedem Zyklus durchlaufen werden sollten, um eben solche inkonsistenten Zustände zu vermeiden.

Aber gerade Berechnungen oder dergleichen, welche nur während des aktiven Schrittes genutzt werden, können durchaus auch im Schritt aufgerufen werden. Ansonsten gäbe es diese Option wohl erst gar nicht.
 
Zurück
Oben