LabVIEWForum.de
Steuerung eines Labornetzgeräts mit EA-UTA 12 - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: Hardware (/Forum-Hardware)
+--- Thema: Steuerung eines Labornetzgeräts mit EA-UTA 12 (/Thread-Steuerung-eines-Labornetzgeraets-mit-EA-UTA-12)

Seiten: 1 2 3


RE: Steuerung eines Labornetzgeräts mit EA-UTA 12 - GerdW - 24.09.2015 15:01

Hallo Franziska,

Zitat:Für das Read-Write.vi brauche ich aber leider auch die Parameter in Hexadezimal
Nein, du brauchst nur die richtigen Werte!
Ob der Wert in Dezimal oder Hexadezimal auf dem FP zu lesen ist, ist nur eine Frage der Optik…
Beispiel: 0xEF = 0b11101111 = 0o357 = 0d239, immer der gleiche Wert, nur andere Optik!

Hinweis: Wenn du Zahlen-/Textkonstanten im BD verwendest und einen anderen Displaymode einstellst, solltest du auch immer die Radix/Displaymode-Anzeige (Rechtsklick->Sichtbare Objekte) aktivieren!


RE: Steuerung eines Labornetzgeräts mit EA-UTA 12 - toxicomanie - 25.09.2015 10:53

IdeaMetal

da geht die Sonne auf am Freitag! Das mit dem Radix ist gut! Und das mit den Werten macht natürlich Sinn... Hätt man auch draufkommen können, danke für den Hit am Freitag Wink

Ich wünsch erst mal schönes Wochenende!

Liebe Grüße,
Franzie


RE: Steuerung eines Labornetzgeräts mit EA-UTA 12 - toxicomanie - 28.09.2015 13:42

Hallo zusammen Smile

Nur interessehalber wollte ich nochmal nachfragen: Warum ist die flache Sequenzstruktur so verpönt? Ich meine, jetzt wo ich mit der State Machine arbeite, ist mir schon klar dass das sehr viel übersichtlicher ist und man praktisch wie mit einem Baukasten arbeiten kann. Aber ist die flache Sequenz einfach nur dahingehend unflexibel oder fängt man sich damit früher oder später wirkliche Probleme ein, dass etwas partout nicht machbar wäre damit?^^

Und damit dann auch wieder zu meinem Programm: Ich bin mir gerade unsicher, warum ich die ganzen Eingaben (Spannung Minimum/Maximum, Schrittweite) in die Ereignisstruktur gepackt habe. Könnte ich das alles theoretisch auch außerhalb der Ereignisstruktur in den Case "Wait for Event" packen? o.O
Und ich möchte mir gern die Spannungsrampen anzeigen lassen, die ich mit den for-Schleifen in den "User States" programmiert habe, das funktioniert einfach keinen Meter. Ich frage mich gerade, ob es vllt doch daran liegt dass einfach keine Verbindung hergestellt werden kann - er zeigt mir zwar bei "Anzahl gefundene Geräte" ein Gerät an, aber die Lampe am Netzgerät leuchtet nicht und vor jedem Programmstart kommt auch die Meldung aus der kleinen while-Schleife, dass kein Gerät angeschlossen ist :/ Klicke ich die Meldung allerdings weg, beschwert er sich nicht mehr.


RE: Steuerung eines Labornetzgeräts mit EA-UTA 12 - GerdW - 28.09.2015 13:56

Hallo Franziska,

Zitat:Könnte ich das alles theoretisch auch außerhalb der Ereignisstruktur in den Case "Wait for Event" packen?
Theoretisch: Ja.
Praktisch hättest du dann mit Nebeneffekten wie Raceconditions zu kämpfen. Es ist nämlich nicht nur wichtig, WO ein Wert aus einem Control gelesen wird, sondern auch WANN!

Zitat:Und ich möchte mir gern die Spannungsrampen anzeigen lassen, die ich mit den for-Schleifen in den "User States" programmiert habe, das funktioniert einfach keinen Meter.
Wo ist da eine Rampe?
Da wird eine FOR-Loop x-mal durchlaufen und generiert genau einen einzigen Wert. Wie ein einziger Wert eine Rampe darstellen soll, ist mir unklar…

Zitat:Warum ist die flache Sequenzstruktur so verpönt?
Weil sie unflexibler ist als eine Statemachine.
Weil sie DATAFLOW forciert, den man meist allein durch Drähte sicherstellen kann.

In deinem VI gibt es weiterhin RaceConditions durch mangelhaften DATAFLOW.
- im UserState wird zweimal "RW with Hex" aufgerufen, allerdings ist nicht klar, in welcher Reihenfolge dies geschehen soll…
- im Init wird OpenSaveHandle und RWWithHex aufgerufen, auch hier ohne zeitliche Anordnung…


RE: Steuerung eines Labornetzgeräts mit EA-UTA 12 - toxicomanie - 29.09.2015 08:00

Guten Morgen Gerd,

ich habe nach bestem Wissen versucht, deine Anmerkungen umzusetzen. Das mit den RaceConditions ist natürlich wahr, SetID und GetID laufen jetzt aber.

Dann habe ich mir überlegt, dass ich am einfachsten zwei neue Cases für die GetVoltages erstellen könnte - allerdings habe ich jetzt statt dem ReadWrite einfach einen Array mit den Werten erstellt und lasse mir den anzeigen, das ist - finde ich - einfacher als mit den UTA-Bausteinen zu arbeiten, damit könnte ich mir die UserState 1.1 und 2.2 ja wieder sparen?^^

