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!
Es geht generell um das einlesen von Daten.
Ich hab hier son uraltes FielPoint-Modul CTR-500. Das kann an den Count Inputs nur von 0-65535 zählen. Da gehen verschiedene Zähler drauf.
Takten tun die Eingänge, das kann ich sehen. Ich wollte eigentlich den Wert jede Minute auslesen lassen und dann reseten auf 0, das geht aber nicht, weil der Input Read-Only ist :/
Jetzt zur Frage:
Ich bräuchte mal nen kleinen Denkanstoß, wie ich das ganze umsetze. Aus dem Counter bekomme ich eine reele ganze Zahl. Da der Wert ja nicht linear ansteigt, müsste ich ja individuell die Counts pro Minute zählen.
Start der Messung: Count-Wert 251, nach 60-Sekunden: 274, nach erneuten 60s hat er dann nur 286 Counts. Ich müsste doch jetzt mind. 3 Variablen haben, wobei jede Minute eine andere Variable beschrieben werden muss. Das Hochrechnen der Impulse pro Stunde wäre dann ja reine Formsache.
Kann man das überhaupt umsetzen?! und vorallem geht das nicht einfacher?
Ich sehe auch noch Probleme, wenn der Counter von 65535 wieder auf 0 springt, dann müsste ich für 3 Minuten falsche Werte bekommen.
Vielen vielen Dank schonmal im Vorraus.
Gruß
Wolf
Anzeige
07.05.2014, 11:33 (Dieser Beitrag wurde zuletzt bearbeitet: 07.05.2014 11:37 von GerdW.)
Zitat:Ich müsste doch jetzt mind. 3 Variablen haben, wobei jede Minute eine andere Variable beschrieben werden muss.
THINK DATAFLOW: du brauchst ein Schieberegister! Oder sammelst selbst Werte in einem Array, wofür du aber auch ein Schieberegister benötigst…
Zitat:Ich sehe auch noch Probleme, wenn der Counter von 65535 wieder auf 0 springt, dann müsste ich für 3 Minuten falsche Werte bekommen.
Zwei Lösungen:
- Wandle deine Werte nach U16 um. Wenn du dann subtrahierst, bekommst du korrekte Ergebnisse auch für den Fall eines Überlaufs.
So z.B.:
- Addiere immer 65536 zu deinem neuen Messwert, wenn er kleiner als der vorhergehende ist, um so den Überlauf auszugleichen…
Also irgendwie hab ich das Prinzip bzw. die Funktionsweise des Schieberegisters wohl doch nich verstanden.
Mit dem Drehregler wollte ich den Counter-Wert simulieren und innerhalb der 10s einfach einen höheren Wert einstellen, dann sollte im Array eigentlich die Differenz auftauchen. Aber irgendwie geht das nur bedingt.
Wenn ich zwei variable Eingänge nehme gehts, aber so nicht. Ich scheiere schon wieder an so etwas einfacherm
07.05.2014, 19:36 (Dieser Beitrag wurde zuletzt bearbeitet: 07.05.2014 19:42 von GerdW.)
Ja klar hab ich mir das mit der Highlightfunktion angeschaut. Den Drehregler hatte ich auch in der Schleife, aber dann konnte ich das VI nich benutzen weil der schieberegister keine Connection hatte.
Es muss frustrierend sein, wenn einer so schwer von Begriff ist wie ich.
Anzeige
07.05.2014, 21:12 (Dieser Beitrag wurde zuletzt bearbeitet: 07.05.2014 21:14 von GerdW.)
Besten Dank, das läuft wie zu erwarten einwandfrei.
Allerdings habe ich auch nach mehr maligen lesen und vielen verschiedenen Versuchen, es nicht hinbekommen, alle 15 Minuten einen Wert am Ausgang der Schleife zu erhalten.
Die Wartezeit hatte ich auf 900.000ms gestellt und die Anzahl der Schleifen auf 1 oder 2.
Laufen tut es ja keine Frage, aber wenn ich den ersten Wert aus der Schleife bekomme, wartet er wieder 15 Minuten bevor er den nächsten Wert einliest, dann wieder 15 Minuten für den 2. Wert, dann bekomme ich am Ausgang der Schleife eine Zahl, das bedeutet, dass die Zeit zwischen 2 Ausgängen 30 Minuten ist und die Impulse in der Wartezeit fehlen.
Also quasi so:
1. Schleife: Wert einlesen --> 5000 --> 15min warten
2. Schleife: Wert einlesen --> 5025 --> Different 25--> Ausgabe--> 15min warten (Und diese Wartezeit darf da nicht zwischen sein, weil mir dann 12 Impulse fehlen)
wie soll man das beantworten ohne dein VI zu kennen?
Ansonsten: Wartezeiten wie hier im Minutenbereich sind "scheiße"!
Was spricht gegen eine Schleifenwartezeit von 100ms und statt nur 1 oder 2 Iterationen nun vielleicht 18000? Du musst ja nicht jeden Messwert wirklich verwenden, jeder 9000ste würde ja dann ausreichen…
Es ist das gleiche VI wie oben von dir
Ich hab es so gemacht, weil ich für die array geschichte zu doof war
Wenn ich den schleifenausgang als array habe, müsste ich dann ja die min/max auswertung haben oder wie sehe ich das?! Da muss ichmal rumprobieren. Werd mich wohl diesbezüglich nochmal melden