LabVIEWForum.de - Netzwerkvariablen nicht aktuell

LabVIEWForum.de

Normale Version: Netzwerkvariablen nicht aktuell
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
HI,
brauche Hilfe von eine paar Leuten die sich mit Netzwerkvariablen auskennen. Smile
Ich finde das verhalten ziemlich lustig..

Also hab eine Host - Target kommunikation über Netzwerkvariablen geschrieben, in der Anwendung werden über den Host Befehle an das Taget geschickt. Das Target ist in meinem Fall ein sBRIO 9606.
Das Target schickt dann weiter über CAN an mehrere Module.

Nun habe ich festgestellt wenn ich vom Host über das Target die LEDs auf den Modulen an machen will. gehen sie nicht nur AN sondern teilweise auch AN und AUS.


Zu meiner Programmstruktur:
- auf dem Host benutze ich einen eventcase, der Funktioniert. Schaltverhalten ist auch nicht auf latch eingestellt.
- In dem Eventcase wird eine Netzwerkvariable vom typ Boolsches Array beschrieben, die von Target gepollt wird und je nachdem welcher Eintrag im Array auf True gesetzt ist, eine bestimmte Can NAchricht an die Module sendet.
- in dieser Schleife auf dem RT Target in dem das eventarray Abgefragt wird, wird natürlich auch der jeweilige eintrag zurückgesetzt.
-Parallel zu der Eventstruktur ist eine weitere schleife, die zyklisch mit 100 ms werte vom RT Target fordert, die das RT Targert widerum vom CAN holt.

NUN!!!!
meine Beobachtung ist -> dass der Event eintritt, wenn ich LED Toggle am Frontpanel des Hosts anklicke -> Die Netzwerkvariable wird beschrieben -> das RT Target bekommt das mit-> geht in den richtigen Case -> sendet an die Module über CAN -> Leds gehen an -> nun oder eventuell davor schon kann es passieren, dass die zweite schleife die auf dem Host läuft ausgeführt wird -> in dieser schleife wird auch ein Eintrag der selben Netzwerkvariable beschrieben ( ABER NICHT DER LED TOGGLE BEFEHL), HIER steht aber in der Netzwerkvariable noch der LEd Toggle befehlt drinnen ( also die Netzwerkvariable ist nicht aktuell und hat nicht gemerkt, dass sie auf dem Target.vi schon zurückgesetzt wurde ) und nun fängt das RT Target nochmal an und macht alle LEds wieder aus.

Somit gehen meine LEds mit einem Klick an und aus oder nur an...
Ich hoffe das war verständlich..

Hat einer ne Idee wie man, dieses Problem umgehen kann?

bzw einen guten Link wo, die Einstellungen die man über Netzwerkvariablen einstellen kann ( FIFO, Netzwerkpuffer, Einzelelement, Multielement etc. ) vorzughalber auf deutsch erklärt werden?

Ich würde die VI ja gerne Posten, aber ich darf nicht.

Hoffe mir kann trotzdem jemand mit seinem geballten Labview wissen helfen. Big Grin
Labview 2011 SP1.

Lg Fanni
Klassischer Fall einer Race-Condition, die du dir da programmiert hast.
Von 2 Stellen parallel Lesen und Schreiben auf dieselbe Instanz/Speicherstelle/..., das geht selten gut.

Gruß, Jens
hm ok das seh ich ein.

Soll ich eine neue Netzwerkvariable für das zyklische senden benutzen ?
Dann muss ich auf der Taget seite auch alles wieder ändern, das muss man doch irgendwie hinkriegen können oder ist das ein konzeptioneller Fehler?

Lg
Stef
Referenz-URLs