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!
Hallo zusammen.
Mal ein seltsamer Effekt. In einem Projekt (LV 10.0) , welches sehr umfangreich ist, werden von einem Hauptprogramm viele VI's über die Applikationssteuerung aufgerufen und gestartet. Diese VI's bedienen Globale Variablen. Meistens werden in diese definierten Variablen (durch die Vielzahl wurden die Variablen in Bibliotheken in dem Projekt integriert) Istwerte von Datenerfassungen geschrieben. In anderen VI's werden diese globalen Variablen zur weiteren Nutzung gelesen und verarbeitet. Zum Teil auch zur Speicherung der Werte genutzt.
Nun habe ich den Effekt, dass Werte in globalen Variablen nach einer bestimmten Zeit, meistens nach ca einer Stunde, "einfrieren". Obwohl die Werte sich real ändern, bleibt die globale Variable in einem vorhergehenden Zustand, sprich friert bei einem Wert ein. Jedoch läuft das Programm weiter und andere Wertte werden richtig aktuialisiert.
Das passiert, wenn das System nicht "bedient" wird. Wenn man nur kurz die Maus bewegt, werden die globalen Variablen wieder aktualisiert, also, erst mit einer Aktivität auf dem Desktop ...
Man könnte auch die Werte über die Applikationssteuerung auslesen, jedoch müssten dort die Werte immer von Variant umgewandelt werden und würden wohl , durch die enorme Anzahl, viele Ressourcen fressen, oder?
Falls jemand eine Idee hat, danke.
guten Start ins sonnige Wochenende.
Gruss, der frehdie
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Eingefrorene Werte in globalen Variablen
Sehr seltsam. Kannst Du mal ein kleines Bsp. hochladen, bei dem das passiert?
Und bitte auch gleich das . Da steht noch Version 8.6 drin.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Aus dem Text geht nicht eindeutig hervor, ob es wirklich die globalen Variablen selbst sind, die nicht mehr upgedated werden und was dann zu einen Fehlverhalten des Programms führen würde. Mir klingt das eher so, als ob nur der Bildschirmschoner das Display temporär einfriert. Das wäre dann ein rein optischer Effekt ohne Einfluß auf die Funktionalität des Programms.
Guten Morgen Markus,
danke für die Reaktion.
Also: Ich habe nach wie vor LV 8.6 (ein upgrade ist jedoch in Arbeit). LV 10.0 haben Kollegen, für die ich diese Applikation erstelle.
Das Einfrieren: Es ist nicht der Bildschirmschoner, da so einer auf diesem System nicht aktiviert ist.
Das ganze Projekt ist schon recht umfangreich und da ich nur eine in LV 8.6 transformierte Variante, mit fehlenden Optionen (PID fuzzi logik) haben, unvollständig. Ich werde mal ein kleines Beispiel programmieren, um den Aufbau des Projektes zu zeigen. Dauert aber etwas. Was ich jedoch zeigen kann, ist eine Datenaufzeichnung, wo sogar der Wert des Tools "Verstrichene Zeit" aus der Programmierumgebung einfriert. Dieser Wert wird von einem VI in eine globale Variable geschrieben und von von anderen VI's gelesen und weiter verarbeitet, wie halt zur Datenspeicherung.
Kollegen haben mir berichtet, dass es willkürlich auch andere Werte berifft und nach ca 1 Stunde auftritt. Sie sehen das immer an der Datenaufzeichung, die in Tests über Nacht gestartet werden. Wenn man dann am Morgen die Maus bewegt, tauen die Werte wieder auf und werden aktualisiert. Ist schon seltsam.
Also, die Datei "Test_mess.xls" zeigt, dass nach ca. 2 Stunden der Wert der "Step_Zeit" einfriert, sozusagen die globale Variable nicht mehr aktualisiert wird, wogegen andere Werte OK sind. Der Beginn ist gelb hervorgehoben. (Falls Du kein Excel hast, wandel ich es in pdf um und lade es noch mal hoch).
Danke und einen schönen Sonntag.
Gruss, der frehdie
Entschuldigung, den Bildschirmschoner in die Diskussion zu werfen war falsch von mir. Ich meinte den Sleep-Modus (Energiespar-Modus). Schau doch auf alle Fälle mal nach, was da eingestellt ist. Die Grundeinstellung von Windows 7 nach Installation ist wohl diese:
Schau doch auf alle Fälle mal nach, was bei Dir eingestellt ist:
Rechte Maustaste auf leere Stelle im Bidschirm
--> Personalize (ich habe engl. Windows)
--> Screen Saver
--> Change Power Settings
--> Change plan settings
...danke Euch...ja, das habe ich mir auch schon gedacht, aber, sollten dann nicht alle Werte, die über globale Variablen ausgetauscht werde einfrieren und nicht nur willkürlich einzelne?..
Ich bin da immer noch am rätseln, woran es liegen könnte. . Nichts desto werde ich Deinen Tip anwenden.
Ihr hörst von mir. Mir fällt noch ein, dass ein VI, das in eine globale Variabel schreibt, durch irgendeinen Fehler nicht weiter läuft und daher der Wert einfriert, aber, das mit der "verstrichenen" Zeit ist in einem VI, welches andere globale Variablen weiter aktualisiert.
Schon seltsam.
Guten Start in die Woche.
gruss, der frehdie
26.03.2012, 11:21 (Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2012 11:26 von Tim.P_50€.)
danke Euch allen für die Tips,
leider kam ich erst jetzt dazu, den Datenverlauf neue zu organisieren und schau, es hat sich gelohnt.
Ich habe auch den Fehler ausfindig machen können.
In einer Strutur habe ich ich einige globale Variablen zum Einlesen ausserhalt positioniert. Das war nicht sofor zu sehen, da das Diagramm schon voll recht gepackt ist. Nach Korrektur aktualisieren sich die Variablen so, wie es sich gehört.
Danke und Gruss, der frehdie