Hallo
Folgendes Problem liegt vor:
Wir möchte den Ausgang eines digitalen channels invertieren jedoch ohne zu wissen was zur Zeit ausgegeben wird.
Ich hab mir das eigentlich ganz einfach vorgestellt, wird es auch sein aber ich stell mich wohl etwas deppert an.
Ich bin froh um jeden Denkanstoss
Danke
Soweit meine überlegung:
labview2010: [
attachment=47022]
Hier noch die Bildversion:
[
attachment=47023]
Hallo chrigi,
das setzen der Property wie bei dir im Bild bewirkt nicht, dass der DO von allein umgeschaltet wird! Du musst schon noch einen Wert ausgeben...
Man kann diese Property aber gut nutzen, wenn man im Programm mit "positiver" Logik arbeiten will/muss, die angeschlossene Hardware aber mit "negativer" Logik (d.h. mit invertierendem Verhalten) aufgebaut ist.
Was mich an deinem Beispiel stört:
Entweder dein Programm weiß, was es tut: dann sollte der Schaltzustand jederzeit bekannt sein. Ansonsten solltest du ein Stromstoß-Relais verwenden, um abwechselnd an/aus zu schalten...
Damit invertierst du generell alle Kanäle, und zwar in Abhängigkeit des vorgegebenen Wertes. Das ist ne grundlegende Einstellung, die eigentlich nur einmal bei Programmstart gemacht wird.
Wenn du den tatsächlichen Wert invertieren willst, musst du ihn dir vorher merken (vom letzten Schreibvorgang)..evtl. gibts auch ne Abfrage der Hardware, bin da nicht sicher.
EDIT:
http://forums.ni.com/t5/LabVIEW/How-can-...d-p/939839
A.
Ok dann muss ich wohl bei der Variante bleiben bei der ich den Zustand übergeben muss das gibt dann leider viel auwand die ganze Zeit die Zustände rumzuschleppen aber trotzem wens net geht
Danke
P.S. hier die erwähnte variante:
[
attachment=47024]
Hallo chrigi,
Zitat:das gibt dann leider viel auwand die ganze Zeit die Zustände rumzuschleppen
Ein Schieberegister für ein einzelnes Bit ist "viel Aufwand"?
Ich sehe hier eher unnötigen Aufwand, indem ein DO-Task ständig erstellt/genutzt/gelöscht wird...
Zitat: Ich sehe hier eher unnötigen Aufwand, indem ein DO-Task ständig erstellt/genutzt/gelöscht wird...
Das liegt daran dass meine HW nur ein Task gleichzeitig haben kann und ich zu unterschiedlichen Zeiten verschiedene Channels ändern muss. Vielleicht gibts eine bessere Lösung aber mit der Datenerfassung tuh ich mich generell schwer hab da viel zu wenig Erfahrung drin.
Hallo chrigi,
welche Hardware verwendest du denn?
Hallo chrigi,
- Die PCIe6537, die ich gerade mit MAX simuliert habe, zeigt mir 5 Ports mit je 8 DIOs an. Ich kann problemlos zwei Tasks erstellen, die auf unterschiedliche Ports zugreifen - zumindest mit dieser simulierten Karte...
- Was hindert dich, mit einem Task alle DIOs zu verwalten? Oder hast du "Spezialanwendungen" darauf laufen wie PWM, Trigger, etc.?
Falles es dich weiter interessiert kannst dir gern mal mein Messablauf anschauen. Aber mach dir nicht zu viel Aufwand.
[
attachment=47026]
P.S. Meine Karte hat nur 3 Ports a 8 Lines