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 

Kommunikation von mehreren Netzteilen mit gleicher instr.lib parallelisieren



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!

19.05.2016, 11:19
Beitrag #1

Leticron Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Feb 2016

2014 SP1
2013
DE



Kommunikation von mehreren Netzteilen mit gleicher instr.lib parallelisieren
Hallo,

ich habe ein Problem. Ich habe 6 Netzteile, welche alle ihre eigene SubVi haben, die die Kommunikation regelt, um in der Lage zu sein, diese Parallel anzusprechen. (Jedes Netzteil hängt an einem anderen RS232 Port)
Jetzt musste ich aber feststellen, dass die Software trotzdem mit jedem zusätzlichen Netzteil je ca. 70ms langsamer wird. Beim besichtigen der einzelnen VIs stellte ich dann mit Schrecken fest, dass diese alle auf die gleichen SubVis zur Kommunikation zurückgreifen, welche in der instr.lib des Netzteilherstellers liegt.
Das hebelt natürlich die gesammte parallele Kommunikation aus.

Nun zu meiner Frage:
Gibt es einen eleganten Weg, die Instr.lib für jedes Netzteil zu kopieren?

Denn es handelt sich um ca. 6-8 VIs in dieser lib und diese alle einzeln per Hand zu kopieren und neu einzubinden dürfte Tage dauern.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.05.2016, 11:31
Beitrag #2

wladimir s Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 79
Registriert seit: Mar 2015

2011, 2015
2010
DE


Deutschland
RE: Kommunikation von mehreren Netzteilen mit gleicher instr.lib parallelisieren

Akzeptierte Lösung

Ohne die Bibliothek zu kennen, würde ich vorschlagen, dass du die betroffenen VIs auf ablaufinvariante Ausführung zu stellen.
Dann sollte die Kommunikation auch parallel ablaufen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2016, 12:09
Beitrag #3

Leticron Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Feb 2016

2014 SP1
2013
DE



RE: Kommunikation von mehreren Netzteilen mit gleicher instr.lib parallelisieren
Hallo,

Im Anhang mal die VI-Hierarchie, wie sie bei allen 6 Netzteil-VIs aussieht. Mit ablaufinvarianter Ausführung habe ich mich noch nicht beschäftigt, ich werde dies testen. Falls dadurch wirklich mehrere Instanzen des SubVi erstellt werden, wäre es genau das, was ich brauche und der gewünschte elegante Weg.

Ändert eine Überführung in eine exe etwas an der Weise, wie SubVIs ausgeführt werden?


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2016, 14:53
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Kommunikation von mehreren Netzteilen mit gleicher instr.lib parallelisieren

Akzeptierte Lösung

(19.05.2016 12:09 )Leticron schrieb:  ich werde dies testen. Falls dadurch wirklich mehrere Instanzen des SubVi erstellt werden, wäre es genau das, was ich brauche und der gewünschte elegante Weg.
Dem kann ich so zustimmen.

Aber Vorsicht bei der Umstellung:
Hier musst du genau kontrollieren. Sollten in den vom Hersteller gelieferten SubVIs z.B. globale Variablen verwendet werden, so kann die Umstellung zu Fehlern führen - respektive die Verwendung der umgestellten SubVIs.
Wenn sich Schieberegister-Variablen in den SubVIs befinden, kann es auch zu Fehlern kommen.

Kontrolliert werden sollte das SubVI "ReadWrite" (vorletzte Ebene, das SubVI mit den vielen Aufrufern).

In deinem Falle wäre eine echte Klasse so mit vollständiger Instanzierung aller Unterprogramme ideal.

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
19.05.2016, 15:32
Beitrag #5

Leticron Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Feb 2016

2014 SP1
2013
DE



RE: Kommunikation von mehreren Netzteilen mit gleicher instr.lib parallelisieren
(19.05.2016 14:53 )IchSelbst schrieb:  Aber Vorsicht bei der Umstellung:
Hier musst du genau kontrollieren. Sollten in den vom Hersteller gelieferten SubVIs z.B. globale Variablen verwendet werden, so kann die Umstellung zu Fehlern führen - respektive die Verwendung der umgestellten SubVIs.
Wenn sich Schieberegister-Variablen in den SubVIs befinden, kann es auch zu Fehlern kommen.

Kontrolliert werden sollte das SubVI "ReadWrite" (vorletzte Ebene, das SubVI mit den vielen Aufrufern).

Hätte ich deine Antwort vor 3 Stunden gehabt, hätte ich viel furstriertes Testen umgangen! Du lagst 2 mal richtig. Das einzige VI, welches Probleme gemacht hat (und natürlich das Nadelöhr war), war das Read/Write VI. Es hatte eine Schieberegister-Variable, welche ihm sagte, welche Sprache es verwenden soll. Ich habe lange gebraucht, bis ich herausgefunden habe, dass es an der Stelle nach der Umstellung nicht mehr funktionierte.

