INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Befüllung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.03.2011, 18:55
Beitrag #11

Schüler92 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Feb 2011

2009
2010
DE_EN


Oesterreich
RE: Befüllung
Hallo.
Ich habe nun folgendes implementiert:
Je nach der Stellung des Entnahme-Tasters in der Registerkarte "Temperatur",
steigt/sinkt die Temperatur des verwendeten Verdampfers. Dieser schwankt in einem bestimmten Bereich. Momentan 3 bis 3,5V.
So weit so gut.
Das erste wobei ich nicht ganz weiß, wie ichs lösen soll, ist, dass ich den Wert des Entnahme-Tasters ja nur 1 mal übergebe und ab dann mit den Schieberegistern weiterarbeite. Wenn ich den Wert des Tasters also ändere, bewirkt es nichts.
Das zweite ist, dass die Temperaturen schon irgendwie abhängig vom Füllstand ab und zunehmen sollen.
Bsp.: In der Zeit, in der sich der Tank von 0 auf 5V befüllt, steigt gleichzeitig auch die Temperatur von 3 auf 3,5V.
Ich habs jetzt aber unabhängig davon gemacht und es funktioniert nur unter "optimalen" Bedingungen richtig.
Optimal deswegen, weil mir aufgefallen ist, dass ab und zu die Temperatur sich erst später ändert als der Füllstand. (Grund ist mir klar)

Weiß jemand was ich tun müsste, damit die Temperatur von der Schalter-Stellung und auch vom aktuellen Füllstand abhängig wird?

2009 .vi  Simulation der Anlage_V0.11.vi (Größe: 167,61 KB / Downloads: 159)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.03.2011, 22:10
Beitrag #12

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Befüllung
(25.03.2011 18:55 )Schüler92 schrieb:  Das erste wobei ich nicht ganz weiß, wie ichs lösen soll, ist, dass ich den Wert des Entnahme-Tasters ja nur 1 mal übergebe und ab dann mit den Schieberegistern weiterarbeite. Wenn ich den Wert des Tasters also ändere, bewirkt es nichts.
Das ist richtig - und kommt eben daher, weil die "Übergabe" vor der While-Schleife sitzt.
Um dieses Problem zu beheben, musst du dir eben einen entsprechenden Algorithmus ausdenken. z.B. so wie im Anhang.

Zitat:Bsp.: In der Zeit, in der sich der Tank von 0 auf 5V befüllt, steigt gleichzeitig auch die Temperatur von 3 auf 3,5V.
Im einfachsten Falle kann man ganz einfach des Inkrement entsprechend anpassen. Wenn der Bereich von 0 bis 5 mit der Schrittweite von 0.01 durchlaufen wird, dann lässt du den Bereich von 3 bis 3.5 einfach mit einer Schrittweite von 0.001 durchlaufen. Beide Bereiche werden dann "gleich schnell" durchlaufen.

Noch ein Hinweis:
Es gibt zwei Extreme, wie man eine Aufgabe (das ist das, was dein Programm machen soll) löst (lösen ist das, wie das Programm gemacht wird). Das eine ist "SPS-Programmierung": Da findet in einer Schleife immer alles statt (mit der Implizierung: keine SubVIs). D.h. du musst immer kucken: wie sind die Eingangswerte, welche Werte leiten sich davon ab - und diese abgeleiteten Werte werden weiter verrechnet. Und hier siehst du gleich: Die Eingangswerte werden immer kontrolliert, egal ob sie sich geändert haben oder nicht. Dieses Gesamtverfahren aber bringt sehr bald Probleme mit sich.
Das andere Extrem sind reine Event-gesteuerte Klassen (mit der Implizierung: viele SubVIs). Hier werden die Eingangswerte nur ein einziges Mal kontrolliert - nämlich event-gesteuert, wenn sie sich ändern. Zum Zeitpunkt der Änderung werden die abgeleiteten Werte neu(!) berechnet (und per Property an den Weiterverarbeitungs-Teil geleitet). Die (auch hier notwendige) Programmschleife besteht dann aber nur noch aus der Weiterverarbeitung der abgeleiteten Werte.

Dein bisheriges Programm ist stark "SPS-lastig". Daher treten ganz schnell so Probleme auf wie das mit dem Verdampfer. Man kann jetzt hier so Sachen einbauen wie ich das in der unteren Schleife gemacht habe. Das sind aber nur mangelhafte Krücken. Eigentlich gehört deine Aufgabe mit einer Objekt-orientierten Struktur gelöst. Auch wenn das Frontpanel und das Blockdiagramm sehr wenig aussehen, die Aufgabe selbst ist doch so umfangreich, dass sich ein Klassenmodell wohl lohnen würde.


Angehängte Datei(en)
2009 .vi  Simulation der Anlage_V0.11.vi (Größe: 172,57 KB / Downloads: 142)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.04.2011, 20:14
Beitrag #13

