LabVIEWForum.de
Schieberegister - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Signaldarstellung (/Forum-Signaldarstellung)
+---- Thema: Schieberegister (/Thread-Schieberegister--29197)



Schieberegister - Eren44 - 28.06.2016 14:53

Guten Tag,
ich möchte in ein Fals-True-Case in ein Zähler einbauen dieser immer +1 zählen soll.
Jedoch bei jedem Start und beim Übergang von True nach False und umgekehrt soll der Zähler beim Wert 0 beginnen.
Habe etwas ausprobiert nur Funktioniert das nicht so wie es soll-
Der Zähler ist in der 2-ten Fals-True-Case eingebaut, dieser für meine Auswertung wichtig ist.

Bitte um Hilfe und danke im Voraus

MfG
Kangalli

[attachment=56200]


RE: Schieberegister - GerdW - 28.06.2016 15:02

Hallo Kangalli,

Zitat:Jedoch bei jedem Start und beim Übergang von True nach False und umgekehrt soll der Zähler beim Wert 0 beginnen.
Was genau soll der Zähler denn zählen?
Er soll beim Start und bei jedem Flankenwechsel bei Null beginnen?

Zitat:Habe etwas ausprobiert nur Funktioniert das nicht so wie es soll-
Ok.
Und warum zeigst du uns nur ein Bild und hängst kein VI/Snippet an?

- Welchen Zweck hat die FOR-Loop, die genau einmal durchlaufen soll? Sowas nennt man Rube-Goldberg…
- Warum ist der Zähler ein DBL, wenn die Anzeige ein Integer ist und wahrscheinlich auch ganze Durchläufe gezählt werden sollen?

Pseudocode:
Code:
counter++                                      %% "dieser immer +1 zählen soll"
IF FirstCall OR BooleanCrossing(Signal) THEN  
  counter:=0                                      %% "bei jedem Start und beim Übergang von True nach False und umgekehrt soll der Zähler beim Wert 0 beginnen"
ENDIF
FirstCall und BooleanCrossing sind LabVIEW-Funktionen…


RE: Schieberegister - Freddy - 28.06.2016 15:45

Der Ausgang wird nur zählen, wenn die äußere Anweisung true und die inner Anweisung false ist.
Sonst wird immer 0 am Schieberegister der For Schleife stehen.
Deine Anzeige wird nie den Wert 0 haben, da immer zuerst +1 gezählt wird bevor der Wert an die Anzeige kommt.
Die Anzeige wird sich nur verändern, wenn gezählt wird. Ansonsten bleibt der Anzeigewert auf dem letzten Wert stehen.

Die Ungereimtheiten hat ja bereits GerdW beschrieben.


RE: Schieberegister - Eren44 - 28.06.2016 15:50

Die for Schleife brauche ich für den schieberegister dachte ich. Ob der Wert ein Integer oder double ist ist egal.
Ich kann leider die VI nicht hochladen, da dieser recht unordentlich ist und mit diesem Thema viele Funkitonen zusammenhängen.
Kann mir jemand vieleicht ein BSP geben. Tipps sind auch wilkommen.

Gruß Kangali


RE: Schieberegister - Freddy - 28.06.2016 16:04

Viele Wege führen nach Rom.
Ich habe mal vorausgesetzt, das der Ausschnitt den Du uns zeigst immer wieder mal aufgerufen wird.
Die Bezeichnungen der Boolen sind auf Dein Bild bezogen.


RE: Schieberegister - Eren44 - 28.06.2016 16:26

Danke für die Hilfe,
Ich habe das ausprobiert, jedoch hat das nicht wie gewollt funktioniert.
Ich weiß auch nicht ob ich zu kompliziert denke.
Hier mein Vi. Beim umschlaten von true nach fals zeigt es mir 1 an, anstatt von 0 weiter zu zählen.

[attachment=56205]


RE: Schieberegister - GerdW - 28.06.2016 17:14

Hallo Eren,

dein VI ist nicht lauffähig, weil die FOR-Loop nicht weiß, wie oft sie iterieren soll…

Ich habe diesen ganzen Rube-Goldberg mal vereinfacht:
[attachment=56207]
- Solange Boolesch==TRUE, wird hochgezählt
- Wenn Boolesch==FALSE, wird auf 0 zurückgesetzt
- Wenn Boolesch2==FALSE, wird auf 0 zurückgesetzt, sonst bestimmt Boolesch…


RE: Schieberegister - Freddy - 29.06.2016 07:50

Hallo Eren,
in Deinem Programm sind zwei grundsätzliche Fehler drin.
1. Die Auswahl von 1 bei True und 0 bei False. Da wird immer 0 rauskommen, weil Du nur mit dem Boolen Wert False auf die Auswahl triffst.
2. Vor dem Schreiben in die Variable Numerisch steh immer das +1. D.h. nur wenn der Wert vorher auf -1 steht kann da Null als Ergebnis in die Variable geschrieben werden.

Gruß
Freddy