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!
Für mein Projekt muss ich die Bedienoberfläche eines Stromrichtergerätes mit Labview entwerfen. Dafür habe ich ein Programm von meinem Professor erhalten und die EXE Datei davon. Das Programm wurde von anderen Studenten entwickelt. Beide Dateien sollten nach ihm funktioniert, ohne dass ich Änderungen vornehmen musste. Die EXE-Datei kommuziert gut mit dem Treiber, das VI aber nicht. Also das VI in der Entwicklungsumgebung kommuziert nicht mit dem Treiber, wohingegen die EXE Datei funtioniert. Ich muss mit dem VI in der Entwicklungsumgebung arbeiten und weiß nicht warum das VI funktioniert nicht.
Das Programm selbst zu überarbeiten, ist keine Möglichkeit, weil es sehr lang ist und ich nicht genug Erfahrung mit Labview habe und es ist nicht die Arbeit, die mir gegeben wurde.
Weiß jemand, warum das VI ein Problem hat, wenn die EXE-Datei einwandfrei funktioniert und wie ich das Problem beheben kann?
RE: Die Kommunikation mit dem VI funktioniert nicht
Hallo Benutzer02,
herzlich willkommen im LabVIEW-Forum!
Wenn du hier mit dem Nachtragen benötigter Informationen beschäftigt bist, kannst du gern auch einen Link auf deinen Thread im NI-Forum hinzufügen.
Niemand macht gern Arbeit, wenn diese evtl. schon woanders erledigt wurde!
Wenn du hier mit dem Nachtragen benötigter Informationen beschäftigt bist, kannst du gern auch einen Link auf deinen Thread im NI-Forum hinzufügen.
Niemand macht gern Arbeit, wenn diese evtl. schon woanders erledigt wurde!
Hier ist das VI
13.10.2021, 18:37 (Dieser Beitrag wurde zuletzt bearbeitet: 13.10.2021 18:42 von GerdW.)
RE: Die Kommunikation mit dem VI funktioniert nicht
Hallo Benutzer02,
leider hast du (oder jemand anderes) deinen Thread im NI-Forum zum genau gleichen Thema löschen lassen…
Schön, dass du jetzt auch dein VI hier angehangen hast. Dummerweise hast du noch keinen der Vorschläge, die du im NI-Forum erhalten hattest, umgesetzt!
Also:
- lokale Variablen vermeiden und durch Drähte ersetzen!
- BytesAtPort vermeiden, wenn man ein TermChar benutzt! (Du hattest auch schon den Link auf diesen Vortrag erhalten!)
- unbedingt sinnvolle und eineindeutige Labels für Controls/Indicators verwenden!!! Warum gibt es ein Control "Stromregelung" und einen Indicator "Stromregelung"??? Warum gibt es zwei Indicators "Übertragung abgeschlossen" und "Übertragung abgeschlossen " (ja, die Anführungszeichen sind korrekt gesetzt)???
- die komplette Auswertung des empfangenen Strings bitte unbedingt aufräumen und vereinfachen! Was man mit dupliziertem Code erledigt, kann man auch mit einer Schleife erledigen!!!
- vernünftige Datenverwaltung betrieben! Warum so viele Einzelwerte, die man eigentlich auch in einem Cluster verwalten könnte?
- usw. usf.
Bitte dein VI nach all diesen Überarbeitungen nochmal bereitstellen…
Wie schon gesagt: das hatten wir alles schon im NI-Forum besprochen!!! (Ich hasse es finde es wirklich nicht schön, wenn ich mich wiederholen muss…)
RE: Die Kommunikation mit dem VI funktioniert nicht
Hallo,
Also wie gesagt ich habe das Programm nicht selber gemacht und kenne nicht die Studenten, die das gemacht haben. Ich muss nur das Programm für meine Aufgabe benutzen. Das Programm neu zu gestalten ist keine Möglichkeit. Ich habe das schon als Alternativ an dem Professor vorgeschlagen. Laut ihm funktioniert das Programm. Ich muss nur herausfinden, was fehlt.
- Ich denke auch, dass dieses VI vielleicht nicht das richtige ist aber der Professor sagt, er ist das VI, aus dem die EXE erstellt wurde. Also weiss ich nicht mehr, was ich denken soll.
- Die EXE wurde mit der Labview-Version 2009 erstellt.
RE: Die Kommunikation mit dem VI funktioniert nicht
Hallo Benutzer02,
Zitat:Die EXE wurde mit der Labview-Version 2009 erstellt.
Und du bist jetzt mit LV2019 unterwegs: da hat sich der Compiler mindestens 2× erheblich geändert. Und zusammen mit den ganzen Kritikpunkten, die du jetzt schon zweimal eingesammelt hast, kann das durchaus dazu führen, dass sich das VI in der IDE jetzt eben anders verhält als die Version, die vor 10+ Jahren daraus kompiliert wurde!
Also nochmal: das VI auf eine vernünftige Architektur umstellen und dann testen/debuggen/dokumentieren!
RE: Die Kommunikation mit dem VI funktioniert nicht
Hallo zusammen,
interessant, dass das Programm bestehend aus diesem einen VI funktionieren soll. Ja, vielleicht ein bisschen :-)
Wenn es gestartet wird, dann wird sofort die serielle Schnittstelle COM1 geöffnet. Es wird also nicht an einem anderen COM Port funktionieren.
Es wird das meist falsch verwendete "Bytes at Port" auch hier falsch verwendet. Direkt nach dem schreiben des Befehls wird "Bytes at Port" abgefragt und genau diese Anzahl Bytes wird anschließend auch gelesen, es sei denn es wird doch vorher noch ein LineFeed empfangen. Mal angenommen das "Bytes at Port" liefert 1 Byte dann wird ein Byte gelesen. Beispielsweise ein "g". Anschließend wird das ausgewertet und das Programm geht davon aus, dass nach dem "g" noch eine Zahl kommt, welche als "alpha [Grad]" angezeigt wird. Da aber nur ein Byte, also das "g" empfangen wurde, passiert - ja was? - ""alpha [Grad]" wird mit "0" angezeigt. Sorry, aber das ist blödsinn.
Ich könnte das jetzt fortsetzen - in dem VI wimmelt es nur so vor fragwürdigen Dingen.
Das Programm mag auf manchen Rechnern zufällig gelegentlich noch halbwegs funktionieren - mehr aber auch nicht.
Beschäftige dich doch erst einmal mit dem Stromrichter und dessen Protokoll - etwas anderes wird dir kaum übrig bleiben.
Martin Henz
14.10.2021, 19:47 (Dieser Beitrag wurde zuletzt bearbeitet: 14.10.2021 19:49 von GerdW.)
RE: Die Kommunikation mit dem VI funktioniert nicht
Hallo Benutzer,
hier mal ein "Friedensangebot":
Zitat:- die komplette Auswertung des empfangenen Strings bitte unbedingt aufräumen und vereinfachen! Was man mit dupliziertem Code erledigt, kann man auch mit einer Schleife erledigen!!!
Zu diesem Thema mal ein Bild:
Es zeigt, wie 3 deiner Auswertungen zu einem ScanFromString und einer Case-Struktur kombiniert wurden.
Die Fleißarbeit, die ganzen anderen Auswertung hinzuzufügen, bleibt dir überlassen!
Die RS232-Abfrage sollte eher so aussehen:
Das VISAClose sollte natürlich rechts nach der Schleife liegen…
Und das hier:
sollte eigentlich von einer Eventstruktur erledigt werden! (Und wenn du die Case-Struktur in diesem Bild entfernst, brauchst du nicht einmal eine lokale Variable von "Leertaste" im FALSE-Case. Sowas nennt man Rube-Goldberg!)
Außerdem ist sehr ungünstig, ständig ein Gerät/Port/Referenz zu öffnen, aber nie zu schließen. Ebenso ist es ungünstig, ein Gerät/Port/Referenz innerhalb einer Schleife zu öffnen und gleich wieder zu schließen…