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!
nochmals vielen Dank für eure Hilfe und Geduld
Nach Recherchearbeit und guter Laune am heutigen Morgen, habe ich mir nochmal ein VI aufgebaut, um das Problem mit TermChar zu lösen.
Und siehe da, es geht!
Im Bild ist mein VI nochmal gezeigt.
Vielen Dank nochmals für eure Hilfe!
Meine Pumpe braucht als Termchar Carriage Return Constant und mir fehlte einzig der Konstant-Wert 13 bei der Initialisierung des Serial Ports.
Anbei nochmal für andere User ein Link für Werte von Zeilenumbrüche etc. https://de.wikipedia.org/wiki/Zeilenumbruch
Heißt: BytesAtPort konnte ich nun ersetzen.
Nun versuche ich das ganze noch in eine State Machine zu verbauen.
ich habe leider immer noch das Problem, dass ich nicht "gleichzeitig" 2 Befehle an meine Pumpe senden kann.
Nochmal ein paar Infos:
Zum einen möchte ich mir kontinuierlich den Druck, der an der Pumpe anliegt, anzeigen lassen und zum anderen dazu den Massenstrom, den die Pumpe fördern soll, einstellen bzw. andere Befehle senden können.
Ich habe es mal so probiert, dass ich einmal WRITE und READ durchführen lasse, z.B. zum abfragen vorliegender Fehler, und dann durch CLEAR alles im Buffer lösche, um danach dann noch mal WRITE und READ nutzen zu können, um den Druck an der Pumpe abzufragen.
Das funktioniert aber nur bedingt/ gar nicht
Ist der Schalter DRUCK LESEN aus, dann läuft alles super. Ist dieser an, dann naja .....Mit der Highlight-Funktion ist es dann jedoch kein Problem.
Im Screenshot könnt ihr den Aufbau einmal sehen.
Hat jemand eine Idee/ einen LÖsungsvorschlag für mich?
Zitat:ich habe leider immer noch das Problem, dass ich nicht "gleichzeitig" 2 Befehle an meine Pumpe senden kann.
Das wird auch so bleiben, da du nur einen seriellen Port hast und dein Gerät immer nur auf einen Befehl antworten kann…
Zitat:Mit der Highlight-Funktion ist es dann jedoch kein Problem.
Vielleicht braucht deine "Pumpe" etwas Denkzeit zwischen Anfragen?
Schon mal eine Wartezeit in den Case eingebaut?
Wie lautet die Antwort der Pumpe auf die "STATUS?"-Abfrage?
Von einer Statemachine sieht man noch nicht so viel…
Also wenn die Highlightfunktion an ist, dann läuft alles ohne Probleme.
Stelle ich diese nun aus und schicke Befehle ab (Druck auslesen AN), dann bekomme ich den die Antwort von dem Befehl, jedoch bekomme ich keine Ausgabe des Druckes mehr.
Außerdem dauert es dann ca 3 Sekunden bis ich einen neuen Befehl abschicken kann.
Ist der Schalter "Druck auslesen" AUS, dann bekomme ich ganz normal die Antwort auf den Befehl (< 1 Sek), jedoch dauert es acuh hier gute 2 Sek bis ich einen neuen Befehl abschicken kann.
Hoffe das hilft weiter :/
@GerdW
ich habe nochmal eine neues verschlanktes VI aufgebaut um alles testen zu können. Die State Machine kommt noch
Das mit der Wartezeit im Case habe ich auch schon ausprobiert (jeweils mit 1,2,3,4,5 Sekunden)
Die Antwort der Pumpe auf die Status-Abfrage sieht folgendermaßen aus.
STATUS:95592201,1,0,,600,100,,,,0,0,0,0,0,0,0,0,296,0,0
Jedoch gibt es mir den Druckwert 296 kPa nicht in der nachgesetzten Druck-Abfrage (kPa und bar) heraus. :/
Entferne ich die Druckabfrage, also die Case-Struktur mit allem darin befindlichen, so bekomme ich direkt nach Absenden des Befehls eine Antwort. Ich denke also nicht, dass meine Pumpe eine "Bedenkzeit" benötigt.
Anzeige
10.12.2015, 13:03 (Dieser Beitrag wurde zuletzt bearbeitet: 10.12.2015 13:06 von GerdW.)
Zitat:Stelle ich diese nun aus und schicke Befehle ab (Druck auslesen AN), dann bekomme ich den die Antwort von dem Befehl, jedoch bekomme ich keine Ausgabe des Druckes mehr.
Du stellst "Druck lesen" auf TRUE, dann sendest du einen "STATUS?"-Befehl und bekommst eine Antwort nach dem Schema wie angegeben - aber diese Antwort enthält keine Druckangabe? Ja was denn nun: bekommst du eine Status-Antwort mit Druckwert oder keine Antwort?
Zitat:Außerdem dauert es dann ca 3 Sekunden bis ich einen neuen Befehl abschicken kann.
Wo genau musst du diese 3s warten?
Reagiert die Pumpe einfach innerhalb dieser 3s nicht oder dauert das VISARead nach dem STATUS?-Befehl einfach mal 3s, weil die Pumpe so lange für die Antwort benötigt?
Was sind deine Debugging-Ergebnisse?
Zitat:Ist der Schalter "Druck auslesen" AUS, dann bekomme ich ganz normal die Antwort auf den Befehl (< 1 Sek), jedoch dauert es acuh hier gute 2 Sek bis ich einen neuen Befehl abschicken kann.
Du bekommst eine Antwort auf den "STATUS?"-Befehl, obwohl du ihn gar nicht absendest?
Oder von welchem "Befehl" redest du nun wieder?
Auch hier die Frage: wo genau verbrätst du diese 2s Wartezeit?
Zitat:Hoffe das hilft weiter :/
Anhand meiner Fragen merkst du wohl, dass du dein Problem genauer beschreiben musst und mehr eigene Debugging-Ergebnisse liefern musst!
Du musst immer daran denken, dass wir deine Hardware nicht haben und deshalb zwar das VI anschauen, aber nicht "real life" testen können!
Zitat:
Stelle ich diese nun aus und schicke Befehle ab (Druck auslesen AN), dann bekomme ich den die Antwort von dem Befehl, jedoch bekomme ich keine Ausgabe des Druckes mehr.
Du stellst "Druck lesen" auf TRUE, dann sendest du einen "STATUS?"-Befehl und bekommst eine Antwort nach dem Schema wie angegeben - aber diese Antwort enthält keine Druckangabe? Ja was denn nun: bekommst du eine Status-Antwort mit Druckwert oder keine Antwort?
--> Also ich erhalte keine Ausgabe in dem Fenster "Ausgabe Druck bar" und "Ausgabe Druck kPa", obwohl ich mit TRUE einen erwarten würde.
Um hier aber nicht weiter für Verwirrung zu stiften. Ich habe das Problem meiner Meinung nach lösen können
Ich habe einfach eine flache Sequenzstruktur mit einer Wartezeit von 50 ms eingefügt.
Mit diesen Einstellungen läuft alles so wie ich es erwarte und auch haben möchte
Zu guter letzt also noch alles in eine State Machine
10.12.2015, 13:26 (Dieser Beitrag wurde zuletzt bearbeitet: 10.12.2015 13:27 von GerdW.)
Du kannst sooft auf "Druck lesen" klicken, wie du willst: deine EVENT-Struktur reagiert darauf aber nicht (sie kennt nur "String senden"!) und arbeitet ansonsten ganz nach dem Grundsatz THINK DATAFLOW!