Nachdem dieser Fehler behoben wurde (habe die Sprache "Hardcoded" reingeschrieben und somit den Regler umgangen), läuft die ganze Geschichte beinahe schon gut. Leider etwas zu langsam. Die Hardware scheint aber am Anschlag zu sein. Schneller als 90ms für ein Querry mit RS232 scheint sie nicht zu schaffen.
Gibt es da noch "Tricks" um dies etwas zu beschleunigen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2016, 16:05
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Kommunikation von mehreren Netzteilen mit gleicher instr.lib parallelisieren
(19.05.2016 15:32 )Leticron schrieb:  hätte ich viel furstriertes Testen umgangen!
hättest du wertvolle Erfahrungen nicht machen können ...

Zitat:Die Hardware scheint aber am Anschlag zu sein. Schneller als 90ms für ein Querry mit RS232 scheint sie nicht zu schaffen.
Einerseits sagt jeder, RS232 sei veraltet - andererseits wird sie aber immer noch fleißig verwendet.
Du musst zwei Sachen auseinander halten: Die Reaktionszeit des Endgerätes und diverse Arbeitszeiten vom Treiber. Als Reaktionszeit können 100ms durchaus ok sein. Als Arbeitszeit für den Treiber definitiv nicht.
Ich glaube, das Problem des großen Zeitaufwandes liegt nicht an der Hardware, sondern an der (Software-)Verwaltung eines RS232-Zugriffes (ob LV oder das OS die Probleme verursacht, weiß ich nicht). Ich hatte nämlich ähnliche Probleme beim Pollen mehrerer Schnittstellen. Letztendlich hab ich den direkten Aufruf des Lese-VIs nur dann gemacht, wenn ich gewusst habe, dass genug Zeichen im Puffer sind. Ich habe also zuerst per Property "Anzahl Zeichen im Puffer" gelesen und mit einem entsprechenden Wert verglichen. Nur bei genug Zeichen wird dann das Lese-VI aufgerufen.

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
19.05.2016, 16:17
Beitrag #7

BNT Offline
LVF-Freak
****


Beiträge: 740
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Kommunikation von mehreren Netzteilen mit gleicher instr.lib parallelisieren
(19.05.2016 15:32 )Leticron schrieb:  Gibt es da noch "Tricks" um dies etwas zu beschleunigen?

Hast Du die höchst mögliche Baudrate eingestellt? (Manchmal vergisst man die einfachen Möglichkeiten.)

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.05.2016, 16:17 (Dieser Beitrag wurde zuletzt bearbeitet: 20.05.2016 16:25 von rolfk.)
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Kommunikation von mehreren Netzteilen mit gleicher instr.lib parallelisieren
(19.05.2016 15:32 )Leticron schrieb:  Gibt es da noch "Tricks" um dies etwas zu beschleunigen?

Die Default Baudrate von 9600 Baud benötigt 1 ms per Character. Das zählt sowohl für das Kommando als auch die Antwort des Instruments. Dazwischen kommt noch die Zeit die das Instrument benötigt um das emfangene Kommando zu dekodieren und eine enstprechende Antwort zusammenzustellen und in den Ausgangsbuffer zu schreiben. Das sind typischerweise die wichtigsten Faktoren bei einem solchen Instrument. Die VISA Software und die Hardware Treiber im Computer fügen da vergleichsweise unbedeutende Zeit hinzu. Die Baudrate kannst Du gemäss Datenblatt maximal auf 19200 Baud verdoppeln so dass da vielleicht 10 ms weniger anfallen aber der Löwenanteil dürfte doch echt die Antwortzeit des Instrumentes selber sein. Da werkelt typischerweise ein einfacher Embedded Controller vom Type 8051 oder vergleichbar drin. Der ist im Vergleich zu einem modernen PC ungefähr so schnell wie ein Dreiradvelo zu einem Ferrari.

Um das zu enkoppeln müsstest Du das Write-Read VI auseinander nehmen und als seperates Write und Read implementieren. Dann könntest Du zumindest teilweise die Serialisierung durch dieses VI entschärfen ohne diese selber ablaufinvarient machen zu müssen. Aber an der Datenübertragungszeit kannst Du nicht viel verändern ausser Du verwendest eine der GPIB oder LAN Optionen die es für diese Geräte gibt. Aber das ändert so oder so nichts an der Antwortzeit des Instrumentes selber. Die wird nur schneller durch einen kräftigeren Prozessor aber das kostet Geld und eine programmierbare Speisung ist normalerweise nicht als Funktionsgenerator gedacht! Big Grin Die gibt es zwar zu kaufen, aber die sind in einer ganz anderen Preisregion dann die TDK Geräte.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen 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
  user.lib instr.lib und SVN repository GT123 11 5.947 28.08.2018 07:53
Letzter Beitrag: GT123
  Parallelisieren von Schleifen gottfried 9 5.175 28.03.2013 10:03
Letzter Beitrag: gottfried
  Registerkarte mit gleicher Oberfläche aber seperate Bedienung Tugbay 7 7.026 24.08.2010 15:19
Letzter Beitrag: Tugbay
  Elemente gleicher Wertigkeit nur einmal darstellen mctommson 8 5.159 06.04.2007 01:26
Letzter Beitrag: mctommson
  lokale variablen mit gleicher Bennenung pho_no 1 2.980 27.04.2005 15:45
Letzter Beitrag: marker

Gehe zu: