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!
24.09.2015, 15:01 (Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2015 15:03 von GerdW.)
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!
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
Ich wünsch erst mal schönes Wochenende!
Liebe Grüße,
Franzie
28.09.2015, 13:42 (Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2015 13:43 von toxicomanie.)
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.
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…
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
Buuuuja, ich Genie Immerhin ist jetzt schon mal eine Rampe zu erkennen 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.
29.09.2015, 17:23 (Dieser Beitrag wurde zuletzt bearbeitet: 29.09.2015 17:25 von GerdW.)
also ich kann den roten Button sehen^^ Die exe-Datei erstelle ich ganz zum Schluss, Abgabe des Projekts ist "erst" am Freitag
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 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-Bedien...uecksetzen ), 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!
Ich brauche Hilfe Ich versuche seit sage und schreibe 5 Stunden, ein GetVoltage neben dem SetVoltage zu platzieren, ohne den Datenfluss zu verletzen 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??