Und anlässlich des gestrigen "Tags der dummen Fragen" hänge ich mal wieder mein Programm an mit der implizierten Frage, ob's so besser ist Wink

Danke für die Erklärung zur Sequenzstruktur!


Grüße,

Franzie


RE: Steuerung eines Labornetzgeräts mit EA-UTA 12 - toxicomanie - 29.09.2015 10:54

Buuuuja, ich Genie Tongue Immerhin ist jetzt schon mal eine Rampe zu erkennen Smile Auch wenn dieser Ablauf eine gefühlte kleine Ewigkeit benötigt :/ Auch interessant: Manchmal hängt sich das Programm noch auf. Was man hier auf alle Fälle vermeiden sollte, ist, den roten verbotenen "Ausführung-abbrechen"-Knopf zu drücken, dabei kommt es zu einem Fehler beim Schließen der Schnittstelle und wenn diese dann wieder geöffnet werden soll, wird ein Fehler ausgegeben.


RE: Steuerung eines Labornetzgeräts mit EA-UTA 12 - GerdW - 29.09.2015 17:23

Hallo Franziska,

Zitat:den roten verbotenen "Ausführung-abbrechen"-Knopf zu drücken,
Der sollte in einem laufenden Programm nicht sichtbar sein…

Zitat:dabei kommt es zu einem Fehler beim Schließen der Schnittstelle und wenn diese dann wieder geöffnet werden soll, wird ein Fehler ausgegeben.
Aus dem NI-Forum: "Pressing the Abort button is like stopping a car with a tree."

Zitat:Auch wenn dieser Ablauf eine gefühlte kleine Ewigkeit benötigt
Wieviele Steps führst du für eine Rampe durch? Bei jedem Schritt wartest du doch 6ms…


RE: Steuerung eines Labornetzgeräts mit EA-UTA 12 - toxicomanie - 30.09.2015 14:48

Blink also ich kann den roten Button sehen^^ Die exe-Datei erstelle ich ganz zum Schluss, Abgabe des Projekts ist "erst" am Freitag Tongue

Ja der Fehler lag an der IDN, seit ich das Schieberegister nicht mehr mit einer 0 initialisiere funktioniert das Ganze um ein Vielfaches schneller (davor hat es ca. 15 Minuten gedauert bis eine Messung gelaufen ist und mir ein Graph angezeigt wurde).

Ich bin jetzt nicht drumrum gekommen, doch noch eine flache Sequenz einzubauen, weil ich natürlich zuerst den Dialog bestätigen möchte, dass die Messung loslaufen soll und erst danach fängt der Programmteil an.

Ich möchte jetzt in meinen Diagrammen auf der x-Achse die Zeit anzeigen lassen und nicht die Iterationen - ist es unsauber programmiert, wenn ich ausmesse, wie lang eine Iteration braucht und dann einen Timer-Wert so einstelle, dass die Iteration anschließend eine Sekunde braucht?

Mittlerweile klappt auch die Verbindung von PC und Netzgerät einwandfrei --> man muss in jedem Fall SetCurrent mindestens 1 mal aufrufen (das geht meiner Meinung nach aus dem Manual nicht wirklich hervor. Auch der Aufruf und die richtige Parametrierung (hier: 0x0040) von SetStatus sind dafür notwendig).

Jetzt wird mir eigentlich nur noch ein Fehler beim Öffnen der Schnittstelle ausgegeben Sad 0x0070 - es handelt sich um einen Zeitüberlauf und einen Übertragungsfehler (Daten wurden nicht gesendet). Ich bin mir nicht sicher, was ich dagegen tun soll - gibt es hier ein Timing-Problem?

Etwas nebensächlicher wäre es noch interessant zu wissen ob es eine schnelle Möglichkeit gibt, alle Bedien- und Anzeigeelemente auf die Standardwerte zurückzusetzen, ohne das Programm neu öffnen zu müssen. Ich habe bereits eine Lösung gefunden (http://www.labviewforum.de/Thread-Bedienelemente-auf-Null-zuruecksetzen ), muss aber ehrlich zugeben, dass mir das bei all den Elementen zu viel Gewurschtel im Blockdiagramm wird.


Viele Grüße und wie immer herzlichen Dank fürs Helfen! Thanx

Franzie


RE: Steuerung eines Labornetzgeräts mit EA-UTA 12 - GerdW - 30.09.2015 15:03

Hallo Franzie,

Zitat:alle Bedien- und Anzeigeelemente auf die Standardwerte zurückzusetzen
Es gibt eine Methode des VIs namens "Standardwerte.Alle Standardwerte wiederherstellen"…


RE: Steuerung eines Labornetzgeräts mit EA-UTA 12 - toxicomanie - 01.10.2015 13:41

Ich brauche Hilfe Sad Ich versuche seit sage und schreibe 5 Stunden, ein GetVoltage neben dem SetVoltage zu platzieren, ohne den Datenfluss zu verletzen Tongue Ich dachte zuerst, ich könnte einfach einen neuen Case einfügen, aber dann wird ja nur der letzte gesetzte Wert gemessen und ausgegeben -.- Auch mit einer wüsten Schleifen/Case-Konstruktion aus den Beispielen (siehe Bild) hab ich es versucht, das klappt genauso wenig. Ich würde gern einerseits die gesetzten Soll-Werte anzeigen und zur gleichen Zeit die gemessenen Ist-Werte in einem Diagramm darstellen, kann das so schwer sein??