Schüler92 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Feb 2011

2009
2010
DE_EN


Oesterreich
RE: Befüllung
Hallo IchSelbst.
Zitat:Bei Fragen fragen.
Es geht um deinen Eintrag vom 22.03.2011 (Volumen.zip)
Hmm
Ich wollte fragen was in der Ereignisstruktur passiert. Wozu sind die Funktionen Queue anfordern und Melder anfordern notwendig?
Ich hoffe es macht nicht allzu viele Umstände.
Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.04.2011, 14:04
Beitrag #14

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Befüllung
(08.04.2011 20:14 )Schüler92 schrieb:  Ich wollte fragen was in der Ereignisstruktur passiert.
Eine Event-Struktur ist dazu da, um auf Benutzeraktionen zu reagieren. Benutzeraktionen sind z.B. das Betätigen eines Buttons (Click) oder das Ändern eines Wertes etc. In deinem Falle wird auf die Auswahl des Entnahmetanks (Bedienelement "Entnahme Methanol" aus Tank 1 oder Tank 2) reagiert. Sobald du also einen Tank zur Entnahme wählst, wird in die Event-Struktur verzweigt.

Es gibt ein SubVI namens "Volumen steuern". Dieses SubVI ist als Modul ausgelegt und läuft selbständig im Hintergrund. Es macht nichts weiter, als (mehrere) Volumen zu entleeren oder zu befüllen. Was (mit einem Volumen) gemacht werden soll, kann man dem Modul von außerhalb des Moduls vorgeben. Man kann also vorgeben, ob ein bestimmtes Volumen (z.B. "Methanol Tank 1") ab jetzt geleert oder befüllt werden soll. Wie bekommt man nun diese Vorgaben (Vorgaben sind Parameter, also Daten und fallen im allgemeinen unter Property), in das Modul? Ganz einfach: Das Modul besitzt zum Steuern eine "Steuer-Queue". Will man also Daten in das Modul hineinbekommen - beachte: das SubVI selbst ist ja in keinen Datenfluß eingebunden - sendet man die Daten ganz einfach per Queue. Das Modul fragt ständig die Queue ab, ob was neues anliegt: Wenn nein, naja Gott. Und wenn ja, dann halt das neue beachten. Daten kann man natürlich auch aus dem Modul nach außen "senden": per Melder.

Jetzt können wir wieder bei dem Event-Case weitermachen: Hier wird die Queue beschrieben, damit das Modul weis, was der Anwender ab jetzt machen will.

Zitat:Wozu sind die Funktionen Queue anfordern und Melder anfordern notwendig?
Um Daten per Queue zwischen zwei selbständigen, also nicht per Datenfluß verbundenen SubVIs auszutauschen, muss natürlich zuerst einmal eine Queue definiert werden. Mit "Queue anfordern" wird nichts weiter gemacht als eine Queue zur Verfügung gestellt. Ohne "Queue anfordern" kann man nicht per Queue kommunizieren. Gleiches gilt für Melder.

Noch ein Hinweis:
Man muss natürlich nicht unbedingt Queues und Melder nehmen. Man kann das Modul auch als LVOOP-Klasse aufbauen. Klassen haben per se Propertys ...

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.04.2011, 15:05
Beitrag #15

Schüler92 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Feb 2011

2009
2010
DE_EN


Oesterreich
RE: Befüllung
Hallo LV-Team.
Ich stehe vor einer "kleinen" Barrikade.
Im Anhang findet ihr mein Programm. Es handelt sich speziell um den rot umrahmten Bereich.
Problem dabei (Betrachtung für Stickstofftank): Programm startet defaultmäßig im Automatischen Ablauf => Stickstofftank wird befüllt
=> Man schaltet um auf Gesteuerten Ablauf => Es wird normal weiterbefüllt und beim Maximum (500 Schritte) entleert.
Rein theoretisch sollte bei erneutem Umschalten auf den Automatischen Betrieb ganz normal weiter entleert werden.
Das geschieht zwar, jedoch stimmen die Schritte nicht mehr. Es liegt glaub ich an den lokalen Variablen.?
Ich habe jetzt einfach einmal die lokalen Variablen an den Initialisierungsanschluss gelegt => Rückkopplungsknoten nur beim Programmstart null. Das ist Blödsinn, aber momentan ist mir nichts besseres eingefallen Sad

Ich habe auch sämtliche Möglichkeiten probiert (Schieberegister, Ereignisstruktur, lokale Variablen, etc.) aber nichts funktioniert....

Entschuldigt die Form Big Grin Construction

Bitte um Hilfe. Danke


Angehängte Datei(en)
Sonstige .rar  SW.rar (Größe: 152,48 KB / Downloads: 133)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: