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 

Mehrere serielle Schnittstellen auslesen



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!

13.08.2008, 10:17
Beitrag #1

Caretaker Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Aug 2008

8.5
-
DE

40227
Deutschland
Mehrere serielle Schnittstellen auslesen
Hallo Leute,
ist n echt cooles Forum hier, doch leider hab ich keine Lösung zu meinem Problem gefunden, obwohl ich mehrfach die Suche bemüht habe!

Ich bin absoluter LabVIEW Neuling und hab bisher nur mit textbasierten Programmiersprachen gearbeitet, also fällt mir das Programmieren mit LabVIEW zur Zeit noch nicht so leicht...

Naj, zu meinem Problem:

Ich habe die Aufgabe mehrere serielle Schnittstellen (auch virtuelle) auszulesen und bestimmte Daten in eine gemeinsame Textdatei zu speichern. Das erste Gerät ist eine GPS-Maus, die weiteren sind Schadstoffmessgeräte. Das mit dem Auslesen der GPS-Daten klappt weitestgehend Fehlerfrei, auch das schreiben in eine Textdatei klappt super, nun muss ich aber mehrere Schnittstellen parallel auslesen und alle benötigten Daten der Geräte zusammen in diese Textdatei speichern.

Wie kann ich es realisieren, das ich bis zu 20 Schnittstellen mit etvl. verschiedenen Einstellungen (Baudrate etc), zunächst einstellen und dann auslesen kann ?

Ich steh echt aufm Schlauch -.-

Hoffe ihr könnt mir helfen!
Danke schon mal im Vorraus!

Gruß Tobias

Meine Version: 7.1


PS: Ist es möglich dieses Programm oder eine .exe wenns fertig ist auf einem PDA laufen zu lassen?


Angehängte Datei(en)
Sonstige .vi  GPS_Test.vi (Größe: 97,47 KB / Downloads: 300)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.08.2008, 14:32
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Mehrere serielle Schnittstellen auslesen
' schrieb:Wie kann ich es realisieren, das ich bis zu 20 Schnittstellen mit etvl. verschiedenen Einstellungen (Baudrate etc), zunächst einstellen und dann auslesen kann ?
Sind das im allgemeinen lauter gleiche Schnittstellen?

Dann ist die Sache ganz einfach: VI schreiben und an einer Schnittstelle testen. Dieses VI hat eine (programmtechnische) Schnittstelle (also ein Interface), die für alle (physikalischen) Schnittstellen gleich ist. Das VI stellst du dann auf "invarianter Ablauf" und startest es 20mal. Und schon sind alle 20 Schnittstellen bedient.

Bedient wird dieses VI respektive die 10 VIs mittels einer Queue respektive eines Array of Queue. Auch die Ergebnisse können in einer Array stehen. Wobei der Arrayindex immer der Nummer der Schnitsttelle entspricht.

Hinweis:
Es muss nicht unbedingt ein ablaufinvariantes VI ein. Es geht auch ein einzelnes VI, das ein Array of Data pollt. D.h. dieses eine VI abreitet alle 20 Schnittstellen nach ein ander ab.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.08.2008, 07:54 (Dieser Beitrag wurde zuletzt bearbeitet: 15.08.2008 10:48 von jg.)
Beitrag #3

Caretaker Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Aug 2008

8.5
-
DE

40227
Deutschland
Mehrere serielle Schnittstellen auslesen
Hi "IchSelbst",
Danke für deine Antwort!

1. Ja es sind alles gleiche Schnittstellen.

2. Wie stelle ich den das VI auf "invarianter Ablauf" ?
Kopiere ich dann das Vi zum auslesen 20 mal untereinander und fasse einfach nur die Daten in einer weiteren Schleife
zusammen ?

3. Das alle Schnittstellen nacheinander abgearbeitet werden, ist glaub ich nicht so vorteilhaft, da ich ja immer die
Messdaten aller Geräte einer Messung in Verbindung bringen muss, bzw. die Daten aller Geräte sollen in einer Zeile eines
Textfiles stehen und sich genau auf einen Zeitpunkt beziehen. Oder hab ich da nen Denkfehler?

Ich habs nun geschafft, das ich schon mal 2 Schnittstellen aufeinmal auslesen, kann, ich denk mal das der Rest dann auch kein Problem bereiten wird... Ich hab jedoch ein neues Problem und zwar sollen alle ausgewählten Daten einer Messung in eine Zeile geschrieben werden, ich bekomm aber die Daten der Geräte immer untereinander platziert, hab schon viel ausprobiert, aber immer mit dem selben Resultat, dass es nicht klappt -.-

Naja vielleicht kannst du, oder jemand anders mir dazu nen Tipp geben!?

Im Anhang meine derzeitige Lösung (Bitte nicht all zu arg urteilen ^^ ich bin wie gesagt ein absoluter LabVIEW-Neuling und ich weiß das es sicher ziemlich wüßt für euch aussieht...)und ein Textfile, wie es angefertigt wird.

Vielen Dank schon mal!
Gruß Tobias
Lv71_img


Angehängte Datei(en)
Sonstige .vi  GPS_Test.vi (Größe: 167,37 KB / Downloads: 332)

Sonstige .txt  GPS_Test.txt (Größe: 47,45 KB / Downloads: 272)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.08.2008, 10:37
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Mehrere serielle Schnittstellen auslesen
' schrieb:2. Wie stelle ich den das VI auf "invarianter Ablauf" ?
Guckst du in "Eigenschaften des VI" (z.B. im Symbol oben rechts im FP), Punkt "Aufführung".
Wenn du von solchen VIs 20 Stück auf das BD nebeneinander legst, laufen dann da tatsächlich 20 "verschiedene" VI. (Ohne invariant bei 20 VIs am BD würde die 20 nacheinander abgearbeitet).

Zitat:Kopiere ich dann das Vi zum auslesen 20 mal untereinander und fasse einfach nur die Daten in einer weiteren Schleife zusammen ?
Im Prinzip Ja. Aber: Ich bin noch am überlegen, ob es nicht schlechter Programmierstil ist, 20 Instanzen im BD nebeneinander zu haben.
Wenn die 20 VIs ohne irgendeinen Datenfluß ganz alleine z.B. in einem Sequenzrahmen irgendwo außerhalb jeder While-Schleife liegen - dann lass ich das noch durchgehen. Die Datenverwaltung aber muss dann in einer Array-Struktur geschehen. Es kann nicht sein, dass einer, der auf die Daten der 7. Schnittstelle zugreifen will, auf eine explizite Variable "DatenVon7" zugreifen muss. Das würde bedeuten, dass mancher einer Case-Sequenz braucht mit eben 20 Fällen. Macht man alles in einem Array, so ist der Array-Index die Nummer der Schnittstelle.

Zitat:Das alle Schnittstellen nacheinander abgearbeitet werden, ist glaub ich nicht so vorteilhaft, da ich ja immer die Messdaten aller Geräte einer Messung in Verbindung bringen muss, bzw. die Daten aller Geräte sollen in einer Zeile eines Textfiles stehen und sich genau auf einen Zeitpunkt beziehen.
Oder hab ich da nen Denkfehler?
Ob das, was du dir überlegt hast, ein Denkfehler ist, ist Standpunktssache.
Wenn du 20 parallele Datenerfassungen hast, hast du das Problem der Synchronisierung. Und dieses Problem ist ein großes (je mehr Schnittstellen um so größer). Hierfür bedarf es einer übergeordneten Verwaltung-Instanz. (Wenn man nicht auf Waveforms, also mit Zeitstempel übergehen will. Dann: was tun bei ungenauen Zeitstempeln.) Eine mögliche prinzipielle Lösung: Eine übergeordnete Instanz stellt einen Datensatz Array[0..19] zur Verfügung. Jede der 20 VIs schreibst an seine Position egel zu welcher Zeit die gemessenen Daten rein. Und zwar immer an die selbe Stelle. Die übergeordnete Instanz sampled nun zu einem festgelegten Zeitpunkt (= Abtastrate) diesen Array-Satz und stellt den nächsten Speicher zur Verfügung. Dadurch stehen pro Datensatz immer zeitlich zusammengehörige Daten beisammen. Hinweis: So ein "Array-Satz" können auch 20 Melder sein. Es kommt hier nur auf das Verfahren an.
Ich brech jetzt hier ab. Alles weitere, wovon es noch viel gibt, würde vorerst zu weit führen.

Bei 1 VI, das 20 Schnittstellen pollt, ist das Problem der Synchronisation automatisch gelöst!

Zitat:und zwar sollen alle ausgewählten Daten einer Messung in eine Zeile geschrieben werden, ich bekomm aber die Daten der Geräte immer untereinander platziert
Wie in einem 2D-Array? Hast du ein solches verwendet?

Zitat:Im Anhang meine derzeitige Lösung
Kann ich heute leider nicht ankucken. Bei mir ist heute Feiertag, also kein LV.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.08.2008, 19:12
Beitrag #5

Caretaker Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Aug 2008

8.5
-
DE

40227
Deutschland
Mehrere serielle Schnittstellen auslesen
Vielen Dank für deine schnelle Antwort !

Hier mal mein Blockdiagramm im Anhang!

Ich spiel noch n bissl rum, wenn dir / euch noch was einfällt was ich falsch mache, sagt bitte bescheid!

Aber wie gesagt bin ich der absolute Einsteiger, also bitte nich hauen Wink

Gruß Tobias


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.08.2008, 21:34
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Mehrere serielle Schnittstellen auslesen
' schrieb:Hier mal mein Blockdiagramm im Anhang!
Jetzt stellen sich mir folgende Fragen:

Willst du eine kontinuierliche Abtastung machen oder eine einmalige?
Bei kontinuierlich solltest du "Serielle Schnittstelle konfigurieren" außerhalb der While-Schleife machen. Außerdem fehlt "VISA Schließen".

Wird da vor jedem Einlesen von Daten 1000ms, also eine Sekunde, gewartet? Sprich: Ist das Abtastratser 1 Sekunde?
Dann nimmst du nicht 20 invariante VIs. Das würde sich nur lohnen bei einen Raster von 50ms oder weniger. Bei 1 Sekunde und 20 Schnittstellen hast du pro Schnittstelle 50 Millisekunden Zeit. Da wage ich sofort zu sagen: Pollen in einen VI! Als "Basis-Sourcecode" kannst du nehmen, was du schon hast. Den kannst du entweder (im Prinzip) 20 mal parallel aufrufen oder eben 20 mal hintereinander.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.08.2008, 14:06
Beitrag #7

Caretaker Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Aug 2008

8.5
-
DE

40227
Deutschland
Mehrere serielle Schnittstellen auslesen
Hi IchSelbst, danke dass Du mir so tatkräftig hilfst ^^

Zunächst mal: Ich hatte mit dem Aufgabensteller geredet und nun sind es nur noch max 6 Schnittstellen ^^ Es kann halt aber auch sein, dass es mal nur 3 sind oder auch 5. Ziemlich variabel halt.

Also die Abtastung soll kontinuierlich sein, d.h. das Programm wird gestartet, ich kann zunächst die Comport-einstellungen vornehmen und danach den Auslesevorgang starten... Dieser kann dann auch mal 5 Stunden dauern oder so. Das Abtastraster für die GPS-Maus ist eine Sekunde japp, wie das mit den anderen Geräten aussieht weiß ich noch nicht genau, da ich noch nicht die Möglichkeit hatte, diese anzuschließen!

Mal bitte kurz ne Begriffserklärung...
Zitat:Pollen in einen VI
... was ist pollen ?

Nochmal ne Frage am Rande: weißt Du ob es möglich ist, eine Executable auf nem PDA laufen zu lassen ?

Naja, nochmals vielen Dank für Deine Hilfe !!!

Gruß Tobias
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.08.2008, 22:39
Beitrag #8

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Mehrere serielle Schnittstellen auslesen
' schrieb:Zunächst mal: Ich hatte mit dem Aufgabensteller geredet und nun sind es nur noch max 6 Schnittstellen ^^ Es kann halt aber auch sein, dass es mal nur 3 sind oder auch 5. Ziemlich variabel halt.
Das Programm sollte so geschrieben sein, dass es egal ist, wie viel Schnittstellen es sind.

Zitat:Also die Abtastung soll kontinuierlich sein, d.h. das Programm wird gestartet, ich kann zunächst die Comport-einstellungen vornehmen und danach den Auslesevorgang starten... Dieser kann dann auch mal 5 Stunden dauern oder so.
So wie es sich für eine "anständige" Datenerfassung gehört ...

Zitat:Das Abtastraster für die GPS-Maus ist eine Sekunde japp, wie das mit den anderen Geräten aussieht weiß ich noch nicht genau, da ich noch nicht die Möglichkeit hatte, diese anzuschließen!
Man muss das Gerät nicht unbedingt anschließen und ausprobieren. Sowas steht entweder im der Beschreibung des Gerätes - oder wird festgelegt. Das Abtastraster scheint mir aber wichtig. Je nach Größe würde ich nämlich ein SubVI, das alles abarbeitet, oder für jede Schnittstelle ein invariantes SubVI verwenden.
Hinweis:
Vermutlich läuft alles auf ein SubVI hinaus, das alles macht. Schreib also schon mal ein SubVI, das eine Serielle Schnittstelle steuern kann. Mach dich mal schlau, was eine StateMachine ist, was eine Queue macht und ein Melder.


Zitat:was ist pollen
Pollen heißt: ich (also das Programm) frage zyklisch nach, ob was für mich da ist. Interrupt heißt: Wenn was da ist, bekomme ich automatisch bescheid gesagt und die Daten mitgeteilt. (Ggf kannst du ja mal bei WikiPedia nachschauen.) Jedes der beiden hat Vor- und Nachteile.

Zitat:Nochmal ne Frage am Rande: weißt Du ob es möglich ist, eine Executable auf nem PDA laufen zu lassen ?
Nein, ich weiß das nicht. Ich gehe aber davon aus, dass das geht. Such mal hier im Forum nach PDA oder aber auch bei ni.com

Zitat:Naja, nochmals vielen Dank für Deine Hilfe !!!
Mach ich doch gern.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Schnittstellen werden im Frontpanel nicht angezeigt. Mido 5 4.674 14.05.2019 15:46
Letzter Beitrag: jg
  Alle seriellen Schnittstellen auslesen Exl 1 5.068 01.04.2017 16:41
Letzter Beitrag: GerdW
  Auslesen mehrere Geräte / Allg. Aufbau? Timm 8 8.251 27.01.2015 18:29
Letzter Beitrag: Timm
  Problem bei seriellen Schnittstellen gammel 7 7.369 27.10.2014 13:01
Letzter Beitrag: gammel
  Verwendung von mehreren RS232 Schnittstellen PMG 8 9.488 26.05.2014 11:48
Letzter Beitrag: Eliii
  Serielle Schnittstelle Auslesen Gre5or 3 7.960 01.10.2013 10:38
Letzter Beitrag: GerdW

Gehe zu: