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 zickt



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!

11.07.2009, 22:44
Beitrag #1

havetodo Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: Jul 2009

8.6 student
-
de

59348
Deutschland
Programm zickt
Hallo,
ich habe meinen ersten "Bastelversuch" fertig, aber an manchen Eckenklappt es noch nicht wirklich. Vielleicht kann mir jemand sagen, was ich da falsch gemacht habe und warum die Fehler passieren.
Zu Anfang springt das Programm auf eine falsche Registerseite, und später werden die Aktionen nicht mehr angezeigt oder wecheseln ständig ungewollt hinundher.

Lv86_img

Sonstige .vi  test.vi (Größe: 22,59 KB / Downloads: 260)

Gruß
Anja
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.07.2009, 13:51
Beitrag #2

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Programm zickt
Am Anfang deines Programms ist unklar, ob die Registerkarte zuerst auf den Standartwert oder auf Messablauf gesetzt werden soll. Damit das klappt hast du zwei Möglichkeiten.

1. Die Reihenfolge der Aufrufe durch Datenabhängigkeit oder Sequenz festlegen.
2. Den Tab Messablauf als Standardwert definieren. (Rechtklick -> Datenoperation -> Aktuellen Wert als Standard.

Deine Aktionen werden nicht richtig angezeigt, da die Ringkonstante in der Casestruktur nicht der gleiche Ring wie das Anzeigeelement ist. Kopier die Konstante und wandel sie in ein Anzeigeelement um. Damit du später nicht mehr dieses Problem hast, kannst du das Anzeigeelement danach als Typdefinition abspeichern. Wenn du die Typdefiniton dann noch als Konstante einsetzt, kann nichts mehr schiefgehen. Außerdem würde ich statt eines Rings einen Enum verwenden.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2009, 14:21
Beitrag #3

havetodo Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: Jul 2009

8.6 student
-
de

59348
Deutschland
Programm zickt
Danke!

Was ist der Vorteil oder Unterschied bei Enum statt Ring?
Wie speichere ich etwas als Typdefinition?

Ansonsten habe ich noch die Schwierigkeit, dass das Programm bei geschlossener Bypassleitung (momentan sind die beiden "Meßeingänge" noch als numerische Bedienelemente auf dem Panel) nichts macht und ich neu starten muß, wenn ich den Bypass nachträglich schließe.
Ich würde es aber gern so haben, dass es mir in diesem Fall eine Fehlermeldung ausspuckt und eine gewisse Zeit in der Warteschleife in diesem Case bleibt und weiterhin rpüft ob die Leitung geschlossen wird, um dann auch bei geschlossenem Bypass weiterarbeiten zu können. Wie bekomm ich das hin?

Gruß
Anja
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2009, 15:42 (Dieser Beitrag wurde zuletzt bearbeitet: 12.07.2009 15:45 von schrotti.)
Beitrag #4

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Programm zickt
Mit einem Enum lässt sich einch und sicher arbeiten. Beispielsweise kann einem Enum nicht der Wert eines zweiten, unterschiedlichen Enums zugewiesen werden. Und ein Textring sollte imo nur für das GUI benutzt werden. Auch dann benutz ich ein Textring nur, wenn sich die Einträge zur Laufzeit ändern sollen. Wird bei dir aber nicht der Fall sein.

Mach ein rechtsklick auf das Element -> Fortgeschritten -> Anpassen
Es öfnnet sich ein Fenster. Dort Typ-Def auswählen und speichern.

   

Edit: Deine zweite Frage kann ich nicht beantworten, da du das SubVI nicht hochgeladen hast.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2009, 16:09
Beitrag #5

havetodo Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: Jul 2009

8.6 student
-
de

59348
Deutschland
Programm zickt
OK,
ich hab es überarbeitet. Danke für deine Tipps und Erklärungen!

Kannst du bitte nochmal drüberschauen, ob ich es so richtig umgesetzt habe?


Lv86_img

Sonstige .vi  test.vi (Größe: 23,72 KB / Downloads: 214)


edit: Hab das fehlende sub noch eben eingebunden

Gruß
Anja
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2009, 16:47 (Dieser Beitrag wurde zuletzt bearbeitet: 12.07.2009 16:48 von schrotti.)
Beitrag #6

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Programm zickt
Ein paar Punkte wären da schon noch.

1. Du schreibst Werte signalisierend in Eigenschaftsknoten, obwohl dies nicht nötig wäre. So wie ich das sehe schreibst du da rein, um einen Zustand des Automaten zu setzen. Stattdessen könntest du auch direkt ins Schieberegister schreieben und damit direkt den Zustand setzen. Den Wert am besten über lokale Variablen setzen.
2. Setz Messablauf als Standardwert und schmeiß die lokale Variable raus.
3. Schmeiß die Sequenzstruktur raus und schaff Datenabhängigkeit, indem du das Fehlercluster des Methodenknoten zur Whileschleife führst. Die Schleife wird erst dann ausgeführt, wenn der Methodenknoten seinen Code abgearbeitet und die Daten, also das Fehlcluster, übergeben hat.
4. Ganz wichtig, bevor ich Augenkrebs bekommen. Werkzeuge -> Optionen -> Blockdiagramm -> "Frontpanel-Elemente als Symbole darstellen " bitte deaktivierenSmile

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2009, 16:50
Beitrag #7

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Programm zickt
' schrieb:Ansonsten habe ich noch die Schwierigkeit, dass das Programm bei geschlossener Bypassleitung (momentan sind die beiden "Meßeingänge" noch als numerische Bedienelemente auf dem Panel) nichts macht und ich neu starten muß, wenn ich den Bypass nachträglich schließe.
Ich würde es aber gern so haben, dass es mir in diesem Fall eine Fehlermeldung ausspuckt und eine gewisse Zeit in der Warteschleife in diesem Case bleibt und weiterhin rpüft ob die Leitung geschlossen wird, um dann auch bei geschlossenem Bypass weiterarbeiten zu können. Wie bekomm ich das hin?

Du könntest einfach nach einem Timeout im Zustand "check" wieder in den Zustand "Bypass geschlossen" wechseln. Natürlich nur, wenn die Überprüfung vorher negativ verlaufen ist.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2009, 18:26
Beitrag #8

havetodo Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: Jul 2009

8.6 student
-
de

59348
Deutschland
Programm zickt
Hi Julius,

zu 1)
Ich hab das geändert und die Schieberegister direkt aufgerüfen. Das mit den lokalen Variablen hab ich allerdings noch nicht verstanden.

zu 2)
Ich hab das erstmal so gelassen, da das Programm später alle Registertabs durchlaufen muß und ich dann dort die lokalen Variablen brauchen werde. Oder?

zu 3)
sorry, ich versteh kein WortWacko

zu 4)
sofort erledigt Smile

Gruß
Anja
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2009, 18:57
Beitrag #9

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Programm zickt
' schrieb:zu 3)
sorry, ich versteh kein WortWacko

   


Du könntest dir auch überlegen, die Casestruktur nicht über Strings, sondern über einen typdefinierten Enum zu steuern. Der Vorteil wäre eine geringere Fehleranfälligkeit, da duch nicht verschreiben kannst. Wenn ich mir dein Programm so anschaue empfehle ich dir aber zusätzlich eine Zustandsmaschine nach dem Producer-Consumer Prinzip. Du findest Beispiele im Examplefinder und design pattern unter "Neu.." im Menüpunkt Datei.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2009, 19:31
Beitrag #10

havetodo Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: Jul 2009

8.6 student
-
de

59348
Deutschland
Programm zickt
oh mann, ist das frustrierend O

grad hatte ich das Gefühl ich hätte schon was verstanden, da komm ich mir wieder vor wie der Oberdoofkopp

also nochmal langsam..... welche Sequenz soll ich rauswerfen? Und worauf bezieht sich der Methodenknoten? was ist ein Fehlercluster?
Die beiden beiden Entwurfsmuster unter "neu..." verstehe ich nicht, gibt es da nicht irgendein kleines konkretes Programm, aus dem man ersehen kann, was da genau passiert und wozu das gut sein soll? und wo finde ich den Examplefinder?

noch eine Sache, die mir so eingefallen ist: Wie kann man auf dem Frontpanel ein Bedienelement "gestrichelt" markieren, so dass man dieses beim Drücken der Entertaste drücken würde?

Gruß
Anja
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  programm in anderem Programm einbinden maier_m 1 3.716 04.04.2006 09:19
Letzter Beitrag: eg

Gehe zu: