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 

Properties von einer Combo Box in einem Array of Clusters



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!

24.11.2006, 16:50
Beitrag #1

Herbert Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Oct 2006

8.2
2006
kA

59494
Deutschland
Properties von einer Combo Box in einem Array of Clusters
Schönen guten Tag.

Ich habe heute versucht, ein Frontpannel zu erstellen und bin leider auf einige Probleme gestoßen. Ich hoffe, das mir hier jemand helfen kann.

Und zwar folgendes:
Ich möchte die Eigenschaften (die Auswahlmöglichkeiten / Namen) einer Combo Box in einem Array of Cluster ändern. Und zwar habe ich 4 Module auf meinem TAB. Jedes Modul besteht aus 24 Ein und 24 Ausgängen. Nun möchte ich den Ein und Ausgängen Namen zuordnen, um sie übersichtlicher zu halten. Leider habe ich dann 24 * 2 * 4 = 192 Auswahlmöglichkeiten in einer Combo Box. Dies würde den Rahmen deutlich sprengen!

Daher möchte ich eine Art Vorauswahl treffen, und nur die Namen der Ein und Ausgänge von dem jeweiligen Modul, das ich vorher ausgewählt habe anzeigen lassen.

Leider kann ich die Properties von der Combo Box in dem Array of Cluster nicht verändern. Es ändern sich scheinbar immer alle Auswahlmöglichkeiten und sind die von der Combo Box mit dem Index 0.


Das ganze dient dazu, das ich eine Art SPS Steuerung mit LV realisiere.

Ich hoffe ich habe mich verständlich ausgedrückt und jemand kann mir helfen.

Ach so, ich nutze zur Zeit LV 7.0

Anbei zum besseren Verständnis mein bisheriges VI


Angehängte Datei(en)
Sonstige .vi  Prop_of_cmb_bx_in_array_of_cluster_LV7.vi (Größe: 200,18 KB / Downloads: 265)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.11.2006, 21:03
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Properties von einer Combo Box in einem Array of Clusters
Ich würde das wie folgt angehen:


Angehängte Datei(en)
Sonstige .vi  MyClusterTest.vi (Größe: 135,96 KB / Downloads: 275)

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
27.11.2006, 10:19
Beitrag #3

Herbert Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Oct 2006

8.2
2006
kA

59494
Deutschland
Properties von einer Combo Box in einem Array of Clusters
Hi, danke!

Sorry erstmal, das ich mich so spät erst wieder melde, aber ich hatte übers WE ne "schöne" Grippe! *ärger*

Das ist genau so, wie ich das haben wollte, allerdings verstehe ich das noch nicht ganz! Könntest du mir wenn möglich noch nen paar Tips und Erklärungen zu dem Programm geben?? Das wäre echt super!


Danke nochmals, Gruss Herbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.11.2006, 12:06
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Properties von einer Combo Box in einem Array of Clusters
' schrieb:Allerdings verstehe ich das noch nicht ganz!
Da würde ich es aber vorziehen, dass du eine entsprechende Frage stellst und dass die dann beantwortet wird. Allgemeine Sachen sind für "Fragen" in einem Forum weniger geeignet.

Zitat:Könntest du mir wenn möglich noch nen paar Tips und Erklärungen zu dem Programm geben??
1. Initialisierung
Die beiden Sequenzen links der While-Schleife sind für die Programm-Initialisierung. Hier wird der "Datensatz" festgelegt. Es gibt eine "Typdefinition" für die Eingabe des Portnamen und eine für die Verkettung. (Dass die hier gleich heißen, ist ein Mangel in LV. Wenn die sowas zulassen, ich komme damit zurecht). In der oberen Sequenz werden alle "SPS-Daten-Listen" - Module 1..4, Merker, Zähler Hüllkurven etc. - definiert. Alleine durch die Festlegung der Länge der einen Dimension - Länge=4 - kann die Anzahl der Listen, hier nur vier Module, festgelegt werden. Länge=2 bedeutet: Eine Liste (die erste) für Eingänge, eine für Ausgänge. Länge=24 bedeutet: Das ist eine Liste. Am Ende der Sequenz werden noch die beiden Eingabefelder erstellt.
In der unteren Sequenz wird das Listenfeld erstellt. Eine Zeile im Listenfeld ist eine Verkettung => Array aus verkettungs-Cluster ergibt Listenfeld (die Zahl 24 ist in erster Linie nicht mit der Zahl 24 im oberen Array identisch). Beachte hier besonders die Einhaltung des (notwendigen) Datenflussprinzips mittels des ErrorClusters zwischen der unteren Sequenz und der While-Schleife.
2. "Statemachine" "Event in While-Schleife"
Das bedeutet, nur wenn der Anwender eine Aktion durchführt, wird auch programmatisch etwas gemacht. Beschte die Schieberegister. Damit stehen alles Event-Cases die aktuellen Daten zur Verfügung. (Beachte, dass bei der Erstellung eines neuen Cases nicht die Option "Standard verwenden" eintretten darf. Die "Sequenz-Anschlüsse" müssen immer (durch-)verbunden sein.) Mittels der Event-Struktur ist es möglich, so zu programmieren, wie man sich den Ablauf vorstellt. z.B.: "Wenn der Anwender in das Listenfeld klickt, möchte er diese Zeile editieren". Folge: Wertänderung im Listenfeld => Wert übernehmen nach Eingabecluster.
2.1 Event STOPP
Beachte, dass LV solange "an der Event-Struktur" hängt, bis ein Event eintritt. D.h. es ist (im vorliegenden Falle) nicht möglich, die Endebedingung der While-Schleife außerhalb der Event-Struktur mit dem Stopp-Button zu verbinden. Würde das so sein und jemand betätige den Stopp-Button, würde das Programm trotzdem solange mit Beenden warten, bis irgendein Event eintritt. Daher: Stopp-Button in Event und gut. (Eine andere Möglichkeit wäre ein zusätzlicher Timeout-Event.)
2.2 Event Cluster: "Wenn der Anwender eine verknüpfung geändert hat, soll die Änderung (natürlich) in das Listenfeld aufgenommen werden"
Erste Sequenz. Sinn und Zweck: Der Anwender hat z.B. das Modul gewechselt. Jetzt muss in das nächte Cluster-Feld die richtige Liste mit den Port-Namen geschrieben werden. Die richtige Liste wird mittels der Indizierung links ermittelt. (Das der Typ des Moduls nicht als Zahl, sondern als String vorliegt, das VI "Suchen Index" erforderlich). Die neue Liste wird dann in das entsprechende Feld geschrieben. Beachte hier den fehlenden Datenfluss zwischen den beiden STRING[]-Eigenschaftsknoten. Da nicht gesagt werden kann, welcher zuerst ausgeführt wird, muss hier mittels Error-Cluster Klarheit geschaffen werden. Bitte berichtigen. Sollte sich der Inhalt der Liste ändern, wird auch der angezeigte Text angepasst (Case). In der zweiten Sequenz werden die aktuellen Daten in das Listenfeld geschrieben.
2.3 Event TabControl: Was soll wohl passieren, wenn der Anwender das TabCOntrol wechselt?
Die angezeigten Daten in Eingänge und Ausgänge, diese entsprechen "Alter Wert" werden im Schieberegister gespeichert. Die gewünschten Daten (Neuer Wert) werden angezeigt.

Der Rest geht im Prinzip wie bereits beschrieben.

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
27.11.2006, 13:03
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Properties von einer Combo Box in einem Array of Clusters
Zitat:Warum kann ich nur das erste Modul benutzen und nicht das 2. Modul?? Wie kann ich das Programm erweitern, damit ich auch das 2. Modul benutzen kann??
Wenn du dich mit "2. Modul" auf das zweite Modul im TabControl beziehst, weis ich nicht was du meinst. Hier müsstest du deine Frage präzisieren.

Wenn du das "2. Modul" im Eingabecluster meinst, das rechte also, dann ist das klar: Hierfür gibt es noch nichts im Programm. Überall, wo im Programm bisher auf "Modul" bzw. das entsprechende "Ein/Ausgang" zugegriffen wird, muss natürlich auch "Modul 2" bzw "Ein/Ausgang 2" entsprechend manipuliert werden. Hierfür kannst du die entsprechenden Sequenzen (in den Events Cluster und Mehrspaltiges Listenfeld) kopieren und anpassen - oder als SubVI ausführen. (Kopieren im Prinzip analog zu den Events Eingäne und Ausgänge)

Zitat:Kann ich die Ein / Ausgänge auch speichern, so dass ich die Namen der Eingänge nicht ständig neu schreiben muss!?
Bestimmt kannst du. Tonguez.B. in Ini-Files. Namen des Abschnittes: "Port_%2d_%2d_%2d" (die %d sind die Indizes im Array). Namen der Schlüssel innerhalb eines jeden Abschnittes: "Name", "Wert" etc. (Die Anzahl der Schlüssel entspricht der Anzahl der Elemente im Cluster).

Das Abspeichern der Verknüpfungen geht im Prinzip analog.

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
27.11.2006, 13:35
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Properties von einer Combo Box in einem Array of Clusters
Zitat:Ich möchte gerne die Ein / Ausgänge miteinander Verknüpfen. Das ganze soll so eine Art kleine SPS werden. Also möchte ich den Ausgang 1 von Modul 1 z.B. zeitverzögert setzen, wenn z.B. Eingang 1 von Modul 1 und Ausgang 3 von Modul 2 aktiv sind?!Wie kann ich das Programm am geschicktesten erweitern?
Ich würde die Datensatzeingabe - also das Erstellen der Verknüpfungsliste - von der Abarbeitung dieser Liste.

Zwei Punkte müssten meiner Meinung nach ergänzt werden.

Der "Eingabecluster" muss um ein "Ergebnisfeld" erweitert werden. Eine Operation kann z.B. heißen (wie du schon gesagt hast) "Modul 1" verknüpft mit "Modul 2" gibt als Ergebnis "Modul 3". In der nächsten Zeile könnte dann "Modul 3" ein Eingangsparameter für eine weiteren Verknüpfung sein. Dadurch ist eine auch kompliziertere Abfolge von Verknüpfungen möglich. (Dass hier pro Eingangsmodul ein INT32-Feld vorhanden sein sollte, um z.B. einen Startwert setzen zu können, stellen wir mal ganz hinten an.)

Die zweite Erweiterung wäre eine "Online-Abarbeitung" des erstellten Listenfeldes. Ich würde hier zuerst einen Timeout-Event einführen und dort z.B. das Array "ObjektNamen" in ein SubVi übergeben. Das SubVI enthält ein Frontpanel, das den aktuellen Zustand der SPS darstellt - und das nicht geschlossen wird, sobald das VI verlassen wird. Außerdem befindet sich in diesem SubVI eine Statemachine, die die Liste abarbeitet. (Da das SubVI zyklisch alle (ungefähr) 250ms aufgerufen wird, kann es auch Zeiten verarbeiten). In einem zweiten Schritt könnte man das SubVI in eine eigene While-Schleife legen, dann muss man aber die Daten von der Eingabe-While-Schleife in die zweite übertragen - z.B. mit einem Melder (oder einer globalen Variablen).

Was ich nicht schön finde, ist, dass hier alles über Strings geht und nicht über (Index-)Zahlen. Beispiel: Als Ergebnis kommt heraus: Setze M4/P22. Da die Werte aller Ports in einem dreidimensionalen Array stehen, bedarf es eines Indexes um den Wert zu speichern. Den Index kann man sich natürlich auch mittels des VI "Index Suchen" holen - nur: eine Zahl, die von vorne herein ist, geht halt schneller. Indices erfordern halt beim Speichern der Eingabedaten in dem "Listenfeld" mehr Aufwand.

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
28.11.2006, 15:18
Beitrag #7

Herbert Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Oct 2006

8.2
2006
kA

59494
Deutschland
Properties von einer Combo Box in einem Array of Clusters
Danke für die schnelle Antwort!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.11.2006, 16:47
Beitrag #8

Herbert Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Oct 2006

8.2
2006
kA

59494
Deutschland
Properties von einer Combo Box in einem Array of Clusters
Eine Frage hätte ich da noch:

Und zwar würde ich gerne mal wissen, was die Event Struktur:"Mehrspaltiges Listenfeld" soll??

Wie kann ich es realisieren, das ich insgesamt z.B. 5 Listenfelder habe?? Also pro Modul eine eigene Liste??

Ich habe schon etwas probiert, allerdings war ich noch nicht sehr erfolgreich! Ich kann z.B. für das erste und zweite Modul jeweils die Ein bzw. Ausgänge schalten, allerdings wenn ich das dritte verändern will, geht das nicht!

danke Herbert


Angehängte Datei(en)
Sonstige .vi  MyClusterTest_l_schen.vi (Größe: 81,96 KB / Downloads: 226)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.11.2006, 17:56
Beitrag #9

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Properties von einer Combo Box in einem Array of Clusters
' schrieb:Und zwar würde ich gerne mal wissen, was die Event Struktur:"Mehrspaltiges Listenfeld" soll??
Eigentlich ist die ja gedacht für: Der Anwender will eine Zeile im Listenfeld ändern. Dafür klickt er ebendiese Zeile an. Daraufhin tritt das Event "Listenfeld Wertänderung" ein. Die ausgewählte Zeile wird in den Cluster geschrieben - damit neue Daten eingegeben werden können.

Die Kombinationsfelder (PortNamen) müssen nun den ausgewählten Modulen angepasst werden. Wenn Modul 1 ausgewählt ist, sollen ja nicht die Portnamen von Modul 3 im Kombinationsfeld stehen.

Guckst du neues Programm im Event "Listenfeld".


Angehängte Datei(en)
Sonstige .vi  MyClusterTest.vi (Größe: 132,73 KB / Downloads: 213)

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
28.11.2006, 18:11
Beitrag #10

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Properties von einer Combo Box in einem Array of Clusters
' schrieb:Wie kann ich es realisieren, das ich insgesamt z.B. 5 Listenfelder habe?? Also pro Modul eine eigene Liste??
Pro Modul eine Liste für die Verknüpfungen? :blink:Auf Anhieb fällt mir kein Grund ein, warum das für eine SPS (-Simulation) notwendig wäre. Die modul-spezifischen Ergebnisdaten der einzigen Verknüpfungsliste kann man über einen Index, der ja indirekt im Listenfeld steht, in eine modul-spzifische Liste schreiben. Dazu braucht man aber kein modul-spezifisches Listenfeld. Die modul-spzifische Liste gibt es schon: Die Eingabefelder "Eingänge" bzw. "Ausgänge". Ich hoffe mal, wir reden nicht gar zu sehr von verschiedenen Sachen.


Zitat:Ich habe schon etwas probiert, allerdings war ich noch nicht sehr erfolgreich! Ich kann z.B. für das erste und zweite Modul jeweils die Ein bzw. Ausgänge schalten, allerdings wenn ich das dritte verändern will, geht das nicht!
Leider kann ich dir da nicht weiterhelfen. Ich hab nur LV7.1.1, da kann ich LV8 nicht öffnen. Beschwerden? Naja, ich sag' dazu nix mehr. :angry2:

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
  VI Properties Short-Cut im Project Explorer Lien_Alere 4 6.086 04.12.2019 11:50
Letzter Beitrag: Lien_Alere
  1D Array mit einer Spalte von einem 2D vergleich dementsprechend die 2 Spalte sortien Baron 4 5.356 25.10.2018 10:39
Letzter Beitrag: Baron
  Aus einem Array festgelegte Werte zuweisen Kahlua 7 7.458 19.01.2018 13:42
Letzter Beitrag: Kahlua
  Array je nach Wert in einer Spalte auftrennen b.proud 10 10.011 02.05.2016 10:38
Letzter Beitrag: jg
  Anpassung eines Anzeige Clusters 83DM 4 4.504 17.12.2015 09:02
Letzter Beitrag: 83DM
  Nachkommastellen abgeschnitten beim einlesen einer csv-datei in ein array noled 2 4.881 02.12.2015 16:37
Letzter Beitrag: noled

Gehe zu: