INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Programm wird ausgebremst



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!

12.07.2006, 06:34
Beitrag #1

Nasenpeter Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: May 2006

8.00
2006
kA

77656
Deutschland
Programm wird ausgebremst
Hallo,

ich habe jetzt eine Prüfstandsteuerung erstellt. Das Programm läuft eigentlich sehr gut, doch gestern habe ich das Temperaturerfassungs-VI in mein Hauptprogramm eingebunden und wenn ich diese aktiviere, bleibt das Programm fast stehen. Es hat wahrscheinlich etwas mit dem initialisieren der seriellen Schnittstelle zu tun, aber ich weiß nicht, wie ich das ändern kann.
Ich habe unten das Hauptprogramm "Wirkungsgradprüfstand" und das Unterprogramm "Temperaturerfassung Versuch" angehängt.
Wäre super, wenn da mal jemand drüber schauen könnte.
Vielen Dank.

Andi


Angehängte Datei(en)
Sonstige .vi  Wirkungsgradpr_fstand.vi (Größe: 279,05 KB / Downloads: 371)

Sonstige .vi  Temperaturerfassung_Versuch.vi (Größe: 81,15 KB / Downloads: 392)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2006, 07:09
Beitrag #2

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Programm wird ausgebremst
Hi Andi,

so beim ersten drüber schauen fällt mir auf: Bei jedem Aufruf des Temperatur-VI wird die VISA-Session/der serielle Port geöffnet, irgendwas gemacht, und dann wieder geschlossen! Das passiert bei jedem Schleifendurchlauf...das wäre mal ein Ansatz: Den Port erst wieder bei Beendigung des Messprogramms schließen!

Außerdem drei Tips:

1. Versuch mal, ein bisschen platzsparender zu coden! Größer als 1280x1024 sollte ein Blockdiagramm nicht sein! Ich musste ganz schön scrollen...

2. Lass dir die FrontPanel-Elemente im Diagramm nicht als "Symbol" anzeigen (Rechtsklick...): Da spart man jede Menge Platz und hat auch nicht weniger Information!

3. Versuche, möglichst gerade Verbindungen zu ziehen und sauber von links nach rechts zu coden!

Gruss
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2006, 07:16 (Dieser Beitrag wurde zuletzt bearbeitet: 12.07.2006 07:18 von diplNisse.)
Beitrag #3

diplNisse Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 97
Registriert seit: Apr 2006

2010
2006
EN


Deutschland
Programm wird ausgebremst
' schrieb:Hallo,

ich habe jetzt eine Prüfstandsteuerung erstellt. Das Programm läuft eigentlich sehr gut, doch gestern habe ich das Temperaturerfassungs-VI in mein Hauptprogramm eingebunden und wenn ich diese aktiviere, bleibt das Programm fast stehen. Es hat wahrscheinlich etwas mit dem initialisieren der seriellen Schnittstelle zu tun, aber ich weiß nicht, wie ich das ändern kann.
Ich habe unten das Hauptprogramm "Wirkungsgradprüfstand" und das Unterprogramm "Temperaturerfassung Versuch" angehängt.
Wäre super, wenn da mal jemand drüber schauen könnte.
Vielen Dank.

Andi

<div align="left">


EDIT:
Sorry, Achim, wenn ich mich jetzt in manchen Fällen wiederhole, aber ich hab noch geschieben, als du gepostet hast....

EDIT ENDE
Hallo!


Habe mir das gerade mal angeschaut.
Folgendes ist mir aufgefallen:
Du solltest die Schnittstelle vielleicht nicht jedes mal initialisieren und nach der Messung wieder schließen.
Öffne und schließe die Schnittstelle im Hauptprogramm einmalig und übergebe einfach nur den VISA-Resource-Name an dein Unterprogramm (temperaturerfassung_versuch.vi)

