Massflowcontroller steuern und bei Bedarf Rampenfahren
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!
23.10.2013, 10:29 (Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2013 10:30 von rc.)
RE: Massflowcontroller steuern und bei Bedarf Rampenfahren
Hallo Gerd,
genauso habe ich am Angang gemacht aber geht dicht. Da ich dieses Fehler bekomme.
Anscheinend hat das Array aus dem For-Schleife 9 Elementen aber ich habe einen cluster mit 3 Elementen
RE: Massflowcontroller steuern und bei Bedarf Rampenfahren
Hallo rc,
ich hatte schon ein paar Beiträge vorher angemerkt, dass man ArrayToCluster richtig parametrieren muss. Liest du auch, was ich schreibe? Liest du die Kontexthilfe zur jeweiligen Funktion?
RE: Massflowcontroller steuern und bei Bedarf Rampenfahren
Hallo Gerd,
ja hattest du im Beitrag #46 schon: Dann solltest du doch 3 Werte an die FOR-Loop anschließen - und diese auch in der richtigen Reihenfolge! Und dass dann gleich als Array, welches man praktischerweise mit BuildArray erstellt...
Und so habe ich die sollwerte Werte in die For-schleife geführt.
Ich habe jetzt Für die Istwerte einfach Cluster-size von 9 auf 3 geändert. So geht es aber immernoch bekomme ich Error: 14001 oder 14002 also invalid Refnums.
RE: Massflowcontroller steuern und bei Bedarf Rampenfahren
Hallo Gerd,
ok es hat sich erledigt! Ich kann die istwerte sehen. Ich hätte diese Block ( Programm for 4 Massflowcontroller ) nicht entfernen sollen. Da sind die Referenzen von sp`s und pv`s die man braucht. Vielen Dank für die Hilfe
Jetzt versuche ich diese Beispiel mit XControl zu verstehen...
RE: Massflowcontroller steuern und bei Bedarf Rampenfahren
Hallo Gerd,
Zitat: Der Cluster sollte eigentlich in einem Schieberegister der Statemachine liegen. Dieser Cluster sollte alle relevanten Daten (also auch Schleifenzähler für deine Wiederholungen etc.) enthalten. Als Beispiel dafür kann ich dir das mitgelieferte Grundgerüst für ein XControl empfehlen: auch dort hat man (quasi) eine Statemachine vorliegen, die ihre Daten mit 2 oder Schieberegistern speichert!
THINK DATAFLOW! (hier mit einem Hauch von Ansatz von OOP...)
Du hast einen Berg an Daten (Nutzervorgaben, interne Ist-Zustände). Diese liegen in einem Cluster vor, der in einem Schieberegister gespeichert wird. Der jeweilige State kann sich die ihn interessierenden Werte aus dem Cluster lesen und sollte die ihn betreffenden Werte aktualisieren, bevor der Cluster wieder im Schieberegister gespeichert wird...
Also mit MFC`s zu kommunizieren und die sp- änderungen klappen soweit.
Verstehe ich jetzt richtig? Ich kann alle User vorgaben ( sie sp`s für die MFC`s, Anzahl der Rampenfahreten, O2-Änderungsgeschwindigkeit und O2-Rückschrittwert) in ein Cluster packen oder je nach der Anwendung in verschiedenen Cluster und dann ins Shift-Register? Kann ich dann diese Xcontrol zu meinem Programm ( mit alle anderen SubVI`s) implementieren? Oder erstellt man da ein neues xControl?
RE: Massflowcontroller steuern und bei Bedarf Rampenfahren
Hallo rc,
das XControl war nur als Beispiel für die Nutzung von Clustern in Schieberegistern gedacht, du sollst ein XControl weder nutzen noch selbst programmieren...
Ich persönlich bevorzuge einen großen Cluster, der alle relevanten Daten der Statemachine enthält!
RE: Massflowcontroller steuern und bei Bedarf Rampenfahren
Hallo Gerd,
Achso Ok!
Zitat:Wie soll ich da den Ausgang von Select verdrahten ?
Select erwartet einen Wert für TRUE und FALSE sowie eine boolsche Bedingung. Die Bedingung musst du programmieren, die Werte passend anschließen...
[/quote]
Hierzu ist meine Bedingung die Zündung, die unterhalb des Zustandsautomas mit Hilfe von DAQmx programmiert wurde. Ist das falsch? Und die True, false Werte sind doch die beide Enums, die die Zustände 4 und 5 beschreiben. Ich habe das Gefühl, dass ich bald am Ziel bin aber weiss ich nicht wie ich da weiterprogrammieren soll. Ich bin unendlich dankbar für jede Hilfe
RE: Massflowcontroller steuern und bei Bedarf Rampenfahren
Hallo noch mal,
wenn ich jetzt alle sollwerte in ein Cluster packe und dann in die Schieberegister dann bekomme ich Fehler wegen der localen Variablen. Warum? Wie kann ich da Schleifen Zähler auch mit rein nehmen? Soll ich auch für den rechten Schieberegister ein Ausgangscluster erstellen?
RE: Massflowcontroller steuern und bei Bedarf Rampenfahren
Hallo rc,
hier mal ein Ausschnitt aus einem meiner Programme:
Wichtig ist das obere Schieberegister, welches einen Datencluster enthält.
Du siehst, wie man neue Werte in den Cluster zurückschreibt: Per Bundle(ByName).
Rechts oben wird dann noch eine Anzeige auf dem UI aktualisiert. Andere Cases bearbeiten andere Einträge im Cluster auf die gleiche Weise: alten Wert per Unbundle lesen und neuen Wert per Bundle zurückschreiben!