Hallo waja,
hast du irgendeinen meiner Hinweise oben wahrgenommen
und verstanden?
- Was hast du in deinem Abfrage-VI vor?
- Was sind das für Cases "Af" (...), wenn du nur einen boolschen Wert an den Selektor anschließt?
- Sagt dir der Begriff
Reentrancy etwas? Hast du die LabVIEW-Hilfe dazu gelesen? Deine PtByPt-Funktionen nutzen dies - während du das Konzept dahinter und dessen Auswirkungen ignorierst!
Zitat:Folgende Logik habe ich versucht in LabView zu implementieren:
case A rising: wenn B rising, dann Counter +1, wenn B falling dann Counter -1
case B rising: wenn A rising, dann Counter -1, wenn A falling, dann Counter +1
case A falling: wenn B rising, dann Counter -1, wenn B falling, dann Counter +1
case B falling: wenn A rising, dann Counter +1, wenn A falling, dann Counter -1
Die Logik sollte (zumindest teilweise) sein:
Code:
IF RisingEdge(A) THEN
IF B=TRUE
THEN counter--
ELSE counter++
ENDIF
ENDIF
Als Counter nimmst du einfach einen Input und Output deines subVIs, gespeichert wird er
in einem Schieberegister deines MainVIs. Die PtByPt-Zähler werden hier (aufgrund ihrer Reentrancy) falsch angewendet!
THINK DATAFLOW!