Dann sendest du kein LF oder CR zum Peripheriegerät. Ist das richtig?! Ich habe bis jetzt nur ein Gerät verwendet, dass kein solches Zeichen am Ende des Datenstroms haben möchte.
Da würde ich noch mal nachforschen.
Wenn dein Gerät nämlich auf ein CR oder LF wartet, und du sendest das nicht, läuft deine Lesefunktion jedesmal in den Timout (dazu mehr unten).
Mit der "Bytes at Port" Routine habe ich schleichte Erfahrungen. Das klappt nicht immer. Besser ist, den Term.-Chart zu verwenden.
Den hast Du aber deaktiviert. Das würde ich nur machen, wenn dein Gerät kein Term.-Chart sendet.
Im Moment hast du ein LF eingegeben. Überprüf das mal. Ich hatte bis jetzt überwiegend mit geräten zu tun, die ein CR senden.

Für den Timeout hast du 10 sek!!! eingegeben. Das ist etwas viel. Ich verwende hier immer 300ms. Wenn innerhalb von 300 ms keine Antwort kommt, dann kommt die auch in 10 sek nicht.
Ich würde diese zeit auf jeden Fall verkürzen. Vieleicht läuft dadurch dein Programm schon flüssiger.

Und dann empfehle ich dir auch noch, mal eine Sonde auf den Error-out der VISA-REad funktion zu setzen. Da kannst du dann ja lesen, ob es fehler, und wennn ja: welche es gibt.
</div>
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2006, 07:45
Beitrag #4

Nasenpeter Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: May 2006

8.00
2006
kA

77656
Deutschland
Programm wird ausgebremst
Puh, das waren jetzt ne Menge Infos für einen Anfänger. Auch wenn ich nicht alles aus der zweiten Antwort verstanden habe (LF, CR,...Blink)
Das mit dem Port hatte ich auch schon vermutet. Ich weiß allerdings nicht genau, wie ich den Port aus dem Hauptprogramm ansteuern soll, da ja diese Funktion im Unterprogramm ist.
Der 10sek Timeout ist eine Voreinstellung und eine Änderung auf z.B. 300ms bringt keine Verbesserung.
Danke euch.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2006, 08:34
Beitrag #5

diplNisse Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 97
Registriert seit: Apr 2006

2010
2006
EN


Deutschland
Programm wird ausgebremst
' schrieb:Puh, das waren jetzt ne Menge Infos für einen Anfänger. Auch wenn ich nicht alles aus der zweiten Antwort verstanden habe (LF, CR,...Blink)
Das mit dem Port hatte ich auch schon vermutet. Ich weiß allerdings nicht genau, wie ich den Port aus dem Hauptprogramm ansteuern soll, da ja diese Funktion im Unterprogramm ist.
Der 10sek Timeout ist eine Voreinstellung und eine Änderung auf z.B. 300ms bringt keine Verbesserung.
Danke euch.

Ok , sorry. Ich hab wohl zuviel mit Seriellen Schnittstellen zu tun ;-)

LF bedeutet Line Feed, also Zeilenvorschub. Das ist ein Zeichen, dass den "Cusor" um eine Zeile nach unten wandern lässt.
CR ist Carriage Return und lässt den "cusor" an den Zeilenanfang springen.
Das muss man aber nicht zwingend wissen. Wichtig ist nur, dass man weiß, welches Zeichen das Gerät erwartet und welches es sendet.

Da fällt mir gerade noch was ein:
Schließe Deinen Temp-Messer doch an den PC an und versuche per HyperTerminal (das Terminalprogramm, das bei Windows dabei ist) mit dem Gerät zu kommunitzieren. So lassen sich Fehler schneller finden.
Dann tippst du einfach deine Sendeanforderung in HyperTerminal ein ( in diesem Fall ja anscheinend M01p )und schaust mal, ob und was das gerät antwortet.
Wenn du dabei die ENTER Taste drücken musst, dann musst du das in LabVIEW auch so programmieren.
Ein ENTER ist nämlich nichts anderes als ein CR und ein LF (eine zeile runter und cuso an den anfang).

Im moment sendest du ja nur M01p, und nix weiter. Vieleicht erwartet dein Gerät : "M01p{CR}"

Poste doch einfach mal, um welches Gerät es sich handelt. Vielleicht gibt es ja sogar schon ein fertiges VI dafür.


Jetzt zu dem Problem mit dem Port-Öffnen:

Du machst die Initialisierung mit den ganzen Parametern (Baud, Parität, Stop und Datanbits) im Hauptprogramm. Das VISA-Init-VI hat ja einen Ausgang namens " VISA-Resource name out". Den schließt du einfach an einem Eingang an deinem Temperatur-Unterprogramm an. ... moment ich hänge einfach ein VI an. Das ist mit worten so schwer zu beschreiben.....

...so.
main soll dein Hauotprogramm darstellen.
neu das abgeänderte unterprogramm zur temp.erfassung.


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  Temperaturerfassung_neu.vi (Größe: 60,53 KB / Downloads: 279)

Sonstige .vi  Temperaturerfassung_main.vi (Größe: 15,54 KB / Downloads: 261)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2006, 09:43 (Dieser Beitrag wurde zuletzt bearbeitet: 12.07.2006 09:48 von Nasenpeter.)
Beitrag #6

Nasenpeter Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: May 2006

8.00
2006
kA

77656
Deutschland
Programm wird ausgebremst
So, jetzt habe ich vermutlich alles nach Anweisung geändert (und verstanden hab ich`s auch Wink) und es bleibt bei der starken Verlangsamung. Ich glaube ja nicht, dass ein Fehler (im Sinne von "geht nicht") vorliegt. Es ist wohl nur etwas viel Arbeit für das Programm. Einzeln laufen die Programme ja einwandfrei.
Bei dem Temperaturmessgerät handelt es sich um ein "Almemo 8990-6".


Angehängte Datei(en)
Sonstige .vi  Wirkungsgradpr_fstand.vi (Größe: 291,62 KB / Downloads: 230)

Sonstige .vi  Temperaturerfassung_Versuch.vi (Größe: 68,35 KB / Downloads: 289)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.07.2006, 11:38
Beitrag #7

diplNisse Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 97
Registriert seit: Apr 2006

2010
2006
EN


Deutschland
Programm wird ausgebremst
' schrieb:So, jetzt habe ich vermutlich alles nach Anweisung geändert (und verstanden hab ich`s auch Wink) und es bleibt bei der starken Verlangsamung. Ich glaube ja nicht, dass ein Fehler (im Sinne von "geht nicht") vorliegt. Es ist wohl nur etwas viel Arbeit für das Programm. Einzeln laufen die Programme ja einwandfrei.
Bei dem Temperaturmessgerät handelt es sich um ein "Almemo 8990-6".

Hi.
Ich kann Dich beruhigen: Das Programm / der Rechner wird nicht "zu viel zu tun" haben.
Schau doch mal bitte, was deine CPU auslastung sagt. Wenn du keine Schleifen ohne Verzögerung (also Wait-Funktion) eingebaut hast, dürfte die Auslastung nicht sonderlich groß sein. Vielleicht 20%, je nach Rechner. Aber ich nehme an, dass du das nicht auf nem 486 Dx4-100 laufen lässt.

Du sagtest, dass die Verzögerung ohne die Temp.Erfassung nicht da war.
Was gibst du als Schnittstellenbezeichnung ein?
Ich nutze immnoch die Bezeichnungen ASRLX::INSTR, wobei das X für den jeweiligen Com-Port steht. Also ASRL1::INSTR für COM1.

Und dann benutzt doch einfach mal die "Highlight Execution" Funktion (diese Glühbirne) um bei der Programmausführung beobachten zu können, welche Stelle des Programmcodes gerade ausgeführt wird.


Du sagst, dass alle Unterprogramme für sich funktionieren. Wie lange wird denn dein Temp-Unterprogramm ausgeführt, wenn du es alleine ausführst?
Das dürfte eigentlich keine einzige sekunde dauern.
Wenn es länger ausgeführt wird, dann musst du den Code noch mal nachgucken.

hier: http://www.ahlborn.com/handbuch/de/hb6.pdf

ist übrigens eine Anleitung über die Serielle Schnittstelle von Ahlborn Instrumenten!!!
Auf Seite 54 gibts folgendes zu lesen:

6.11 Kommunikation mit dem Computer
An jeden Befehl wird ein CR (Carrige Return: ODH), LF (Line Feed: OAH) und am
Ende der Antwort ein ETX (End of Text: ASCII = 03H) angehängt. Bei der programmierten
Eingabe mit einem Rechner muss darauf geachtet werden, dass eine Antwort
auf einen Befehl aus mehreren Zeilen, getrennt durch CR LF, bestehen kann
und ein zweiter Befehl erst ausgegeben werden darf, wenn der erste ganz abgearbeitet
wurde, d.h. das ETX - Zeichen gesendet wurde. Der Zusatzfunktionsbefehl fx ist
ein eigener Befehl, der auch mit ETX abgeschlossen wird.


Du kannst als Term.Chart denmach ein ETX (entspricht dezimal einer 3) eingeben.
Und du solltest an die Befehle, die du sendest, ein CR und ein LF anhängen.
Also über die Stringfunktionen an dein M01p ein ENTER anhängen.

Guck mal. ansonsten: Melden.


Wir werden das bis heute abend schon hinbekommen.

Um 17:00 mach ich allerdings Feierabend ;-)

Nisse
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2006, 14:06
Beitrag #8

Nasenpeter Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: May 2006

8.00
2006
kA

77656
Deutschland
Programm wird ausgebremst
Zuerstmal zur CPU Auslastung: Im Ruhezustand 1%. Wenn ich das vi über den Pfeil starte 100%. Wenn ich die Temperaturmessung aktiviere geht es zurück auf 10-20%
Der Rechner hat 800 MHz.

Das Unterprogramm läuft natürlich nicht mehr allein. Als ich es noch nicht eingebunden hatte, war noch eine While-Schleife drum Wink

als Schnittstellenbezeichnung habe ich COM1 eingestellt. Ich kann auch nur zwischen COM1, COM2 und LPT1 wählen. Die Bezeichnung, die Du geschrieben hast, konnte ich diese Woche aber auch schon wählen. Nun aber nicht mehr. Ich weiß nicht, wo die sich plötzlich versteckt hat.

Das Handbuch habe ich vor mir liegen und ich habe die Befehle um jeweils CR erweitert z.B. M02pCR
Das macht keinen Unterschied. Da dies die einzigen Befehle sind, die ich an das Messgerät gebe, seh ich nicht ganz klar, wo das ETX hinkommen soll.

Tausend Dank für Deine Hilfe. Du opferst ja ganz schön viel Zeit für einen Dummie wie mich Rolleyes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2006, 14:42
Beitrag #9

diplNisse Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 97
Registriert seit: Apr 2006

2010
2006
EN


Deutschland
Programm wird ausgebremst
' schrieb:Du opferst ja ganz schön viel Zeit für einen Dummie wie mich


:Dmacht ja nix. Ich bin Werksstudent. Und ich hoffe, dass das hier im Forum auf Gegenseitigkeit beruht.

So jetzt wieder zum Wesentlichen ;-)

ASRL1::INSTR kannst Du auch einfach reinschreiben. Das mus man nicht auswählen können. Ich kann auch nur COM1-6 und LPT auswählen. Seltsamerweise funktioniert das dann bei mir ohne Initialisierung. Deswegen benutze ich diese Bezeichnungen nicht mehr (LabVIEW scheint dann auf die Schnittstellen zu schreiben, obwohle sie nicht geöffnet sind. Das war mit zu heikel).


Wie Du ein CR und ein LF an dein Steuerkommando anhängst habe ich im Bild noch einmal angehangen. Weil Ich nicht weiß , ob du das richtig verstanden hast: Du kannst nicht einfach CR dahinterschreiben. CR ist ein eigenes Zeichen, was du mittels der String-Palette einfügen kannst. Siehe Bild.

EXT ist das Zeichen, was Dein Almemo sendet, wenn es fertig ist (mit dem Senden). Daraufhin kannst du den Datenstrom untersuchen Lassen und das Empfangen dann passend beenden. Sieh auch Bild.


Dein VI sollte ohne Temperaturmessung aber auch keine 100% CPU Auslastung bringen. Bei dem bischen gemesse. Hm. Konnte jetzt aber auch keine Schleife finden, wo keine Wartezeit eingebaut war....
Wobei es eigentlich ein Anzeichen für eine Schleife gibt, die zu oft abgearbeitet wird: Nämlich der Punkt, dass die Auslastung runter geht, wenn du mehr rechenaufwand betreibst.

Aber das musst Du leider selber finden, da ich dein VI aus Mangel an Hardware nicht ausführen kann.


Bis dann,


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: