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 

Softwarestrukturprobleme



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!

06.05.2009, 13:59
Beitrag #1

Rainito Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 96
Registriert seit: May 2009

2010
2008
de

89297
Deutschland
Softwarestrukturprobleme
Hallo,

ich bin gerade damit beschäftigt eine Prüfsoftware für einen Dauerlaufprüfstand zu schreiben. Benutzeroberfläche sieht wie unten abgebildet aus. Es müssen die 3 oder mehr Prüfstände völlig autark zu bedienen sein und funktionsfähig sein. Umschaltbar im gezeignten "Container". Hab alle Daten schon "geclustert". Für jeden Prüfstand gibt es seine eigenen speziellen Eingangsdaten und Ausgangsdaten.....aber auch allgemein gültige Daten z.b. Überwachung Prüfraum.

Jetzt meine Frage.....weiss einfach nicht sicher was für eine Struktur ich nehmen soll......Mit einer Caseabfrage zwischen den prüfständen?? Dann geht das Parallele Durchführen doch flöten oder?

Master-Slave Struktur?

Und wie verläuft die Datenübergabe bei so einer parallelen Ausführung??

Wer weiss einen guten Ansatz?

Vielen Dank schon mal

Gruß Rainer


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2009, 14:18 (Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2009 14:26 von eg.)
Beitrag #2

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Softwarestrukturprobleme
Machst pro Prüfstand eine parallele While-Schleife, dann noch eine für Event-Handling (Buttonklicks u.s.w.) und eine für die Anzeige von Daten aufm Front Panel.
Für die Kommunikation zwischen den parallelen Schleifen kannst meine Tasking-Library (im Download Bereich) nehmen oder selbst mit Queues oder Notifiers programmieren.

Ist halt nur mein Vorschlag, so würde ich es machen.

   


Im Beispiel siehst du zwei große While-Schleifen (obere für Eventhandling untere zum Anzeigen von Daten aufm FP) und mehrere parallele SubVIs unten. In jedem SubVI ist eine While-Schleife drin. Die Kommunikation erfolgt bei mir über meine Tasking Libraray. Wenn man aufn Button aufm FP klickt, wird ein bestimmtes SubVI mit einem Befehl+Parameter angesprochen.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2009, 14:35
Beitrag #3

Rainito Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 96
Registriert seit: May 2009

2010
2008
de

89297
Deutschland
Softwarestrukturprobleme
Zuerst mal Merci für die schnelle Antwort.

Hab mir die Tasking-Libary schon runtergeladen und schau sie mir gleich an. Mit Queue´s hab ich noch gar nicht gearbeitet....da steig ich noch nicht ganz durch.

Hab jetzt auch einen Teil über globale Variablen erledigt....also zumindest die cluster die von jedem Prüfstand benötigt werden. Das ist aber natürlich nicht die feine Art oder?

Bekomm ich keine Probleme wenn ich z.b. 8 While schleifen parallel laufen lasse? Ich dachte, man sollte viele parallele whileschleifen vermeiden.

gruß Rainer
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2009, 14:50
Beitrag #4

Rainito Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 96
Registriert seit: May 2009

2010
2008
de

89297
Deutschland
Softwarestrukturprobleme
Hallo...

...hab mir gerade deine Tasking-Libary angesehen....und muss sagen....das ist zuviel für mich.

Ich steig gerade erst in LabVIEW ein....und versuch mit einem LabVIEW basic kurs dieses Projekt zu lösen. Kannst du mir vielleicht noch einen einfacheren Weg zeigen, wie ich die Daten ohne Globale Variablen sicher zwischen den einzelnen Prüfstandschleifen übermittle? Die Daten müssen ja dann durch alle nachstehenden Verzweigungen auch durch damit ich zu jederzeit an alle Daten abgreifen kann.

Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2009, 15:48
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Softwarestrukturprobleme
' schrieb:Hab jetzt auch einen Teil über globale Variablen erledigt....also zumindest die cluster die von jedem Prüfstand benötigt werden. Das ist aber natürlich nicht die feine Art oder?
Globale Variablen sind tatsächlich nicht die richtige Art des Datentransfers für diesen Anwendungsfall. Besser ist sind FGV: funktionale Globale Variablen. Such mal hier im Forum.

Zitat:Bekomm ich keine Probleme wenn ich z.b. 8 While schleifen parallel laufen lasse? Ich dachte, man sollte viele parallele whileschleifen vermeiden.
Prinzipiell bekommt man keine Probleme, wenn man viele While-Schleifen parallel hat. Jede für sich muss nur richtig programmiert sein: Also z.B. mit einer Wartezeit in der Schleife.

Ich bin gerade dabei, was Ähnliches zu machen. Ich mach das so:

Es gibt ein HauptVI (also kein Tabsheet), in dem ausgewählt wird, welcher Prüfstand gerade bedient werden soll. Weiter gibt es ein einziges SubVI, das einen einzelnen Prüfstand bedienen kann. Da alle Prüfstande identisch sind, reicht also ein einziges SubVI aus. Dieses SubVI bekommt einen Parameter "Kennung des Prüfstandes". Anhand dieses Parameters kann das SubVI (indirekt und indiziert) entscheiden, welcher Prüfstand bedient werden soll. Für jeden Prüfstand gibt es eine FGV. Alle FGVs sind in einen VI hinterlegt, das auch diesen Parameter "Kennung des Prüfstandes" hat. Der Parameter "Kennung des Prüfstandes" wird in dem SubVI, in dem mit den FGVs und allen anderen SubVI herumgereicht, sodass jedes VI - besonders die mit den DAQ-Zugriffen, entscheiden können, was genau gemacht werden soll.

Um die Verwendung von Queues und Meldern kommst du bei einer solchen Anwendung nicht herum.

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
06.05.2009, 15:59 (Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2009 16:12 von eg.)
Beitrag #6

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Softwarestrukturprobleme
' schrieb:Prinzipiell bekommt man keine Probleme, wenn man viele While-Schleifen parallel hat. Jede für sich muss nur richtig programmiert sein: Also z.B. mit einer Wartezeit in der Schleife.

Ich benutze generell keine Wartezeiten in den Schleifen (und würde sogar davon abraten), aber klar, du hast ja "z.B." geschrieben.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.05.2009, 16:39
Beitrag #7

J_uri Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 66
Registriert seit: May 2008

8.6, 2011
2007
DE_EN


Deutschland
Softwarestrukturprobleme
' schrieb:Ich benutze generell keine Wartezeiten in den Schleifen (und würde sogar davon abraten), aber klar, du hast ja "z.B." geschrieben.

Hallo,
warum ratest du von Wartezeiten ab? Es macht doch eigentlich nur dann Sinn, keine Wartezeiten in Whileschleifen zu implementieren, wenn sie extern synchronisiert werden (also über Melder etc.).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2009, 16:46
Beitrag #8

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Softwarestrukturprobleme
Ich mache einen Unterschied zwischen Wartezeit und Timeout beim Warten auf ein Event. Die Timeouts sind bei mir immer unendlich, somit steht die Schleife, wenn gar nichts passiert und verbraucht dabei 0 Ressourcen.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2009, 17:12
Beitrag #9

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Softwarestrukturprobleme
' schrieb:Warum ratest du von Wartezeiten ab? Es macht doch eigentlich nur dann Sinn, keine Wartezeiten in Whileschleifen zu implementieren, wenn sie extern synchronisiert werden (also über Melder etc.).
Eine explizite Wartezeit braucht man immer dann, wenn keine implizite vorhanden ist. Implizite Wartezeiten sind z.B. dann vorhanden, wenn man - wie eq sagt - eine Funktion mit Timeout verwendet (und das Timeout nicht auf 0 stellt). VIs mit Timeout-Funktionalität können sein: DaqMX-Read, Warten auf Melder/Queue, etc.

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
07.05.2009, 08:03 (Dieser Beitrag wurde zuletzt bearbeitet: 07.05.2009 18:09 von jg.)
Beitrag #10

Rainito Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 96
Registriert seit: May 2009

2010
2008
de

89297
Deutschland
Softwarestrukturprobleme
Danke für die vielen Tips.....aber ich glaub ich komm nicht ganz mit. Hab mir die funktionalen globalen Variablen angeschaut. Scheint mir nicht das richtige für mich zu sein....aber vielleicht bin ich dafür einfach nur zu laienhaft.

Ihr würdet mir sehr helfen wenn Ihr mir ein ganz ganz grobes Strukturkonzept zeigt, in dem ich die verschiedenen Prüfstände autark bedienen kann und die alle gemeinsam 2 Eingangscluster (Überwachung Prüfraum und Grenzwerte Raumtemperatur) haben.

Ich stell einfach mal mein bisheriges Werk hier rein. Starten kann man das ganze mit der "Startmaske" und der Prüfstand simuliert soll einfach einen noch nicht vorhandenen Prüfstand über globale variablen simulieren!!!

Über Vorschläge würde ich mich sehr freuen.

Schon mal vielen Dank

Gruß

Rainer

Lv86_img


Angehängte Datei(en)
Sonstige .zip  Pruefstand.zip (Größe: 226,95 KB / Downloads: 169)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: